自建 Wallabag 服务

Wallabag 简介
wallabag 是一个网络应用程序,允许您保存网页以供以后阅读。单击,保存并在需要时阅读。它提取内容,这样您就不会被弹出窗口
您可以将其安装在自己的服务器上,也可以在 wallabag.it 上创建一个帐户。
项目展示
GitHub 原项目地址:https://github.com/wallabag/wallabag
官网地址:https://wallabag.org/
官方文档地址:https://doc.wallabag.org/en/admin/installation/requirements.html
官方镜像:https://hub.docker.com/r/wallabag/wallabag
图片预览




搭建环境
- 系统
Debian12
- 域名一枚,并做好解析到服务器上
- 安装好
Docker、Docker-compose
- 账号密码:
wallabag:wallabag
开始搭建
1 2 3 4 5
| sudo -i # 切换到root用户
apt update -y # 升级packages
apt install wget curl sudo vim git -y # 安装常用的软件
|
创建一下安装的目录:
1 2 3 4 5
| mkdir -p /home/wallabag
cd /home/wallabag
vim docker-compose.yml
|
docker-compose.yml
填入以下内容:
sql版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| version: '3' services: wallabag: image: wallabag/wallabag environment: - SYMFONY__ENV__FROM_EMAIL=xxxxx@163.com - SYMFONY__ENV__DOMAIN_NAME=https://xxxxxx.com - SYMFONY__ENV__SERVER_NAME="Achen" - SYMFONY__ENV__LOCALE=zh ports: - 8080:80 volumes: - ./images:/var/www/wallabag/web/assets/images - ./data:/var/www/wallabag/data
|
mysql 版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| version: '3' services: wallabag: image: wallabag/wallabag 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__MAILER_HOST=127.0.0.1 - SYMFONY__ENV__MAILER_USER=~ - SYMFONY__ENV__MAILER_PASSWORD=~ - SYMFONY__ENV__FROM_EMAIL=xxxxx@163.com - SYMFONY__ENV__DOMAIN_NAME=https://xxxxxx.com - SYMFONY__ENV__SERVER_NAME="Achen" - SYMFONY__ENV__LOCALE=zh ports: - 8000:80 volumes: - /root/achen/achen_wanjia/wallabag/images:/var/www/wallabag/web/assets/images healthcheck: test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost"] interval: 1m timeout: 3s depends_on: - db - redis db: image: mariadb environment: - MYSQL_ROOT_PASSWORD=wallaroot volumes: - ./data:/var/lib/mysql - ./images:/var/www/wallabag/web/assets/images healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] interval: 20s timeout: 3s redis: image: redis:alpine healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 20s timeout: 3s
|
postgres 版本
这里额外提供一份以postgresql作为数据库的配置,用于替换mariadb以支持一些mariadb不支持的系统架构,例如linux/arm/v7架构。如果遇到架构不支持的问题,请尝试以下配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| version: '3' services: wallabag: image: wallabag/wallabag restart: always environment: - POSTGRES_PASSWORD=wallaroot - POSTGRES_USER=wallabag_admin - SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql - SYMFONY__ENV__DATABASE_HOST=db - SYMFONY__ENV__DATABASE_PORT=5432 - SYMFONY__ENV__DATABASE_NAME=wallabag - SYMFONY__ENV__DATABASE_USER=wallabag - SYMFONY__ENV__DATABASE_PASSWORD=wallapass - SYMFONY__ENV__DATABASE_TABLE_PREFIX="wallabag_" - SYMFONY__ENV__MAILER_DSN=smtp://127.0.0.1 - SYMFONY__ENV__FROM_EMAIL=example@example.com - SYMFONY__ENV__DOMAIN_NAME=http://127.0.0.1:8888 - SYMFONY__ENV__SERVER_NAME="wallabag service" ports: - "8888:80" volumes: - ./images:/var/www/wallabag/web/assets/images healthcheck: test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost"] interval: 1m timeout: 3s depends_on: - db - redis db: image: postgres:9.6 restart: always environment: - POSTGRES_PASSWORD=wallaroot - POSTGRES_USER=wallabag_admin volumes: - ./data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] interval: 20s timeout: 3s redis: image: redis:alpine restart: always healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 20s timeout: 3s
|
简便修改版
如果本地宿主机安装了mysql或postgresql和redis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| version: '3' services: wallabag: image: wallabag/wallabag environment: - MYSQL_ROOT_PASSWORD=wallaroot - SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql - SYMFONY__ENV__DATABASE_HOST=172.17.0.1 - SYMFONY__ENV__DATABASE_PORT=3306 - SYMFONY__ENV__DATABASE_NAME=wallabag - SYMFONY__ENV__DATABASE_USER=wallabag - SYMFONY__ENV__DATABASE_PASSWORD=wallapass - SYMFONY__ENV__REDIS_HOST=172.17.0.1 - SYMFONY__ENV__REDIS_PORT=6379 - SYMFONY__ENV__REDIS_PASSWORD= - SYMFONY__ENV__DATABASE_CHARSET=utf8mb4 - SYMFONY__ENV__FROM_EMAIL=xxxxx@163.com - SYMFONY__ENV__DOMAIN_NAME=https://xxxxxx.com - SYMFONY__ENV__SERVER_NAME="Achen" - SYMFONY__ENV__LOCALE=zh ports: - 8080:80 volumes: - ./images:/var/www/wallabag/web/assets/images - ./data:/var/www/wallabag/data
|
然后运行:
利用宝塔面板反向代理
新建一个站点,不要数据库,不要 php,纯静态
然后打开下面的配置,修改 Nginx 的配置
注释掉上图内容

添加下列代码:

默认的用户名和密码都是wallabag(这个在 docker hub 文档中有说明)登录之后,先去 Config 中修改 PASSWORD,修改完成后再进行 API 服务的配置
创建 API 服务

创建一个新的客户端,取一个名称,然后创建即可。

创建完客户端之后就会提供客户端 ID 和密钥,此时不要直接刷新网页避免重置 ID 和密钥。
设置中文


之后再点击下方的SAVE进行保存即可
配置插件
Chrome 搜索:应用商店

搜索 Wallabag

点击添加到Chrome

点击浏览器插件

将需要的网页添加到Wallabag
即可!
这样就可以进到Wallabag
查看了!

手机安装相应的 App 即可同步查看!
导入 worker
要运行 异步 redis 导入 worker,请使用以下命令:
1
| $ docker run --name wallabag --link wallabag-db:wallabag-db --link redis:redis -e <... your config variables here ...> wallabag/wallabag import <type>
|
其中是 pocket、readability、instapaper、wallabag_v1、wallabag_v2、firefox 或 chrome 之一。
启用 Redis 作为异步导入的缓存
进入 wallbag 网页界面,登录后,点击右上角的头像,选择【内部设置】
,点击【导入】
标签,下方的 启用 Redis 来异步导入数据 值默认是 0
,改为 1
后点击“应用”按钮,就可以开启 Redis 作为异步导入的缓存了
此时再次点击右上角的头像,选择【导入】
,应该能看到页面顶部有一行很显眼的提示:
导入是异步进行的。一旦导入任务开始,一个外部 worker 就会一次处理一个 job。目前的服务是: Redis
此时选择一个导入途径,比如选择了【Firefox】,然后点击“导入内容”,选择待导入的文件,点击“上传文件”,此时右上角应该会提示:
导入情况摘要: 1 个项目正在等待导入。
此时如果刷新一下【导入】页面,会发现右上角有个提示:
Messages in queue: 1
多次刷新也之后提示这一句,看上去导入任务并没有开始的样子。。
此时需要去手动执行一下同步任务才能开始:
1
| docker exec -it wallabag /var/www/wallabag/bin/console wallabag:import:redis-worker firefox --env=prod
|
导入完成后,刷新一下 wallabag 网页,应该能看到导入的内容了。
保存的文章不显示图片
如果你保存的文章不显示图片,需要到NAS中对docker这个文件夹开启写入权限,因为没有写入权限,图片因此无法保存到本地
然后在宿主机执行下面这个命令,将宿主机挂载目录的权限调整至 777 ,也就是允许(任何)其他用户读写:
终究还是翻了一下官方的 dockerfile ,原来容器内的用户和组都是 nobody
最根本的办法,就是在宿主机将挂载目录的归属指定为 nobody
用户和组。
但是这个特殊的用户和组直接 sudo chown nobody:nobody data
是不行的,需要指定 uid 和 gid 才行:
1
| sudo chown -R 65534:65534 data
|
最后再执行一下 docker compose up -d
重建容器就可以了(因为刚才修改了 compose 配置文件)。