Penpot
The open-source design & prototyping platform - the Figma alternative, with no per-seat ceiling.
One-click deploy, from $49/mo on a Miget plan.
Penpot is the design tool that does not hold your files hostage: web-based, SVG-native (so the output is real, open standard markup), with prototyping, design systems, and developer handoff - MPL-2.0, no seat ceiling. It became the open-source rallying point when Figma pricing and the Adobe saga rattled design teams.
This template runs the full stack: the nginx frontend (fixed :8080, so a thin :5000 proxy fronts it), the JVM backend, and the Chromium exporter, on a managed Postgres with a noeviction Valkey. Crucially, point asset storage at a Miget Bucket (S3) and the shared RWX volume disappears - the backend goes stateless.
Figma Professional is $16 per full seat per month; a ten-designer team is $160+ and climbing. Penpot self-hosted is $49/month flat, unlimited designers, files on your infrastructure.
Upstream project: Penpot
#what you get
- SVG-native design, components, and design systems
- Interactive prototyping and developer handoff (inspect/code)
- Unlimited designers - no per-seat pricing
- Asset storage in Miget Buckets (S3) - stateless backend
- Managed Postgres + noeviction Valkey; Chromium exporter
- MPL-2.0
#topology
| Service | Role | Public |
|---|---|---|
| frontend / web | SPA (nginx :8080) behind a :5000 proxy | yes |
| backend / exporter | JVM API + Chromium export | no |
| broker / db | noeviction Valkey / managed Postgres | no |
#miget sizing
// this stack needs
4.1 GiB RAM · 15 GB disk · 6 services
Backend JVM ~1.5 GiB, exporter Chromium ~1 GiB are the floors. With S3 asset storage the stack is volume-free apart from the managed Postgres.
Hobby - recommended fit
$49/mo
4 vCPU · 8 GiB · 160 GiB disk
Headroom for your own apps: 16 GiB at $97/mo
Professional - production
$85/mo
4 vCPU · 8 GiB · 50 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| Penpot on Miget ★ | 8 GiB plan | $49 | this whole stack, flat - no usage meters, and room left for your own apps |
| Figma | Professional | ~$160 | $16/full-seat/mo annual at 10 seats ($20 monthly); Dev seats $12 |
| Penpot Cloud | Unlimited | ~$70 | $7/user/mo at 10 users (capped $175; free tier ≤8 members) |
#vs. other PaaS
Estimated monthly cost of running this exact stack (4.1 GiB RAM, 15 GB disk, 6 containers) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $49 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$206 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| Render | ~$55 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| DO App Platform | ~$55 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Railway | ~$44 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$27 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
penpot -
Set the required variables:
PENPOT_SECRET_KEY / REDIS_AUTH, core secretsPENPOT_PUBLIC_URI, the app’s https domain after first deployPENPOT_OBJECTS_STORAGE_BACKEND=s3 + S3_*, recommended: a Miget Bucket, to drop the RWX volume
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/penpot
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
How does the cost compare to Figma?
Figma Professional is $16/full-seat/month ($20 monthly), plus Dev seats - a 10-designer team runs $160+/month and grows with headcount. Penpot here is $49/month flat with unlimited designers, and the files are open SVG on your infrastructure.
Why the proxy and the S3 recommendation?
Penpot’s frontend listens on a hardcoded :8080, so a 128 MiB nginx publishes it on the platform’s :5000. And with the filesystem asset backend, frontend and backend share an RWX volume - setting PENPOT_OBJECTS_STORAGE_BACKEND=s3 against a Miget Bucket removes that entirely and makes the backend disposable.
Is it really a Figma replacement?
For UI design, prototyping, design systems, and dev handoff - yes, and the SVG-native model means cleaner export. What you give up is Figma’s plugin ecosystem breadth and some polish; what you gain is open files, unlimited seats, and no vendor leverage over your design org.
Ship Penpot today
One compose stack, 4.1 GiB of RAM, from $49/month flat, and it runs on your laptop with the same files.