Wallabag 稍后阅读服务搭建教程
Wallabag 是一款开源的稍后阅读服务,类似于 Pocket 和 Instapaper,可以保存网页文章的内容供日后阅读。自建 Wallabag 的优势在于数据完全由自己掌控,没有广告,也不会因为服务关闭而丢失收藏的文章。本文将介绍如何在搬瓦工 VPS 上通过 Docker 部署 Wallabag。
一、Wallabag 功能特点
- 文章保存:自动提取网页正文内容,去除广告和无关元素。
- 离线阅读:文章内容保存在服务器上,即使原始网页删除也可以阅读。
- 标签分类:使用标签对文章进行分类管理。
- 全文搜索:支持对已保存文章进行全文搜索。
- 多端同步:提供 Android、iOS 客户端和浏览器扩展。
- 阅读统计:估算文章阅读时间,跟踪阅读进度。
- 导出功能:支持将文章导出为 EPUB、PDF、Markdown 等格式。
- RSS 输出:为未读、已读、收藏文章分别生成 RSS Feed。
- 从 Pocket 迁移:支持从 Pocket 导入已保存的文章。
二、环境准备
- 搬瓦工 VPS 一台,建议 1GB 以上内存(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
- 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
- 域名一个。
2.1 创建项目目录
mkdir -p /opt/wallabag
cd /opt/wallabag
三、Docker Compose 部署
cat > /opt/wallabag/docker-compose.yml <<'EOF'
version: '3.8'
services:
wallabag:
image: wallabag/wallabag:latest
restart: always
ports:
- "8080:80"
environment:
MYSQL_ROOT_PASSWORD: root_password
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: wallabag_db_password
SYMFONY__ENV__DOMAIN_NAME: https://read.yourdomain.com
SYMFONY__ENV__SERVER_NAME: "Wallabag"
SYMFONY__ENV__FOSUSER_REGISTRATION: "false"
SYMFONY__ENV__FOSUSER_CONFIRMATION: "false"
depends_on:
- db
- redis
volumes:
- /opt/wallabag/images:/var/www/wallabag/web/assets/images
- /opt/wallabag/data:/var/www/wallabag/data
db:
image: mariadb:10.11
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: wallabag
MYSQL_USER: wallabag
MYSQL_PASSWORD: wallabag_db_password
volumes:
- db_data:/var/lib/mysql
redis:
image: redis:7-alpine
restart: always
volumes:
db_data:
EOF
四、启动服务
cd /opt/wallabag
docker compose up -d
等待数据库初始化完成(首次需要 1-2 分钟),查看日志:
docker compose logs -f wallabag
默认管理员账号为 wallabag,密码为 wallabag。登录后请立即修改密码。
五、配置 Nginx 反向代理
cat > /etc/nginx/sites-available/wallabag <<'EOF'
server {
listen 80;
server_name read.yourdomain.com;
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 $scheme;
}
client_max_body_size 10m;
}
EOF
ln -sf /etc/nginx/sites-available/wallabag /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d read.yourdomain.com
六、客户端配置
6.1 浏览器扩展
安装 Wallabag 浏览器扩展(Chrome/Firefox 均可),配置服务器地址和 API 凭据,即可一键保存当前网页到 Wallabag。API 凭据在 Wallabag 设置页面中生成。
6.2 手机客户端
在 Android 的 Google Play 或 F-Droid,以及 iOS 的 App Store 中搜索安装 Wallabag 客户端。配置服务器地址和 API 信息即可使用。
6.3 RSS 阅读器集成
在 Wallabag 设置中可以找到 RSS Feed 地址,将其添加到 FreshRSS 等 RSS 阅读器中,即可在 RSS 阅读器中查看 Wallabag 保存的文章。
七、从 Pocket 迁移
- 在 Pocket 设置中导出数据,获取 HTML 格式的导出文件。
- 在 Wallabag 中进入「导入」页面。
- 选择「Pocket」导入方式,上传文件或配置 API 导入。
八、数据备份
# 备份数据库
docker compose exec db mysqldump -u wallabag -p wallabag > /opt/wallabag/backup_$(date +%Y%m%d).sql
# 备份文章图片
tar czf /opt/wallabag/images_backup_$(date +%Y%m%d).tar.gz /opt/wallabag/images
九、常见问题
文章内容提取不完整
某些网站使用 JavaScript 动态渲染内容,Wallabag 可能无法完整提取。可以尝试使用浏览器扩展,它会发送渲染后的内容。
图片无法显示
检查 SYMFONY__ENV__DOMAIN_NAME 设置是否正确,图片 URL 需要使用正确的域名。
总结
Wallabag 是一个优秀的自托管稍后阅读服务,可以完全替代 Pocket 和 Instapaper。搭配 FreshRSS 或 Miniflux 使用,可以构建完整的信息阅读体系。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。