# ACC Server Manager A comprehensive web-based management system for Assetto Corsa Competizione (ACC) dedicated servers. ## 🚀 Quick Start ### Prerequisites - Windows 10/11 or Windows Server 2016+ - Go 1.23.0+ - Administrative privileges ### Installation 1. **Clone and Build** ```bash git clone cd acc-server-manager go mod download go build -o api.exe cmd/api/main.go ``` 2. **Set Environment Variables** ```powershell # Set tool paths (optional - defaults will be used if not set) $env:STEAMCMD_PATH = "C:\steamcmd\steamcmd.exe" $env:NSSM_PATH = ".\nssm.exe" ``` 3. **Generate Configuration** ```powershell # Windows PowerShell .\scripts\generate-secrets.ps1 # Or manually copy and edit copy .env.example .env ``` 4. **Run Application** ```bash ./api.exe ``` Access at: http://localhost:3000 ## ✨ Key Features - **Multi-Server Management** - Manage multiple ACC servers from one interface - **Steam Integration** - Automated server installation and updates - **Real-time Monitoring** - Live server status and performance metrics - **Advanced Security** - JWT authentication, role-based access, rate limiting - **Configuration Management** - Web-based configuration editor - **Service Integration** - Windows Service management ## 🔧 Configuration ### Environment Variables The application uses environment variables for tool configuration: | Variable | Description | Default | |----------|-------------|---------| | `STEAMCMD_PATH` | Path to SteamCMD executable | `c:\steamcmd\steamcmd.exe` | | `NSSM_PATH` | Path to NSSM executable | `.\nssm.exe` | For detailed configuration information, see [Environment Variables Documentation](documentation/ENVIRONMENT_VARIABLES.md). ## 🏗️ Architecture - **Backend**: Go + Fiber web framework - **Database**: SQLite with GORM - **Authentication**: JWT with bcrypt - **API**: RESTful with Swagger documentation ## 📚 Documentation Comprehensive documentation is available in the [`documentation/`](documentation/) folder: - **[Detailed README](documentation/DETAILED_README.md)** - Complete setup and usage guide - **[Logging System](documentation/LOGGING_IMPLEMENTATION_SUMMARY.md)** - Enhanced error handling and logging - **[Security Guide](documentation/SECURITY.md)** - Security features and best practices - **[Configuration](documentation/CONFIGURATION.md)** - Advanced configuration options - **[API Documentation](documentation/API.md)** - Complete API reference - **[Deployment Guide](documentation/DEPLOYMENT.md)** - Production deployment instructions - **[Migration Guides](documentation/)** - Database and feature migration instructions ## 🔒 Security Features - JWT token authentication - Role-based access control - AES-256 encryption for sensitive data - Comprehensive input validation - Rate limiting and DoS protection - Security headers and CORS protection ## 🛠️ Development ```bash # Development with hot reload go install github.com/cosmtrek/air@latest air # Run tests go test ./... # API Documentation # Visit: http://localhost:3000/swagger/ ``` ## 📝 Environment Variables Required variables (auto-generated by scripts): - `JWT_SECRET` - JWT signing secret - `APP_SECRET` - Application secret key - `ENCRYPTION_KEY` - AES encryption key Optional: - `PORT` - HTTP port (default: 3000) - `DB_NAME` - Database file (default: acc.db) - `CORS_ALLOWED_ORIGIN` - CORS origins ## 🤝 Contributing 1. Fork the repository 2. Create feature branch: `git checkout -b feature/name` 3. Make changes and add tests 4. Submit pull request ## 📄 License MIT License - see [LICENSE](LICENSE) file for details. --- For detailed documentation, troubleshooting, and advanced configuration, see the [`documentation/`](documentation/) folder. **Happy Racing! 🏁**