Docker系列 Wallabag助力个性化网页RSS化

转自我的个人博客https://blognas.hwb0307.com。欢迎关注!

前言

使用RSS阅读已经有一段时间了,感觉RSS信息流确实很舒服,大大提高了生活和工作效率。在日常工作或学习中,经常会遇到一些内容很棒的网页内容。如果只是保存链接,以后源文章可能会因为各种原因(下架、撤回、网站迁移)而丢失。这时,将网页保存在本地(或者说保存在自己的VPS)才能万无一失。

以前咕咕也介绍过Wallabag这个项目。wallabag 是一个开源的、免费的、保存网页的自托管应用程序,并且开发者提供docker版本。我自己使用了一段时间,感觉还是很稳定的,并且wallabag与RSS结合可以实现比较好的阅读体验,所以这里也分享给大家。

话不多说,咱们开干!(顺便也水水博文,哈哈!)

测试环境

  
  
  
  
uname -a # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux docker --version # Docker version 20.10.5, build 55c4c88 docker-compose --version # docker-compose version 1.28.6, build 5db8d86f

目录管理

  
  
  
  
# 工作目录 按需修改 work=~/docker/wallabag && mkdir -p $work && cd $work # 防火墙 按需修改 sudo ufw allow 4652/tcp comment 'wallabag' && sudo ufw reload

配置yml文件

新增vim docker-compose.yml文件:

  
  
  
  
vim $work/docker-compose.yml

添加以下内容:

与原版相比,去除了health check相关内容

  
  
  
  
version: '3' services: app: image: wallabag/wallabag:latest restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=wallabag_password_root # 按需修改 - 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_password # 按需修改 - SYMFONY__ENV__DATABASE_CHARSET=utf8mb4 - SYMFONY__ENV__MAILER_HOST=127.0.0.1 - SYMFONY__ENV__MAILER_USER=~ - SYMFONY__ENV__MAILER_PASSWORD=~ - [email protected] # 修改成你自己的邮箱 - SYMFONY__ENV__DOMAIN_NAME=https://wallabag.example.com # 修改成稍后要反向代理的域名 - SYMFONY__ENV__SERVER_NAME="BenszWallabag" ports: - 4652:80 # 可以修改成其他的自己想用的端口 volumes: - ./images:/var/www/wallabag/web/assets/images networks: - default depends_on: - db - redis db: image: mariadb restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=wallabag_password_root # 与MYSQL_ROOT_PASSWORD对应 volumes: - ./data:/var/lib/mysql networks: - default redis: image: redis:alpine restart: unless-stopped volumes: - ./redis-data:/data networks: - default networks: default: name: wallabag

上线服务

  
  
  
  
cd $work && docker-compose up -d

观察日志:

  
  
  
  
cd $work && docker-compose logs -f

日志中可能会有很多warning,但一般不影响使用,比如:

db_1     | 2022-07-07  7:46:04 0 [Warning] You need to use --log-bin to make --expire-logs-days or --binlog-expire-logs-seconds work.
db_1     | 2022-07-07  7:46:11 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.31.0.4' (This connection closed normally without authentication)
redis_1  | 1:M 07 Jul 2022 07:46:03.599 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

更改Redis设置

针对“# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.”。有效性和必要性正在测试中。可以先忽略这一步。

进入容器内部:

  
  
  
  
# 较新版本docker-compose的容器名一般是wallabag-redis-1 docker exec -it wallabag_redis_1 /bin/sh

修改文件内容:

  
  
  
  
vi /etc/sysctl.conf

添加以下内容:

vm.overcommit_memory = 1

让其生效:

sysctl vm.overcommit_memory=1

退出容器内部:

  
  
  
  
exit

重启服务:

  
  
  
  
cd $work && docker-compose restart

ddns-go & NPM

不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。

在ddns-go或者域名托管商后台解析网址wallabagrc.example.com

NPM中设置反向代理,并无特殊设置,示意图如下:

如果中途有更换域名的操作,请删除旧记录,新建一个Proxy记录,以免NPM产生500错误。

当出现Provisioner finished的字样时可以访问应用:

Starting provisioner...
[WARNING]: Found both group and host with same name: localhost
[WARNING]: Platform linux on host localhost is using the discovered Python
interpreter at /usr/bin/python3, but future installation of another Python
interpreter could change this. See https://docs.ansible.com/ansible/2.9/referen
ce_appendices/interpreter_discovery.html for more information.
[WARNING]: Module did not set no_log for update_password
Provisioner finished.

初始使用可能要经过一段时间的等待才可以访问登陆界面。日志中显示出不少wget请求,可能是wallabag在下载某些数据。

使用wallabag

Wallabag其实有默认的教程,自己喜欢折腾的话也可以看看:

基本设置

默认帐户和密码是:

帐户:wallabag
密码:wallabag

不习惯英语的小伙伴,可以更改语言为简体中文:

记得按下方的SAVE保存。

出于安全考虑,你最好要修改默认用户的密码

添加用户

如果你要添加一个新用户的话,可以:

新建用户(这里只是打个比方):

帐户:test_user
密码:test_user

创建API服务

进入API客户端管理

创建一个新的客户端:

自定义一个名字后,点击创建新客户端即可:

这时API服务的ID和密钥大致长这样:

客户端ID:1_27ejxrhd6y3oXXXXXXXXXXXXXXXXXcsw848sswsswwssks
密钥:36yrttwnpam8ggkXXXXXXXXXXXXXXXXX0ok8c8gkc8occ84gs4go

这个信息要在chrome插件里填写。

chrome插件

打开chrome网上应用商店,下载并安装插件:

使用方法如下图所示。用户帐号和密码就是你登陆wallabag后台的帐户和密码。最后如果成功的话,黄色高亮区应该有一个Agreed,并且URL检查状态是,API token是授予

尝试保存网页

很简单,在一个网页上直接右键

插件的颜色产生灰-黄-绿变化,即可成功:

你点击这个插件图标,还可以对文章进行简单配置,比如定义它的标签:

值得一提的是,如果源网页的反爬做得好,wallabag爬取有可能会失败的。这也是没有办法的事!

RSS订阅源

我们保存的网页也可以很方便地生成RSS源!

配置——订阅源里面进行设置:

设置好后,按SAVE保存。最后,复制对应的链接在RSS阅读器里订阅即可:

备份wallabag

利用Duplicati等工具直接备份整个$work目录即可。

小结

Docker版wallabag的安装和使用还是比较简单的,我也只是简单介绍一下。你想了解多一些,看文档或者自己点开配置试玩一下吧,我就不深入讨论了。个人觉得,Wallabag最贴心的功能就是通过API将个人保存网页生成RSS源,这样使用RSS阅读器的人可以很方便看这个文章。没用过RSS的人可以看我博客学习地图里的RSS系列,这里就不在赘述了!你安装或使用中有什么问题,可以评论区留言或加群讨论。

参考

  • wallabag文档:https://doc.wallabag.org/en

  • 视频:https://www.youtube.com/watch?v=KURD8cY9fs0

  • 博客:https://blog.laoda.de/archives/docker-compose-install-wallabag

本文使用 文章同步助手 同步

你可能感兴趣的:(Docker系列 Wallabag助力个性化网页RSS化)