Download the webhouse.app CMS admin server as a tarball or Docker image. Weekly auto-builds + tagged stable releases.
Download channels
webhouse.app ships the admin server through two channels — pick whichever fits your setup.
Stable (tagged)
Cut manually when a milestone lands. Tracked under :latest.
- Docker:
docker pull ghcr.io/webhousecode/cms-admin:latest - Tarball: github.com/webhousecode/cms/releases/latest
Weekly (automated)
Every Monday at 16:00 UTC. Skipped if there are no commits since the previous weekly. Always points to the HEAD of main as of build time.
- Docker:
docker pull ghcr.io/webhousecode/cms-admin:weekly - Tarball: github.com/webhousecode/cms/releases/tag/weekly
- Plain-text index: releases.txt (latest entries first, for scripts)
What's in the tarball
A pre-built Next.js standalone bundle — not source code you need to pnpm install, not something you run with next start. It's a self-contained server:
cms-admin-2026.04.20/
run.sh # convenience wrapper
packages/cms-admin/
server.js # entry point — a Next.js standalone server
.next/static/ # compiled assets
public/ # public files
node_modules/ # minimal deps (already resolved)Enabled via output: "standalone" in next.config.ts. You run it with node server.js — the next CLI is not installed and not needed. Total size ~50–100 MB vs. ~500 MB for a full pnpm install + next start setup.
Quality gate: every release is typechecked and tested in GitHub Actions before the tarball is built. If typecheck or tests fail, the release does not ship.
Quick start — tarball
Requires Node.js 22 or newer. Works on Linux, macOS, and Windows (WSL or Git Bash).
curl -L https://github.com/webhousecode/cms/releases/latest/download/cms-admin.tar.gz | tar xz
cd cms-admin-*
./run.shUnder the hood run.sh does:
cd packages/cms-admin
export PORT="${PORT:-3010}"
export HOSTNAME="${HOSTNAME:-0.0.0.0}"
exec node server.jsVisit http://localhost:3010 and complete the setup wizard — you create the first admin account interactively (email + password). There is no default user or password.
Environment variables
Override the defaults with env vars before ./run.sh:
| Var | Default | Purpose |
|---|---|---|
PORT | 3010 | Listen port |
HOSTNAME | 0.0.0.0 | Bind address |
ADMIN_EMAIL | — | Auto-create admin on first boot |
ADMIN_PASSWORD | auto-generated | If ADMIN_EMAIL is set without a password, one is generated and logged to stdout |
CMS_CONFIG_PATH | — | Path or github://owner/repo URI of a site's cms.config.ts |
Quick start — Docker
docker run -p 3010:3010 -v $(pwd):/site \
-e ADMIN_EMAIL=you@example.com \
ghcr.io/webhousecode/cms-admin:latestMulti-platform (linux/amd64, linux/arm64) so it runs on Intel Macs, Apple Silicon, and typical server CPUs. The image bakes in the same standalone bundle as the tarball.
Choosing stable vs. weekly
| Stable | Weekly | |
|---|---|---|
| Cadence | Every 2–4 weeks | Every Monday (if there are changes) |
| Breaking changes | Documented in release notes | Only communicated if intentional |
| Recommended for | Production self-hosted | Hobby projects, early adopters, local dev |
| Rollback | Pin to any past vX.Y.Z tag | Pin to any past YYYY.MM.DD tag |
Both channels are functionally the same build — weekly just ships more often.
Cutting a stable release (maintainer only)
git tag -a v0.3.0 -m "Feature summary"
git push origin v0.3.0That fires the release-stable GitHub Actions workflow, which builds the tarball, pushes the Docker image to GHCR, and creates a permanent GitHub Release marked as latest.
Troubleshooting
run.sh: command not found — you're on Windows CMD/PowerShell. Use cd cms-admin-* && cd packages/cms-admin && node server.js, or run from WSL / Git Bash.
Port already in use — override with PORT=4010 ./run.sh.
Can't reach the server from another machine on the LAN — set HOSTNAME=0.0.0.0 (default already).
Want to run from source with hot reload? That's a different path — clone the repo and pnpm dev instead. The tarball is a production-style build, no file watching.
Related
- Deploy settings — provider config for publishing SITES (different from the admin server itself)
- Fly.io Live — volume-backed site deploys
- ICD — content sync to running Next.js sites