Panel
Panel Configuration
nginx configuration, first-run setup, and production tips for the Struxa panel.
nginx Reverse Proxy
The panel listens on 127.0.0.1:3001 inside Docker. Place nginx in front of it:
server {
listen 443 ssl;
server_name panel.example.com;
ssl_certificate /etc/letsencrypt/live/panel.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/panel.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 86400;
}
}
server {
listen 80;
server_name panel.example.com;
return 301 https://$host$request_uri;
}First-Run Setup
On first boot, Struxa automatically runs database migrations. Navigate to https://panel.example.com — you will be redirected to /setup to create the first admin account.
After creating the admin account, you will land on the admin dashboard.
Docker Compose Services
| Service | Image | Internal Port |
|---|---|---|
web | ghcr.io/struxadotcloud/struxa:latest | 3001 |
mysql | mysql:8.0 | 3306 (internal only) |
Viewing Logs
cd /opt/struxa
# Panel logs
docker compose -f docker-compose.prod.yml logs -f web
# Database logs
docker compose -f docker-compose.prod.yml logs -f mysqlUpdating
cd /opt/struxa
docker compose -f docker-compose.prod.yml --env-file .env.prod pull
docker compose -f docker-compose.prod.yml --env-file .env.prod up -dStopping / Restarting
# Restart panel only
docker compose -f docker-compose.prod.yml restart web
# Stop everything
docker compose -f docker-compose.prod.yml down
# Stop and remove volumes (destructive — deletes database)
docker compose -f docker-compose.prod.yml down -vdocker compose down -v will delete the MySQL volume and all panel data. Only use it on a fresh installation or when intentionally wiping all data.
Environment Variables
See the Environment Variables reference for all supported configuration options.