Self-Hosting
Self-host the complete scheduling platform on your own server. Docker, Cloudron, or Railway, your own PostgreSQL. Open source AGPLv3, no per-seat fees.
Tymeslot is in the Cloudron App Store and uses the platform's built-in services: TLS certificates, PostgreSQL with backups, email and single sign-on. This guide covers installing and configuring it.
Actualizado el 21 de octubre de 2026
Deploying on Cloudron gives you managed infrastructure without extra setup:
Tymeslot is listed in the Cloudron App Store as a prebuilt app, so you need no Docker or local build tools. In your Cloudron dashboard, go to App Store, search for Tymeslot and open it.
Choose your location (e.g. tymeslot.yourdomain.com) and click Install.
Cloudron pulls the prebuilt image and handles the rest. New versions appear in the dashboard as updates.
Installed earlier with Install via URL? That community package is retired and receives no further updates. The App Store version is a separate app, so install Tymeslot from the App Store as a new app.
The package generates Tymeslot's signing secret on first boot and keeps it
in /app/data,
and Cloudron supplies the port, database and mail settings. You configure Tymeslot with
environment variables, set in the dashboard's Environment
tab or with cloudron env set;
the app restarts automatically. The one to set is PHX_HOST,
your app's domain, which every link Tymeslot generates is built from. Without it Tymeslot
falls back to the domain Cloudron reports, but setting it explicitly is safer.
cloudron env set --app tymeslot.yourdomain.com PHX_HOST=tymeslot.yourdomain.com
Stored calendar and video credentials are encrypted under a key derived from that signing secret until you give them a key of their own. To do that, follow Data-at-rest encryption before connecting your first calendar.
You can set environment variables in two ways, and mix them freely. Values set through Cloudron always win over values in the
.env
file, so treat the file as a set of defaults that Cloudron can override key by key.
Use
cloudron env set
or the dashboard's Environment
tab. Cloudron stores the values, restarts the app and shows them in the dashboard.
cloudron env set --app tymeslot.yourdomain.com KEY=value KEY2=value2
# Confirm current values
cloudron env list --app tymeslot.yourdomain.com
.env file in the data directory
Tymeslot reads
/app/data/.env
at boot, if it exists, and applies any key that is not already set. The package does not create it, so create it yourself; the full list of variables is in
.env.example
in the Core repository. This suits you when you have many variables to manage or want to keep them under version control on your own host. The file must live in /app/data, because
/app
itself is read-only on Cloudron and is replaced on every upgrade.
# Create or edit the .env file inside the container
cloudron exec --app tymeslot.yourdomain.com -- vi /app/data/.env
# Or push a prepared file from your workstation
cloudron push --app tymeslot.yourdomain.com ./my-env /app/data/.env
# Restart so the new values take effect
cloudron restart --app tymeslot.yourdomain.com
CLOUDRON_POSTGRESQL_URL
variable, so you never configure database credentials yourself.
Tymeslot detects and uses Cloudron's built-in addons on its own, with no environment variables to set.
Tymeslot sends its emails (confirmations, reminders, password resets) through Cloudron's mail relay. No
SMTP_*
or
EMAIL_ADAPTER
configuration is needed.
To use an external provider instead (Postmark, SendGrid, Mailgun, AhaSend, or any
SMTP relay), set
EMAIL_ADAPTER
explicitly; it overrides the Cloudron relay.
Tymeslot signs users in through Cloudron's identity provider: the login page shows a button named after it (or "SSO"), and users sign in with their Cloudron account. No
OAUTH_*
configuration is needed.
To use a different IdP, set
ENABLE_OAUTH_AUTH=true
with your own
OAUTH_*
variables.
To disable SSO entirely, set ENABLE_OAUTH_AUTH=false. Either value also locks the SSO switch in the admin panel; to keep it adjustable there, leave the variable unset and switch SSO off in the admin panel instead.
To enable calendar sync or social login, add your provider credentials to the Environment section:
GOOGLE_STATE=$(openssl rand -base64 32 | tr -d '\n')
cloudron env set --app tymeslot.yourdomain.com ENABLE_GOOGLE_AUTH=true GOOGLE_CLIENT_ID=your_id GOOGLE_CLIENT_SECRET=your_secret GOOGLE_STATE_SECRET=$GOOGLE_STATE
Redirect URIs: sign-in uses https://tymeslot.yourdomain.com/auth/google/callback; Calendar and Meet use
/auth/google/calendar/callback
and /auth/google/video/callback
on the same domain. Register each one you use.
cloudron env set --app tymeslot.yourdomain.com ENABLE_GITHUB_AUTH=true GITHUB_CLIENT_ID=your_id GITHUB_CLIENT_SECRET=your_secret
cloudron logs --app tymeslot.yourdomain.com --follow
cloudron exec --app tymeslot.yourdomain.com -- sh -c 'psql "$CLOUDRON_POSTGRESQL_URL"'
Cloudron checks for new versions automatically. Apply an available update via CLI:
cloudron update --app tymeslot.yourdomain.com
App won't start:
Check the logs in the CLI or dashboard; Tymeslot stops at boot when a setting is incomplete and names the variable. Common causes are an explicit
EMAIL_ADAPTER
without its provider's credentials, or
ENABLE_OAUTH_AUTH=true
without the OAuth endpoints. If pages load but never respond to clicks, check that PHX_HOST matches the app's domain.
Manual Migrations: The app migrates the database on every start. To run pending migrations against the running app by hand:
cloudron exec --app tymeslot.yourdomain.com -- bin/tymeslot rpc 'Ecto.Migrator.run(Tymeslot.Repo, :up, all: true)'
Self-host the complete scheduling platform on your own server. Docker, Cloudron, or Railway, your own PostgreSQL. Open source AGPLv3, no per-seat fees.
Open-source scheduling software under the GNU AGPLv3, an alternative to Calendly and Cal.com. Self-host the full product or let us host it.
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 to Railway with one click. PostgreSQL is provisioned and connected for you; add a signing secret and your email settings and your instance is live.
Set up Nginx or Caddy as a reverse proxy for Tymeslot. Covers HTTPS termination, WebSocket proxying for LiveView, and custom domain configuration.