Warning
It is not recommended for production use. APIs, features, and data may break, change, or disappear at any time. Use at your own risk.
Open-source game server management panel.
Airlink Panel is a web-based control center for deploying, monitoring, and managing game servers across multiple machines. The panel communicates with daemons running on each node to manage Docker containers, files, and SFTP.
Features:
- Web UI for admins and users (EJS templates, Tailwind CSS)
- Node-based architecture: one panel, many daemons
- Addon system for extending functionality
- REST API (v1 + legacy) with scoped API keys
- Real-time console, file manager, backups, SFTP
- HMAC-signed daemon communication
- Server creation, power actions, resource management
- User management with 2FA support
- Analytics and player stats
- Multi-language support (i18n)
Documentation: airlinklabs.xyz/docs/quick-start/
| Handle | Role |
|---|---|
| thavanish | Maintainer |
| privt00 | Project lead |
| achul123 | Core developer |
- Node.js v18 or later
- pnpm v8 or later (
npm install -g pnpm) - Git
- Docker
sudo su
bash <(curl -s https://raw.githubusercontent.com/airlinklabs/panel/refs/heads/main/installer.sh)The installer handles Node.js, Docker, database setup, build, and systemd service creation.
Manage with systemd:
systemctl start airlink-panel
systemctl stop airlink-panel
systemctl restart airlink-panel
journalctl -u airlink-panel -fcd /var/www/
git clone https://github.com/AirlinkLabs/panel.git
cd panel
chown -R www-data:www-data /var/www/panel
chmod -R 755 /var/www/panel
pnpm install
cp example.env .env
# Edit .env: PORT, URL, SESSION_SECRET, DATABASE_URL
pnpm run setup
pnpm run startpnpm run setup installs dependencies, generates the Prisma client, pushes the database schema, and builds TypeScript + CSS.
npm install -g pm2
pm2 start "pnpm run start" --name airlink-panel
pm2 save
pm2 startupCopy example.env to .env and set the required values:
| Variable | Required | Description |
|---|---|---|
NAME |
No | Panel display name (default: Airlink) |
NODE_ENV |
Yes | Set to production for live deployments |
URL |
Yes | Full URL the panel is served from, e.g. http://192.168.1.10:3000 |
PORT |
Yes | Port to listen on |
DATABASE_URL |
Yes | SQLite path, e.g. file:./storage/dev.db |
SESSION_SECRET |
Yes | Random secret for session signing. Generate with openssl rand -hex 32 |
Important
DATABASE_URL must be an absolute path in production (e.g. file:/var/www/panel/storage/dev.db). Relative paths break when started from a different working directory.
Important
URL should be the actual IP or hostname the panel is accessible from. Setting it to http://localhost will prevent network access and cause CSP issues.
The panel exposes a REST API. See docs/specsheet.md for the complete route catalog with request/response formats, authentication details, and daemon communication.
138 HTTP routes, 4 WebSocket endpoints, HMAC-signed daemon communication, scoped API keys with granular permissions.
Addons extend the panel without modifying core files. They live under storage/addons/ and are managed from /admin/addons.
See storage/addons/README.md for structure and API reference.
pnpm install
pnpm run dev # Start in dev mode (auto-restart on changes)
pnpm run typecheck # Typecheck
pnpm run lint # Lint
pnpm run build # Build for production- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit:
git commit -m 'feat: describe your change' - Push and open a pull request against
main
Run pnpm run lint and pnpm run typecheck before submitting.
- Website: airlinklabs.xyz
- Docs: airlinklabs.xyz/docs/quick-start
- Discord: discord.gg/ujXyxwwMHc
- GitHub: github.com/airlinklabs/panel
MIT. See LICENSE for details.