Docker Self-Hosting
Deploy Tymeslot with Docker Compose on any VPS or home server. Includes reverse proxy setup, file upload volumes, and WebSocket configuration for LiveView.
Deploy Tymeslot on Railway in minutes. One-click template deploy — Railway provisions Postgres, wires the connection, and starts your instance automatically.
Technical Product Builder & AI Developer
Click the button below to open the Tymeslot template on Railway. Railway will create a new project with two services — the Tymeslot app and a PostgreSQL database — and link them automatically.
Deploy on RailwayRailway will ask you to log in or create an account if you are not already signed in.
After clicking deploy, Railway shows a variable configuration screen before starting the build. The template pre-fills most values — you need to set a few before deploying.
# Cryptographic secret — generate a new one:\n# openssl rand -base64 64 | tr -d '\\n'\nSECRET_KEY_BASE=<paste generated value here>\n\n# Sender identity for outgoing emails\nEMAIL_FROM_ADDRESS=hello@yourdomain.com\nEMAIL_FROM_NAME=Tymeslot
openssl rand -base64 64 | tr -d '\n'
Never reuse this value across deployments. Each instance should have its own key.
The template defaults to EMAIL_ADAPTER=test, which silently discards all emails. This lets you explore the app without configuring SMTP first, but you must switch to a real adapter before going to production.
smtp
or postmark
before accepting real bookings.
EMAIL_ADAPTER=smtp\nSMTP_HOST=smtp.postmarkapp.com\nSMTP_PORT=587\nSMTP_USERNAME=your_postmark_token\nSMTP_PASSWORD=your_postmark_token
EMAIL_ADAPTER=postmark\nPOSTMARK_API_KEY=your_api_key
See the Environment Variables Reference for the full list of supported variables and their defaults.
Once your variables are set, click Deploy. Railway will:
DATABASE_HOST, DATABASE_PORT, and credentials automatically
*.up.railway.app
The first build takes a few minutes. Subsequent deploys are faster thanks to layer caching.
Once the build completes, find your public URL in the Railway dashboard under your Tymeslot service → Settings → Networking → Public URL.
https://your-project.up.railway.app
Click Sign Up to create your first account. The first user to register becomes the account owner.
PHX_HOST
in the Tymeslot service variables to match — this ensures generated URLs and OAuth callbacks point to the right host.
Tymeslot works out of the box with CalDAV calendars (Nextcloud, Radicale, Zimbra) — no extra credentials needed. Google Calendar and Outlook require OAuth app credentials.
Create a Google OAuth app and add the credentials as Railway variables:
ENABLE_GOOGLE_AUTH=true\nGOOGLE_CLIENT_ID=...\nGOOGLE_CLIENT_SECRET=...
Register a Microsoft Azure app and add the credentials:
ENABLE_MICROSOFT_AUTH=true\nMICROSOFT_CLIENT_ID=...\nMICROSOFT_CLIENT_SECRET=...\nMICROSOFT_TENANT_ID=...
See the Google OAuth Setup and Microsoft Azure Setup guides for step-by-step instructions.
PORT
as a variable in the template — Railway injects it automatically at runtime. If it appears in your variable list, remove it and redeploy.
PGDATA=/var/lib/postgresql/data/pgdata
in the Postgres service variables — the subdirectory is always empty and Postgres can initialise cleanly there.
EMAIL_ADAPTER
is set to smtp
or postmark, not test. The test adapter silently discards all outgoing email.
PHX_HOST
variable to match your domain and redeploy.
Deploy Tymeslot with Docker Compose on any VPS or home server. Includes reverse proxy setup, file upload volumes, and WebSocket configuration for LiveView.
Install Tymeslot on Cloudron in minutes. PostgreSQL, SSL certificates, email relay, and automatic updates are all provisioned and managed for you.
Set up Nginx or Caddy as a reverse proxy for Tymeslot. Covers HTTPS termination, WebSocket proxying for LiveView, and custom domain configuration.