Self-hosted infrastructure, made simple
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://localhostSee 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>
# Utilities
serverkit generate-keys
serverkit logs [service]
serverkit updateCreate a .env file from the example:
cp .env.example .envKey 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.comGenerate 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






