当前位置: 首页 > news >正文

Penpot:开源 Figma 替代,自建设计协作工具

Penpot:开源 Figma 替代,自建设计协作工具

Figma 的订阅费用对独立开发者和小型团队来说是一笔不小的开支,而且所有设计资产都存储在第三方服务器上。Penpot 是一款完全开源的设计与原型制作工具,支持实时多人协作,基于 SVG 标准渲染,可完全自托管。它提供了媲美 Figma 的核心功能:矢量编辑、组件库、原型链接、开发者标注面板,是团队自建设计工具栈的理想选择。

本文将详细介绍如何在自己的服务器上部署 Penpot,完成初始配置,并带你体验核心设计工作流。


服务器配置

Penpot 的后端采用 Clojure 编写,同时包含 Node.js 导出服务,整体内存占用较大。推荐以下配置:

  • 机型:4 核 8GB(Clojure 后端 + Node.js 导出服务 + PostgreSQL,内存需求较高)
  • 系统:Ubuntu 22.04 LTS
  • 磁盘:40GB 以上(设计文件和导出资源会持续增长)

推荐使用 雨云服务器 部署,注册填优惠码2026off领 5 折优惠券,4 核 8GB 机型性价比出色,完全满足 Penpot 的运行需求。

安装 Docker 和 Docker Compose:

curl-fsSLhttps://get.docker.com|shsudousermod-aGdocker$USERnewgrpdockerdocker--version&&dockercompose version

获取官方 Docker Compose 配置

Penpot 官方在 GitHub 提供了完整的 Docker Compose 配置,直接使用官方配置是最稳妥的部署方式:

mkdir-p/opt/penpotcd/opt/penpot# 下载官方 docker-compose.yamlcurl-odocker-compose.yaml\https://raw.githubusercontent.com/penpot/penpot/main/docker/images/docker-compose.yaml# 下载配置文件curl-oconfig.env\https://raw.githubusercontent.com/penpot/penpot/main/docker/images/config.env

Docker Compose 服务说明

官方 Compose 包含以下服务:

  • penpot-frontend:基于 Nginx 的前端服务,用户通过浏览器访问此服务
  • penpot-backend:Clojure 编写的核心后端,处理设计文件存储、用户认证、团队协作
  • penpot-exporter:Node.js 编写的导出服务,负责将设计导出为 PNG/SVG/PDF
  • penpot-redis:用于实时协作的消息队列和缓存
  • penpot-postgres:存储用户数据、设计文件元数据

完整的docker-compose.yaml关键部分如下:

version:"3.5"networks:penpot:volumes:penpot_postgres_v15:penpot_assets:services:penpot-frontend:image:penpotapp/frontend:latestrestart:alwaysports:-9001:80volumes:-penpot_assets:/opt/data/assetsdepends_on:-penpot-backend-penpot-exporternetworks:-penpotenvironment:-PENPOT_FLAGS=enable-login-with-passwordpenpot-backend:image:penpotapp/backend:latestrestart:alwaysvolumes:-penpot_assets:/opt/data/assetsdepends_on:-penpot-postgres-penpot-redisnetworks:-penpotenvironment:-PENPOT_FLAGS=enable-registration enable-login-with-password disable-email-verification-PENPOT_SECRET_KEY=your-very-long-secret-key-here-PENPOT_PUBLIC_URI=https://penpot.yourdomain.com-PENPOT_DATABASE_URI=postgresql://penpot-postgres/penpot-PENPOT_DATABASE_USERNAME=penpot-PENPOT_DATABASE_PASSWORD=penpot_password-PENPOT_REDIS_URI=redis://penpot-redis/0-PENPOT_ASSETS_STORAGE_BACKEND=assets-fs-PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets-PENPOT_TELEMETRY_ENABLED=falsepenpot-exporter:image:penpotapp/exporter:latestrestart:alwaysnetworks:-penpotenvironment:-PENPOT_PUBLIC_URI=http://penpot-frontend-PENPOT_REDIS_URI=redis://penpot-redis/0penpot-redis:image:redis:7restart:alwaysnetworks:-penpotpenpot-postgres:image:postgres:15restart:alwaysvolumes:-penpot_postgres_v15:/var/lib/postgresql/datanetworks:-penpotenvironment:-POSTGRES_INITDB_ARGS=--data-checksums-POSTGRES_DB=penpot-POSTGRES_USER=penpot-POSTGRES_PASSWORD=penpot_password

关键环境变量说明

变量说明
PENPOT_FLAGSenable-registration允许用户注册;disable-email-verification跳过邮件验证(测试用);enable-login-with-password启用密码登录
PENPOT_PUBLIC_URI外部可访问的域名,必须与实际访问地址一致
PENPOT_SECRET_KEY用于 JWT 签名,必须设置强随机值:openssl rand -hex 64

Caddy 反向代理配置

mkdir-p/opt/penpot/caddy

创建/opt/penpot/caddy/Caddyfile

penpot.yourdomain.com { reverse_proxy penpot-frontend:80 }

docker-compose.yaml中追加 Caddy 服务:

caddy:image:caddy:2-alpinerestart:unless-stoppedports:-"80:80"-"443:443"volumes:-./caddy/Caddyfile:/etc/caddy/Caddyfile-caddy_data:/data-caddy_config:/confignetworks:-penpotdepends_on:-penpot-frontend

同时在 volumes 块添加:

volumes:caddy_data:caddy_config:

启动服务

cd/opt/penpotdockercompose up-d# 监控启动过程(后端启动较慢,约 60-90 秒)dockercompose logs-fpenpot-backend

出现Server started日志后,访问https://penpot.yourdomain.com即可看到登录界面。


初始设置

注册管理员账号

首次访问时,点击「Create new account」注册账号。由于我们设置了disable-email-verification,注册后无需邮件验证即可直接登录(生产环境建议配置 SMTP 并移除此 flag)。

配置 SMTP(团队邀请必需)

若需要通过邮件邀请团队成员,需在penpot-backend中配置 SMTP:

environment:-PENPOT_SMTP_ENABLED=true-PENPOT_SMTP_HOST=smtp.youremail.com-PENPOT_SMTP_PORT=587-PENPOT_SMTP_USERNAME=noreply@yourdomain.com-PENPOT_SMTP_PASSWORD=your_smtp_password-PENPOT_SMTP_TLS=true-PENPOT_SMTP_FROM=noreply@yourdomain.com

创建团队与项目

登录后进入主界面:

  1. 创建团队:点击左侧「+」图标,选择「New team」,输入团队名称(如「设计团队」),点击「Create new team」
  2. 创建项目:在团队主页点击「New project」,输入项目名称(如「移动端 App 设计」)
  3. 创建文件:在项目中点击「New file」,双击文件名可重命名

基础设计工作流

画布基本操作

进入设计文件后,熟悉以下基本操作:

快捷键功能
F创建 Frame(画板,类似 Figma 的 Frame)
R矩形工具
O椭圆工具
T文字工具
P钢笔工具(矢量路径)
Ctrl+G编组选中元素
Ctrl+Z撤销

创建基础界面元素

1. 按 F 选择 Frame 工具,在画布拖拽创建 375×812 的 Frame(iPhone 尺寸) 2. 在右侧面板选择 Frame 预设(iPhone 14、Android 等) 3. 按 R 在 Frame 内创建矩形作为导航栏背景 4. 在右侧「Fill」面板设置颜色(#1A73E8) 5. 按 T 添加文字,设置字体为 PingFang SC、字号 18、颜色白色 6. 使用「Constraints」面板设置元素的响应式约束

组件系统

Penpot 的组件系统类似 Figma 的 Components:

  1. 选中一个已设计好的按钮元素
  2. 右键 → 「Create main component」
  3. 组件出现在左侧「Assets」面板的「Components」分类下
  4. 将组件从 Assets 面板拖入画布即可创建实例
  5. 双击组件实例可进入编辑模式,修改会同步到所有实例

原型链接

切换到顶部工具栏的「Prototype」标签:

  1. 选中一个按钮元素
  2. 点击右侧「Prototype」面板中的「+」
  3. 将连线拖到目标 Frame
  4. 设置交互类型(Click、Hover 等)和动画效果
  5. 点击右上角「Play」按钮进入预览模式,即可测试交互流程

开发者标注面板

Penpot 内置「Inspect」面板,无需导出即可给开发者提供标注信息:

  1. 打开设计文件分享链接(右上角「Share」)
  2. 查看者可在右侧切换到「Inspect」标签
  3. 点击任意元素即可查看:
    • 精确的宽高、位置坐标
    • 颜色(HEX/RGB/HSL)
    • 字体属性(字号、行高、字重)
    • 自动生成的 CSS 样式代码

邀请团队成员

  1. 进入团队设置页(团队名旁的「…」菜单)
  2. 点击「Members」→「Invite people」
  3. 输入成员邮箱,选择角色(Admin / Editor / Viewer)
  4. 点击「Send invitation」,对方收到邮件后点击链接即可加入

注意:邀请功能必须配置 SMTP 才能正常使用。


版本历史

Penpot 支持类似 Git 的版本历史功能:

  • 右键文件名 → 「Show history」可查看所有自动保存的版本
  • 点击任意历史版本可预览该版本的设计状态
  • 支持从历史版本恢复

导出设计资产

选中任意元素或 Frame,在右侧「Design」面板底部:

  1. 点击「Export」区域的「+」按钮
  2. 选择格式:PNG、SVG、PDF
  3. 设置倍率(1x、2x、3x)
  4. 点击「Export」下载

常用运维命令

# 查看所有服务状态dockercomposeps# 备份 PostgreSQL 数据dockerexecpenpot-postgres pg_dump-Upenpot penpot>penpot-backup-$(date+%Y%m%d).sql# 恢复备份dockerexec-ipenpot-postgres psql-Upenpot penpot<penpot-backup-20260517.sql# 更新到最新版本dockercompose pull&&dockercompose up-d# 查看后端日志dockercompose logs-fpenpot-backend

总结

Penpot 为团队提供了一个完全可控的设计协作环境,无需支付 Figma 的高额订阅费,且所有设计资产存储在自己的服务器上。4 核 8GB 的配置能够支撑 10-20 人的设计团队同时协作。无论是个人项目还是企业内网部署,Penpot 都是 Figma 的有力替代方案。

http://www.gsyq.cn/news/1379562.html

相关文章:

  • DDrawCompat:5分钟让Windows老游戏焕发新生的终极解决方案
  • 如何快速掌握48Tools:一站式多平台直播录制与视频下载终极指南
  • WaveTools终极指南:三步解锁鸣潮丝滑体验,从卡顿到流畅的完整解决方案
  • 3步解决NVIDIA显卡广色域显示器色彩失真:novideo_srgb硬件级色彩校准完全指南
  • 避坑指南:在M1 Mac上彻底卸载Miniforge3并安装Anaconda3后,PyCharm解释器配置那些事儿
  • 突破3D制造数据壁垒:stltostp实现STL到STEP格式的终极转换方案 [特殊字符]
  • 从《原神》到独立游戏:拆解Cinemachine如何帮你实现电影级运镜效果
  • 终极跨平台模组管理方案:WorkshopDL让你轻松下载Steam创意工坊模组
  • Unity Cinemachine相机系统深度使用:除了自动跟随,它的边界限制(Confiner)功能才是宝藏
  • 告别字幕制作焦虑:AutoSubs如何让你在5分钟内完成专业级AI字幕生成
  • 从阿里外包到自动化测试工程师:我的真实转型路线与避坑指南(附学习资源)
  • 告别手动点点点:用Simulink Test Manager实现模型自动化测试(附Excel表格配置详解)
  • 如何快速掌握AMD Ryzen硬件调试:3步上手专业级调优工具
  • DownKyi:B站视频下载与去水印完整解决方案
  • KCN-GenshinServer终极指南:5分钟搭建专业级原神私服的完整解决方案
  • 无线通信与雷达实战:MVDR波束形成如何解决信号干扰与定位难题
  • 国内渗透测试新手必练的7个中文靶场推荐
  • 如何高效实现前端文件下载:FileSaver.js完整实用指南
  • 机器学习数学基础:集合论、概率论与线性代数核心概念解析
  • 别再纠结了!Unity新手选2D还是3D?从《原神》到《星露谷物语》帮你一次理清
  • Lumafly:革命性跨平台空洞骑士模组管理器,智能管理300+模组依赖
  • 可微几何约束与增强采样融合:加速分子模拟与自由能计算新范式
  • 拒绝繁琐 PS:美图秀秀 电脑版在技术博客配图、无畸变裁剪与尺寸标准化中的应用
  • 程序员的物理级打字肌肉记忆训练指南:从一指禅到无意识盲打的科学路径
  • 如何构建Chaplin:基于深度学习的实时唇语识别完整实现指南
  • 2026年实测!哪款免费录音转文字工具支持场景丰富、速度快、准确率高
  • 网盘直链解析技术:LinkSwift如何重塑文件传输效率边界
  • 如何快速上手无名杀:从零开始的网页版三国杀完全指南
  • F-Adapter:基于频率感知的物理算子高效微调技术
  • PID调参太头疼?试试单神经元自适应PID,让控制器自己学习(附Python/Matlab对比)