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 from a one-click template. Railway provisions PostgreSQL, connects it to the app and starts your instance.
Aggiornato il 29 luglio 2026
Click the button below to open the Tymeslot template on Railway. Railway creates a new project with two linked services: the Tymeslot app and a PostgreSQL database.
Deploy on RailwayIf you are not signed in, Railway asks you to log in or create an account.
After you click deploy, Railway shows a variable configuration screen before it starts the build. The template pre-fills most values; set the ones below before deploying.
# Signing secret: generate a new one with
# openssl rand -base64 64 | tr -d '\n'
SECRET_KEY_BASE=<paste generated value here>
# Sender identity for outgoing emails
EMAIL_FROM_ADDRESS=hello@yourdomain.com
EMAIL_FROM_NAME=Tymeslot
openssl rand -base64 64 | tr -d '\n'
Give each instance its own key; never reuse one across deployments.
The template defaults to EMAIL_ADAPTER=test, which silently discards all emails. That lets you explore the app before configuring SMTP, but switch to a real adapter before going live.
smtp
or one of the provider APIs
(postmark, sendgrid, mailgun, ahasend)
before accepting real bookings.
EMAIL_ADAPTER=smtp
SMTP_HOST=smtp.postmarkapp.com
SMTP_PORT=587
SMTP_USERNAME=your_postmark_token
SMTP_PASSWORD=your_postmark_token
EMAIL_ADAPTER=postmark
POSTMARK_API_KEY=your_api_key
See the Environment Variables Reference for every supported variable and its default.
Once your variables are set, click Deploy. Railway then:
DATABASE_HOST, DATABASE_PORT, and the credentials
*.up.railway.app
The first build takes a few minutes; later deploys reuse cached layers and finish faster.
When the build completes, find your public URL in the Railway dashboard under your Tymeslot service, in 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 instance admin.
PHX_HOST
in the Tymeslot service variables to match, so that generated URLs and OAuth callbacks point to the right host.
CalDAV calendars (Nextcloud, Radicale, Zimbra, mailbox.org) work without any server-side credentials. mailbox.org users with 2FA enabled must generate an application-specific password under Settings → Security; the CalDAV guide has the details. Google Calendar and Outlook need OAuth app credentials.
Create a Google OAuth app and add its credentials, plus a random state secret, as Railway variables:
ENABLE_GOOGLE_AUTH=true
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
GOOGLE_STATE_SECRET=...
Register a Microsoft Azure app and add its credentials:
OUTLOOK_CLIENT_ID=...
OUTLOOK_CLIENT_SECRET=...
OUTLOOK_STATE_SECRET=...
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 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 starts empty, so Postgres can initialise there cleanly.
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.