---
title: "Deploy Excaliself"
description: "Self-hosted Excalidraw+ alternative: live collab, comments, folders, SSO, MCP"
category: "Other"
url: https://railway.com/deploy/excaliself
---

# Deploy Excaliself

Self-hosted Excalidraw+ alternative: live collab, comments, folders, SSO, MCP

**[Deploy Excaliself on Railway](https://railway.com/template/excaliself)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/excaliself/manifest.json

- **Creator:** Maciej Zygmunt's Projects
- **Category:** Other

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### excaliself https://excaliself.com/favicon.svg

- **Image:** ghcr.io/maciekzygmunt/excaliself:latest
- **Health check:** /api/health
- **Public domain:** Yes

## Documentation

# Deploy and Host Excaliself on Railway

Excaliself is a self-hosted alternative to Excalidraw+ for teams, built on the Excalidraw canvas. It adds live collaboration, comments pinned to shapes, a shared team space, folders, search, a team library, single sign-on, and an MCP server, so AI clients like Claude can find, read, and draw diagrams. Every drawing, image, and account is stored in your own Postgres database, not in a third-party cloud.

## About Hosting Excaliself

Excaliself is one Node.js app and one PostgreSQL database. This template runs the prebuilt image `ghcr.io/maciekzygmunt/excaliself:latest` next to a Railway Postgres service, and connects them over the private network. It generates the auth secret, sets the public URL from the service's Railway domain, and checks `/api/health` before a deploy goes live. The app applies database migrations when it starts. After the deploy, open the domain to create the admin account, then invite your team from Settings. To upgrade, click the image update button in the service settings.

## Common Use Cases

- A private whiteboard for engineering teams: architecture diagrams, flowcharts, and system sketches
- Live design reviews and workshops, with shared links for guests who have no account
- Async reviews: comment threads pinned to the shapes they are about, with replies and resolve
- Diagrams that your AI client can search, read, draw, and export over MCP
- A self-hosted Excalidraw+ alternative that keeps company diagrams on your own infrastructure

## Dependencies for Excaliself Hosting

- PostgreSQL (included in this template)
- A public HTTPS domain (Railway generates one)

### Deployment Dependencies

- Source code: https://github.com/maciekzygmunt/excaliself
- Docs: https://excaliself.com/docs/railway/
- Environment variables, including Google, Microsoft, and OIDC single sign-on: https://excaliself.com/docs/environment/

### Implementation Details

The template sets these variables on the `excaliself` service:

```
DATABASE_URL=${{Postgres.DATABASE_URL}}
BETTER_AUTH_SECRET=${{secret(32)}}
BASE_URL=https://${{RAILWAY_PUBLIC_DOMAIN}}
PORT=3000
```

Live collaboration uses WebSockets under `/ws/`. Railway's proxy passes them through with no extra setup.

## Why Deploy Excaliself 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 Excaliself 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.


## 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/excaliself
