Single-author microblogging for self-hosted Docker and Cloudflare.
4.4K
Jant is a self-hosted, single-author microblog for notes, links, and quotes, without followers, likes, or algorithmic feeds.
The official Docker image is owenyoung/jant. It runs the Node runtime, applies SQLite schema migrations and data backfills on startup, and then starts the app.
Download the official Compose files:
curl -O https://raw.githubusercontent.com/jant-me/jant/main/compose.yml
curl -o .env https://raw.githubusercontent.com/jant-me/jant/main/.env.example
mkdir -p data/media
Set AUTH_SECRET in .env, then start Jant:
docker compose up -d
Open http://127.0.0.1:3000.
Use docker run when you want a single container without Compose:
docker run -d \
--name jant \
-p 3000:3000 \
-e AUTH_SECRET=replace-me-replace-me-replace-me-replace-me-replace-me \
-e TRUST_PROXY=false \
-v "$(pwd)/data:/var/lib/jant" \
owenyoung/jant:latest
Set TRUST_PROXY=true when the container sits behind Caddy, Nginx, Traefik, or another reverse proxy you control.
Use an exact image tag when you want a repeatable deploy:
IMAGE=owenyoung/jant:<version> docker compose up -d
AUTH_SECRET is requiredSITE_ORIGIN is optional and sets canonical URLs, RSS links, and sitemap URLsSITE_PATH_PREFIX is optional when you mount Jant under a subpath such as /blogGenerate a secret with:
openssl rand -base64 32
The official image stores app data under /var/lib/jant inside the container.
With the default Compose file, that maps to ./data on the host and includes:
./data/jant.sqlite./data/media/Content type
Image
Digest
sha256:d04fc4f36…
Size
232.2 MB
Last updated
10 days ago
docker pull owenyoung/jant