update docs
This commit is contained in:
178
docs/DEPLOYMENT.md
Normal file
178
docs/DEPLOYMENT.md
Normal file
@@ -0,0 +1,178 @@
|
||||
# Deployment Guide
|
||||
|
||||
This guide covers deploying ACC Server Manager to a production Windows server.
|
||||
|
||||
## Production Requirements
|
||||
|
||||
- Windows Server 2016+ or Windows 10/11
|
||||
- 4GB+ RAM
|
||||
- 20GB+ free disk space
|
||||
- Administrator access
|
||||
- SteamCMD and NSSM installed
|
||||
|
||||
## Deployment Steps
|
||||
|
||||
### 1. Prepare the Server
|
||||
|
||||
Install required tools:
|
||||
```powershell
|
||||
# Create directories
|
||||
New-Item -ItemType Directory -Path "C:\ACCServerManager"
|
||||
New-Item -ItemType Directory -Path "C:\steamcmd"
|
||||
New-Item -ItemType Directory -Path "C:\tools\nssm"
|
||||
|
||||
# Download and extract SteamCMD
|
||||
# Download and extract NSSM
|
||||
```
|
||||
|
||||
### 2. Build for Production
|
||||
|
||||
On your development machine:
|
||||
```bash
|
||||
# Build optimized binary
|
||||
go build -ldflags="-w -s" -o acc-server-manager.exe cmd/api/main.go
|
||||
```
|
||||
|
||||
### 3. Deploy Files
|
||||
|
||||
Copy to server:
|
||||
- `acc-server-manager.exe`
|
||||
- `.env` file (with production secrets)
|
||||
- `nssm.exe` (if not in PATH)
|
||||
|
||||
### 4. Configure Production Environment
|
||||
|
||||
Generate production secrets:
|
||||
```powershell
|
||||
# On the server
|
||||
.\scripts\generate-secrets.ps1
|
||||
```
|
||||
|
||||
Edit `.env` for production:
|
||||
```env
|
||||
PORT=80
|
||||
CORS_ALLOWED_ORIGIN=https://yourdomain.com
|
||||
```
|
||||
|
||||
### 5. Install as Windows Service
|
||||
|
||||
```powershell
|
||||
# Using NSSM
|
||||
nssm install "ACC Server Manager" "C:\ACCServerManager\acc-server-manager.exe"
|
||||
nssm set "ACC Server Manager" DisplayName "ACC Server Manager"
|
||||
nssm set "ACC Server Manager" Description "Web management for ACC servers"
|
||||
nssm set "ACC Server Manager" Start SERVICE_AUTO_START
|
||||
nssm set "ACC Server Manager" AppDirectory "C:\ACCServerManager"
|
||||
|
||||
# Start the service
|
||||
nssm start "ACC Server Manager"
|
||||
```
|
||||
|
||||
### 6. Configure Firewall
|
||||
|
||||
```powershell
|
||||
# Allow HTTP traffic
|
||||
New-NetFirewallRule -DisplayName "ACC Server Manager" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
|
||||
```
|
||||
|
||||
### 7. Set Up Reverse Proxy (Optional)
|
||||
|
||||
If using IIS as reverse proxy:
|
||||
1. Install URL Rewrite and ARR modules
|
||||
2. Configure reverse proxy to localhost:3000
|
||||
3. Enable HTTPS with valid certificate
|
||||
|
||||
## Security Checklist
|
||||
|
||||
- [ ] Generated unique production secrets
|
||||
- [ ] Changed default admin password
|
||||
- [ ] Configured HTTPS (via reverse proxy)
|
||||
- [ ] Restricted database file permissions
|
||||
- [ ] Enabled Windows Firewall
|
||||
- [ ] Disabled unnecessary ports
|
||||
- [ ] Set up backup schedule
|
||||
|
||||
## Monitoring
|
||||
|
||||
### Service Health
|
||||
```powershell
|
||||
# Check service status
|
||||
Get-Service "ACC Server Manager"
|
||||
|
||||
# View recent logs
|
||||
Get-EventLog -LogName Application -Source "ACC Server Manager" -Newest 20
|
||||
```
|
||||
|
||||
### Application Logs
|
||||
- Check `logs/app.log` for application events
|
||||
- Check `logs/error.log` for errors
|
||||
- Monitor disk space for log growth
|
||||
|
||||
## Backup Strategy
|
||||
|
||||
### Automated Backups
|
||||
|
||||
Create scheduled task for daily backups:
|
||||
```powershell
|
||||
# Backup script (save as backup.ps1)
|
||||
$date = Get-Date -Format "yyyy-MM-dd"
|
||||
$backupDir = "C:\Backups\ACCServerManager"
|
||||
New-Item -ItemType Directory -Force -Path $backupDir
|
||||
|
||||
# Backup database and config
|
||||
Copy-Item "C:\ACCServerManager\acc.db" "$backupDir\acc_$date.db"
|
||||
Copy-Item "C:\ACCServerManager\.env" "$backupDir\env_$date"
|
||||
|
||||
# Keep only last 7 days
|
||||
Get-ChildItem $backupDir -File | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-7)} | Remove-Item
|
||||
```
|
||||
|
||||
## Updates
|
||||
|
||||
### Update Process
|
||||
|
||||
1. **Backup current deployment**
|
||||
2. **Build new version**
|
||||
3. **Stop service**: `nssm stop "ACC Server Manager"`
|
||||
4. **Replace binary**
|
||||
5. **Start service**: `nssm start "ACC Server Manager"`
|
||||
6. **Verify**: Check logs and web interface
|
||||
|
||||
### Rollback
|
||||
|
||||
If update fails:
|
||||
1. Stop service
|
||||
2. Restore previous binary
|
||||
3. Restore database if needed
|
||||
4. Start service
|
||||
|
||||
## Troubleshooting Deployment
|
||||
|
||||
### Service Won't Start
|
||||
- Check Event Viewer for errors
|
||||
- Verify .env file exists and is valid
|
||||
- Run manually to see console output
|
||||
|
||||
### Can't Access Web Interface
|
||||
- Check firewall rules
|
||||
- Verify service is running
|
||||
- Check port binding in .env
|
||||
|
||||
### Permission Errors
|
||||
- Run service as Administrator (not recommended)
|
||||
- Or grant specific permissions to service account
|
||||
|
||||
## Performance Tuning
|
||||
|
||||
### For Large Deployments
|
||||
- Use SSD for database storage
|
||||
- Increase Windows TCP connection limits
|
||||
- Consider load balancing for 50+ servers
|
||||
- Monitor memory usage and adjust if needed
|
||||
|
||||
### Database Maintenance
|
||||
```sql
|
||||
-- Run monthly via SQLite
|
||||
VACUUM;
|
||||
ANALYZE;
|
||||
```
|
||||
Reference in New Issue
Block a user