---
title: "Deploy Penpot"
description: "Open-source design and prototyping platform for collaborative teams."
category: "Other"
url: https://railway.com/deploy/penpot-1
---

# Deploy Penpot

Open-source design and prototyping platform for collaborative teams.

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

- **Creator:** Agastya Fauzan Alfath's Projects
- **Category:** Other

## Template content

### Backend

- **Image:** penpotapp/backend:2.17.0
- **Health check:** /readyz

### Postgres

- **Image:** postgres:15

### Exporter

- **Image:** penpotapp/exporter:2.17.0
- **Health check:** /readyz

### Frontend

- **Image:** penpotapp/frontend:2.17.0
- **Health check:** /readyz
- **Public domain:** Yes

### Valkey

- **Image:** valkey/valkey:8.1.3

## Buckets

- **Assets**

## Documentation

# Deploy and Host Penpot on Railway

Penpot is an open-source, web-based design and prototyping platform built around SVG and open standards. It gives product teams collaborative interface design, interactive prototypes, reusable design systems, developer inspection, and self-hosting without tying their workflows to a proprietary desktop format.

[Deploy Penpot on Railway](https://railway.com/deploy/penpot-1) using the published template code `penpot-1`.

## About Hosting Penpot

Hosting Penpot requires a frontend reverse proxy, a backend that runs migrations and application workers, an exporter for rendered assets, PostgreSQL for durable application data, Valkey for websocket coordination, and persistent object storage for uploaded media. This template pins the Umbrel-tested Penpot 2.17.0 images, PostgreSQL 15, and Valkey 8.1.3. Only the Frontend receives a Railway HTTPS domain; every dependency uses Railway private networking. PostgreSQL and Valkey have persistent volumes, while a private Railway S3-compatible bucket stores Penpot objects because Railway volumes cannot be shared between the frontend and backend services.

## Common Use Cases

- Collaborative product, interface, and user-experience design
- Interactive prototyping and stakeholder review
- Shared design systems with developer inspection and handoff
- Self-hosted design work for privacy-sensitive teams

## Dependencies for Penpot Hosting

- PostgreSQL 15 for profiles, teams, projects, files, and migration state
- Valkey 8.1.3 for websocket notification coordination
- A private Railway Storage Bucket for persistent uploaded objects
- The Penpot exporter for SVG, bitmap, and PDF rendering workflows

### Deployment Dependencies

- [Penpot 2.17.0 release](https://github.com/penpot/penpot/releases/tag/2.17.0)
- [Official Docker installation guide](https://help.penpot.app/technical-guide/getting-started/docker/)
- [Official Penpot configuration guide](https://help.penpot.app/technical-guide/configuration/)
- [Umbrel Penpot 2.17.0 compose graph](https://github.com/getumbrel/umbrel-apps/blob/master/penpot/docker-compose.yml)
- [Railway private networking](https://docs.railway.com/networking/private-networking)
- [Railway Storage Buckets](https://docs.railway.com/storage-buckets)

## Implementation Details

- **Images:** `penpotapp/frontend:2.17.0`, `penpotapp/backend:2.17.0`, `penpotapp/exporter:2.17.0`, `postgres:15`, and `valkey/valkey:8.1.3`.
- **Networking:** only `Frontend` is public on port 8080. `Backend`, `Exporter`, `Postgres`, and `Valkey` are private.
- **Health:** `Frontend`, `Backend`, and `Exporter` use the supported `/readyz` endpoint. The frontend check also proves that its proxy can reach the backend.
- **Persistence:** PostgreSQL mounts `/var/lib/postgresql/data` with `PGDATA` in a subdirectory; Valkey mounts `/data` with AOF enabled; uploaded Penpot objects use the `Assets` bucket through Penpot's supported S3 backend.
- **Secrets:** the PostgreSQL password is generated once on `Postgres`; `Backend` references it. The Penpot master key is generated once on `Backend`; `Exporter` references the same key.
- **MCP exclusion:** Penpot MCP is optional, not required for normal design, collaboration, or export workflows. Penpot 2.17.0 documents remote multi-user mode as under development and warns that its test token is hard-coded, so this internet-facing Railway template intentionally excludes MCP rather than expose an incompletely secured endpoint.
- **Email:** SMTP and email verification are disabled to avoid asking for external credentials. Team invitation email requires deployers to add a real SMTP provider and update `PENPOT_FLAGS` after deployment.

This is a community-maintained template and does not imply affiliation with or endorsement by Kaleidos or the Penpot project.

## Publication Verification

The template is published with five services, 33 required variables, one private `Assets` bucket, and persistent PostgreSQL and Valkey volumes. Railway's serialized template configuration confirmed every default, reference, generated value, and required state. The publisher attested that all 33 variable descriptions were completed in the Railway editor; Railway's `serializedConfig` does not expose those descriptions reliably.

## Why Deploy Penpot 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 Penpot 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) — [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/penpot-1
