A Flask-based game update server with launcher management, built for containerized deployment.
- 🚀 Launcher Distribution: Public download page for game launcher
- 🎮 Game Version Management: Upload and manage game versions
- 📊 Admin Dashboard: Web-based administration interface
- 🔐 User Management: Multi-user admin system with authentication
- 📡 REST API: JSON API for launcher integration
- 🐳 Docker Ready: Fully containerized with daily automated builds
# Clone the repository
git clone https://github.com/game-update-server.git
cd python-docker
# Start the server
docker-compose up -d
# Access the application
open http://localhost:8000# Pull the latest image
docker pull ghcr.io/nerdscorp/game-update-server:latest
# Run with persistent data
docker run -d \
--name game-update-server \
-p 8000:8000 \
-v $(pwd)/data:/app/data \
-v $(pwd)/downloads:/app/downloads \
ghcr.io/nerdscorp/game-update-server:latest- Public Launcher Page: http://localhost:8000/
- Admin Dashboard: http://localhost:8000/admin
- Default Login:
admin/admin123 - API Endpoint: http://localhost:8000/api/version
- Launcher API: http://localhost:8000/api/launcher/version
- Health Check: http://localhost:8000/api/health
Create a .env file for production:
FLASK_SECRET_KEY=your-super-secure-random-key
BASE_URL=https://updates.yourdomain.com
FLASK_ENV=production
FLASK_DEBUG=False
MAX_CONTENT_LENGTH=5368709120 # 5GB upload limitThe container uses two volumes:
/app/data- Database and configuration files/app/downloads- Uploaded game files
- Non-root container execution
- Secure file upload handling
- Password hashing for user authentication
- Session-based admin access
- File size limits and validation
GET /api/version- Get current active game versionGET /api/version/history- Get all game versionsPOST /api/version/{version}/activate- Activate a versionDELETE /api/version/{version}- Delete a version
GET /api/launcher/version- Get current launcher versionGET /api/launcher/history- Get all launcher versionsPOST /api/launcher/version/{version}/activate- Activate launcher versionDELETE /api/launcher/version/{version}- Delete launcher version
POST /api/upload- Upload new game or launcher version
This repository includes GitHub Actions that automatically:
- Build and test the container on every push
- Publish to GitHub Container Registry daily at midnight UTC
- Support multiple architectures (AMD64 and ARM64)
- Tag with date and version for easy rollbacks
# Install dependencies
pip install -r requirements.txt
# Run development server
python server.py
# Access at http://localhost:5000# Build locally
docker build -t game-update-server .
# Run locally built image
docker run -p 8000:8000 game-update-server- Base Image: Python 3.11 slim
- Web Server: Gunicorn with 4 workers
- Port: 8000 (internal and external)
- Health Check: Built-in endpoint monitoring
- Security: Runs as non-root user
- Size: Optimized for minimal footprint
The container includes health checks accessible at:
GET /health- Simple health statusGET /api/health- Detailed health information
- Upload Management: Drag-and-drop file uploads up to 5GB
- Version Control: Activate/deactivate versions instantly
- User Management: Create and manage admin users
- Release Notes: Detailed changelog for each version
- File Analytics: View download counts and file sizes
- Fork the repository
- Create a feature branch
- Make your changes
- Test with Docker
- Submit a pull request
This project is part of NerdsCorp's internal tooling.
Built with ❤️ by NerdsCorp