Deploy Jotty
Self-hosted checklists and markdown notes with encryption and SSO
jotty
Just deployed
/app/data
Deploy and Host Jotty on Railway
Jotty (jotty.page) is a lightweight, self-hosted app for personal checklists and markdown notes. It stores everything as plain files on your own disk, supports kanban checklists, note encryption, sharing, MFA, OIDC single sign-on and a REST API, and installs as a PWA on phones.
About Hosting Jotty
Jotty is a single Next.js service that keeps all data as JSON and markdown files under one directory. This template runs the official ghcr.io/fccview/jotty:1.27.0 image with a persistent Railway volume mounted at /app/data, a health check on /api/health, and the HTTPS session mode already wired to your Railway domain. There is no database to provision. Deploy, open the URL, create the admin account, start writing.
Common Use Cases
- Personal todo lists and daily checklists that sync across your devices without a third-party account
- A private markdown notebook with optional per-note encryption
- Shared household or small-team checklists with per-user accounts
- Kanban boards with time tracking for side projects
Dependencies for Jotty Hosting
- One Railway service running the official Jotty image
- One Railway volume at
/app/data(users, notes, checklists, uploads, sessions)
Deployment Dependencies
- Upstream project: https://github.com/fccview/jotty
- Configuration reference: https://github.com/fccview/jotty/blob/main/howto/DOCKER.md
Implementation Details
First boot. Open your service domain. Jotty redirects to /auth/setup, where the first account you create becomes the admin. There is no seeded password. After setup, further users are added by the admin from Settings. Public registration is off by default.
What is persisted. Everything under /app/data lives on the volume and survives redeploys and upgrades. The compose file upstream also mounts /app/config (custom CSS, themes, emoji overrides) and a Next.js cache; Railway allows one volume per service, so those two stay in the image. Defaults ship in the image, so nothing is missing. If you want custom themes, prefer the in-app custom CSS setting, which is saved to /app/data.
Variables set for you.
APP_URL=https://${{RAILWAY_PUBLIC_DOMAIN}}. Sessions and SSO redirects are built from this. If you attach a custom domain, change it to that domain.HTTPS=trueturns on secure__Host-session cookies. Railway terminates TLS at the edge, so keep it on.PORT=3000andHOSTNAME=::. Railway reaches containers over IPv6; the image default binds IPv4 only.PUID=0andPGID=0. Railway mounts volumes owned by root. The image normally drops to uid 1000, which cannot create/app/data/usersand fails withEACCESon the first write. Running as root inside the container is the fix. Leave these as they are.
Optional extras. Add any of these later as plain variables and redeploy:
AUTH_MODE=oidcwithOIDC_ISSUER,OIDC_CLIENT_ID,OIDC_CLIENT_SECRETfor single sign-on (Authentik, Keycloak, Auth0). Set the callback tohttps:///api/oidc/callback.SERVE_PUBLIC_IMAGES=yesandSERVE_PUBLIC_FILES=yesto make uploaded attachments viewable without a login.STOP_CHECK_UPDATES=yesto stop the update check against GitHub.DISABLE_BRUTEFORCE_PROTECTION=trueonly if you sit behind another auth layer.
Upgrading. Change the image tag on the service to a newer release from https://github.com/fccview/jotty/releases and redeploy. Data files migrate in place.
Troubleshooting.
Error writing data: EACCES: permission denied, mkdir '/app/data/users'in the logs meansPUID/PGIDwere changed away from0. Set them back.- A blank page after login with a
__Host-sessioncookie error meansAPP_URLdoes not match the domain you are visiting. Point it at the domain in the address bar.
Scaling. Jotty is file-backed and single-instance by design. Keep replicas at 1; two containers cannot share the volume.
Why Deploy Jotty on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Jotty on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
