---
title: "Deploy Kan | (Just Updated) Trello Alternative You Can Actually Sign Into"
description: "Open-source Trello alternative. Email sign-in works, no OAuth app needed."
category: "Other"
url: https://railway.com/deploy/kan-or-just-updated-trello-alternative-y
---

# Deploy Kan | (Just Updated) Trello Alternative You Can Actually Sign Into

Open-source Trello alternative. Email sign-in works, no OAuth app needed.

**[Deploy Kan | (Just Updated) Trello Alternative You Can Actually Sign Into on Railway](https://railway.com/template/kan-or-just-updated-trello-alternative-y)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/kan-or-just-updated-trello-alternative-y/manifest.json

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

## Template content

### kan

- **Image:** ghcr.io/bon5co/kan-railway:0.6.0
- **Health check:** /api/v1/health
- **Public domain:** Yes

### postgres

- **Image:** postgres:17.6-alpine

## Documentation

# Deploy and Host Kan on Railway

Kan is an open-source Trello alternative: boards, lists, cards, labels, members,
comments, checklists, activity history, public board sharing and Trello import.
This template deploys it as **two services** — the Kan app and a Postgres
database — and asks you for **nothing**.

## About Hosting Kan

Kan ships upstream as two containers: the Next.js web app, and a separate
run-once `kan-migrate` container that applies the drizzle schema. Railway starts
every service in a project at the same time, so a template that models the
migration as its own service starts the web app against an empty database and
leaves a job container sitting in the project afterwards with nothing to do.

This template runs the migration inside the app container's entrypoint, before
the server accepts a request, so the ordering is real rather than a race. The
app image is a thin wrapper over the official `ghcr.io/kanbn/kan` release,
**pinned by digest**, so redeploying six months from now gets the same build you
tested — not whatever `latest` moved to.

Kan also needs to know its own public origin: unset, Better Auth signs cookies
for `localhost`, sign-in bounces and workspace invite links point somewhere that
does not exist. Railway only knows the domain at run time, so the entrypoint
derives `NEXT_PUBLIC_BASE_URL`, `BETTER_AUTH_URL` and
`BETTER_AUTH_TRUSTED_ORIGINS` from `RAILWAY_PUBLIC_DOMAIN` on every boot. A
custom domain works the same way — set `NEXT_PUBLIC_BASE_URL` yourself and the
entrypoint leaves it alone.

Two failure modes are turned into refusals rather than silent damage. With no
`POSTGRES_URL`, Kan falls back to an in-container PGLite file and every board
disappears on the next redeploy; with no `BETTER_AUTH_SECRET`, sessions are
forgeable. The entrypoint exits with a named error on either instead of booting
into them. The template wires both, and generates the auth secret per deploy —
it is not a constant shared by everyone who clicked deploy.

Postgres carries a volume at `/var/lib/postgresql`, so your boards survive
redeploys. Kan is a normal Next.js server and fits comfortably inside Railway's
1 GB Trial per-service memory cap.

## Why Deploy Kan on Railway?

Railway is a singular platform for deploying 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 Kan 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.

## Common Use Cases

- Replace a Trello board for a team that would rather own its data.
- Run a private project tracker on your own domain, with your own Postgres.
- Import existing Trello boards through Kan's built-in Trello import.
- Share a read-only public board without giving anyone an account.
- Stand up a throwaway kanban instance for a client engagement and delete it after.

## Dependencies for Kan

- A Postgres database (included in this template).

### Deployment Dependencies

- [Kan](https://kan.bn) — the upstream project.
- [Kan source and documentation](https://github.com/kanbn/kan)
- [Wrapper image source](https://github.com/bon5co/kan-railway) — the Dockerfile
  and entrypoint used here, so you can read exactly what was changed.

No API keys, SMTP server or OAuth application is required to deploy. SMTP,
Google/GitHub/Discord OAuth, Trello import credentials and S3 storage are all
optional Kan features; add their variables later if you want them.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — 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/kan-or-just-updated-trello-alternative-y
