---
title: "Deploy doory"
description: "Open-source design editor with live collaboration and PostgreSQL."
category: "Other"
url: https://railway.com/deploy/doory-1
---

# Deploy doory

Open-source design editor with live collaboration and PostgreSQL.

**[Deploy doory on Railway](https://railway.com/template/doory-1)**

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

- **Creator:** kmaki's Projects
- **Category:** Other

## Template content

### web

- **Image:** ghcr.io/shaongitbd/doory-frontend:sha-11fe071b0419ce604331a30fc5acbd2029b76ffc
- **Start command:** `sh -c 'set -eu; mkdir -p /tmp/doory-nginx-templates; sed -e "s|doory-api:8000|$DOORY_API_HOST:8000|g" -e "s|doory-realtime:8001|$DOORY_REALTIME_HOST:8001|g" -e "s|doory-mcp:8002|127.0.0.1:8002|g" /etc/nginx/templates/default.conf.template > /tmp/doory-nginx-templates/default.conf.template; . /docker-entrypoint.d/05-dns-resolver.envsh; case "$NGINX_RESOLVER" in *:*) NGINX_RESOLVER="[$NGINX_RESOLVER]";; esac; export NGINX_RESOLVER; envsubst "\$NGINX_RESOLVER" < /tmp/doory-nginx-templates/default.conf.template > /etc/nginx/conf.d/default.conf; exec nginx -g "daemon off;"'`
- **Public domain:** Yes

### realtime

- **Image:** ghcr.io/shaongitbd/doory-backend:sha-11fe071b0419ce604331a30fc5acbd2029b76ffc
- **Start command:** `uvicorn doory.asgi:application --host 0.0.0.0 --port 8001 --workers 1 --ws auto --ws-max-size 2097152 --lifespan off --no-server-header --timeout-graceful-shutdown 20`

### db

- **Image:** postgres:16-alpine

### api

- **Image:** ghcr.io/shaongitbd/doory-backend:sha-11fe071b0419ce604331a30fc5acbd2029b76ffc

## Documentation

# Deploy and Host Doory on Railway

Doory is an open-source browser-based design editor for creating, editing, and sharing visual designs. It combines a React single-page interface with a Django API, PostgreSQL-backed accounts and documents, and a dedicated WebSocket service for live co-editing. Railway runs the web gateway, application services, and database together with private service networking and persistent database storage.

## About Hosting Doory on Railway

Railway hosts Doory as Docker image services: nginx serves the browser UI, Django handles the API, a second Django process handles WebSockets, and PostgreSQL stores application data. The public web service is connected to the private backend services through Railway private networking.

## Tech Stack

- React and Vite browser editor
- nginx unprivileged frontend gateway
- Django REST API with Gunicorn
- Uvicorn WebSocket realtime service
- PostgreSQL 16
- Railway private networking and persistent volumes

## Why Deploy Doory on Railway

Railway provides a fast deployment path for the complete Docker-based stack, automatic HTTPS for the web service, private service-to-service networking, persistent PostgreSQL volumes, and straightforward environment-variable management. The template uses immutable upstream GHCR images for repeatable deployments.

## Common Use Cases

- Self-hosted design and social-content creation
- Collaborative brand and marketing workspaces
- Internal creative tools for small teams
- Prototyping browser-based visual editors
- API-driven design workflows with live editing

## Deployment Notes

The public web service listens on port 8080 and exposes the generated Railway domain. The API listens privately on port 8000 and realtime WebSockets listen privately on port 8001. `SITE_URL`, `CSRF_TRUSTED_ORIGINS`, and `DJANGO_ALLOWED_HOSTS` reference the web service domain. `DJANGO_SECRET_KEY` and `POSTGRES_PASSWORD` should be generated with Railway template secrets. PostgreSQL data is persisted at `/var/lib/postgresql/data` with `PGDATA` set to its `pgdata` subdirectory. Doory has no built-in initial admin credentials; users register through the web UI, and an administrator can be created with Django management commands. Optional MCP, Redis, external email, S3 media storage, and provider integrations are not enabled by default.

## Dependencies for Doory on Railway

Doory uses PostgreSQL for accounts, designs, sessions, and application state. The public web gateway privately reaches the API and realtime services; the API and realtime services privately reach PostgreSQL. Optional MCP and Redis services are intentionally omitted from this minimal browser-ready deployment.

### Deployment Dependencies

| Service | Image | Port | Volume |
|---------|-------|------|--------|
| web | ghcr.io/shaongitbd/doory-frontend:sha-11fe071b0419ce604331a30fc5acbd2029b76ffc | 8080 | - |
| api | ghcr.io/shaongitbd/doory-backend:sha-11fe071b0419ce604331a30fc5acbd2029b76ffc | 8000 | - |
| realtime | ghcr.io/shaongitbd/doory-backend:sha-11fe071b0419ce604331a30fc5acbd2029b76ffc | 8001 | - |
| db | postgres:16.15-alpine | 5432 | /var/lib/postgresql/data |


## 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/doory-1
