46906c46b351d89d9cdb8ca0965caddee9ebabda
🚀 StackPilot
The ultimate self-hosted Docker stack builder. A web-based wizard that lets you select from 186+ apps, configure paths and credentials, preview your generated Docker Compose setup live, and download a ready-to-deploy bundle — all client-side, no server required.
Features
- 186+ self-hosted apps across 22 categories (media, automation, AI, games, security, monitoring, and more)
- Visual app selection with categories, descriptions, and GitHub links
- OS-aware defaults — paths adjust for Linux, macOS, or Windows
- Live compose preview — see docker-compose.yml, .env, and setup.sh update as you select apps
- Auto-linking setup script — post-deploy script wires services together via APIs (Prowlarr→Sonarr/Radarr, download clients, root folders)
- Tailscale integration — optional remote access with sidecar container, subnet routing, and Funnel support
- VPN routing — Gluetun routes download client traffic through your VPN automatically
- Compose Analyser — paste an existing docker-compose.yml to get security, performance, and best-practice recommendations
- Download bundle — zip containing compose + .env + setup.sh + README
- Dark theme, responsive — works on desktop and mobile
- Zero backend — everything runs in your browser via vanilla JS + Vite
Quick Start
# Clone and install
git clone https://github.com/yourusername/stackpilot.git
cd stackpilot
npm install
# Development
npm run dev
# Build for production
npm run build
# Output in dist/ — deploy anywhere (Netlify, Vercel, GitHub Pages, nginx, etc.)
How It Works
- Select your OS — paths auto-adjust (Linux/macOS/Windows)
- Pick your apps — browse 22 categories, click to select, use "Select all" per category
- Configure — paths, timezone, Tailscale options
- Preview — live tabs show docker-compose.yml, .env, and setup.sh
- Download — get a zip bundle ready to deploy
- Deploy —
docker compose up -d && ./setup.sh
The Compose Analyser
Switch to "Compose Analyser" mode to paste any existing docker-compose.yml and get instant feedback:
- Errors — port conflicts, missing images, invalid structure
- Warnings — :latest tags, no restart policy, exposed database ports, privileged containers, docker socket access
- Suggestions — healthchecks, resource limits, log rotation, secret management, network isolation, depends_on conditions
App Categories
| Category | Apps | Examples |
|---|---|---|
| 🎬 Media Servers | 16 | Jellyfin, Plex, Navidrome, Audiobookshelf, Kavita |
| 📡 Arr Suite | 10 | Sonarr, Radarr, Prowlarr, Bazarr, Lidarr, Readarr |
| ⬇️ Downloads | 7 | qBittorrent, Transmission, Deluge, SABnzbd |
| 🔍 Requests | 2 | Jellyseerr, Overseerr |
| 🌐 Networking | 12 | Tailscale, Gluetun, Traefik, Caddy, WireGuard, WG-Easy |
| 🔒 Security | 5 | Authelia, Vaultwarden, CrowdSec, Keycloak, Fail2ban |
| 🛡️ DNS | 4 | Pi-hole, AdGuard Home, Technitium, Unbound |
| 🔔 Notifications | 1 | ntfy |
| 💾 Backups | 4 | Duplicati, Syncthing, Restic, MinIO |
| 📄 Documents & Photos | 7 | Paperless-ngx, Immich, PhotoPrism, Stirling-PDF |
| 🏠 Automation | 8 | Home Assistant, Node-RED, n8n, Frigate, ESPHome |
| 💻 Development | 11 | Gitea, GitLab, Code-Server, Drone CI, Woodpecker, PocketBase |
| 📊 Monitoring | 17 | Grafana, Prometheus, Portainer, Uptime Kuma, Netdata |
| 🎮 Games | 8 | Minecraft, Valheim, Palworld, Satisfactory, RomM, Pterodactyl |
| 💬 Communication | 7 | Matrix, Element, Revolt, Rocket.Chat, Listmonk |
| 🗄️ Databases | 5 | PostgreSQL, MariaDB, Redis, MongoDB, InfluxDB |
| 🏡 Dashboards | 4 | Homepage, Homarr, Dashy, Organizr |
| 🤖 AI & ML | 9 | Ollama, Open WebUI, ComfyUI, Stable Diffusion, Flowise |
| 💰 Finance | 5 | Firefly III, Actual Budget, Ghostfolio, Invoice Ninja |
| 📝 Knowledge | 8 | Trilium, Wiki.js, Outline, HedgeDoc, Memos, Answer |
| 🕵️ Privacy | 5 | SearXNG, Whoogle, Nitter, Redlib, LibreTranslate |
| 🔧 Utilities | 27 | Nextcloud, Mealie, CyberChef, RustDesk, Guacamole, Vikunja |
Auto-Linking
The generated setup.sh script handles post-deploy wiring:
- Prowlarr → Sonarr/Radarr/Lidarr/Readarr — syncs indexers automatically
- qBittorrent/Transmission/Deluge → Arr apps — adds as download client
- Root folders — configures media paths in each Arr app
- Health checks — waits for all services before attempting links
- VPN routing — download clients automatically route through Gluetun when selected
Tech Stack
- Vite — fast dev/build
- Vanilla JS — no framework, minimal bundle size
- js-yaml — compose generation and parsing
- JSZip — client-side zip creation
Contributing
To add a new app, edit src/catalog/apps.js and add an entry with:
{
id: 'your-app',
name: 'Your App',
category: 'utilities', // must match a category id
description: 'What it does',
image: 'dockerhub/image:tag',
ports: [{ container: 8080, host: 8080, protocol: 'tcp' }],
volumes: [{ host: '${CONFIG_PATH}/your-app', container: '/config' }],
env: { OPTIONAL_VAR: 'value' },
healthcheck: 'curl -f http://localhost:8080 || exit 1',
api: { port: 8080 }, // or null
links: {}, // dependency/linking metadata
url: 'https://github.com/org/repo'
}
License
MIT
Description
Languages
JavaScript
84.8%
CSS
9.6%
HTML
5.6%