Pre-Deployment
Infrastructure Requirements
Server Requirements
- Ubuntu 20.04+, Debian 11+, or RHEL 8+
- Minimum 2GB RAM (4GB+ recommended)
- 20GB+ available disk space
- 2+ CPU cores
- Root or sudo access
Domain & DNS
- Domain name registered
- DNS A records configured:
- Panel domain (e.g.,
panel.example.com) - API domain (e.g.,
api.example.com) - Monitoring domain (optional)
- Daemon/node domain (for all-in-one)
- Panel domain (e.g.,
- DNS propagated and verified
- All domains point to server IP
Security Configuration
SSL/TLS Certificates
Generate Certificates
- SSL certificates generated for all domains
- Using Let’s Encrypt (Certbot) or valid CA certificate
- Certificates properly configured in nginx
- HTTP to HTTPS redirect enabled
- Certificate auto-renewal configured
Environment Variables
Required Variables
-
DATABASE_URLconfigured with secure password -
BETTER_AUTH_SECRETgenerated (32+ chars) -
FRONTEND_URLset to panel domain -
API_URLset to API domain -
JWT_SECRETgenerated (32+ chars) -
DOWNLOAD_TOKEN_SECRETgenerated (32+ chars) -
ENCRYPTION_KEYgenerated (64 hex chars)
OAuth Configuration (Optional)
- OAuth provider credentials configured
- Redirect URIs match production domains
- Test OAuth login flow
Database Security
Network Configuration
Firewall Rules
Configure Firewall
Allow only necessary ports:
- Port 80 (HTTP - redirects to HTTPS)
- Port 443 (HTTPS)
- Port 22 (SSH - restrict to your IP)
- Port 2022 (SFTP - for file transfers)
- Port 8080 (Daemon API - if applicable)
- Block all other incoming ports
nginx Configuration
Reverse Proxy Setup
- nginx configurations created for all services
- Symlinks in
/etc/nginx/sites-enabled/ -
client_max_body_sizeset (100M default) - WebSocket support configured
- Proxy headers configured correctly
- nginx syntax validated (
nginx -t) - nginx reloaded
Deployment
Docker Containers
Deploy Services
- Docker Compose file configured
- Environment variables loaded
- Containers started (
docker-compose up -d) - All containers running (
docker-compose ps) - Health checks passing
- No errors in logs (
docker-compose logs)
Service Verification
Panel Access
- Panel accessible at
https://panel.example.com - No SSL certificate errors
- Login page loads correctly
- Can log in with admin credentials
- Dashboard displays properly
API Access
- API accessible at
https://api.example.com - Health check endpoint responds
- WebSocket connection successful
- No CORS errors in browser console
Monitoring & Maintenance
Logging
Log Configuration
- Application logs configured
- nginx access/error logs enabled
- Docker logs accessible (
docker-compose logs) - Log rotation configured
- Disk space monitoring for logs
Backups
Updates
Performance Optimization
Database Optimization
Caching
Operational Readiness
Documentation
Testing
Functionality Testing
- User registration works
- Login/logout works
- OAuth providers work (if enabled)
- Server creation works
- Console WebSocket works
- File manager works
- Backups can be created and restored
- Subuser invites work
- Permissions are enforced
Post-Deployment
Monitoring
User Onboarding
Security Checklist
- All secrets are unique and randomly generated
- Default passwords changed
- SSL/TLS enabled for all domains
- Firewall configured and enabled
- SSH key-based authentication only
- Regular security updates enabled
-
.envfile secured (chmod 600) - Database access restricted
- Backups encrypted and secured
- Rate limiting enabled
- CSRF protection enabled
- Security headers configured
Common Issues
Database Connection Errors
Symptoms: API can’t connect to PostgreSQL Solutions:- Verify
DATABASE_URLis correct - Check PostgreSQL container is running
- Verify network connectivity between containers
- Check PostgreSQL logs for errors
SSL Certificate Issues
Symptoms: Certificate errors in browser Solutions:- Verify DNS points to server
- Regenerate certificates with Certbot
- Check nginx configuration syntax
- Verify certificate files exist and are readable
WebSocket Connection Failures
Symptoms: Console not updating, “Connection failed” errors Solutions:- Verify nginx WebSocket proxy configuration
- Check for reverse proxy timeout settings
- Ensure firewall allows WebSocket connections
- Verify
API_URLuseshttps://(nothttp://)
Container Restarts
Symptoms: Containers constantly restarting Solutions:- Check logs:
docker-compose logs <service> - Verify environment variables are set
- Check for port conflicts
- Verify dependencies are running (database, redis)
Next Steps
After completing this checklist:Environment Variables
Review all configuration options
Self-Hosting Overview
Learn about deployment options