Deploy Joplin Server
Self-hosted sync server for Joplin notes on Postgres, admin set at deploy
Just deployed
/var/lib/postgresql/data
Joplin Server
Just deployed
Deploy and Host Joplin Server on Railway
Joplin Server is the official self-hosted sync server for Joplin, the open-source note-taking and to-do app. Your desktop, mobile and terminal Joplin apps sync notes, notebooks, tags and attachments through it. It also adds user accounts, note sharing between users and publishing notes as web pages.
About Hosting Joplin Server
Hosting Joplin Server means running the Node.js server next to a PostgreSQL database, behind HTTPS on a stable public URL that the Joplin apps sync with. This template runs the official joplin/server image with Railway Postgres, and notes and attachments are stored in the database, on its volume. On first start the template runs the database migrations. It then gives the built-in admin account your e-mail address and a generated password, so a fresh deploy never has the upstream admin@localhost / admin login. Public sign-up stays off: the admin creates accounts. Railway's health check uses Joplin's /api/ping endpoint.
Common Use Cases
- Sync Joplin notes between your laptop, phone and tablet without a third-party cloud
- Run a private notes server for a family or small team, with one account each
- Share notebooks with other users on the same server, or publish single notes as web pages
Dependencies for Joplin Server Hosting
- Joplin Server (
joplin/serverDocker image, Node.js) - PostgreSQL database (Railway Postgres)
Deployment Dependencies
- Joplin Server docs: https://joplinapp.org/help/apps/sync/joplin_server
- Docker setup and environment variables: https://github.com/laurent22/joplin/blob/dev/packages/server/README.md
- Joplin Server releases: https://github.com/laurent22/joplin/releases?q=server-v
- Start command used by this template (readable): https://github.com/aalfath/joplin-server-railway-template
Implementation Details
First login. Open your Railway URL and sign in with JOPLIN_ADMIN_EMAIL and the generated DEFAULT_ADMIN_PASSWORD, which is in the Joplin Server service's Variables tab. You can change the password under your profile. The template only renames the upstream admin@localhost account. Changing JOPLIN_ADMIN_EMAIL or DEFAULT_ADMIN_PASSWORD later does nothing: manage accounts in the web admin.
Add users. Go to Admin > Users > Add user and set an e-mail and password for each person. Without a mail server, set the password in that form; users added through the API get an e-mailed link instead.
Connect a Joplin app. In Joplin, open the Synchronisation settings (Tools > Options > Synchronisation on desktop), choose "Joplin Server", and enter your Railway URL (for example https://your-app.up.railway.app) with your e-mail and password.
Good to know. Joplin only answers on the host in APP_BASE_URL. If you add a custom domain, set APP_BASE_URL to https://your.domain and redeploy. Railway's health check is sent to a small listener on PORT (8080), which passes it on to Joplin's /api/ping. Joplin itself listens on port 22300, which the public domain targets. On every start the server compares the clock with pool.ntp.org and refuses to start if it is off by more than 2 seconds. To send e-mail (password resets, invitations), add Joplin's MAILER_* variables to the Joplin Server service.
Why Deploy Joplin Server 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 Joplin Server 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
Joplin Server
joplin/server:3.7.4JOPLIN_ADMIN_EMAIL
