用海外云服务器搭建 wallabag 自建稍后读服务完整教程(Pocket 替代 / 全文保存)(2026最新版)

📅 · ChengziCloud - 一站式云端服务

Meta Description: 手把手教你用海外云服务器搭建 wallabag 自建稍后读(read-it-later)服务:Docker Compose + MariaDB + Redis 部署、浏览器扩展一键收藏、手机 App 与 API 对接、从 Pocket/Instapaper 批量导入、Nginx 反向代理 + Let's Encrypt 免费 HTTPS、内容抓取失败排查与 site config 定制、备份升级与常见问题,附服务器配置推荐与价格对比。

> 关键词: wallabag搭建、自建稍后读、read-it-later、Pocket替代、自建阅读服务、Docker部署wallabag、Nginx反向代理、Let's Encrypt、海外云服务器、稍后阅读工具

前言

「先收藏,等会儿再看。」——这大概是我们在浏览器里说过最多、也最没兑现的一句话。文章的链接越攒越多,躺在收藏夹里再也没被打开过;更糟的是,你攒下的这些「稍后读」并不真正属于你。

2025 年,运营了十几年的 Pocket 正式关停,Web、Android、iOS、macOS 应用与浏览器扩展一并下线。它曾经是「稍后读」(read-it-later)这个类目的代名词,如今一句话就把数百万用户的收藏夹判了「死刑」。这件事给所有人提了个醒:只要数据存在别人服务器上,你就只是租客,而不是主人。

这也正是自建稍后读服务的价值所在。本教程要做的事情很直接:

1. 用一台海外云服务器部署 wallabag——一个开源、免费、可以自己托管的稍后读应用,把网页正文抓取下来、去掉广告与干扰,存进你自己的数据库; 2. 配上 MariaDB(存文章)和 Redis(跑异步导入任务),用 Docker Compose 一条命令拉起整套服务; 3. 接上浏览器扩展与手机 App,做到和 Pocket 一样「一键收藏、多端同步」; 4. 最后用 Nginx 反向代理 + Let's Encrypt 绑定域名、开启免费 HTTPS,做成一个只属于你自己的阅读库。

wallabag 当前稳定版为 2.6.14(2025-10-07 发布)。它的定位非常清晰:只做「保存 + 阅读」这一件事,抓正文、清广告、打标签、做全文检索,别的一概不管。理解这一点,后面的选型与部署就顺理成章了。

> 🚀 企业出海需要云架构咨询? 还没有海外云服务器?通过 5.chengzicloud.cloud 选购阿里云 / AWS / 腾讯云国际版,享专属折扣和中文技术支持。

一、方案选型:自建稍后读为什么选 wallabag

动手之前,先花两分钟把「稍后读 / 收藏」这一类的几个主流方案分清楚。它们看起来都在「保存网页」,但回答的问题和前提条件差别很大,选错了会事倍功半。

| 方案 | 技术栈 | 它回答的问题 | 前提条件 | 代价 | |------|--------|-------------|---------|------| | wallabag | PHP + Symfony | 「把这篇文章存下来,清干净慢慢读」 | 你有服务器、要自己的数据 | 需自建与维护,正文抓取有少量失败需调 | | Pocket | SaaS(已关停) | 同上,但托管 | 无(已不可用) | 数据不在你手里,厂商说停就停 | | Instapaper | SaaS 托管 | 同上 | 付费订阅才有多数高级功能 | 数据托在别人家,免费度受限 | | Readwise Reader | SaaS 托管 | 「读 + 划重点 + 喂给笔记软件」 | 付费订阅($8+/月) | 更偏「阅读 + 知识流」,不是纯收藏 | | Readeck | Go 单二进制 | 「轻量收藏 + 稍后读」 | 自建,SQLite | 更年轻、生态与翻译成熟度不如 wallabag | | Linkding | Python + Django | 「把网址当书签管理起来」 | 自建 | 只存链接与摘要,不做正文抓取/阅读视图 | | Miniflux | Go + PostgreSQL | 「主动订阅一批源,按更新聚合读」 | 自建 | 是 RSS 订阅,不是「按篇收藏」 | | Paperless-ngx | Docker 多容器 | 「把扫描件/文档里的字搜出来」 | 自建 | 面向本地文档归档,不是网页收藏 |

选 wallabag 的理由很直接:

- 它就是「稍后读」本身。抓正文(graby + php-readability)、清理广告与侧栏、生成舒适的阅读视图、ePub/PDF 导出,都是它的核心能力,而不是附加功能; - 数据完全属于你。文章、标签、注释、全文都在你自己的 MariaDB 里,想备份就备份,想迁移就迁移,没有「平台关停」这一天; - 生态成熟。官方维护着 Firefox/Chrome 浏览器扩展(wallabagger)、Android 与 iOS 官方 App,还有一条完整的 API(OAuth 2.0),任何能跑 HTTP 的地方都能对接; - 迁移友好。内置 Pocket、Instapaper、Readability、Pinboard 等一批导入器,从关停的 Pocket 一键搬家到自建实例。

需要特别提醒两条边界,避免你误判它的能力:

- wallabag 不是 RSS 阅读器。 它不会「订阅」一个网站然后自动把新文章拉进来——那是 Miniflux / FreshRSS 的活。wallabag 是按篇收藏:你看到一篇想读,点一下存进来。两者恰好互补:Miniflux 负责「发现」,wallabag 负责「留存」(Miniflux 甚至内置了把条目推送到 wallabag 的动作)。 - wallabag 不是笔记/知识库工具。 它支持给文章加标签和注释,但它的目标是「读完这篇就删」,而不是「构建一张互相链接的知识网」。需要长期沉淀与检索,请用 Wiki.js、Paperless-ngx 这类工具。

一句话总结分工:RSS 阅读器解决「读什么」,稍后读服务解决「读完前先存哪」,知识库解决「读完之后怎么沉淀」。 本教程只做中间这一层。

二、服务器配置推荐与购买

wallabag 本身非常轻。它就是一个 PHP(Symfony)应用加一个数据库,页面大多是服务端渲染,CPU 占用极低;真正吃资源的是「抓取文章正文」和「批量导入」这类偶发任务。所以选服务器的思路是:内存够跑 PHP-FPM + 数据库 + Redis 即可,不必追求高主频。

2.1 配置推荐

| 使用场景 | 推荐配置 | 说明 | |---------|---------|------| | 个人自用(几十到几百篇) | 1 核 1G / 25G SSD | 只跑 wallabag,单容器 + SQLite 就够,最省 | | 个人 / 小团队(推荐) | 2 核 2G / 60G SSD | 跑 wallabag + MariaDB + Redis 三容器,异步导入不卡 | | 多用户 / 重度使用 | 2 核 4G / 80G SSD | 多人并发 + 频繁抓取 + 大量图片缓存,更从容 |

给一个经验值:一个普通用户、存了 5,000 篇文章(含抓取下来的图片),MariaDB 数据 + 图片目录通常只占几 GB。磁盘比 CPU 更值得关注,因为 wallabag 会把正文图片一起缓存在本地。选 60G 起步、后续能扩容的机器最稳妥。

2.2 主流海外云服务器价格对比

下表价格于 2026 年 10 月 直接读取 DigitalOcean 与 AWS Lightsail 官方定价页整理:

| 服务商 | 规格(vCPU / 内存 / SSD / 月流量) | 月费(USD) | 适合 | |--------|-----------------------------------|------------|------| | DigitalOcean Droplet | 1 / 512 MiB / 10 GiB / 500 GiB | $4.00 | 极简自用(SQLite 单容器) | | DigitalOcean Droplet | 1 / 1 GiB / 25 GiB / 1,000 GiB | $6.00 | 个人起步 | | DigitalOcean Droplet | 1 / 2 GiB / 50 GiB / 2,000 GiB | $12.00 | 推荐:三容器方案 | | DigitalOcean Droplet | 2 / 2 GiB / 60 GiB / 3,000 GiB | $18.00 | 抓取频繁、更从容 | | AWS Lightsail | 2 / 0.5 GB / 20 GB / 1 TB | $5.00 | 最低档试水 | | AWS Lightsail | 2 / 1 GB / 40 GB / 2 TB | $7.00 | 个人起步 | | AWS Lightsail | 2 / 2 GB / 60 GB / 3 TB | $12.00 | 推荐:三容器方案 | | AWS Lightsail | 2 / 4 GB / 80 GB / 4 TB | $24.00 | 多用户 / 重度使用 |

> 说明:Lightsail 0.5 GB / 1 GB / 2 GB 档位标注的 2 vCPU 为突发性能型(burstable),长期满载会受 CPU 积分限制;DigitalOcean 的 $6 档为 1 vCPU。上表仅列入门档,更高规格(如 4 核 8G、8 核 16G)可按需在官网选择。

阿里云国际版 / 腾讯云国际版的轻量应用服务器入门档(1 核 1G ~ 2 核 2G)优惠后大致落在 $3.5–12 / 月区间,具体以官网实时价格与活动为准;如果是国内访问为主的使用者,香港、新加坡、日本节点往往延迟更低。

> 声明:本文价格数据采集于 2026 年 10 月,仅为公开官网参考区间,实际价格随地域、活动、付款方式变化,请以服务商官网实时报价为准;金额单位均为美元(USD)。

> 🚀 想省心一步到位?通过 5.chengzicloud.cloud 购买阿里云 / AWS / 腾讯云国际版服务器,享专属折扣,测试满意再付款。

三、环境准备:系统初始化与安装 Docker

下面的操作以 Ubuntu 22.04 / 24.04 为例(Debian 12 同样适用)。如果你用的是 CentOS 7,请注意它已 EOL,且内核偏旧,新项目建议直接换 Ubuntu / Debian。

第1步:更新系统并安装基础工具

用 SSH 登录服务器后,先更新软件源并装上常用工具:

`bash apt update && apt upgrade -y apt install -y curl ca-certificates gnupg git ufw `

顺手配好时区与主机名(可选,但日志时间会更清楚):

`bash timedatectl set-timezone Asia/Shanghai `

第2步:安装 Docker 与 Compose 插件

用官方脚本一键安装 Docker Engine 与 Compose v2 插件:

`bash curl -fsSL https://get.docker.com | sh `

安装完成后,验证版本(本文要求 Compose v2,命令是 docker compose,注意中间是空格):

`bash docker --version docker compose version `

把 Docker 设为开机自启:

`bash systemctl enable --now docker `

第3步:开放必要端口(防火墙)

只需要对外开放 80 / 443(网站)和 22(SSH)。wallabag 应用本身不直接暴露端口,它会藏在 Nginx 反向代理后面。

`bash ufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp ufw enable `

到这一步,服务器的基础环境就准备好了。接下来进入正题:部署 wallabag。

四、部署 wallabag:Docker Compose 是首选

官方为生产环境提供的就是 Docker 方案,并且在专门的 wallabag/docker 仓库里维护了一套 Compose 配置。下面这一套是官方推荐结构的最小可用版:wallabag 容器 + MariaDB(数据库)+ Redis(异步导入队列)。

第4步:创建目录与生成密钥

先建工作目录:

`bash mkdir -p /opt/wallabag && cd /opt/wallabag `

生成一个随机的应用密钥(这是 wallabag 用于加密的 SECRET,务必唯一):

`bash openssl rand -hex 32 `

记下输出的这一长串字符,稍后填进 .env。

第5步:编写 .env 环境变量文件

在 /opt/wallabag 下新建 .env 文件(把示例域名、邮箱、密码换成你自己的):

`ini MYSQL_ROOT_PASSWORD=Str0ng_Root_Pass_2026 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=Str0ng_Walla_Pass_2026 SYMFONY__ENV__DATABASE_CHARSET=utf8mb4 SYMFONY__ENV__DATABASE_TABLE_PREFIX=wallabag_ SYMFONY__ENV__DOMAIN_NAME=https://read.example.com SYMFONY__ENV__SECRET=把上一步生成的那串密钥粘到这里 SYMFONY__ENV__MAILER_DSN=smtp://user:[email protected]:465 [email protected] SYMFONY__ENV__SERVER_NAME=My Reading Library SYMFONY__ENV__FOSUSER_REGISTRATION=false PHP_MEMORY_LIMIT=256M `

几个关键点必须解释清楚:

- SYMFONY__ENV__DOMAIN_NAME 必须填你最终对外访问的完整地址(带 https://,且不要带结尾斜杠)。分享链接、邮件、API 回调都依赖它,填错会出现「点链接跳到 localhost」或图片 404。 - SYMFONY__ENV__DATABASE_CHARSET 用 utf8mb4,否则中文和 emoji 可能存不进去。 - SYMFONY__ENV__FOSUSER_REGISTRATION=false 关闭公开注册——自建实例暴露在公网,绝对不要让陌生人自助注册。 - SYMFONY__ENV__SECRET 一旦设定就不要改,改了所有已登录会话和加密数据都会失效。 - SYMFONY__ENV__MAILER_DSN 是发信配置,用于找回密码、两步验证验证码。不配也能用,但注册确认与 2FA 邮件会失败。

第6步:编写 docker-compose.yml

在 /opt/wallabag 下新建 docker-compose.yml:

`yaml services: wallabag: image: wallabag/wallabag restart: unless-stopped env_file: - .env ports: - "127.0.0.1:8080:80" volumes: - /opt/wallabag/images:/var/www/wallabag/web/assets/images depends_on: - db - redis db: image: mariadb:11 restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=wallabag volumes: - /opt/wallabag/db:/var/lib/mysql redis: image: redis:alpine restart: unless-stopped `

三个要点:

- 端口只绑定 127.0.0.1:8080,意味着只有本机的 Nginx 能访问它,公网直接打不到 8080。这是「应用藏在反向代理后面」的标准做法。 - images 目录一定要挂出来。wallabag 抓取网页时会把正文图片下载到本地 /var/www/wallabag/web/assets/images,不挂卷的话容器一重建,图片全丢。 - 数据库用宿主目录(这里是 /opt/wallabag/db)持久化,容器删了数据还在。

第7步:启动服务

`bash cd /opt/wallabag docker compose up -d `

第一次启动时,wallabag 容器会自动建库、建表、初始化数据(POPULATE_DATABASE 默认为 True),大概需要一两分钟。用日志确认它跑起来了:

`bash docker compose logs -f wallabag `

看到服务监听、没有报错后,在服务器上本地验证一下:

`bash curl -I http://127.0.0.1:8080 `

返回 200 或 302 都说明应用已就绪。

wallabag 的默认账号密码都是 wallabag。先别急着改——下一节配好 HTTPS 再登录改密码,避免密码在 HTTP 明文里裸奔。

五、Nginx 反向代理 + Let's Encrypt 免费 HTTPS

应用已经跑在 127.0.0.1:8080 上了,现在把它「接」到公网:用域名访问,并套上 HTTPS。

第8步:解析域名并安装 Nginx 与 certbot

先在你的域名服务商处,把 read.example.com 解析到本服务器的公网 IP(A 记录)。

然后在服务器安装 Nginx 和 certbot:

`bash apt install -y nginx certbot python3-certbot-nginx `

第9步:编写反向代理配置

新建站点配置 /etc/nginx/conf.d/wallabag.conf:

`nginx server { listen 80; server_name read.example.com; return 301 https://$host$request_uri; }

server { listen 443 ssl http2; server_name read.example.com;

ssl_certificate /etc/letsencrypt/live/read.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/read.example.com/privkey.pem;

client_max_body_size 512m;

location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Host $host; } } `

这里有三个必须理解的点,否则会出现各种莫名其妙的问题:

- X-Forwarded-Proto https 一定要传。否则 wallabag 以为自己在 HTTP 后面,会生成 http:// 的资源链接,浏览器直接报混合内容(Mixed Content)而拒绝加载 CSS / JS,页面看起来像坏了一样。 - client_max_body_size 512m 要调大。默认 1M 在导入 Pocket 导出文件、上传 PDF 或大图时会被 Nginx 直接 413 拒绝。 - server_name 必须和 .env 里的 DOMAIN_NAME 完全一致(同一个域名、同一个协议),两处对不上就会出现「登录后被踢回登录页」这类诡异现象。

第10步:签发 Let's Encrypt 证书

先用 certbot 自动配置证书(它会自动改写上面的 443 部分、填入证书路径):

`bash certbot --nginx -d read.example.com --agree-tos -m [email protected] --redirect `

验证自动续期(Let's Encrypt 证书 90 天到期,certbot 会自动续):

`bash certbot renew --dry-run `

第11步:登录并加固账号

现在用浏览器打开 https://read.example.com,用默认账号登录:

- 用户名:wallabag - 密码:wallabag

第一件事就是改密码:进入「配置」→ 修改密码。随后建议顺手做两件事:

1. 开启两步验证(2FA):wallabag 默认支持基于邮箱验证码的两步验证(twofactor_auth 默认为开启)。自建实例一旦被扫到,弱密码会被暴力破解,2FA 是性价比最高的一道锁。 2. 把界面语言切成简体中文:在「配置」→「设置」里把语言选为中文,界面立刻变中文。

> 🚀 担心海外服务器线路质量?通过 5.chengzicloud.cloud 选购阿里云 / AWS / 腾讯云国际版,香港 / 新加坡 / 日本节点低延迟直连,享专属折扣。

六、把文章装进去:浏览器扩展、手机 App 与批量导入

服务建好了,接下来是「用起来」的部分——这才是稍后读工具的日常。

第12步:装浏览器扩展,实现一键收藏

wallabag 官方维护着 wallabagger 扩展,Chrome / Edge / Firefox 都可在扩展商店找到。安装后按提示填写:

- 服务器地址:https://read.example.com - 客户端 ID / 密钥:在 wallabag 设置里创建(见第13步) - 账号密码:你的 wallabag 登录账号

配置好之后,浏览任意网页点一下扩展图标,文章就会被抓取正文、清掉广告,直接进了你的 wallabag。这就是 Pocket 当年的体验,只不过数据存在你自己服务器上。

第13步:手机端同步:官方 App + API

wallabag 有官方 Android 与 iOS App(Android 也可从 F-Droid 获取)。App 通过 wallabag 的 OAuth 2.0 API 连接你的实例,走的是标准授权流程。

在服务器端,先在网页界面「配置」→「API clients management」里新建一个客户端,它会生成一对 Client ID 与 Client Secret。然后在手机 App 里填入:

- 实例地址:https://read.example.com - Client ID / Client Secret:上一步生成的那一对 - 你的用户名与密码

保存后,手机上存的文章会和服务器同步,多端阅读进度也一致。补充两个数量级参考:wallabag 的 API 访问令牌默认有效期 3600 秒,刷新令牌默认 1209600 秒(14 天),所以长期不打开 App 后需要重新登录一次,属于正常现象。

除了手机,任何支持「HTTP + OAuth」的工具都能对接,包括命令行、快捷指令、自动化脚本(比如把它和 n8n 工作流串起来)。

第14步:从 Pocket / Instapaper 批量搬家

这是很多人最关心的一步。wallabag 内置了多个导入器:

- Pocket(导出 HTML 文件后上传) - Instapaper - Readability / Pinboard / elCurator - Firefox / Chrome 书签 - wallabag v1 / v2(从旧实例迁移)

操作路径:网页界面「配置」→「导入」,选择来源、上传导出文件即可。数量不多时界面导入完全够用;数据量很大时,wallabag 官方还提供了基于 Redis 的异步导入 worker,把导入任务丢到后台慢慢跑,不占用前台请求。

小提示:从 Pocket 导出的文件是一个 HTML,里面有全部链接。上传前先确认 .env 里的 SYMFONY__ENV__DOMAIN_NAME 已填对,否则导入记录里的链接会指向错误域名。

七、内容抓取失败的排查:site config 是什么

wallabag 最核心的能力是「抓正文」,但它依赖两个组件协同工作:graby(按域名加载的站点配置文件 site config)和 php-readability(自动分析页面、猜测哪一块才是正文)。这两者都不是万能的,遇到结构特殊的站点,正文可能抓不全、缺标题、多出导航栏。下面是标准的排查三步。

第15步:先「重新抓取」,再看日志

遇到内容不对,先在文章侧栏点一下 「重新抓取内容」(Re-fetch content)。很多失败只是网络抖动或对方服务器短暂异常,重试一次就好。

如果还是不行,去看生产日志:

`bash docker compose exec wallabag cat var/logs/prod.log `

检索 graby.ERROR 开头的行,它后面的 HTTP 状态码基本就能定位问题:

| 日志状态码 | 含义 | 处置 | |-----------|------|------| | 404 | 文章地址找不到(链接失效或被删) | 换链接或手动删除该条 | | 403 | 访问被拒绝(对方反爬 / 需要登录) | 该站做了反抓取,无法自动抓正文 | | 500 | 对方服务器报错 | 稍后重试 | | 504 / 408 | 连接超时 | 检查服务器出网、稍后重试 |

第16步:用 f43.me 判断是不是「解析问题」

wallabag 的正文解析引擎与一个叫 f43.me 的网站同源。把抓取失败的链接丢进 f43.me 测一下:如果 f43.me 也解析不出来,说明是解析器看不懂这个页面结构,而不是你的服务器有问题——这时可以到 wallabag 的 GitHub 提 issue,或自己写一份 site config。

第17步:定制 site config(进阶)

site config 是放在 vendor/j0k3r/graby-site-config 下的、按域名命名的文本文件。例如文章地址是 https://news.example.com/xxx/article.html,wallabag 就会去找 news.example.com.txt。一份基础配置大致是「一段声明 + 若干条 XPath 规则」,用 XPath 直接告诉 wallabag「标题在哪、正文在哪、作者在哪」。

XPath 不需要手写:用 siteconfig.fivefilters.org 这个在线工具,输入文章 URL,在页面上点选你想要的区域,工具就会把对应的 XPath 显示出来,复制进配置文件即可。改完配置后,回到文章点「重新抓取内容」验证生效。

> 说明:绝大多数常见站点(主流新闻、博客平台)社区已经写好了 site config,你通常不需要动它。只有当某个你很常用、却总抓不好的站点出现时,才值得花这十分钟。

八、日常运维:备份、升级与安全加固

自建服务的长期价值,取决于你有没有把「运维」这几件事做顺手。

8.1 备份:三样东西就够

wallabag 要备份的其实只有三样:

1. 数据库(文章、标签、用户、注释); 2. 图片目录(抓取时下载到 /opt/wallabag/images 的正文图片); 3. .env 与环境配置(尤其是 SYMFONY__ENV__SECRET,弄丢了历史数据可能解不开)。

数据库导出(MariaDB):

`bash cd /opt/wallabag docker compose exec db sh -c 'mariadb-dump -u root -p"$MYSQL_ROOT_PASSWORD" wallabag' > wallabag-db-$(date +%F).sql `

再连同图片目录一起打包:

`bash tar czf wallabag-images-$(date +%F).tar.gz -C /opt/wallabag images `

把这两个文件同步到对象存储或另一台机器(本站的 MinIO、异地备份教程都能直接套用),就完成了一次完整备份。

8.2 升级:pull 一下,但先读升级说明

Docker 方案升级非常简单:

`bash cd /opt/wallabag docker compose pull docker compose up -d `

但跨小版本升级前,务必要看官方的 Upgrade 文档。wallabag 有些版本会包含数据库结构变更,文档里会明确写「从 2.x 升到 2.y 需要先执行什么」。跳过这一步,轻则报错,重则数据库结构对不上。稳妥做法:升级前先做一次 8.1 的备份。

8.3 安全加固清单

自建服务一旦暴露公网,就会成为扫描器的目标。下面这几条务必落实:

- 只暴露 80 / 443,wallabag 的 8080 永远绑在 127.0.0.1; - 关闭公开注册(FOSUSER_REGISTRATION=false),账号由你自己在后台创建; - 强密码 + 开启 2FA,不要把默认的 wallabag:wallabag 留在生产环境; - 保持镜像更新,docker compose pull 定期执行,及时拿到安全补丁; - 给数据库设强密码,MariaDB 的 root 密码不要用默认值。

8.4 让它「自己告诉你还活着」

无论是用本站的 Uptime Kuma 做可用性监控,还是用 Grafana Loki 收集容器日志,都可以把 wallabag 纳入既有监控体系。最简单的一条:给 https://read.example.com 加一个 HTTP 探针,一旦连续失败就通过 Telegram 告警——比你自己发现「网站打不开」要早得多。

九、常见问题 FAQ

Q1:wallabag 和 Pocket 有什么区别? Pocket 是商业托管服务,且已于 2025 年正式关停;wallabag 是开源软件,可以装在你自己的服务器上。功能核心相同——一键收藏、抓正文、清爽阅读视图、多端同步——区别在于 wallabag 不推荐内容、不插广告,数据全在你自己的数据库里;代价是部署与维护要你自己来。

Q2:搭建 wallabag 需要什么配置?1 核 1G 够吗? 够。只用 SQLite 单容器时,1 核 1G 完全能撑起个人使用。本文的「wallabag + MariaDB + Redis」三容器方案建议 2 核 2G 起,异步导入和多人访问会更顺。磁盘建议 60G 起步,因为正文图片会一起缓存在服务器上。

Q3:数据库该选 SQLite、MySQL 还是 PostgreSQL? 都能用——wallabag 通过 PDO 支持三者。SQLite 最省:单文件、备份就是拷目录,个人用最合适;MariaDB/MySQL 与 PostgreSQL 适合多人、并发以及需要成熟备份工具的场景。本文示例统一用 MariaDB。

Q4:为什么抓取的文章正文不全,或者没有标题? 多半是页面结构特殊,解析器没认出正文。排查顺序:先点「重新抓取内容」重试;不行就看容器日志里的 graby.ERROR 状态码;再用 f43.me 判断是不是解析问题;最后可为该域名单独写一份 site config(详见第七节)。

Q5:页面样式错乱,浏览器控制台报「混合内容」? 反向代理没有传 X-Forwarded-Proto https。补上这个头部(连同 X-Forwarded-Host、X-Forwarded-For)后重载 Nginx,wallabag 才会生成 https 资源链接。

Q6:忘记 wallabag 登录密码怎么办? 两种方式。其一,登录页「忘记密码」通过邮件重置——前提是 .env 里配好了 MAILER_DSN。其二,直接进容器改:

`bash docker compose exec wallabag php bin/console fos:user:change-password 你的用户名 `

Q7:怎么把 Pocket 里的收藏迁过来? 从 Pocket 导出 HTML 文件,在 wallabag「配置」→「导入」里选择 Pocket、上传文件即可。数据量大时可交给 Redis 异步导入 worker 后台处理。

Q8:手机上有 App 吗? 有。官方提供 Android 与 iOS App(Android 也可从 F-Droid 安装),通过 OAuth 2.0 API 连接你的实例。先在网页端「配置」→「API clients management」创建客户端拿到 Client ID / Client Secret,再在 App 里填入实例地址与账号。

Q9:图片会占很多空间吗?存在哪? 会。抓取时 wallabag 会把正文图片下载到容器内的 /var/www/wallabag/web/assets/images,本文已映射到宿主的 /opt/wallabag/images。文章越多图片越多,备份时要把这个目录一起带上;也可以在设置里关闭「本地下载图片」来控制体积。

Q10:能不能关闭注册,只让指定的人用? 能。在 .env 里设 SYMFONY__ENV__FOSUSER_REGISTRATION=false 就关闭了公开注册,账号由管理员在后台创建(或用 fos:user:create 命令)。公网实例务必关闭。

Q11:升级会不会丢数据? 正常的 docker compose pull && docker compose up -d 不会动数据——数据分别存在 MariaDB 卷和 images 目录里。但跨版本升级可能包含数据库结构变更,所以务必先看官方 Upgrade 文档,并先做一次备份。

Q12:wallabag 支持两步验证吗? 支持,形态是基于邮箱验证码的 2FA(参数 twofactor_auth 默认为可开启)。前提同样是配好 MAILER_DSN,否则收不到验证码。

Q13:自建 wallabag 和官方托管 wallabag.it 哪个好? wallabag.it 是官方付费托管服务,开箱即用、无需运维(提供 14 天免费试用);自建则免费、数据完全自持、可深度定制(site config、内网集成、任意 API 对接),代价是要自己维护。看重「省心」选托管,看重「数据主权 + 长期成本」选自建。

Q14:整套方案一个月要多少钱? 只跑 wallabag,1 核 1G(约 $5–6/月)就够;本文三容器方案建议 2 核 2G(约 $12–18/月)。相比按年订阅的商业稍后读服务,自建通常一两个月就回本,而且数据永远是你自己的。

结语

到这里,你就拥有一个完全属于自己的阅读库了:wallabag 安静地存文章,MariaDB 稳稳地存数据,Redis 在后台默默跑导入,Nginx + Let's Encrypt 守住门面。它不推荐、不追踪、不插广告,也不会在某一天突然告诉你「感谢一路陪伴,服务即将关停」。

维护它其实很简单:定期导出数据库、打包图片目录、docker compose pull 升级,剩下的时间,就把那些「收藏了却从没打开」的文章一篇篇读完吧。如果你想在这台服务器上继续扩展自建服务,下面这些站内教程都能无缝衔接。

延伸阅读:

- 用海外云服务器搭建 Miniflux 自建 RSS 阅读器(RSSHub 订阅全网)完整教程 - 用海外云服务器搭建 Wiki.js 自建团队知识库教程 - 用海外云服务器搭建 Paperless-ngx 文档管理系统教程 - 用海外云服务器搭建 Nextcloud 私有云盘教程 - 用海外云服务器搭建 Jellyfin 媒体服务器教程 - 海外云服务器备份与灾难恢复实战教程

> 本文由 5.chengzicloud.cloud 提供,点击访问首页了解更多海外云服务器部署方案和专属优惠。