面板连接

Panel & site setup

The panel is the web interface where you manage bans, detections, the live player list and anti-cheat settings. There are two ways to run it.

Choose your model

ModelHow it worksBest for
Hosted (recommended)We run the panel for you. You get yoursite.{{PANEL_DOMAIN}}, and can attach your own domain.Most servers. Setup, updates, SSL and backups are handled.
Self-hostedYou install the panel on your own web server.Full control, corporate requirements.

Hosted panel — 4 steps

  1. Create an account and pick a plan
  2. Add a server — Panel → Servers → "Add Server". Name and IP are enough.
  3. Get your license key — generated automatically when the server is added. The anti-cheat authenticates with it.
  4. Install the anti-cheatinstallation guide

Once connected, your server turns green under Panel → AC → Live.

Attaching your own domain

Add it under Panel → Settings → Custom Domain, then create this DNS record:

Type   : CNAME
Name   : panel        (for panel.yourdomain.com)
Value  : {{PANEL_DOMAIN}}
TTL    : 3600

DNS propagation takes anywhere from 5 minutes to a few hours. The SSL certificate is issued automatically once validation completes — nothing for you to do.


Self-hosted installation

Requirements

ComponentVersionNotes
PHP8.1+Extensions: pdo_mysql, openssl, zip, curl, mbstring
Web serverNginx / ApacheNginx recommended
MySQL / MariaDB10.4+Database guide
SSL certificateLet's Encrypt is free

1. Place the files

cd /var/www
# Extract the panel package here
chown -R www-data:www-data /var/www/panel
find /var/www/panel -type d -exec chmod 755 {} \;
find /var/www/panel -type f -exec chmod 644 {} \;

2. Configuration

Create .env:

SAAS_DB_HOST=localhost
SAAS_DB_NAME=panel_db
SAAS_DB_USER=panel_user
SAAS_DB_PASS=strong_password
SAAS_MAIN_DOMAIN=yourdomain.com

# Email (verification and notifications)
SMTP_HOST=smtp.yourprovider.com
SMTP_PORT=587
SMTP_USER=noreply@yourdomain.com
SMTP_PASS=password
chmod 640 .env
chown root:www-data .env
Your .env contains the database password. It must never be reachable over the web — the Nginx config below blocks it. After installing, visit https://yoursite/.env and confirm you get a 403.

3. Database schema

mysql -u panel_user -p panel_db < install/saas_schema.sql
mysql -u panel_user -p panel_db < install/saas_v9_missing_tables.sql
mysql -u panel_user -p panel_db < install/ac_migration.sql

4. Nginx configuration

server {
    listen 443 ssl http2;
    server_name yourdomain.com;
    root /var/www/panel;
    index index.php;

    ssl_certificate     /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    location / {
        try_files $uri $uri/ /public/router.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # ── SECURITY: without these, your source and secrets leak ──
    location ~ ^/\.env                          { deny all; }
    location ~ /\.                              { deny all; }
    location ~* \.(bak|drivebak|old|orig|save|swp|sql|log|tmp)(\.|$) { deny all; }
    location ~ ^/(includes|install|cronjobs|deploy|tools|scripts|storage)/ { deny all; }
}
Those last four rules are critical. Without them, .env, backup files (*.bak) and PHP source can be downloaded as plain text. Test after installing:
curl -o /dev/null -w "%{http_code}\n" https://yoursite/.env
curl -o /dev/null -w "%{http_code}\n" https://yoursite/includes/db.php
# Both must return 403

5. SSL certificate

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Certbot sets up auto-renewal. Verify with sudo certbot renew --dry-run.

6. Scheduled tasks

crontab -e
*/5 * * * * php /var/www/panel/cronjobs/server_heartbeat.php
0 3 * * *   php /var/www/panel/cronjobs/backup_db.php
0 4 * * *   php /var/www/panel/cronjobs/data_retention.php
0 * * * *   php /var/www/panel/cronjobs/billing_cycle.php

7. Setup wizard

Visit https://yourdomain.com/setup.php. The wizard validates the database connection and creates your first administrator account.

After setup completes, delete setup.php or block access to it. Left open, anyone could re-run setup and create an administrator account.

How the anti-cheat ↔ panel link works

The connection is bidirectional and fully automatic:

DirectionWhat flowsFrequency
AC → PanelDetections, bans, online players, server statusInstant (event-driven)
Panel → ACSetting changes, black/whitelists, admin grants~30 seconds

So when you change a setting in the panel, there's no need to restart the server — it applies within half a minute.

If the connection doesn't come up

CheckCommand / location
License key correctconfigs/anticheat_config.luats.webPanelKey
Panel reachableFrom the FiveM server: curl -I https://your-panel/
Firewall blockingThe FiveM server must be able to reach port 443 outbound
Panel logsPanel → System Logs
AC side[Tosun AC] lines in the server console
Back to home Tosun Dev Docs