Self-Hosting
Run Stash on your own machine with Docker Compose and prebuilt GHCR images.
The production Compose file pulls Stash application images from ghcr.io/fergana-labs. You do not need to build the backend, frontend, or collab containers locally.
Host locally
git clone https://github.com/Fergana-Labs/stash.git
cd stash
cp .env.example .env
docker compose -f docker-compose.prod.yml -f docker-compose.local.yml pull
docker compose -f docker-compose.prod.yml -f docker-compose.local.yml up -d
curl http://localhost:3456/health # wait for {"status":"ok"}This local setup exposes the app directly on localhost and disables Caddy, so you do not need ports 80/443 or a public domain.
Production domain
cp .env.example .env
# Set PUBLIC_URL and CORS_ORIGINS in .env, then replace app.example.com in Caddyfile.
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
curl https://app.example.com/health # wait for {"status":"ok"}Then install the CLI and connect a repo:
pip install stashai # or: uv tool install stashai
cd /path/to/your/repo
stash config base_url http://localhost:3456
stash loginUse your public URL instead of http://localhost:3456 for a Caddy-backed install. stash login opens it to register and authorize the CLI.
Upgrading
git pull
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d