Deploy Doop
Multiplayer design canvas for humans and AI agents, Paper alternative
Just deployed
/app/data
Postgres
Just deployed
/var/lib/postgresql/data
Deploy and Host self hosted Doop (Design Canvas) on Railway
This template deploys Doop, the open-source multiplayer design canvas where people and AI agents design together, as two linked services: the Doop app and a Postgres 16 database with persistent storage.
About Hosting Doop open-source software on Railway (self hosted Doop template)
Doop is an open-source design canvas (AGPL-3.0) where people and AI agents work on one shareable canvas.
Railway handles the infrastructure: it provisions both services, wires the database connection and generates the auth secret and Postgres password.
Why Deploy Doop, the open-source design canvas on Railway (Railway Free Trial)
Figma is a excellent hosted tool, but every design you make lives on their servers under their plan and their terms.
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 Doop 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.
Railway vs Other Hosting Providers and VPS for Doop self hosting
Doop runs as two services, the app and Postgres 16, so the choice is how much server work you want to own.
| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | Both services from one template, zero inputs, a public domain and persistent volumes. | A droplet where you set up Docker, TLS, backups and OS patches yourself. |
| AWS | Doop and Postgres on private networking with no IAM or load balancer setup. | Full control, but you assemble EC2 or ECS, storage, DNS and certificates first. |
| Hetzner | Managed domains, volumes and redeploys from the dashboard, with no server to keep alive. | Strong resources for the cost, but you run Docker, the proxy and Postgres upkeep. |
Railway suits teams who want a working canvas fast, while a VPS suits people who already run their own infrastructure.
Common Use Cases for hosted Doop
- Letting Claude Code or Cursor design on a shared canvas over MCP: Point your agent at the MCP endpoint on your domain and it can sketch and stream frames onto the same canvas your team is looking at, with its own cursor and status visible to everyone.
- Multiplayer design reviews with cursors and comments: Share a canvas link with reviewers, who can leave threaded comments on elements or the canvas itself while watching edits happen live in one room.
- Clickable prototypes: Wire elements to other frames in Prototype mode, then click through the whole flow with Play or share the prototype link so stakeholders can test navigation without any build step.
- A self-hosted alternative to Paper.design: Run the canvas on infrastructure you control, keeping your designs and uploads on your own Postgres database and volume instead of a hosted service.
- The built-in Doop Agent on each user's own model account: Each person connects their own ChatGPT subscription or API key in Settings, so the agent runs on their model account rather than one shared key you pay for.
Dependencies for Doop Docker hosted on Railway
Doop on Railway runs two services: the Doop app and a Postgres 16 database.
Deployment Dependencies for Managed Doop Service (Doop app service plus Postgres 16)
The Doop service serves port 8080 on a public domain and mounts a volume at /app/data for uploads.
| Variable | Service | Purpose |
|---|---|---|
| DATABASE_URL | Doop | Connects the app to Postgres |
| BETTER_AUTH_SECRET | Doop | Signs login sessions |
| BETTER_AUTH_URL | Doop | Public https address of your domain |
| POSTGRES_PASSWORD | Postgres | Password for the postgres user |
| PGDATA | Postgres | Data directory inside the volume |
Optional settings are not needed to start.
Implementation Details for Doop (Using the onepush-dev image built from the upstream Dockerfile at a pinned commit)
The image is built from the upstream kgoedecke/doop repository at a pinned commit, using its Dockerfile unchanged.
How does Doop compare against other tools
Doop vs Figma (Figma Alternative)
- Hosting and control: Doop runs in your own Railway project, so designs and uploads stay in your Postgres database and volume. Figma stores files on its servers.
- Agent access: Doop exposes an MCP server, so Claude Code or Cursor can edit frames on the shared canvas directly.
- Where Figma wins: Figma has more maturity, plugins and a larger community.
Doop vs Penpot (Penpot Alternative)
- Shared goal: Both are open-source and self-hostable, the closest match here if you want to own your data.
- Agent design: Doop is built around AI agents editing the canvas over MCP. Penpot is a general design tool without that focus.
- Where Penpot wins: Penpot is the more established open-source design tool with broader features today.
Doop vs Paper.design (Paper.design Alternative)
- Open source: Doop is AGPL-3.0 and free to self-host. Paper.design is hosted, so you cannot run it on your own infrastructure.
- Agents: Doop's main point is letting external agents design alongside people over MCP.
- Where Paper.design wins: It is a polished hosted product that needs no setup on your side.
Doop with Docker Compose vs Doop on Railway (Docker Compose Alternative)
- Same app: Both run the same upstream Doop code with Postgres 16. The template only changes how it is deployed.
- Setup effort: Compose needs a VPS, Docker and a manual clone and start. Railway deploys both services with generated secrets.
- Networking: On Railway the app gets a public domain automatically. With Compose you manage volumes, reverse proxying and TLS yourself.
- Control: Compose gives full control over the host. Railway trades some of that for a faster managed setup.
How to use Doop on Railway?
- Wait for both services to go green. The Postgres service starts first, and the Doop app waits for it, so expect the whole stack to come up in about a minute and a half.
- Open the public domain Railway generated for the Doop service and sign up. The first visitor creates the account. Signup is open when no SMTP is configured, and any auth emails are printed to the Doop logs, so you can read a verification link there.
- Restrict who can join. Set
SIGNUP_EMAIL_DOMAINSto your company domain so only those addresses can register, or configure SMTP so people can verify their own email. - Connect a model account in Settings if you want the built-in Doop Agent to design for you. You can use a ChatGPT subscription or an OpenAI, Claude, Gemini or OpenRouter key.
- Connect Claude Code or Cursor to the MCP endpoint, which is your domain plus
/mcp. Agents then edit the same canvas you see in the browser.
Check that the app is answering with a request to the health endpoint:
curl https://your-domain/healthz
How to self host Doop on other VPS Services (Doop self hosting guide)
Doop is open source under AGPL-3.0, so you can run it on any VPS with Docker and Git. The steps below follow the upstream flow.
Clone the Repository
Log in to your server over SSH, then clone the repository and move into it.
git clone https://github.com/kgoedecke/doop.git
cd doop
Install Dependencies
You only need Git and Docker with the Compose plugin on the host.
docker --version
docker compose version
Configure Environment Variables
Generate a session secret and save it in a .env file next to the compose file. Keep it private.
echo "BETTER_AUTH_SECRET=$(openssl rand -hex 32)" > .env
echo "BETTER_AUTH_URL=https://your-domain" >> .env
Replace your-domain with your hostname. Add SMTP or ANTHROPIC_API_KEY settings later if you want them.
Start the Doop Application
Start the stack in the background. Compose runs the Doop app and Postgres together, and the app listens on port 4400.
docker compose up -d
curl http://localhost:4400/healthz
An ok response means the app is running. Railway handles the server, database, domain and TLS for you.
Official Pricing of Doop (Doop pricing)
Doop is open-source software licensed under AGPL-3.0, so you can self-host it for free.
Doop hosted vs self hosted comparison (Pricing, features, costs, and more)
doop.design is the hosted Doop Cloud, and some features are cloud-only and not in the open source.
Monthly cost of self hosting Doop on Railway
Railway bills by usage, so your monthly cost depends on the RAM and CPU the Doop app and Postgres use, how large your volumes grow, and which other services you attach.
System Requirements for Hosting Doop on a VPS
Plan for enough memory to run the Node app, Postgres 16, and Chromium, which Doop uses for frame screenshots.
Frequently Asked Questions (FAQs)
Who can sign up to my Doop instance?
Signup is open by default, so the first visitor can create an account.
Do I need an AI API key to use Doop?
No. Setting ANTHROPIC_API_KEY on the server only gives everyone a limited free tier for the built-in Doop Agent.
How do I connect Claude Code to Doop over MCP?
Point Claude Code at your public domain with /mcp appended, then complete the OAuth sign-in in your browser.
Where are uploaded assets stored?
Uploaded files are kept on the persistent volume mounted at /app/data, so they survive redeploys. Make sure that volume stays attached to the Doop service.
Why does Doop run on port 8080 instead of 4400?
Upstream Doop listens on 4400 in its Docker Compose file, but Railway injects its own PORT value of 8080 and the Doop service follows it.
Can I use SMTP for email on Railway?
Yes, but Railway blocks outbound ports 25, 465 and 587.
Template Content
Postgres
postgres:16