Penpot 部署实战:3 条命令完成 Penpot 自托管的 Docker 部署 Penpot 部署实战3 条命令完成 Penpot 自托管的 Docker 部署【免费下载链接】penpotPenpot: The open-source design platform for Product teams that need scalable collaboration.项目地址: https://gitcode.com/GitHub_Trending/pe/penpotPenpot 是一个开源的设计协作平台可以理解为能放在自己服务器上的 Figma。这篇文章带你用 Docker Compose 完成 Penpot 自托管部署从启动服务、管理用户、备份数据到 HTTPS 上线每步都给出可直接执行的命令和原因。部署前先问自己三个问题自托管不是不能做而是先判断值不值得做。动手前回答下面三个问题你会操作 Docker 和 Compose 吗Docker 把应用打包成容器独立运行Docker Compose编排工具则用一份 yaml 文件同时拉起多个容器。如果你连docker compose ps里每个容器是干什么的都说不上来先补基础。你有域名和反向代理经验吗反向代理是挡在应用前面的转发层负责把公网请求转给后端并处理 HTTPS 证书。只在本机体验可以跳过要对外提供服务就必须会。你的设计数据有多敏感自托管意味着数据完全由你自己保管。如果接受不了自己维护服务器安全直接用 Penpot 官方 SaaS 服务或一键部署平台把时间花在干活上。三个问题只要有一个答不会且又急着上线替代方案就是 SaaS 或一键部署本文剩下的内容留作日后参考即可。3 条命令跑起你的 Penpot先确认环境可用命令本身会告诉你答案docker --version docker compose version接着获取 Penpot 官方提供的标准docker-compose.yaml获取方式见官方文档 docs/technical-guide/getting-started/docker.mdwget -O docker-compose.yaml 官方下载地址 # 或 curl -o docker-compose.yaml 官方下载地址最后启动全部服务docker compose -p penpot -f docker-compose.yaml up -d启动完成后浏览器打开 http://localhost:9001 就是你的 Penpot。⚠️ 不指定版本时默认拉取最新镜像生产环境务必锁定版本例如PENPOT_VERSION2.4.3前缀再执行上一条命令避免镜像更新导致行为漂移。日常操作速查改配置、管用户、停启服务日常维护基本就是下面这张表操作命令说明停止全部服务docker compose -p penpot -f docker-compose.yaml down停容器并清理重启服务docker compose -p penpot -f docker-compose.yaml up -d改完配置后执行生效创建用户docker exec -ti penpot-penpot-backend-1 python3 manage.py create-profile进后端容器执行管理脚本查看服务状态docker compose -p penpot -f docker-compose.yaml ps配合docker ps确认真实容器名两点关键注意事项所有配置都集中在docker-compose.yaml里仓库里也有官方示例 docker/images/docker-compose.yaml环境变量管数据库连接和密钥服务参数管资源与端口映射PENPOT_FLAGS是功能开关。改之前先读文件头部的注释别凭感觉删 flag。创建用户时容器名penpot-penpot-backend-1可能因你的环境不同先用docker ps核对exec 进错的容器会直接报错。数据才是命根子Penpot 数据备份与恢复Penpot 的数据全部落在两个 Docker 卷Docker 管理的持久化目录里数据卷存什么丢了会怎样penpot_postgres_data数据库卷用户、项目等全部业务数据整个平台归零penpot_assets_data资源卷用户上传的图片等文件项目里的素材全部丢失备份就是把两个卷分别打包成 tar# 备份数据库 docker run --rm -v penpot_postgres_data:/volume -v $(pwd):/backup alpine tar cvf /backup/db-backup.tar /volume # 备份资源 docker run --rm -v penpot_assets_data:/volume -v $(pwd):/backup alpine tar cvf /backup/assets-backup.tar /volume这条命令的原理是临时跑一个 alpine 容器同时挂载原卷和当前目录把卷内容打成压缩包落盘。恢复是它的逆操作先停服务把备份包还原回对应卷再启动服务即可。建议把备份命令配成定时任务别等要用的时候才想起来。升级不踩坑升级只有两条命令docker compose -f docker-compose.yaml pull docker compose -p penpot -f docker-compose.yaml up -d⚠️ 两条铁律一是按版本顺序逐级升别从老版本直接跳最新版二是从 1.x 升到 2.0 涉及数据迁移风险最高。所以升级前一定先把上面两个卷备份好条件允许就复制到测试环境先试跑一遍验证无误再动生产。生产上线Penpot HTTPS 配置与反向代理为什么必须上 HTTPS因为浏览器把剪贴板等能力锁在安全上下文里不加密的 http 页面直接调不了Penpot 的部分功能会静默失效。反向代理层要注意两件事普通请求转发到 9001 端口以及/ws/路径的 WebSocket 升级WebSocket 是浏览器与服务器之间的双向实时通道Penpot 靠它推送协作更新漏掉这条多人协作就卡住。NGINX 参考配置server { listen 443 ssl; server_name penpot.example.com; # 注意与 docker-compose 中的大小限制保持一致 client_max_body_size 30M; # WebSocket 支持 location /ws/ { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_pass http://localhost:9001; } # 常规请求 location / { proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://localhost:9001; } }如果你偏好 Caddy核心只有两步reverse_proxy指到:9001再加一条tls指令挂载你的证书其余细节看 Caddy 官方文档即可。出问题了怎么办三步定位法排查按由外向内的顺序推进别跳步看日志。docker compose -p penpot -f docker-compose.yaml logs。典型症状页面报 5xx、容器反复重启——答案通常就在最后几行报错里。查服务状态。docker compose -p penpot -f docker-compose.yaml ps加上docker ps。典型症状某个容器根本没起来或状态异常先把它单独拉起来再说。查数据层。当前两步都正常、却出现连不上数据库类报错时去看 Postgres 容器的日志。连接失败基本是数据层问题顺带确认前面备份是最近成功的——这是你最后的退路。把 Penpot 跑在自己的服务器上不难难的是把它长期维护好。建议先在测试环境完整走一遍启动、备份、升级流程确认每个环节都心里有底再迁移到生产环境。【免费下载链接】penpotPenpot: The open-source design platform for Product teams that need scalable collaboration.项目地址: https://gitcode.com/GitHub_Trending/pe/penpot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考