181 lines
3.8 KiB
Markdown
181 lines
3.8 KiB
Markdown
# 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 Rust’s 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 site’s 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 proxy’s 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.
|
||
|
||
---
|