Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
🚀 Deploy 240+ self-hosted apps with a single stacker.yml — local, your own server, or cloud (Hetzner, DigitalOcean, AWS…). 110+ tested & verified. Analytics, CMS, chat, password managers, AI, and more.
翻訳待ち
Loading the full README.
Read the full README ↗266 self-hostable apps, each deployable with a single
stacker.yml. Deploy to your laptop, your own server, or the cloud with one command - database setup, health checks, secrets, and remote monitoring included.
Eevery entry here is a ready-to-run deployment:
Pick a directory, generate secrets, and stacker deploy. Same layout, same commands.
cd stacker-projects/umami # pick any project, for instance umami
./scripts/generate-secrets.sh # generate .env from .env.example
stacker deploy # → running locally in minutes
export HETZNER_API_TOKEN=your_token
stacker deploy --target cloud --force-rebuild
cd umami # pick any project directory
./scripts/generate-secrets.sh # create .env from .env.example
stacker deploy # deploy locally
Then open http://localhost:PORT (the port is defined in the project's
stacker.yml).
If the CLI is missing, see the installation guide: https://github.com/trydirect/stacker
Prerequisites (local): Docker, Docker Compose, and the Stacker CLI.
# 1. Pick a project
cd plausible
# 2. Generate secrets
./scripts/generate-secrets.sh
# 3. Deploy to cloud
stacker deploy --target cloud --force-rebuild
Best for development and testing on your own machine.
stacker deploy
Deploy to a Linux server you control (Ubuntu 24.04+/Debian 12+, 2 GB+ RAM, 20 GB+ disk, key-based SSH, Docker installed).
stacker config setup server --ip <IP> --user root --key ~/.ssh/id_ed25519
stacker deploy --target server --force-rebuild
What happens: Stacker uploads the config bundle, generates
docker-compose.yml from stacker.yml under .stacker/ on the server, runs
docker compose up -d, waits for health checks, then runs post-deploy hooks.
When the Stacker API is unreachable (DNS or auth issues), deploy manually:
scp .stacker/docker-compose.yml .env root@<IP>:/home/trydirect/project/
ssh root@<IP> "docker compose -f /home/trydirect/project/docker-compose.yml -p project up -d"
Fully automated provisioning. Requires a provider account, an API token, and an SSH key registered with the provider.
export HETZNER_API_TOKEN=your_token_here
# First deploy — creates a new server (5-10 minutes)
stacker deploy --target cloud --force-new
stacker status # get the server IP, then point DNS at it
# Later deploys — reuse the same server (omit --force-new)
stacker deploy --target cloud --force-rebuild
Cloud settings live in stacker.yml:
deploy:
target: cloud
cloud:
provider: hetzner # or: digitalocean, aws, linode, vultr
region: fsn1 # Frankfurt (nbg1, hel1, ash, hil, sjc, sin, ...)
size: cpx22 # 2 vCPU / 4 GB RAM
ssh_key: ~/.ssh/id_ed25519
public_ports: # REQUIRED — without it only SSH (22) is open
- "80"
- "443"
public_ports opens the provider firewall. Forgetting it is the most common
cause of "app unreachable after deploy." You can also add ports afterwards:
stacker cloud firewall add --public-ports 8080/tcp
Hetzner server sizes:
| Size | vCPU | RAM | Price | Best for |
|---|---|---|---|---|
cpx12 | 1 | 2 GB | ~11.49 EUR | Small apps, testing |
cx23 | 2 | 4 GB | ~5.49 EUR | Most apps |
cpx32 | 4 | 8 GB | ~35 EUR | Heavy / multiple apps |
cpx42 | 4 | 8 GB | ~50 EUR | AI stacks |
Enable the status panel in stacker.yml so the Stacker agent can serve logs and
health from remote servers directly through the CLI — no SSH required:
monitoring:
status_panel: true
healthcheck:
endpoint: /health
interval: 30s
With status_panel: true, the stacker agent commands read directly from your
remote deployment:
stacker agent health # service health at a glance
stacker agent logs app-name --lines 200 # tail logs remotely
stacker agent status # server + container status
This is the recommended way to inspect running services. Reserve manual
ssh root@server access for cases the agent cannot cover.
Stacker supports multiple reverse proxy types for automatic HTTPS and domain routing.
Configure in stacker.yml:
proxy:
type: traefik # or: caddy, nginx-proxy-manager, nginx, none
auto_detect: false
domains:
- domain: app.example.com
ssl: off # off | auto | manual
upstream: app:3000
| Type | Image | Config | Auto-HTTPS | Notes |
|---|---|---|---|---|
traefik | traefik:latest | Docker labels | ✅ (Let's Encrypt) | Default for cloud deploys |
caddy | caddy:2-alpine | Caddyfile | ✅ (automatic) | Simple config, zero-touch TLS |
nginx-proxy-manager | jc21/nginx-proxy-manager | Web UI | ✅ (Let's Encrypt) | GUI-based management |
nginx | nginx:alpine | nginx.conf | ❌ | Manual config |
none | — | — | — | No proxy (direct port access) |
This is the beginning of the README. Read the rest at the original. Read the full README ↗