unit3d_announce_setup/unit3d_announce_setup.md

3.8 KiB
Raw Permalink Blame History

UNIT3D Announce Setup Tutorial

Set up the UNIT3D Announce.


[!IMPORTANT] Before starting, ensure you have created and securely stored a backup of your current installation.

Prerequisites

  • An existing UNIT3D installation (typically at /var/www/html).
  • Sudo privileges for system configuration.
  • Basic knowledge of terminal commands and text editing.
  • Your database credentials (DB_*) from /var/www/html/.env.
  • Rust compiler and package manager (cargo) installed.

Installation Steps

1. Prepare the Environment

Navigate into your UNIT3D base directory:

cd /var/www/html

2. Clone & Configure UNIT3D-Announce

  1. Clone the Announce repository and enter it:

    git clone -b v0.1 https://github.com/HDInnovations/UNIT3D-Announce unit3d-announce
    cd unit3d-announce
    
  2. Copy and edit the example environment:

    cp .env.example .env
    sudo nano .env
    
    • Ensure DB_* values match your main UNIT3D .env.
    • Remove any trailing comma after ANNOUNCE_MIN_ENFORCED (e.g. ANNOUNCE_MIN_ENFORCED=1740).
    • Uncomment REVERSE_PROXY_CLIENT_IP_HEADER_NAME="X-Real-IP" if using a reverse proxy.

3. Build the Tracker

Install Rusts package manager and compile:

sudo apt update
sudo apt -y install cargo
cargo build --release

[!NOTE] The compiled binary will be located at target/release/unit3d-announce.

4. Update UNIT3D Environment

Return to your UNIT3D directory and add tracker variables:

cd /var/www/html
sudo nano .env

Add (or update) these variables to match your Announce .env:

TRACKER_HOST=127.0.0.1
TRACKER_PORT=3000
TRACKER_KEY=your_32_characters_min_api_key

[!IMPORTANT] TRACKER_KEY must be at least 32 characters long.

5. Configure Nginx & Supervisor

Nginx

Edit your sites Nginx config (e.g. /etc/nginx/sites-enabled/default):

location /announce/ {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:3000$request_uri;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
    set_real_ip_from 0.0.0.0/0;
}
  • Adjust proxy_pass IP:Port to your Announce listener.
  • Change set_real_ip_from to your proxys IP range.

Supervisor

Create or update /etc/supervisor/conf.d/unit3d-announce.conf:

[program:unit3d-announce]
process_name=%(program_name)s_%(process_num)02d
command=/var/www/html/unit3d-announce/target/release/unit3d-announce
directory=/var/www/html/unit3d-announce
autostart=true
autorestart=false
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/announce.log

Reload Supervisor:

sudo supervisorctl reread
sudo supervisorctl update

[!NOTE] Supervisor log: /var/www/html/storage/logs/announce.log

Enable External Tracker in UNIT3D

Edit config/announce.php:

<?php

return [
    'external' => true,
    'host'     => env('TRACKER_HOST', '127.0.0.1'),
    'port'     => env('TRACKER_PORT', 3000),
    'key'      => env('TRACKER_KEY'),
];

6. Finalize & Verify Setup

Restart services and clear caches:

cd /var/www/html
sudo systemctl restart nginx
sudo supervisorctl reload
sudo php artisan set:all_cache
sudo systemctl restart php8.4-fpm
sudo php artisan queue:restart

Check Announce process status:

sudo supervisorctl status unit3d-announce:*

For logs:

supervisorctl tail -100 unit3d-announce:unit3d-announce_00

Troubleshooting

  • .env typos: Verify all keys (TRACKER_*, DB_*, ANNOUNCE_*).
  • Nginx syntax: Run sudo nginx -t after edits.
  • Supervisor errors: Inspect /var/www/html/storage/logs/announce.log.
  • API key issues: Ensure TRACKER_KEY is ≥32 characters.