Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ServerKit is a lightweight, modern server control panel for managing web applications, databases, and services on your VPS or dedicated server. Built with Python/Flask backend and React frontend.

Notifications You must be signed in to change notification settings

jhd3197/ServerKit

Repository files navigation


What is ServerKit?

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.


Architecture

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.


Features

Application Management

  • 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

Infrastructure

  • 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

Security

  • 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

Monitoring & Alerts

  • 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

Modern UI

  • Dark-themed responsive dashboard
  • Real-time WebSocket updates
  • Mobile-friendly interface

Screenshots

Dashboard

Workflow-Builder

View More Screenshots

Docker

Workflow Builder

Templates

Applications

Applications Logs


Quick Start

Option 1: One-Line Install (Recommended)

curl -fsSL https://raw.githubusercontent.com/jhd3197/serverkit/main/install.sh | bash

Works on Ubuntu 22.04+ and Debian 12+. Sets up everything automatically.

Option 2: Docker

# 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

Option 3: Manual Installation

See Installation Guide for detailed instructions.


Requirements

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

Tech Stack

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

Documentation

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

Project Structure

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

CLI Commands

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]

Configuration

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))"

Notification Setup

ServerKit can send alerts to multiple channels:

Discord

  1. Create webhook: Server Settings β†’ Integrations β†’ Webhooks
  2. Copy URL to Settings β†’ Notifications β†’ Discord

Slack

  1. Create app: api.slack.com β†’ Incoming Webhooks
  2. Copy URL to Settings β†’ Notifications β†’ Slack

Telegram

  1. Create bot via @BotFather
  2. Get chat ID from @userinfobot
  3. Configure in Settings β†’ Notifications β†’ Telegram

Security Features

Two-Factor Authentication

  • TOTP-based (Google Authenticator, Authy, etc.)
  • Backup codes for recovery
  • Enable in Settings β†’ Security

Malware Scanning

  • ClamAV integration
  • Quick scan / Full scan options
  • Automatic quarantine
  • Configure in Security β†’ Settings

File Integrity Monitoring

  • Baseline creation
  • Change detection
  • Alert on modifications

API Overview

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


Contributing

Contributions are welcome! Please read CONTRIBUTING.md first.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

ServerKit β€” Simple. Modern. Self-hosted.
Report Bug Β· Request Feature

Made with ❀️ by Juan Denis

About

ServerKit is a lightweight, modern server control panel for managing web applications, databases, and services on your VPS or dedicated server. Built with Python/Flask backend and React frontend.

Topics

Resources

Contributing

Stars

Watchers

Forks

Sponsor this project

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /