A single-user, self-hosted daily journal. Mood and energy trackers, custom trackers, freeform entries, priority carry-forward, web push reminders, and a Progressive Web App you can install on your phone. Data lives in one SQLite file on disk. The whole thing runs as one Docker container. No signup, no account, no telemetry, no cloud dependency.
Self-host Munewell with this open-source release, or skip the setup and use the hosted version at munewell.com. Free tier, no credit card.
You need Docker and Docker Compose.
git clone https://github.com/RunemarkLabs/munewell.git
cd munewell
# 1. Configure
cp deploy/.env.example deploy/.env
# 2. Generate secrets and paste them into deploy/.env
docker run --rm node:24-alpine sh -c 'npx --yes web-push generate-vapid-keys'
openssl rand -hex 32 # use as REMINDER_SECRET
# 3. Edit deploy/.env (set TZ to your IANA timezone, fill in the values above)
$EDITOR deploy/.env
# 4. Start
docker compose -f deploy/docker-compose.yml --env-file deploy/.env up -dMunewell is now running at http://localhost:3000. How you reach it
from there (LAN only, VPN, public hostname behind a reverse proxy) is
up to you. iOS Web Push needs HTTPS, so for phone install put a reverse
proxy in front. See docs/deploy/ for optional recipes.
- Next.js 15 (App Router, React 19, standalone output)
node:sqlite(Node 24 built-in, zero native deps; the database is a singledata/journal.dbfile)web-pushfor VAPID-signed push notifications- In-process reminder worker, started by Next's instrumentation hook (no separate cron container or process)
- Docker multi-stage build on
node:24-alpine, runs as a non-root user
The container exposes port 3000 and persists everything to /app/data
(mapped to ./data in the compose file).
npm ci --ignore-scripts
npm run devApp runs on http://localhost:3000. SQLite DB lives at data/journal.db.
./deploy/update.shPulls the latest image from GHCR, recreates the container only if the
digest changed, prunes dangling layers. The data/ volume is preserved.
FSL-1.1-MIT, the Functional Source License with an MIT future grant. You can self-host, fork, modify, and redistribute. You cannot offer Munewell as a commercial product or service that competes with us. Two years after each release, that release converts to MIT.
PRs welcome for bug fixes, accessibility improvements, and new deployment recipes. See CONTRIBUTING.md.
To report a vulnerability, see SECURITY.md.