147 lines
4.5 KiB
Markdown
147 lines
4.5 KiB
Markdown
# Environment Variables Configuration
|
|
|
|
This document describes the environment variables used by the ACC Server Manager to replace the previous database-based system configuration.
|
|
|
|
## Overview
|
|
|
|
The `system_configs` database table has been completely removed and replaced with environment variables for better configuration management and deployment flexibility.
|
|
|
|
## Environment Variables
|
|
|
|
### STEAMCMD_PATH
|
|
**Description:** Path to the SteamCMD executable
|
|
**Default:** `c:\steamcmd\steamcmd.exe`
|
|
**Example:** `STEAMCMD_PATH=D:\tools\steamcmd\steamcmd.exe`
|
|
|
|
This path is used for:
|
|
- Installing ACC dedicated servers
|
|
- Updating server files
|
|
- Managing Steam-based server installations
|
|
|
|
### NSSM_PATH
|
|
**Description:** Path to the NSSM (Non-Sucking Service Manager) executable
|
|
**Default:** `.\nssm.exe`
|
|
**Example:** `NSSM_PATH=C:\tools\nssm\win64\nssm.exe`
|
|
|
|
This path is used for:
|
|
- Creating Windows services for ACC servers
|
|
- Managing service lifecycle (start, stop, restart)
|
|
- Service configuration and management
|
|
|
|
## Setting Environment Variables
|
|
|
|
### Windows Command Prompt
|
|
```cmd
|
|
set STEAMCMD_PATH=D:\tools\steamcmd\steamcmd.exe
|
|
set NSSM_PATH=C:\tools\nssm\win64\nssm.exe
|
|
```
|
|
|
|
### Windows PowerShell
|
|
```powershell
|
|
$env:STEAMCMD_PATH = "D:\tools\steamcmd\steamcmd.exe"
|
|
$env:NSSM_PATH = "C:\tools\nssm\win64\nssm.exe"
|
|
```
|
|
|
|
### System Environment Variables (Persistent)
|
|
1. Open System Properties → Advanced → Environment Variables
|
|
2. Add new system variables:
|
|
- Variable name: `STEAMCMD_PATH`
|
|
- Variable value: `D:\tools\steamcmd\steamcmd.exe`
|
|
3. Repeat for `NSSM_PATH`
|
|
|
|
### Docker Environment
|
|
```dockerfile
|
|
ENV STEAMCMD_PATH=/opt/steamcmd/steamcmd.sh
|
|
ENV NSSM_PATH=/usr/local/bin/nssm
|
|
```
|
|
|
|
### Docker Compose
|
|
```yaml
|
|
environment:
|
|
- STEAMCMD_PATH=/opt/steamcmd/steamcmd.sh
|
|
- NSSM_PATH=/usr/local/bin/nssm
|
|
```
|
|
|
|
## Migration from system_configs
|
|
|
|
### Automatic Migration
|
|
A migration script (`003_remove_system_configs.sql`) will automatically:
|
|
1. Remove the `system_configs` table
|
|
2. Clean up related database references
|
|
3. Record the migration in `migration_records`
|
|
|
|
### Manual Configuration Required
|
|
After upgrading, you must set the environment variables based on your previous system configuration:
|
|
|
|
1. Check your previous configuration (if you had custom paths):
|
|
```sql
|
|
SELECT key, value, default_value FROM system_configs;
|
|
```
|
|
|
|
2. Set environment variables accordingly:
|
|
- If you used custom `steamcmd_path`: Set `STEAMCMD_PATH`
|
|
- If you used custom `nssm_path`: Set `NSSM_PATH`
|
|
|
|
3. Restart the ACC Server Manager service
|
|
|
|
### Validation
|
|
The application will use default values if environment variables are not set. To validate your configuration:
|
|
|
|
1. Check the application logs on startup
|
|
2. The `env.ValidatePaths()` function can be used to verify paths exist
|
|
3. Monitor for any "failed to get path" errors in logs
|
|
|
|
## Benefits of Environment Variables
|
|
|
|
### Deployment Flexibility
|
|
- Different environments can have different tool paths
|
|
- No database dependency for basic configuration
|
|
- Container-friendly configuration
|
|
|
|
### Security
|
|
- Sensitive paths not stored in database
|
|
- Environment-specific configuration
|
|
- Better separation of configuration from data
|
|
|
|
### Performance
|
|
- No database queries for basic path lookups
|
|
- Reduced database load on every operation
|
|
- Faster service startup
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
**Issue:** SteamCMD operations fail
|
|
**Solution:** Verify `STEAMCMD_PATH` points to valid steamcmd.exe
|
|
|
|
**Issue:** Service creation fails
|
|
**Solution:** Verify `NSSM_PATH` points to valid nssm.exe
|
|
|
|
**Issue:** Using default paths
|
|
**Solution:** Set environment variables and restart application
|
|
|
|
### Debugging
|
|
Enable debug logging to see which paths are being used:
|
|
```
|
|
2024-01-01 12:00:00 DEBUG Using SteamCMD path: D:\tools\steamcmd\steamcmd.exe
|
|
2024-01-01 12:00:00 DEBUG Using NSSM path: C:\tools\nssm\win64\nssm.exe
|
|
```
|
|
|
|
## Code Changes Summary
|
|
|
|
### Removed Components
|
|
- `local/model/config.go` - SystemConfig struct and related constants
|
|
- `local/service/system_config_service.go` - SystemConfigService
|
|
- `local/repository/system_config_repository.go` - SystemConfigRepository
|
|
- Database table: `system_configs`
|
|
|
|
### Added Components
|
|
- `local/utl/env/env.go` - Environment variable utilities
|
|
- Migration script: `003_remove_system_configs.sql`
|
|
|
|
### Modified Services
|
|
- **SteamService**: Now uses `env.GetSteamCMDPath()`
|
|
- **WindowsService**: Now uses `env.GetNSSMPath()`
|
|
- **ServerService**: Removed SystemConfigService dependency
|
|
- **ApiService**: Removed SystemConfigService dependency |