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.
Tymeslot is designed to work seamlessly with Cloudron's managed infrastructure. This guide covers how to deploy Tymeslot as a custom app, utilizing Cloudron's built-in services like SSL management and PostgreSQL backups.
Technical Product Builder & AI Developer
Deploying on Cloudron provides enterprise-grade infrastructure out of the box:
Tymeslot is distributed as a pre-built community app — no Docker or local build tools required. In your Cloudron dashboard, go to App Store → Install via URL and paste:
https://raw.githubusercontent.com/Tymeslot/tymeslot/main/apps/tymeslot/CloudronVersions.json
Choose your location (e.g. tymeslot.yourdomain.com) and click Install.
Cloudron will pull the pre-built image and handle the rest. Future updates will appear automatically in the dashboard.
Once the app is running, set the required environment variables via the dashboard Environment tab or CLI. The app restarts automatically.
SECRET=$(openssl rand -base64 64 | tr -d '\\n')\ncloudron env set --app tymeslot.yourdomain.com \\\n SECRET_KEY_BASE=$SECRET \\\n PHX_HOST=tymeslot.yourdomain.com \\\n PORT=4000
You can configure environment variables in either of two ways. They can be mixed freely — values set via the Cloudron CLI always win over values from the
.env
file, so the file is best treated as a default that the CLI can override per-key.
Use
cloudron env set
or the dashboard's Environment
tab. Cloudron persists the values, restarts the app automatically, and surfaces them in the dashboard UI.
cloudron env set --app tymeslot.yourdomain.com KEY=value KEY2=value2\n\n# Confirm current values\ncloudron env list --app tymeslot.yourdomain.com
.env file in the data directory
Tymeslot reads
/app/data/.env
at boot and loads any keys that are not already set. Useful 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
— /app
itself is read-only on Cloudron and is wiped on every upgrade.
# Edit the .env file directly inside the container\ncloudron exec --app tymeslot.yourdomain.com -- vi /app/data/.env\n\n# Or push a prepared file from your workstation\ncloudron push --app tymeslot.yourdomain.com ./my-env /app/data/.env\n\n# Restart so the new values take effect\ncloudron restart --app tymeslot.yourdomain.com
CLOUDRON_POSTGRESQL_URL
variable. You don't need to configure database credentials manually.
Tymeslot automatically detects and uses Cloudron's built-in addons. No environment variables are needed for these — they work out of the box.
Cloudron's mail relay is used automatically for sending emails (confirmations, reminders, password resets). No
SMTP_*
or
EMAIL_ADAPTER
configuration is needed.
To use an external provider instead (e.g. Postmark, Gmail SMTP), set
EMAIL_ADAPTER
explicitly — this overrides the Cloudron relay.
Cloudron's identity provider is used automatically — users see an "SSO" button on the login page and can 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.
To enable calendar sync or social login, add your provider credentials to the Environment section:
GOOGLE_STATE=$(openssl rand -base64 32 | tr -d '\\n')\ncloudron 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 URI:
https://tymeslot.yourdomain.com/auth/google/callback
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 -- 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 logs via CLI or Dashboard. Usually caused by a missing
SECRET_KEY_BASE
or incorrect PHX_HOST.
Manual Migrations: If you need to run migrations manually:
cloudron exec --app tymeslot.yourdomain.com -- bin/tymeslot eval 'Tymeslot.Release.migrate()'
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 automatically — set two environment variables 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.