Self-hosted infrastructure, made simple
Flask Nginx Let's Encrypt MySQL PostgreSQL Ubuntu
Features Β· Quick Start Β· Documentation Β· Architecture Β· Contributing
ServerKit is a lightweight, modern server control panel for managing web applications, databases, Docker containers, and security on your VPS or dedicated server. Built with Python/Flask backend and React frontend.
Perfect for: Developers, freelancers, and small teams who want full control over their infrastructure without the complexity of Kubernetes or the cost of managed platforms.
View How It Works
ββββββββββββββββββββ
β INTERNET β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β YOUR SERVER β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β NGINX (Reverse Proxy) β β
β β :80 / :443 β β
β β β β
β β app1.com βββ app2.com βββ api.app3.com βββ β β
β βββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββββββΌββββββββββββββ β
β β proxy_pass β proxy_pass β proxy_pass β
β βΌ βΌ βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β DOCKER CONTAINERS β β
β β β β
β β βββββββββββββ βββββββββββββ βββββββββββββ β β
β β β WordPress β β Flask β β Node.js β ... β β
β β β :8001 β β :8002 β β :8003 β β β
β β βββββββ¬ββββββ βββββββββββββ βββββββββββββ β β
β ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β DATABASES β β
β β MySQL :3306 PostgreSQL :5432 Redis :6379 β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
View Full Architecture Documentation β
Includes: Request flow diagrams, template system, port allocation, database linking, and troubleshooting guides.
- PHP / WordPress - PHP-FPM 8.x with one-click WordPress installation
- Python Apps - Deploy Flask and Django with Gunicorn
- Node.js - PM2-managed Node applications
- Docker - Full container and Docker Compose management
- Environment Variables - Secure, encrypted variable management per app
- Domain Management - Nginx virtual hosts with easy configuration
- SSL Certificates - Automatic Let's Encrypt with auto-renewal
- Database Management - MySQL/MariaDB and PostgreSQL support
- Firewall (UFW) - Visual firewall rule management
- Cron Jobs - Schedule tasks with a visual editor
- File Manager - Browse and edit files via web interface
- FTP Server - Manage vsftpd users and access
- Two-Factor Authentication (2FA) - TOTP-based with backup codes
- ClamAV Integration - Malware scanning with quarantine
- File Integrity Monitoring - Detect unauthorized file changes
- Failed Login Detection - Monitor suspicious login attempts
- Security Alerts - Real-time notifications for threats
- Real-time Metrics - CPU, RAM, disk, network monitoring
- Server Uptime Tracking - Historical uptime data
- Alert Thresholds - Customizable warning/critical levels
- Notification Webhooks:
- Discord
- Slack
- Telegram
- Generic webhooks
- Dark-themed responsive dashboard
- Real-time WebSocket updates
- Mobile-friendly interface
curl -fsSL https://raw.githubusercontent.com/jhd3197/serverkit/main/install.sh | bashWorks on Ubuntu 22.04+ and Debian 12+. Sets up everything automatically.
# Clone the repository git clone https://github.com/jhd3197/ServerKit.git cd ServerKit # Configure environment cp .env.example .env nano .env # Set SECRET_KEY and JWT_SECRET_KEY # Start ServerKit docker compose up -d # Access at http://localhost
See Installation Guide for detailed instructions.
| Requirement | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
| CPU | 1 vCPU | 2+ vCPU |
| RAM | 1 GB | 2+ GB |
| Disk | 10 GB | 20+ GB |
| Docker | 24.0+ | Latest |
| Layer | Technology |
|---|---|
| Backend | Python 3.11, Flask, SQLAlchemy, Flask-SocketIO |
| Frontend | React 18, Vite, LESS |
| Database | SQLite / PostgreSQL |
| Web Server | Nginx, Gunicorn |
| Containers | Docker, Docker Compose |
| Security | ClamAV, TOTP (pyotp), Cryptography |
| Document | Description |
|---|---|
| Architecture | System design, request flow, and diagrams |
| Installation Guide | Complete setup instructions |
| Deployment Guide | CLI commands and production deployment |
| API Reference | REST API documentation |
| Roadmap | Development roadmap and planned features |
| Contributing | How to contribute |
ServerKit/
βββ backend/ # Flask API
β βββ app/
β β βββ api/ # API endpoints
β β βββ models/ # Database models
β β βββ services/ # Business logic
β βββ config.py
β βββ requirements.txt
β
βββ frontend/ # React application
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Page components
β β βββ services/ # API client
β β βββ styles/ # LESS stylesheets
β βββ package.json
β
βββ docs/ # Documentation
βββ docker-compose.yml # Docker configuration
βββ README.md
ServerKit includes a management CLI:
# Service Management serverkit start|stop|restart|status # User Management serverkit create-admin serverkit reset-password # Database serverkit backup-db serverkit restore-db <backup-file> # Updates & Branches serverkit update # Update to latest version serverkit update --branch <name> # Switch to specific branch (e.g., dev) serverkit branch # Show current branch and commit # Utilities serverkit generate-keys serverkit logs [service]
Create a .env file from the example:
cp .env.example .env
Key configuration options:
# Required - Generate unique values! SECRET_KEY=your-secret-key JWT_SECRET_KEY=your-jwt-secret # Database (SQLite default, PostgreSQL for production) DATABASE_URL=sqlite:///serverkit.db # Your domain CORS_ORIGINS=https://panel.yourdomain.com
Generate secure keys:
python -c "import secrets; print(secrets.token_hex(32))"ServerKit can send alerts to multiple channels:
- Create webhook: Server Settings β Integrations β Webhooks
- Copy URL to Settings β Notifications β Discord
- Create app: api.slack.com β Incoming Webhooks
- Copy URL to Settings β Notifications β Slack
- Create bot via @BotFather
- Get chat ID from @userinfobot
- Configure in Settings β Notifications β Telegram
- TOTP-based (Google Authenticator, Authy, etc.)
- Backup codes for recovery
- Enable in Settings β Security
- ClamAV integration
- Quick scan / Full scan options
- Automatic quarantine
- Configure in Security β Settings
- Baseline creation
- Change detection
- Alert on modifications
Base URL: http://localhost:5000/api/v1
Authentication:
POST /auth/login # Login
POST /auth/register # Register
POST /auth/2fa/verify # 2FA verification
Applications:
GET /apps # List apps
POST /apps # Create app
GET /apps/:id # Get app
DELETE /apps/:id # Delete app
Security:
GET /security/status # Security summary
POST /security/scan/quick # Quick malware scan
GET /security/events # Security events
Notifications:
GET /notifications/config # Get config
PUT /notifications/config/:channel # Update channel
POST /notifications/test/:channel # Test channel
Full API documentation: docs/API.md
Contributions are welcome! Please read CONTRIBUTING.md first.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
ServerKit β Simple. Modern. Self-hosted.
Report Bug Β·
Request Feature
Made with β€οΈ by Juan Denis