Upgrading Tymeslot
Upgrade Tymeslot with a single Docker command. Database migrations run automatically on startup. Includes rollback procedures and version compatibility notes.
Deploy Tymeslot on any server with Docker installed. Tymeslot ships as a single self-contained container with PostgreSQL embedded — no separate database to run.
Software Engineer & AI Developer
Tymeslot runs as one container: the Phoenix application and its PostgreSQL
database live side by side, with all state on two named volumes —
tymeslot_data
(uploads and timezone data) and
tymeslot_pg
(the database). There is no separate database container to manage.
Prefer a managed/external PostgreSQL? Point Tymeslot at it with the discrete
DATABASE_HOST
variables described in the
Environment Variable Reference
— the embedded database is then skipped automatically.
Pull and run the published image directly. This is the quickest way to get a working instance:
docker run -d \
--name tymeslot \
-p 4000:4000 \
-e SECRET_KEY_BASE="$(openssl rand -base64 64 | tr -d '\n')" \
-e PHX_HOST=tymeslot.yourdomain.com \
-v tymeslot_data:/app/data \
-v tymeslot_pg:/var/lib/postgresql/data \
luka1thb/tymeslot:latest
./pgdata:/var/lib/postgresql/data
can fail first-run database initialisation on Docker Desktop, rootless Docker, userns-remap,
and SELinux-enforcing hosts. If you need the data on a specific path, use an external database instead.
For a pinned release, replace
:latest
with a version tag (e.g. luka1thb/tymeslot:1.0.5).
If you'd rather build the image yourself, clone the repository and use the
docker-compose.yml
and .env.example
that ship in the repo — you do not need to write your own Compose file.
# Clone and enter the repository\ngit clone https://github.com/Tymeslot/tymeslot.git\ncd tymeslot\n\n# Create your environment file\ncp .env.example .env\n\n# Generate the required secrets and paste them into .env\nopenssl rand -base64 64 | tr -d '\\n' # SECRET_KEY_BASE\nopenssl rand -base64 32 | tr -d '\\n' # POSTGRES_PASSWORD (only needed for an external DB)\n\n# Build and start (Compose reads .env automatically)\ndocker compose up -d --build
Watch the logs until the Phoenix server reports it is running:
docker compose logs -f tymeslot
Only three variables are required. Everything else has a sensible default — see the Environment Variable Reference for the full list.
# REQUIRED: signing secret (generate with: openssl rand -base64 64 | tr -d '\\n')\nSECRET_KEY_BASE=your_generated_secret_here\n\n# REQUIRED: the hostname you will serve Tymeslot on\nPHX_HOST=tymeslot.yourdomain.com\n\n# REQUIRED only for an EXTERNAL database (the embedded one defaults this internally)\nPOSTGRES_PASSWORD=your_secure_password_here\n\n# Optional: host port to publish (default 4000)\nPORT=4000
EMAIL_ADAPTER
defaults to test, which drops every message — password resets, booking
confirmations and reminders all vanish with no error. Configure SMTP or Postmark before going live.
# Option 1: SMTP (recommended for most users)
EMAIL_ADAPTER=smtp
EMAIL_FROM_NAME="Your Company Name"
EMAIL_FROM_ADDRESS="hello@yourdomain.com"
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your_email@gmail.com
SMTP_PASSWORD=your_app_password
# Option 2: Postmark (recommended for high reliability)
# EMAIL_ADAPTER=postmark
# EMAIL_FROM_NAME="Your Company Name"
# EMAIL_FROM_ADDRESS="hello@yourdomain.com"
# POSTMARK_API_KEY=your_postmark_api_key
For production use, terminate TLS at a reverse proxy in front of Tymeslot. Here's a minimal Caddy example (Caddy fetches and renews certificates automatically):
tymeslot.yourdomain.com {\n reverse_proxy localhost:4000\n encode gzip\n}
Open your browser and navigate to your domain:
https://tymeslot.yourdomain.com
Click "Sign Up" to create your first account. You'll be guided through the setup process where you can:
To update to the latest version (build-from-source install):
# Pull latest changes\ngit pull origin main\n\n# Rebuild and restart\ndocker compose down\ndocker compose up -d --build
Running the prebuilt image instead? Pull the new tag and recreate the container — your
tymeslot_data
and tymeslot_pg
volumes carry your data across the upgrade. See the
Upgrading
guide.
To back up the embedded database:
docker exec -t tymeslot su - postgres -c 'pg_dump tymeslot' > backup.sql
Full backup and restore procedure (including the data volume): Backup & Restore .
Self-hosting is common among privacy-conscious professionals. See how Therapists and Developers use Tymeslot on their own infrastructure.
Upgrade Tymeslot with a single Docker command. Database migrations run automatically on startup. Includes rollback procedures and version compatibility notes.
Back up Tymeslot with pg_dump and cron automation. Covers Docker volume backup for uploaded files and step-by-step recovery from a complete data loss.
Install Tymeslot on Cloudron in minutes. PostgreSQL, SSL certificates, email relay, and automatic updates are all provisioned and managed for you.