Back to Overview

Cloudron Deployment

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.

Luka Breitig — Technical Product Builder & AI Developer
Luka Breitig

Technical Product Builder & AI Developer

☁️ Managed Infrastructure

Deploying on Cloudron provides enterprise-grade infrastructure out of the box:

  • Automatic SSL/TLS: Handled by Cloudron's reverse proxy.
  • Managed Database: Built-in PostgreSQL with automatic backups.
  • Health Monitoring: Automated restarts and health checks.
  • Built-in Email: Cloudron's mail relay works automatically — no SMTP setup needed.
  • Single Sign-On: Users can log in with their Cloudron account via OIDC.

📋 Prerequisites

  • Cloudron Server: Version 5.3.0 or higher.
  • Cloudron CLI: Installed locally and logged into your server.
  • Domain name: Configured in Cloudron for the app location.

1 Install as a Community App

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.

2 Set Required Variables

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

3 Add More Variables (Optional)

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.

Option 1: Cloudron CLI / Dashboard

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

Option 2: .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

Database Support

Cloudron automatically handles your PostgreSQL connection via the CLOUDRON_POSTGRESQL_URL variable. You don't need to configure database credentials manually.

🔌 Automatic Addon Integration

Tymeslot automatically detects and uses Cloudron's built-in addons. No environment variables are needed for these — they work out of the box.

Email (Sendmail Addon)

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.

Single Sign-On (OIDC Addon)

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.

🔑 OAuth Provider Setup

To enable calendar sync or social login, add your provider credentials to the Environment section:

Google (Calendar & Meet)

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

GitHub (Authentication)

cloudron env set --app tymeslot.yourdomain.com ENABLE_GITHUB_AUTH=true GITHUB_CLIENT_ID=your_id GITHUB_CLIENT_SECRET=your_secret

⚙️ Cloudron CLI Toolkit

View Real-time Logs

cloudron logs --app tymeslot.yourdomain.com --follow

Direct Database Access

cloudron exec --app tymeslot.yourdomain.com -- psql $CLOUDRON_POSTGRESQL_URL

Apply Updates

Cloudron checks for new versions automatically. Apply an available update via CLI:

cloudron update --app tymeslot.yourdomain.com

🩺 Troubleshooting

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()'

🔗 Related Articles

Read Docker Self-Hosting

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.

Read Railway Deployment

Railway Deployment

Deploy Tymeslot to Railway with one click. PostgreSQL is provisioned and connected automatically — set two environment variables and your instance is live.

Read Reverse Proxy Setup

Reverse Proxy Setup

Set up Nginx or Caddy as a reverse proxy for Tymeslot. Covers HTTPS termination, WebSocket proxying for LiveView, and custom domain configuration.