unit3d_announce_setup/unit3d_announce_setup.md

181 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:
```bash
cd /var/www/html
```
### 2. Clone & Configure UNIT3D-Announce
1. Clone the Announce repository and enter it:
```bash
git clone -b v0.1 https://github.com/HDInnovations/UNIT3D-Announce unit3d-announce
cd unit3d-announce
```
2. Copy and edit the example environment:
```bash
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:
```bash
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:
```bash
cd /var/www/html
sudo nano .env
```
Add (or update) these variables to match your Announce `.env`:
```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`):
```nginx
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`:
```ini
[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:
```bash
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
<?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:
```bash
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:
```bash
sudo supervisorctl status unit3d-announce:*
```
For logs:
```bash
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.
---