Deploy Penpot Plugins

Run Penpot plugins on your own design server

Deploy Penpot Plugins

Just deployed

/opt/data/assets

Just deployed

Just deployed

Just deployed

/var/lib/postgresql/data

Deploy and Host self hosted Penpot Plugins (Open-Source Design Tool with Plugins) on Railway

This template runs Penpot 2.18.3 with the plugin system on, so you can paste a manifest URL, install a plugin and use it. It's for design teams that want their own server and their own plugins.

About Hosting Penpot Plugins open-source software on Railway (self hosted Penpot plugins on a self-hosted server template)

Your design files, uploads, fonts and exports live in your own Postgres and volume on Railway, not in someone else's cloud. Plugins run in each user's browser, so there's no extra service to deploy. You get HTTPS, private networking, generated secrets and volume-backed assets without writing a compose file yourself.

Why Deploy Penpot Plugins, the Figma alternative on Railway (Railway Free Trial)

Figma bundles plugins into a closed cloud you rent per editor. Here plugins run in the browser against files on your own domain, and the Penpot server needs no extra service for them. Spin it up on the $5 Railway trial and install a manifest URL to test.

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 Plugins 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 Plugins self hosting

Plugins run in the browser, so hosting comes down to where the Penpot server and files live.

ProviderWhat You Get with RailwayWhat You Get with the Other Provider
DigitalOceanFrontend, backend, exporter, Postgres, Valkey and a working plugin manager.Droplet or App Platform; install Docker, write compose, add TLS and CORS.
AWSSame stack, one public domain, private service DNS handled for you.ECS or EC2 plus S3, RDS and ElastiCache; move assets to S3 yourself.
HetznerManaged Postgres and Valkey plus three Penpot services on one bill.Cheap VPS; you own backups, proxy, TLS and about 2 GB RAM.

Common Use Cases for hosted Penpot Plugins

  • Palette and copy generation: The official Color palette plugin fills a board with swatches, and Lorem ipsum drops placeholder text into selected frames, so mockups stop being empty grey boxes.
  • Contrast checks: The Contrast plugin reads the open file and flags color pairs that fail accessibility, which is faster than checking hex values by hand.
  • Icon imports: Feather icons adds icon sets straight into the file from the plugin manager, with no download folder detour.
  • Brand components: An internal plugin with library:read and content:write inserts approved buttons, cards and headers into any page.
  • Token handoff: A small in-house plugin exports design tokens as JSON for developers, keeping file and codebase in step.

Dependencies for Penpot Plugins Docker hosted on Railway

Plugins do the work in the browser, so this template ships no plugin service. Only the frontend is public, on port 8080. The backend needs a healthy first boot before anything loads.

Deployment Dependencies for Managed Penpot Plugins Service (Design Plugins)

Host manifest.json and the plugin script over HTTPS with CORS headers, because Penpot fetches both from the browser. A Railway static service beside Penpot works. The plugin manager needs no extra container: the 2.18.3 frontend has it built in; if it is missing on an instance, check PENPOT_FLAGS.

Implementation Details for Penpot Plugins (Using Penpot official docker image)

Keep frontend, backend and exporter on the same tag. The backend listens on private 6060 with assets on 6070, the exporter on 6061, both answering /readyz. Uploads, fonts and exports live on the volume at /opt/data/assets with PENPOT_OBJECTS_STORAGE_BACKEND=fs. PENPOT_PUBLIC_URI must match your Railway domain.

How does Penpot Plugins compare against other design tools with plugin ecosystems

Penpot vs Figma (Figma Alternative)

  • Ecosystem size: Figma's plugin community is far larger; Penpot's official set is small, though the Plugin API is documented and typed.
  • Where Penpot wins: plugins run in the browser against your own server, and the whole stack is MPL-2.0.
  • Porting: Figma plugins do not run in Penpot; the APIs differ, so moving one is a rewrite.
  • Where Figma wins: Dev Mode handoff and mature plugin tooling around it.

Penpot vs Sketch (Sketch Alternative)

  • Platform: Penpot runs in a browser on your Railway domain; Sketch is a macOS app with local plugin bundles.
  • Permissions: Sketch plugins get broad local access; Penpot plugins are sandboxed and ask for content:read, library:write and similar scopes at install.
  • Where Sketch wins: a long-standing native plugin scene and fully offline files.

Penpot vs Lunacy (Lunacy Alternative)

  • Plugins: Lunacy leans on bundled asset libraries; Penpot ships a Plugin API with manifest URLs you host yourself.
  • Control: Penpot self hosted keeps every design file in your own Postgres, free under MPL-2.0.
  • Where Lunacy wins: nothing to deploy for a solo designer on Windows.

Penpot vs Framer (Framer Alternative)

  • Scope: Framer is a hosted design-to-website builder; Penpot is a design and prototyping tool with plugins for tokens, icons and contrast.
  • Where Framer wins: publishing a live site is built in; Penpot stops at prototypes and inspect mode.
  • Hosting a plugin: a Penpot plugin is static files over HTTPS with CORS, so it sits comfortably next to Penpot on Railway.

How to use Penpot Plugins (the OSS design and prototyping tool)?

  1. Open your Railway domain, log in, and open a file.
  2. Press Ctrl+Alt+P (Cmd+Alt+P on Mac), or pick Plugins from the menu.
  3. Paste https://contrast.plugins.penpot.app/assets/manifest.json and install.
  4. Approve the permission prompts (content:read, content:write, library:read) and run it.
  5. Scaffold your own from the starter template, serve it over HTTPS with CORS, and install it by URL.
{
  "name": "Brand kit",
  "code": "https://plugins.your-domain.com/plugin.js",
  "icon": "https://plugins.your-domain.com/icon.png",
  "permissions": ["content:read", "content:write"]
}

Figma plugins do not run here at all, since the APIs differ.

How to self host Penpot Plugins on other VPS Services (Penpot self hosting guide)

Clone the Repository

Download docker/images/docker-compose.yaml from the Penpot repo, and keep your edits in version control.

Install Dependencies

You need Docker with the compose plugin and about 2 GB of RAM free. Plugins add no extra service, since they run in each visitor's browser.

Configure Environment Variables

Edit the environment block in docker-compose.yaml and change two values:

PENPOT_PUBLIC_URI=https://your-domain
PENPOT_SECRET_KEY=your-long-random-string

The compose default secret key is publicly known, so never ship it.

Start the Penpot Plugins Application

Bring the stack up, then terminate HTTPS at a reverse proxy:

docker compose -p penpot -f docker-compose.yaml up -d

Sign in at your-domain, press Ctrl+Alt+P, and install one manifest URL to confirm the plugin manager is reachable. Railway handles the image pulls, TLS, restarts and volume-backed uploads for you.

Official Pricing of Penpot Plugins (Penpot pricing)

There is no separate price for Penpot plugins. The plugin system ships inside Penpot 2.x, Penpot itself is MPL-2.0 open source, and plugins are just static files served over HTTPS, so the software costs nothing.

What you pay for is infrastructure. Penpot's hosted cloud at design.penpot.app has a free plan plus paid Professional and Enterprise options; plugin installs work the same either way.

Penpot Plugins cloud vs self hosted comparison (Pricing, features, costs, and more)

Penpot's hosted cloud at design.penpot.app runs a free plan plus paid Professional and Enterprise tiers. Self hosting is free under MPL-2.0. Plugins behave the same on both, since they run in the browser against the Plugin API of whichever instance you have open.

Monthly cost of self hosting Penpot Plugins on Railway

Railway bills by usage, not seats. The whole stack, frontend, backend, exporter, Postgres and Valkey, lands around $10-25/mo for a light team, mostly RAM. Plugins add nothing to it: they load from static hosts you control, not from the Penpot server.

System Requirements for Hosting Penpot Plugins on a VPS

Docker plus 2 GB RAM or more, per the upstream technical guide. Your plugin's own hosting stays separate, so a static host or a small Railway service is all it needs.

Frequently Asked Questions (FAQs)

Where do Penpot plugins actually run?

In the user's browser, not on your Railway server. The code loads from your host and talks to the open Penpot tab through the Plugin API.

Can a plugin see my design files?

Only what its permissions allow, approved at install. content:read reads the current file, content:write edits it, allow:downloads saves files.

Why does my manifest URL fail to load?

Usually CORS or HTTPS. The host serving manifest.json and the script needs an Access-Control-Allow-Origin header. Load the URL in a tab first.

Do plugins need the Penpot server to change?

No. Plugins run in the browser, and Penpot 2.x ships the system. If Ctrl+Alt+P does nothing, check PENPOT_FLAGS on penpot-backend.

Can I host a private plugin?

Yes, common for internal brand-component or tokens plugins. Serve it over HTTPS, keep it unlisted, install it by manifest URL.

Do Figma plugins work in Penpot?

No. The APIs differ, so port the plugin and type it against @penpot/plugin-types. Palette generators port fast; Figma nodes need a rewrite.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
50
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51