
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://github.com/getferdi/ferdi 是 https://github.com/meetfranz/franz 的硬分叉,增加了许多出色功能并移除了不必要的功能。Ferdi-server 是用于Ferdi客户端的Franz服务器非官方替代品。
本镜像为 https://github.com/getferdi/server 的Docker化版本,运行在Alpine Linux和Node.js(v10.16.3)环境中。
自定义Ferdi-server能让您体验Ferdi客户端的全部潜力,允许使用所有高级功能(如工作区和自定义URL配方)并添加自己的配方。
适用于希望使用Ferdi客户端全部功能的用户,尤其是需要自定义服务配方、管理工作区、实现数据本地化存储的个人或团队。适合在家庭网络或私有服务器中部署,通过反向代理对外提供服务。
以下是帮助您创建容器的示例代码片段。
Docker镜像可直接运行(使用默认SQLite数据库),也可通过修改环境变量使用外部数据库(如MySQL、MariaDB、Postgres等)。设置容器后,需使用NGINX等Web服务器创建反向代理,以便从家庭网络外部访问Ferdi-server。
现有用户请注意:Ferdi-server和Ferdi-server Docker镜像的最新更新对默认SQLite数据库名称、位置以及容器内部端口进行了更改。新的容器端口为3333。如果希望保留现有SQLite数据库,需添加DATA_DIR变量并将其设置为/app/database(以匹配现有数据卷),同时将DB_DATABASE变量更改为development(以匹配现有数据库)。详情请参见迁移部分的参数说明。
拉取Docker镜像:
bashdocker pull docker.xuanyuan.run/getferdi/ferdi-server
使用正确参数创建Docker容器:
bashdocker create \ --name=ferdi-server \ -e NODE_ENV=development \ -e EXTERNAL_DOMAIN=<ferdi-server域名> \ -e DB_CONNECTION=<数据库类型> \ -e DB_HOST=<数据库主机> \ -e DB_PORT=<数据库端口> \ -e DB_USER=<数据库用户> \ -e DB_PASSWORD=<数据库密码> \ -e DB_DATABASE=<数据库名称> \ -e DB_SSL=false \ -e MAIL_CONNECTION=smtp \ -e SMTP_HOST=<SMTP邮件服务器> \ -e SMTP_PORT=<SMTP端口> \ -e MAIL_SSL=true/false \ -e MAIL_USERNAME=<邮件用户名> \ -e MAIL_PASSWORD=<邮件密码> \ -e MAIL_SENDER=<发件人邮箱地址> \ -e IS_CREATION_ENABLED=true \ -e IS_DASHBOARD_ENABLED=true \ -e IS_REGISTRATION_ENABLED=true \ -e CONNECT_WITH_FRANZ=true \ -e DATA_DIR=/data \ -p <主机端口>:3333 \ -v <数据路径>:/data \ -v <配方路径>:/app/recipes \ --restart unless-stopped \ getferdi/ferdi-server
如果您对默认环境变量满意,可使用提供的示例 https://github.com/getferdi/server/tree/master/docker/docker-compose.yml%E3%80%82%E8%AF%A5%E6%96%87%E4%BB%B6%E5%B0%86%E4%BB%8EDocker Hub拉取最新镜像,或使用本地构建的镜像(可通过本地构建部分的说明构建)。
启动应用:docker-compose -f docker/docker-compose.yml up -d。服务器将在 http://localhost:3333/ 地址启动。
容器镜像通过运行时传递的参数进行配置(如上所示)。以下是默认参数的说明,更多信息请参见https://docs.docker.com/get-started/overview/%E3%80%82
如果未向容器传递任何环境参数,其值将从 /config/config.txt 文件获取。
警告:config.txt 的使用已弃用。请确保在运行时向容器传递正确的环境变量。
| 参数 | 功能 |
|---|---|
-p <主机端口>:3333 | 将容器的3333端口映射到主机端口,默认为3333。有关端口映射的更多信息,请参见https://docs.docker.com/config/containers/container-networking/ |
-e NODE_ENV=development | 指定Node环境(production或development),默认为development 当前不应更改。有关环境变量在https://docs.docker.com/engine/reference/commandline/run/#mount-volume--v---read-only%E5%92%8Chttps://docs.docker.com/compose/environment-variables/%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%8C%E8%AF%B7%E5%8F%82%E8%A7%81https://docs.docker.com/ |
-e EXTERNAL_DOMAIN=<ferdi-server域名> | 指定Ferdi-server的外部域名地址 |
-e DB_CONNECTION=<数据库驱动> | 指定使用的数据库,默认为sqlite,其他选项见下方 |
-e DB_HOST=<数据库主机> | 指定数据库主机,默认为127.0.0.1 |
-e DB_PORT=<数据库端口> | 指定数据库端口,默认为3306 |
-e DB_USER=<数据库用户> | 指定数据库用户,默认为root |
-e DB_PASSWORD=<数据库密码> | 指定数据库密码,默认为password |
-e DB_DATABASE=<数据库名称> | 指定要使用的数据库名称,默认为ferdi |
-e DB_SSL=false | 仅当数据库为Postgres且托管在GCP、AWS等在线平台时设为true |
-e MAIL_CONNECTION=<邮件发送方式> | 指定邮件发送方式,默认为smtp |
-e SMTP_HOST=<SMTP邮件服务器> | 指定邮件服务器,默认为127.0.0.1 |
-e SMTP_PORT=<SMTP端口> | 指定邮件端口,默认为2525 |
-e MAIL_SSL=true/false | 指定SMTP邮件安全设置,默认为false |
-e MAIL_USERNAME=<邮件用户名> | 指定邮件用户名,默认为username |
-e MAIL_PASSWORD=<邮件密码> | 指定邮件密码,默认为password |
-e MAIL_SENDER=<发件人邮箱地址> | 指定发件人地址,默认为 |
-e IS_CREATION_ENABLED=true | 指定是否启用自定义配方创建,默认为true |
-e IS_DASHBOARD_ENABLED=true | 指定是否启用Ferdi-server仪表板,默认为true |
-e IS_REGISTRATION_ENABLED=true | 指定是否允许用户注册,默认为true |
-e CONNECT_WITH_FRANZ=true | 指定是否启用与Franz服务器的连接,默认为true |
-e DATA_DIR=data | 指定SQLite数据库文件夹,默认为data |
-v <主机数据路径>:/data | 将Ferdi-server的数据(包括数据库等)存储在Docker主机上以实现持久化。有关容器卷的更多信息,请参见https://docs.docker.com/storage/volumes/ |
-v <主机配方路径>:/app/recipes | 将Ferdi-server的配方存储在Docker主机上以实现持久化 |
启用CONNECT_WITH_FRANZ选项后,Ferdi-server可以:
要使用默认SQLite3以外的数据库,请在ENV配置中输入以下驱动代码。
| 数据库 | 驱动 |
|---|---|
| MariaDB/MySQL | mysql |
| PostgreSQL | pg |
| SQLite3 | sqlite |
要使用默认SMTP以外的邮件发送方式,请在ENV配置中输入正确信息,并相应调整docker run、create或compose命令。
| 邮件连接方式 | ENV变量 |
|---|---|
| SMTP | SMTP_PORT, SMTP_HOST, MAIL_USERNAME, MAIL_PASSWORD, MAIL_SSL |
| SparkPost | SPARKPOST_API_KEY |
| Mailgun | MAILGUN_DOMAIN, MAILGUN_API_REGION, MAILGUN_API_KEY |
| (已弃用)Ethereal | 选择此选项时会自动创建临时账户 |
如果您是使用内置SQlite数据库的现有Ferdi-server用户,应包含以下变量:
| 参数 | 功能 |
|---|---|
-p 3333:3333 | 现有Ferdi-server用户需将容器端口映射从80:3333更新为3333:3333 |
-e DB_PASSWORD=development | 使用内置sqlite数据库的现有Ferdi-server用户应使用数据库名称development |
-e DATA_DIR=/app/database | 使用内置sqlite数据库的现有Ferdi-server用户应添加此环境变量以确保数据持久化 |
-v <主机数据路径>:/app/database | 使用内置sqlite数据库的现有Ferdi-server用户应使用卷名称/app/database |
如果您是使用外部数据库或内置SQlite数据库不同变量的现有Ferdi-server用户,应相应更新参数。例如,使用外部MariaDB或MySQL数据库时,您的独特参数可能如下:
| 参数 | 功能 |
|---|---|
-e DB_CONNECTION=mysql | 指定使用的数据库 |
-e DB_HOST=192.168.10.1 | 指定数据库主机IP |
-e DB_PORT=3306 | 指定数据库端口 |
-e DB_USER=ferdi | 指定数据库用户 |
-e DB_PASSWORD=ferdipw | 指定数据库密码 |
-e DB_DATABASE=adonis | 指定要使用的数据库 |
-v <数据库路径>:/app/database | 将Ferdi-server的数据库存储在Docker主机上以实现持久化 |
-v <配方路径>:/app/recipes | 将Ferdi-server的配方存储在Docker主机上以实现持久化 |
无论哪种情况,请确保向新Ferdi-server容器传递正确的变量,以保持对现有数据库的访问。
要通过子域名从家庭网络外部访问Ferdi-server,请使用以下服务器块:
nginx# Ferdi-server server { listen 443 ssl http2; server_name ferdi.my.website; # 所有SSL相关配置移至ssl.conf include /config/nginx/ssl.conf; location / { proxy_pass http://<Ferdi-IP>:3333; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; } }
Ferdi-server允许导入完整的Franz账户,包括所有设置。
要导入Franz账户,请在浏览器中打开http://[您的FERDI-SERVER]/import,使用Franz账户详情登录。Ferdi-server将创建具有相同凭据的新用户,并复制您的Franz设置、服务和工作区。
请参考 https://github.com/getferdi/ferdi/wiki/Transferring-data-between-servers
Ferdi-server允许扩展Franz配方目录,添加自定义Ferdi配方。
有关创建配方的文档,请访问https://github.com/meetfranz/plugins/blob/master/docs/integration.md%E3%80%82
要将配方添加到Ferdi-server,请在浏览器中打开http://[您的FERDI-SERVER]/new。您可以定义以下设置:
Author:创建配方的作者Name:新服务的名称,可包含空格和unicode字符Service ID:配方的唯一ID,不含空格或特殊字符(例如google-drive)Link to PNG/SVG image:1024x1024 PNG图像和SVG的直接链接,用作商店中的徽标。使用GitHub上传的文件时,请使用jsDelivr,因为raw.githubusercontent文件无法加载Recipe files:使用https://github.com/meetfranz/plugins/blob/master/docs/integration.md%E5%88%9B%E5%BB%BA%E7%9A%84%E9%85%8D%E6%96%B9%E6%96%87%E4%BB%B6%E3%80%82**%E8%AF%B7%E5%8B%BF**%E9%A2%84%E5%85%88%E6%89%93%E5%8C%85%E6%96%87%E4%BB%B6 - 上传原始文件(可拖放多个文件)。Ferdi-server将自动打包并以正确格式存储配方。也请勿拖放或选择整个文件夹,选择单个文件。在Ferdi中搜索ferdi:custom将列出所有自定义配方。
docker exec -it ferdi-server /bin/bashdocker logs -f ferdi-server以下是更新容器以获取最新版本Ferdi-server的说明:
docker pull docker.xuanyuan.run/getferdi/ferdi-serverdocker stop ferdi-serverdocker rm ferdi-server/config文件夹和ENV设置将被保留)docker start ferdi-serverdocker-compose -f docker/docker-compose.yml pull
docker-compose -f docker/docker-compose.yml pull ferdi-serverdocker-compose -f docker/docker-compose.yml up -d
docker-compose -f docker/docker-compose.yml up -d ferdi-server如果要本地构建此镜像,请从https://github.com/getferdi/server/tree/master/%E7%9A%84%E6%A0%B9%E7%9B%AE%E5%BD%95%E8%BF%90%E8%A1%8C%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%EF%BC%9A
bashdocker build \ --no-cache \ --pull \ -t getferdi/ferdi-server:latest .
Ferdi-server-docker和Ferdi-server采用MIT许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务