Docker Self-Hosting
Deploy Tymeslot using Docker and Docker Compose. Perfect for VPS hosting, home servers, or any environment with Docker support.
Receive instant Telegram messages whenever a meeting is booked, cancelled, or rescheduled. This guide covers operator setup for self-hosted deployments running a shared bot.
Technical Product Builder & AI Developer
Tymeslot can send formatted Telegram messages the moment a meeting is booked, cancelled, or rescheduled — no polling, no email lag.
/newbot and follow the prompts to choose a name and username.123456789:ABCdef.... Save it.MyTymeslotBot) — users will start a conversation with this bot to link their account.Tymeslot verifies that incoming webhook calls genuinely come from Telegram using a shared secret. Generate a random value — any alphanumeric string of 64+ characters works:
openssl rand -hex 32
Save the output — you will set it as TELEGRAM_WEBHOOK_SECRET in the next step.
Add the following variables to your deployment environment:
TELEGRAM_BOT_TOKEN=123456789:ABCdef...
TELEGRAM_BOT_USERNAME=MyTymeslotBot
TELEGRAM_WEBHOOK_SECRET=<your generated secret>
Setting TELEGRAM_BOT_TOKEN is all that is needed to enable shared bot mode —
no separate feature flag is required. The application will refuse to start if the token is set but
TELEGRAM_BOT_USERNAME or
TELEGRAM_WEBHOOK_SECRET are missing.
TELEGRAM_ENABLED=true
without setting TELEGRAM_BOT_TOKEN.
Users will then enter their own bot credentials in the dashboard.
The webhook endpoint and bot-setup startup task are only activated in shared bot mode.
After restarting with the new variables, Tymeslot automatically registers the webhook with Telegram on startup. You can confirm it worked by calling the Telegram Bot API directly:
curl https://api.telegram.org/bot<YOUR_TOKEN>/getWebhookInfo
The response should show your instance URL under url
and pending_update_count: 0.
The webhook registration is idempotent — it is safe to call on every restart.
Once the bot is running, your users connect their Telegram account from Dashboard → Automation → Telegram:
If the user has already started the bot before, Telegram will not resend the /start command when they tap the button again.
In that case the wizard shows a fallback command — e.g. /start abc123... — which the user can paste directly into the bot chat to complete linking.
Telegram webhooks require a publicly reachable HTTPS URL. For local development, use ngrok to expose your local server:
ngrok http 4000
Then start Tymeslot with the ngrok URL as the host:
export TELEGRAM_BOT_TOKEN=...
export TELEGRAM_BOT_USERNAME=...
export TELEGRAM_WEBHOOK_SECRET=...
export PHX_HOST=abc123.ngrok-free.app
export PHX_SCHEME=https
mix phx.server
On startup, BotSetup registers
https://abc123.ngrok-free.app/api/telegram/webhook
with Telegram. Restart the server whenever your ngrok URL changes (free plan assigns a new URL each session).
PHX_HOST and
PHX_SCHEME
are read at startup by the bot setup task and by the message builder when generating
"View in dashboard" links in notifications. Without them, the application falls back to
the Phoenix endpoint config, which points to localhost in development.
Deploy Tymeslot using Docker and Docker Compose. Perfect for VPS hosting, home servers, or any environment with Docker support.
One-click installation on Cloudron. Automated backups, SSL certificates, and updates handled automatically.
One-click deploy on Railway. Postgres is provisioned and wired automatically — your instance is live in minutes with no server management.