120 lines
5.3 KiB
Markdown
120 lines
5.3 KiB
Markdown
# 🚀 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. **Select your OS** — paths auto-adjust (Linux/macOS/Windows)
|
|
2. **Pick your apps** — browse 22 categories, click to select, use "Select all" per category
|
|
3. **Configure** — paths, timezone, Tailscale options
|
|
4. **Preview** — live tabs show docker-compose.yml, .env, and setup.sh
|
|
5. **Download** — get a zip bundle ready to deploy
|
|
6. **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:
|
|
|
|
```js
|
|
{
|
|
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
|