После создания сервера Penpot ставится автоматически: docker compose поднимает весь стек апстрима (8 контейнеров), а Caddy отдельным контейнером выпускает Let's Encrypt и открывает доступ по HTTPS на magic-DNS домене. Первая загрузка образов занимает несколько минут - самый тяжелый образ, экспортер, весит почти 3 ГБ (внутри полноценный Chromium для выгрузки PNG и PDF).
Что внутри
- Penpot (Clojure/JVM бэкенд, ClojureScript + Rust/Skia фронтенд) - редактор, инспектор кода, дизайн-токены.
- Exporter - выгрузка PNG/PDF настоящим браузером внутри контейнера.
- Admin-console, MCP-сервер - административная консоль и доступ для внешних AI-агентов (Claude, Cursor и т.п.) к файлам.
- PostgreSQL 15, Valkey 8.1 - база и уведомления/кеш.
- Caddy - reverse-proxy и авто-TLS (Let's Encrypt), отдельный контейнер. Penpot слушает только localhost.
Безопасность
- Администратора заводит установка сама - штатным CLI апстрима, сразу активным, подтверждение почты не требуется.
- Регистрация закрыта по умолчанию - посторонний не заведет себе учетную запись, даже зная адрес; участников приглашает администратор.
- fail2ban - банит IP после серии неудачных попыток входа по SSH.
- HTTPS + security-заголовки - Let's Encrypt с автопродлением, HSTS, X-Content-Type-Options, Referrer-Policy.
Как войти
- Адрес формируется из IP сервера: замените точки на дефисы и добавьте
.fatmetal.net. Пример: IP45.15.159.10→https://45-15-159-10.fatmetal.net/. - Администратор уже заведен: логин - адрес из поля
ADMIN_EMAIL(если задавали при заказе), иначеadmin@<ваш-адрес>; пароль - пароль этого сервера, тот же, что для SSH (он в личном кабинете). - Смените пароль сразу: «Ваш аккаунт» → «Пароль». Дальше пригласите участников команды (в настройках команды) и откройте готовые библиотеки и шаблоны на дашборде - там уже есть дизайн-система, набор токенов и примеры прототипов.
Свой домен
Наведите A-запись на IP этого сервера, впишите домен в DOMAIN= (/etc/penpot-mp/params.env) и запустите bash /opt/penpot-mp/install.sh еще раз - скрипт идемпотентен, перевыпустит TLS под новый домен.
Требования
В простое стек занимает около 2,3 ГБ RAM; бэкенд на JVM растет вместе с весом открытых файлов (один файл дизайн-системы в 40 МБ поднял его с 1,1 до 1,4 ГБ), а каждый параллельный экспорт добавляет около 200 МБ. Образы на диске - около 7 ГБ. Главное узкое место не на сервере, а в браузере дизайнера: рендер холста идет через WASM/WebGL, современный Chrome важнее лишнего гигабайта памяти на сервере.
Тариф CPU4-RAM8-DISK100.
Ассеты (картинки, шрифты) растут отдельно от базы и их можно унести в S3 - Penpot умеет это нативно (переменная PENPOT_OBJECTS_STORAGE_BACKEND). Берите горячий класс: ассеты редактор читает постоянно, пока вы работаете с файлом. База с геометрией файлов и историей версий в S3 не выносится и остается на диске тарифа.