Skip to content

jhd3197/ServerKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,372 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ServerKit — Deploy, manage, and monitor servers

ServerKit

Deploy, manage, and monitor servers.

A lightweight, modern server control panel for managing web apps, databases, Docker containers, and security — without the complexity of Kubernetes or the cost of managed platforms.

English | Español | 中文版 | Português


Linux Docker Discord

GitHub Stars Downloads License Python React Flask Nginx Let's Encrypt


Quick Start · Screenshots · Features · Architecture · Roadmap · Docs · Contributing · Discord


🚀 Quick Start

⏱️ Up and running in under 2 minutes

Option 1: One-Line Install (Recommended)

curl -fsSL https://serverkit.ai/install.sh | bash

Works on Ubuntu 22.04+, Debian 12+, Fedora, and RHEL/Rocky/AlmaLinux 9+. Sets up everything automatically.

Optional: PANEL_DOMAIN=panel.example.com sets the domain and tries Let's Encrypt; SERVERKIT_OFFLINE_TARBALL=... installs from a local tarball.

Update

sudo serverkit update

Atomic blue/green update with pre-flight checks, DB backup, migration, and automatic rollback. Use --dry-run to preview, --branch dev for dev builds, or --release [version] for release tarballs.

Option 2: Docker

git clone https://github.com/jhd3197/ServerKit.git
cd ServerKit
cp .env.example .env       # then edit .env with your secrets
docker compose up -d       # access at http://localhost

Option 3: Manual Installation

See the Installation Guide for step-by-step instructions.

Requirements

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

📸 Screenshots

Captured from a mock-data demo build — every hostname, IP, domain, and metric below is fictional.

Dashboard Services
Dashboard Services
Live server metrics, KPI cards, and recent activity Static, Node.js, Python, PHP, and Docker apps
Docker WordPress
Docker WordPress
Containers, images, volumes, and networks with live CPU/RAM Per-site status, Quick Actions, and live health checks
Agent Fleet Marketplace
Agent Fleet Marketplace
Fleet health, version rollouts, and command queue One-click app templates and installable extensions
Monitoring Security
Monitoring Security
Live gauges, alert rules, and notification channels Posture score, ClamAV, file integrity, firewall, Fail2Ban
View all screenshots
AI Assistant Service Detail
AI Assistant Service Detail
Prompture-powered assistant that runs tools on your infra Deployments, git connection, live usage, logs, and settings
Databases SQL Console
Databases SQL Console
MySQL / PostgreSQL / SQLite explorer with a source tree Run SQL from the browser with a typed results grid
Domains DNS Zones
Domains DNS Zones
SSL status, expiry tracking, and auto-renewal Cloudflare, Route 53, DigitalOcean — full record editing
Backups Mail
Backups Mail
Scheduled backups with S3/B2 sync and one-click restore Postfix, Dovecot, OpenDKIM, SpamAssassin, and Roundcube
Cron Jobs File Manager
Cron Jobs File Manager
Visual cron editor with human-readable timing Browse, edit, and upload files with per-mount disk usage
Logs & Terminal Servers
Logs & Terminal Servers
Log viewer, process list, journald, and SSH sessions Every server in one panel with live CPU/RAM/disk telemetry
Remote Access Settings
Remote Access Settings
Expose NAT-ed services publicly via WireGuard-paired agents Profile, appearance/branding, users, and connections
Login
Login
Email/password sign-in with SSO and 2FA support

🎯 Features

The core is feature-complete. New capabilities ship as installable extensions through the built-in Marketplace — the core stays lean and stable, with ongoing work focused on UI polish and community-reported fixes.

🚀 Apps & Deployment

One-Click WordPress
PHP-FPM 8.x sites published at real subdomains, with URL-swap previews, custom domains, and wildcard HTTPS.
Any Stack
Flask/Django on Gunicorn, Node.js on PM2, static sites — from Git, Docker, a manual path, or a zip upload.
Docker & Compose
Image-update detection with one-click apply, auto-sleep for idle containers, CPU-driven auto-scaling, live logs, and terminal access.
Marketplace
100+ one-click app templates on a declarative schema with auto-resolved secrets, hosts, and URLs — nothing hardcoded.
Build Packs
Zero-Dockerfile deploys: inspects a repo and generates a Dockerfile + compose from a build plan.
Automations
Node-based visual automation for tasks, deployments, and CI/CD — cron, webhook, and event triggers, running in a managed container. Ships as an extension.
Previews & Snapshots
Ephemeral PR preview environments, plus immutable, secret-masked config snapshots with diff and one-click restore.
Projects & Environments
Workspace → Project → Environment grouping, and a WordPress prod/staging/dev pipeline with code/DB promotion.

🏗️ Infrastructure

Domains & SSL
Nginx virtual hosts, automatic Let's Encrypt with renewal, hardened TLS 1.2+/AEAD, Cloudflare-aware configs, automatic CAA.
DNS Zones
Full record management across Cloudflare, Route 53, and DigitalOcean — propagation checks and dynamic DNS for changing IPs.
Databases
MySQL/MariaDB and PostgreSQL with user management, a live source tree, and a browser SQL console.
Cloud Provisioning
Spin up servers on DigitalOcean, Hetzner, Vultr, and Linode with cost tracking.
Connections Hub
Git providers, clouds, DNS, registrars, SMTP relays, and S3/B2 storage — every external account in one place, encrypted at rest.
Backups
Scheduled app/database/file backups to S3, B2, or local with retention policies, one-click restore, and optional client-side encryption.
Files, FTP & Cron
Web file manager with S3/B2 bucket browsing, vsftpd user management, and a visual cron editor.
Email Server
Postfix + Dovecot with DKIM/SPF/DMARC, SpamAssassin, Roundcube webmail, and forwarding rules.

🔒 Security

Web Application Firewall
Per-app ModSecurity v3 + OWASP Core Rule Set with detect/block modes and tunable paranoia.
Passkeys & 2FA
WebAuthn passwordless sign-in (hardware keys, Touch ID, Windows Hello) plus TOTP with backup codes.
Malware & Integrity
ClamAV scanning with quarantine, file-integrity monitoring, and Lynis vulnerability audits.
SSH & Hardening
Fail2ban, SSH key management, IP allow/block lists, and automatic OS security updates.
Container Scanning
Per-image CVE scanning with grype and SBOM generation with syft.
Encrypted Secrets
Provider credentials and secrets sealed with Fernet, plus an inbound webhook gateway for external automation.

🖥️ Multi-Server

Cross-Platform Agent
Go agent for Linux, Windows, and macOS — HMAC-SHA256 auth over a real-time WebSocket gateway. Native Windows service + MSI, .deb/.rpm, ARM64. More →
Fleet Management
Inventory, approval queue, staged version rollouts, LAN auto-discovery, and an offline command queue.
Easy Enrollment
Short-code pairing with fingerprint verification or pre-shared tokens; host credentials stored AES-GCM-encrypted. More →
Fleet Monitor
Cross-server heatmaps, metric comparisons, alert thresholds, anomaly detection, and capacity forecasting.
Server Templates
Expected-state templates with drift detection, compliance dashboards, and auto-remediation.
Remote Access Tunnels
Expose a private/NAT'd service through an edge server over agent-managed WireGuard — no port forwarding.
Guided Onboarding
Validate → prerequisites → Docker → pair agent, with a live progress log.
Per-Server Proxy
Opt-in Dockerized Traefik or Caddy per server with compose preview; host nginx stays the default.

📊 Monitoring & Alerts

Real-Time Metrics
CPU, RAM, disk, and network over WebSocket, with historical retention and uptime tracking.
GPU Monitoring
NVIDIA utilization, memory, temperature, and per-process/per-container usage.
Status Pages
Public pages with HTTP/TCP/DNS/Ping checks, component monitoring, and incident management.
Notifications
Discord, Slack, Telegram, HTML email, and webhooks — per-user channels, severity filters, and quiet hours.

👥 Team & Access

Workspaces
Multi-tenant isolation with quotas and member management.
RBAC
Admin/developer/viewer roles with granular per-feature read/write permissions.
SSO & OAuth
Google, GitHub, OpenID Connect, and SAML 2.0 with account linking.
API Keys
Tiered keys with rate limiting, fine-grained scopes, usage analytics, and OpenAPI docs.
Audit Logging
Every user action tracked, with a detailed activity dashboard.
Webhooks & Shared Config
Outbound subscriptions with HMAC signatures and retries, plus shared tags and variable groups.

🎨 Customization

Lean by Default
The setup wizard installs only the extensions matching your use cases — add more anytime from the Marketplace.
Sidebar Presets
Full, Web Hosting, Email Admin, DevOps, or Minimal views with collapsible groups and per-user layouts.
Your Brand
8 preset accent colors plus a custom hex picker, and white-label logo, name, or banner.
Dashboard Widgets
Toggle and reorder widgets to fit your workflow.

🏗️ Architecture

ServerKit architecture: clients and public visitors reach an nginx edge layer that splits panel traffic to the Flask API and public traffic to app containers; the ServerKit panel holds the React SPA, REST API, Socket.IO agent gateway, services, models, jobs, notifications and the extension runtime; a runtime layer on the same server holds Docker app containers, databases and panel state; a remote agent fleet of Go agents connects back over the /agent namespace.

Nginx terminates TLS and splits traffic two ways: panel requests go to the Flask API, everything else is proxied to the Docker container serving that domain. The panel keeps its own state in SQLite or PostgreSQL, runs background work through a job scheduler and notification bus, and loads optional functionality from the extension runtime. Remote servers are managed by a Go agent that connects back over a Socket.IO namespace.

View as ASCII diagram
                          ┌──────────────────┐
                          │     INTERNET     │
                          └────────┬─────────┘
                                   │
                                   ▼
┌──────────────────────────────────────────────────────────────────────────┐
│                            YOUR SERVER                                    │
│                                                                           │
│  ┌─────────────────────────────────────────────────────────────────────┐ │
│  │                      NGINX (Reverse Proxy)                          │ │
│  │                         :80 / :443                                  │ │
│  │                                                                     │ │
│  │    app1.com ──┐   app2.com ──┐   api.app3.com ──┐   /api/v1/ ──┐   │ │
│  └───────────────┼──────────────┼──────────────────┼──────────────┼────┘ │
│                  │ proxy_pass   │ proxy_pass       │ proxy_pass   │      │
│                  ▼              ▼                  ▼              │      │
│  ┌────────────────────────────────────────────────────────────┐  │      │
│  │                    DOCKER CONTAINERS                       │  │      │
│  │                                                            │  │      │
│  │    ┌───────────┐    ┌───────────┐    ┌───────────┐        │  │      │
│  │    │ WordPress │    │   Flask   │    │  Node.js  │  ...   │  │      │
│  │    │   :8001   │    │   :8002   │    │   :8003   │        │  │      │
│  │    └─────┬─────┘    └───────────┘    └───────────┘        │  │      │
│  └──────────┼─────────────────────────────────────────────────┘  │      │
│             │                                                     ▼      │
│             │                        ┌─────────────────────────────────┐ │
│             │                        │       SERVERKIT PANEL           │ │
│             │                        │   React SPA · Flask REST API    │ │
│             │                        │   Socket.IO · Jobs · Notify     │ │
│             │                        │   Extension runtime             │ │
│             │                        │   Gunicorn -w 1 (threaded)      │ │
│             │                        └────────────────┬────────────────┘ │
│             ▼                                         │                  │
│  ┌──────────────────────────────────┐   ┌─────────────▼────────────────┐ │
│  │            DATABASES             │   │        PANEL STATE           │ │
│  │  MySQL :3306   PostgreSQL :5432  │   │  SQLite (default) or         │ │
│  │  Redis :6379   MongoDB :27017    │   │  PostgreSQL · Alembic        │ │
│  └──────────────────────────────────┘   └──────────────────────────────┘ │
└───────────────────────────────────────────────────────┼──────────────────┘
                                                        │
                          Socket.IO /agent (HMAC)       │
                          + HTTP long-poll fallback     ▼
                       ┌──────────────────────────────────────┐
                       │   REMOTE SERVERS — Go agent fleet    │
                       │   server A  ·  server B  ·  server C │
                       └──────────────────────────────────────┘

View Full Architecture Documentation → — Request flow, extension platform, template system, port allocation, jobs, notifications, and the agent fleet.


🗺️ Roadmap

ServerKit's core is feature-complete — every planned core phase has shipped, from the first Flask + React infrastructure to multi-server fleets, SSO, the automation engine, and the extension marketplace.

Development now happens in two places:

  • 🧩 Extensions — new functionality ships as installable extensions through the Marketplace (100+ one-click templates and growing). The core stays lean; you install only what you need.
  • ✨ Core polish — ongoing UI/UX refinements and fixes for issues reported by the community. No new core features are planned.

Full history: ROADMAP.md


📖 Documentation

Document Description
Architecture System design, request flow, diagrams
Installation Guide Complete setup instructions
Deployment Guide CLI commands and production deployment
Agent Install & run the multi-server agent (Linux/Windows/macOS) — separate repo
Agent Pairing Secure short-code agent enrollment
API Reference REST API endpoints
New Features Endpoint & page reference for the latest dev features
Enhancements Guide to the ten developer-experience, team/scale, fleet, and security capabilities
Changelog Release history and notable changes
Roadmap Development roadmap and planned features
Contributing How to contribute

🧱 Tech Stack

Layer Technology
Backend Python 3.11, Flask, SQLAlchemy, Flask-SocketIO, Flask-Migrate
Frontend React 18, Vite, SCSS, Recharts
Database SQLite / PostgreSQL
Web Server Nginx, Gunicorn (single threaded worker — -w 1 --threads N)
Containers Docker, Docker Compose
Security ClamAV, Lynis, Fail2ban, ModSecurity v3 + OWASP CRS, grype, syft, TOTP (pyotp), Fernet encryption
Auth JWT, OAuth 2.0, OIDC, SAML 2.0, WebAuthn / passkeys
Email Postfix, Dovecot, SpamAssassin, Roundcube
Agent Go (multi-server), HMAC-SHA256, WebSocket

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md first.

fork → feature branch → commit → push → pull request

Priority areas: Marketplace extensions, UI/UX improvements, documentation, test coverage.


💛 Support ServerKit

ServerKit is free and open source. If it saves you time, you can help keep it going:

💎 Crypto

Asset Network Address
QR code for the USDT TRC-20 donation address USDT TRC-20 · Tron TTiCtqLauF1iSW2YGB3b78KmRxRqoLCgeL
QR code for the USDT and ETH ERC-20 donation address USDT / ETH ERC-20 · Ethereum 0xD13D5355Fa214e8317fea2ff192a065BaeC13527
QR code for the Bitcoin donation address BTC Bitcoin bc1qatx67n3qxdvuv3arc9j8aytk34f22g02k9c7vr
QR code for the Solana donation address SOL Solana AWXzqtBEgUfteHPQtDegsZ6D5y57M3GGdKPD8rR7h6xu

TRC-20 has the lowest fees — usually under a dollar — so it's the friendliest option for a small donation. ERC-20 gas can cost more than the donation itself.

QR codes are generated locally by scripts/generate-funding-qr.mjs, which checksum-validates every address before encoding.


🔭 Related Projects

Faro — A modern desktop client for SFTP, FTP, SSH, and S3-compatible storage, from the same author. Save a server once, then browse its files in a dual-pane view and open a terminal against the same SSH session — plus drag-and-drop transfers, one-way directory sync, and edit-in-place. It even has an Agent Bridge that lets Claude Code (or any MCP agent) run commands on a box through your authenticated session, with per-command approval and no shared credentials.

ServerKit manages your servers from the browser; Faro is the desktop companion for hands-on file transfer, shells, and ad-hoc work across all your boxes. Grab a build →

LocalKit — Spin up local WordPress sites in one click. Each site runs as its own isolated Docker Compose project, and you can push code or push/pull databases straight to your ServerKit server through the serverkit-localkit extension.

DeviceKit — A unified Android device fleet & test-automation platform. Control a fleet of devices from one dashboard — run automations, stream screens in real time, catch visual regressions, and debug failures with AI-powered analysis.


💬 Community

Discord

Join the Discord to ask questions, share feedback, or get help with your setup.


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

License

Contributing

Security policy

Stars

649 stars

Watchers

4 watching

Forks

Sponsor this project

  •  

Contributors