---
title: "Deploy Cal.com | (Just Updated) Calendly Alternative Nobody Else Can Claim First"
description: "Admin seeded before first boot, so no stranger can claim your instance."
category: "Other"
url: https://railway.com/deploy/calcom-or-just-updated-calendly-alternat
---

# Deploy Cal.com | (Just Updated) Calendly Alternative Nobody Else Can Claim First

Admin seeded before first boot, so no stranger can claim your instance.

**[Deploy Cal.com | (Just Updated) Calendly Alternative Nobody Else Can Claim First on Railway](https://railway.com/template/calcom-or-just-updated-calendly-alternat)**

- **Creator:** SuperSlowSloth
- **Category:** Other

## Template content

### postgres

- **Image:** postgres:17-alpine

### calcom

- **Image:** ghcr.io/bon5co/calcom-railway:6.2.0
- **Public domain:** Yes

## Documentation

# Deploy and Host Cal.com on Railway

Cal.com is the open-source Calendly alternative: booking pages, availability rules, buffers,
round-robin and collective events, team scheduling, calendar sync (Google, Outlook, CalDAV),
payments, workflows and a full REST API — running on your own domain, with your own database.

This template deploys Cal.com **with the administrator account already created**. On a stock
Cal.com deployment nobody is created at all, and `POST /api/auth/setup` — the route that makes
the first admin — has no authentication of its own; its only gate is `prisma.user.count() !== 0`.
Whoever reaches the public URL first becomes the instance owner, and everyone after them gets
`400 "No setup needed."` forever, with no password reset path that works without SMTP. Here the
admin is seeded from the deploy's own generated secret **before the web server binds a port**, so
the very first request the domain ever serves already meets a claimed instance.

## About Hosting Cal.com

Cal.com is a Next.js application backed by PostgreSQL. It migrates its schema forward on every
boot and seeds its app store, so the first deploy takes several minutes before it answers; after
that it is a single long-lived web service. All state — users, bookings, availability, calendar
credentials, avatars — lives in PostgreSQL, so the app itself needs no volume and the database is
the only thing to back up.

This template runs two services: the Cal.com web app on a pinned upstream release
(`v6.2.0`), and PostgreSQL 17 on a persistent volume. The app image is a thin wrapper that seeds
the administrator, closes public sign-up, re-applies the admin password on every boot, refuses to
start with an empty admin password, and passes the platform's injected `PORT` through to Next.js
(Turborepo 2's strict env mode otherwise drops it and the app binds 3000 regardless).

## Why Deploy Cal.com on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your
infrastructure so you don't have to deal with configuration, while allowing you to vertically and
horizontally scale it.

By deploying Cal.com on Railway, you are one step closer to supporting a complete full-stack
application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

Cal.com in particular benefits: the private network wires the app to PostgreSQL with no exposed
database port, the generated domain becomes the booking URL automatically, and a redeploy is how
you rotate the admin password — this image re-applies it from the environment on every boot.

## Common Use Cases

- Replace Calendly with a self-hosted booking page on your own domain, at no per-seat cost.
- Run team scheduling — round-robin sales calls, collective interviews, managed event types.
- Embed booking into a product or website, or drive it from Cal.com's REST API.
- Keep client scheduling data (names, emails, meeting notes) inside infrastructure you control.

## Dependencies for Cal.com

- PostgreSQL 16 or newer, deployed by this template as a second service on a volume.

### Deployment Dependencies

- Cal.com source and documentation: https://github.com/calcom/cal.diy
- Self-hosting guide: https://cal.com/docs/self-hosting/installation
- Wrapper image built for this template: https://github.com/bon5co/calcom-railway

## After deploying

1. Open the deployment's **Variables** tab and copy `CALCOM_ADMIN_EMAIL` and
   `CALCOM_ADMIN_PASSWORD` — that is your login, and it already exists.
2. Sign in at `/auth/login` and change the email address to your own under **Settings →
   Profile**.
3. To rotate the password later, edit `CALCOM_ADMIN_PASSWORD` and redeploy; the new value is
   applied on boot.
4. Public sign-up is disabled (`NEXT_PUBLIC_DISABLE_SIGNUP=true`). Invite the people you want
   from **Settings → Teams**, or set that variable to `false` if you deliberately want an open
   instance.
5. Optional: set `EMAIL_FROM` and the `EMAIL_SERVER_*` variables to send booking confirmations,
   and add Google/Microsoft credentials for calendar sync.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/calcom-or-just-updated-calendly-alternat
