记录一次 500→403踩坑与排坑全过程,顺便把可复制的命令都整理好了,直接粘贴即可跑通。
目录
- 背景与现象
- 群辉新建相关文件夹
- Portainer部署wallabag
- 外网访问通过Cloudflare Zero Trust
- 解决 ios 客户端 403,创建 Cloudflare 安全规则
- 让 iOS / 浏览器插件 Wallabagger 正常获取 Token
1 背景与现象
| 阶段 | 症状 | 解决思路 |
|---|---|---|
| 部署初期 | 访问 500 | 容器日志查看 + PHP/FPM 权限修复 |
| 上 Cloudflare Tunnel | Web 能浏览,但 iOS 登录失败 | WAF/Managed Rules 拦截 POST /oauth/v2/token |
2 群辉新建相关文件夹

# File Station目录结构 /volume1/docker/wallabag data/ # Wallabag 用户数据 images/ # 附件/图片 db_data/ # MariaDB 数据库文件 redis/ # Redis 持久化数据
3 Portainer 部署 Wallabag
<strong>docker‑compose.yaml</strong>
version: "3.8"
services:
wallabag:
image: wallabag/wallabag # 官方镜像
restart: unless-stopped
ports:
- "6749:80" # 宿主机端口:容器端口(按需修改)
environment:
- MYSQL_ROOT_PASSWORD=wallaroot # 数据库根密码,请替换
- SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
- SYMFONY__ENV__DATABASE_HOST=db
- SYMFONY__ENV__DATABASE_PORT=3306
- SYMFONY__ENV__DATABASE_NAME=wallabag # 数据库名,请替换
- SYMFONY__ENV__DATABASE_USER=wallabag # 普通用户,请替换
- SYMFONY__ENV__DATABASE_PASSWORD=wallapass # 用户密码,请替换
- SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
- SYMFONY__ENV__DATABASE_TABLE_PREFIX="wallabag_" # 表前缀,可选
- SYMFONY__ENV__MAILER_DSN=smtp://127.0.0.1 # 邮件 DSN,可选
- [email protected] # 发件人地址,可选
- SYMFONY__ENV__DOMAIN_NAME=wallabag.leogaox.com # 访问 URL,请替换为你的 DDNS 地址
- TZ=Asia/Shanghai
# ——以下三项开启开放注册与两步验证——
- SYMFONY__ENV__FOSUSER_CONFIRMATION=false # 关闭邮件确认
- SYMFONY__ENV__FOSUSER_REGISTRATION=true # 开启用户注册
- SYMFONY__ENV__TWOFACTOR_AUTH=true # 开启两步验证
volumes:
- /volume1/docker/wallabag/images:/var/www/wallabag/web/assets/images # 附件/图片持久化
- /volume1/docker/wallabag/data:/var/www/wallabag/data # 用户数据持久化
depends_on:
- db
- redis
db:
image: mariadb:10.6
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=wallaroot # 与 wallabag 容器相同
volumes:
- /volume1/docker/wallabag/db_data:/var/lib/mysql # 数据库持久化
redis:
image: redis:alpine
restart: unless-stopped
volumes:
- /volume1/docker/wallabag/redis:/data # Redis 数据持久化
需要自行替换的字段
6749:80—— 宿主机端口:容器端口(根据实际需求修改)MYSQL_ROOT_PASSWORD=wallaroot—— MariaDB 根用户密码SYMFONY__ENV__DATABASE_NAME=wallabag—— Wallabag 使用的数据库名称SYMFONY__ENV__DATABASE_USER=wallabag—— 连接数据库的普通用户SYMFONY__ENV__DATABASE_PASSWORD=wallapass—— 普通用户密码[email protected]—— 系统邮件发件人地址(如通知邮件)SYMFONY__ENV__DOMAIN_NAME=wallabag.leogaox.com—— 你最终访问的域名
4 网页端外网访问通过 Cloudflare Tunnel
*Cloudflare Tunnel 是 Cloudflare 提供的永久免费通道,只需在本地运行一个小代理,就能无需公网即可安全地将内网服务暴露到公网

在 Zero Trust 控制台的 网络 → Tunnels → Public Hostnames(公共主机名)里,点击 “Add a public hostname” 后:
- Subdomain(子域):随意填写(如 wallabag)。
- Domain(域名):下拉选你已托管的域名(如 leogaox.com)。
- Service (服务):选 HTTP;URL 填写你内网服务的 IP:端口(10.10.10.33:6749)。
- Path(路径) 可留空(默认
/)。 - 点击 保存主机名 即可让
wallabag.leogaox.com经 Tunnel 安全访问你的本地服务

5 创建 Cloudflare 安全规则
- 在 Cloudflare 仪表盘 → 安全性 → 安全规则 → 创建规则 → 自定义规则
- 在 表达式 中填写:
(http.request.uri.path eq "/oauth/v2/token" and http.request.method eq "POST") or http.request.uri.path starts_with "/api/" - 在 Action 选 跳过,并勾选以下要跳过的 WAF 组件:
- 具体要跳过的规则分类:
- 所有其余自定义规则
- 所有速率限制规则
- 所有托管规则
- 所有超级自动程序攻击模式规则
- 浏览器完整性检查
- 安全级别
- 将规则 放置位置 设置为 第一位,然后保存。


6 Wallabag建立 APi ➡️ iOS 客户端配置




| 字段 | 填写内容 |
| Wallabag URL | wallabag.leogaox.com |
| Client ID / Client Secret | 创建应用得到API |
| 账号 / 密码 | 你的 Wallabag 用户名和密码 |

至此,Synology + Docker + Cloudflare Zero Trust + Wallabag 全链路打通 🎉
如果这篇文章帮到了你,别忘了点个 👍 或在评论区留言哦!