
Deploy Penpot Design Tokens
W3C-format design tokens and themes you self-host
Valkey
Just deployed
penpot-exporter
Just deployed
Just deployed
/var/lib/postgresql/data
penpot-frontend
Just deployed
penpot-backend
Just deployed
/opt/data/assets
Deploy and Host self hosted Penpot Design Tokens (Open-Source Design Tool) on Railway
This template runs self-hosted Penpot 2.18.3 with native W3C DTCG tokens: sets, themes, math in values, and JSON export that other tools read as-is. Built for design system teams that keep tokens on their own server.
About Hosting Penpot Design Tokens open-source software on Railway (self hosted Penpot design tokens template)
Your tokens, design files and uploaded assets live in your own Postgres database and a backend volume, not someone's SaaS. This template runs Penpot 2.18.3 as frontend, backend and exporter, plus Postgres 18.6 and Valkey for notifications.
Railway covers private networking, TLS, health checks and restarts, so redeploying the backend doesn't strand the frontend on a stale IP. Backups of Postgres and the asset volume are on you.
Why Deploy Penpot Design Tokens, the Figma Variables alternative on Railway (Railway Free Trial)
Figma Variables keep tokens locked in Figma's cloud on per-editor seats. Here the W3C DTCG JSON is yours: export it, diff it in git, feed it to Style Dictionary. Railway's $5 trial runs the full five-service stack, so test it with your real library.
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 Design Tokens 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 Penpot Design Tokens self hosting
Railway ships the five-service Penpot stack as one unit, with private networking and a public domain wired up.
| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | Template deploy with private DNS and TLS | Droplets or App Platform; you wire nginx, Postgres, Redis and TLS |
| AWS | Managed Postgres and internal service DNS | ECS or EC2 plus RDS, ElastiCache and an ALB you patch |
| Hetzner | One-click stack, billed with your Railway plan | Cheapest raw VMs, but you own compose, backups and certs |
DigitalOcean and Hetzner are fine if you want to own the server work; Railway skips that part.
Common Use Cases for hosted Penpot Design Tokens
- Light and dark themes: create Light/Colors and Dark/Colors sets that share token names, bind both to a Mode theme group, and one click repaints every board on the page.
- Multi-brand systems: a Brand theme group (A, B) keeps one active brand per file while shared spacing, type and radius sets stay common across both.
- Math-driven scales: define spacing.large as {spacing.base} * 2 and font-size.h2 with round(), min() or max() so a type scale stays consistent instead of drifting.
- Code hand-off: export DTCG JSON from Tools and run Style Dictionary in CI to emit CSS variables, a Tailwind config or platform files, with no conversion step.
- Shared libraries: publish a connected library so other files pull the full token definition, and one rename with remap fixes every reference.
Dependencies for Penpot Design Tokens Docker hosted on Railway
Five services: penpot-frontend, penpot-backend and penpot-exporter on penpotapp 2.18.3 images, plus Postgres 18.6 and Valkey 8.1.10. Only penpot-frontend is public, on port 8080. Expect about 1.5 GB RAM at idle, so Railway Hobby is the floor.
Deployment Dependencies for Managed Penpot Design Tokens Service (Design Tool)
PENPOT_PUBLIC_URI holds the Railway domain, so a custom domain is a one-place change. PENPOT_SECRET_KEY is generated at 64 characters; rotate it and every session drops. PENPOT_FLAGS on penpot-backend carries enable-registration, enable-login-with-password and disable-email-verification, so no SMTP is needed.
Implementation Details for Penpot Design Tokens (Using Penpot official docker image)
The frontend nginx proxies /api, /ws/notifications, /assets and /readyz to penpot-backend on private port 6060, and /api/export to penpot-exporter on 6061. Assets serve read-only on port 6070 from /opt/data/assets. Migrations run at backend boot, so wait for /readyz before opening the app.
How does Penpot Design Tokens compare against other design token tools
All four tools can read or write token files; the split is where tokens live and who renders them.
Penpot vs Figma Variables (Figma Variables Alternative)
- Format: Figma Variables need a plugin to leave as DTCG; Penpot writes DTCG JSON natively.
- Ownership: Figma stores files in its cloud; here tokens sit in your own Postgres on Railway.
- Themes: Both do modes; Penpot theme groups cover Mode and Brand at once.
- Where Figma wins: Dev Mode and its plugin ecosystem are deeper.
Penpot vs Tokens Studio (Tokens Studio Alternative)
- Built in: Tokens Studio is a Figma plugin; Penpot ships sets, themes and math in the app.
- Round trip: Both read DTCG JSON and Style Dictionary, so tokens can move either way.
- Where Tokens Studio wins: More transforms and community presets.
Penpot vs Supernova (Supernova Alternative)
- Scope: Supernova documents and syncs tokens across tools; Penpot designs with them in the same file.
- Cost of ownership: Supernova is SaaS; this stack is MPL-2.0 on your own server.
- Where Supernova wins: Documentation sites and multi-tool sync are stronger.
Penpot vs Sketch (Sketch Alternative)
- Platform: Sketch is macOS-only and subscription-based; Penpot runs in any browser.
- Tokens: Sketch token workflows lean on plugins; Penpot has a Tokens panel and themes.
- Where Sketch wins: Offline desktop performance on large files is still better.
How to use Penpot Design Tokens (the OSS Figma alternative)?
- Open your Railway domain, create an account and a new file.
- Open the Tokens tab, click + by Color, name it color.brand.primary, set a hex value.
- Add a dimension token spacing.base.
- Add spacing.large with value {spacing.base} * 2.
- Select a board and apply both tokens from the Tokens panel.
- Create sets Light/Colors and Dark/Colors, then a Mode theme group with Light and Dark themes.
- Switch the theme and watch the board values change.
- Export from Tools at the bottom as a multi-file folder:
{"spacing":{"large":{"$value":"{spacing.base} * 2","$type":"dimension"}}}
- Run Style Dictionary on that folder in your repo to emit CSS variables.
How to self host Penpot Design Tokens on other VPS Services (Penpot self hosting guide)
Clone the Repository
Grab the official compose file from the Penpot repo.
git clone https://github.com/penpot/penpot.git
cd penpot/docker/images
Install Dependencies
You need Docker Engine with the Compose plugin and about 2 GB of RAM free. There's no Node, JVM or Chromium to install on the host, the containers carry all of it.
Configure Environment Variables
Copy the template and edit it.
cp env.template env
Set PENPOT_PUBLIC_URI to https://your-domain and a real PENPOT_SECRET_KEY. Point PENPOT_DATABASE_URI and PENPOT_REDIS_URI at your own Postgres and Valkey, or keep the compose services.
Start the Penpot Design Tokens Application
docker compose -p penpot -f docker-compose.yaml up -d
Put HTTPS in front with nginx, Caddy or Traefik, then open your-domain. The Tokens panel, sets and themes behave exactly as they do here.
Railway handles the domain, TLS, private networking, database, cache and health checks for you.
Official Pricing of Penpot Design Tokens (Penpot pricing)
Penpot is free software under MPL-2.0, tokens included, so there's no per-seat or per-token charge to use them. On your own instance, no token feature sits behind a paid tier. Self hosting the whole stack runs about $10-25/mo on Railway at light team use.
Penpot Design Tokens cloud vs self hosted comparison (Pricing, features, costs, and more)
The token features are the same either way. What changes is who holds the design files and the JSON exports, plus what you pay.
Monthly cost of self hosting Penpot Design Tokens on Railway
The software is free under MPL-2.0, so you only pay for compute. The JVM backend with a 1 GB heap cap eats most of it. Railway's $5 trial covers the first look. The hosted cloud at design.penpot.app has a free plan plus paid Professional and Enterprise tiers.
System Requirements for Hosting Penpot Design Tokens on a VPS
Docker and about 2 GB RAM minimum; this template wants closer to 1.5 GB at idle before Chromium renders a PDF, so plan for more. Add HTTPS reverse proxy, backups of Postgres and the assets volume, and a real 64-character secret key.
Frequently Asked Questions (FAQs)
Are Penpot tokens W3C DTCG compatible?
Yes. Tokens use $value, $type and $description, so exported JSON drops into other DTCG-aware tools without conversion.
Do I need a feature flag on self-hosted Penpot 2.18.3?
No. The Tokens panel is on by default in 2.18.3, including this Railway stack, so there is nothing to enable.
How do token sets override each other?
Set order decides it. When two enabled sets define the same token name, the later set wins, so put base values first and overrides after.
Can I import Tokens Studio JSON?
Only if it is DTCG-shaped with $value and $type keys. Legacy Tokens Studio exports need a small conversion pass first.
How do I get tokens into CSS?
Export from Tools as a multi-file folder, then run Style Dictionary over it to emit CSS variables, Tailwind config or platform files.
Can tokens be shared across files?
Yes. A connected shared library can supply its full token definition, and imported single JSON files use set names as first-level keys.
Template Content
Valkey
valkey/valkey:8.1.10penpot-exporter
penpotapp/exporter:2.18.3penpot-frontend
penpotapp/frontend:2.18.3penpot-backend
penpotapp/backend:2.18.3