Deploy Jotty

Self-hosted checklists and markdown notes with encryption and SSO

Deploy 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

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=true turns on secure __Host- session cookies. Railway terminates TLS at the edge, so keep it on.
  • PORT=3000 and HOSTNAME=::. Railway reaches containers over IPv6; the image default binds IPv4 only.
  • PUID=0 and PGID=0. Railway mounts volumes owned by root. The image normally drops to uid 1000, which cannot create /app/data/users and fails with EACCES on 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=oidc with OIDC_ISSUER, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET for single sign-on (Authentik, Keycloak, Auth0). Set the callback to https:///api/oidc/callback.
  • SERVE_PUBLIC_IMAGES=yes and SERVE_PUBLIC_FILES=yes to make uploaded attachments viewable without a login.
  • STOP_CHECK_UPDATES=yes to stop the update check against GitHub.
  • DISABLE_BRUTEFORCE_PROTECTION=true only 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 means PUID/PGID were changed away from 0. Set them back.
  • A blank page after login with a __Host-session cookie error means APP_URL does 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

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
47
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51