Docker系列 Wallabag助力個性化網(wǎng)頁RSS化

轉自我的個人博客https://blognas.hwb0307.com。歡迎關注!

前言

使用RSS閱讀已經(jīng)有一段時間了,感覺RSS信息流確實很舒服,大大提高了生活和工作效率。在日常工作或學習中,經(jīng)常會遇到一些內容很棒的網(wǎng)頁內容。如果只是保存鏈接,以后源文章可能會因為各種原因(下架、撤回、網(wǎng)站遷移)而丟失。這時,將網(wǎng)頁保存在本地(或者說保存在自己的VPS)才能萬無一失。

以前咕咕也介紹過Wallabag這個項目。wallabag 是一個開源的、免費的、保存網(wǎng)頁的自托管應用程序,并且開發(fā)者提供docker版本。我自己使用了一段時間,感覺還是很穩(wěn)定的,并且wallabag與RSS結合可以實現(xiàn)比較好的閱讀體驗,所以這里也分享給大家。

話不多說,咱們開干?。槺阋菜┪模。?/p>

測試環(huán)境

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=~ - SYMFONY__ENV__FROM_EMAIL=example@mail.com # 修改成你自己的郵箱 - 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或者域名托管商后臺解析網(wǎng)址wallabagrc.example.com。

NPM中設置反向代理,并無特殊設置,示意圖如下:

如果中途有更換域名的操作,請刪除舊記錄,新建一個Proxy記錄,以免NPM產(chǎn)生500錯誤。

當出現(xiàn)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.

初始使用可能要經(jīng)過一段時間的等待才可以訪問登陸界面。日志中顯示出不少wget請求,可能是wallabag在下載某些數(shù)據(jù)。

使用wallabag

Wallabag其實有默認的教程,自己喜歡折騰的話也可以看看:

基本設置

默認帳戶和密碼是:

帳戶:wallabag
密碼:wallabag

不習慣英語的小伙伴,可以更改語言為簡體中文:

記得按下方的SAVE保存。

出于安全考慮,你最好要修改默認用戶的密碼!

添加用戶

如果你要添加一個新用戶的話,可以:

新建用戶(這里只是打個比方):

帳戶:test_user
密碼:test_user

創(chuàng)建API服務

進入API客戶端管理

創(chuàng)建一個新的客戶端:

自定義一個名字后,點擊創(chuàng)建新客戶端即可:

這時API服務的ID和密鑰大致長這樣:

客戶端ID:1_27ejxrhd6y3oXXXXXXXXXXXXXXXXXcsw848sswsswwssks
密鑰:36yrttwnpam8ggkXXXXXXXXXXXXXXXXX0ok8c8gkc8occ84gs4go

這個信息要在chrome插件里填寫。

chrome插件

打開chrome網(wǎng)上應用商店,下載并安裝插件:

使用方法如下圖所示。用戶帳號和密碼就是你登陸wallabag后臺的帳戶和密碼。最后如果成功的話,黃色高亮區(qū)應該有一個Agreed,并且URL檢查狀態(tài)是,API token是授予。

嘗試保存網(wǎng)頁

很簡單,在一個網(wǎng)頁上直接右鍵

插件的顏色產(chǎn)生灰-黃-綠變化,即可成功:

你點擊這個插件圖標,還可以對文章進行簡單配置,比如定義它的標簽:

值得一提的是,如果源網(wǎng)頁的反爬做得好,wallabag爬取有可能會失敗的。這也是沒有辦法的事!

RSS訂閱源

我們保存的網(wǎng)頁也可以很方便地生成RSS源!

配置——訂閱源里面進行設置:

設置好后,按SAVE保存。最后,復制對應的鏈接在RSS閱讀器里訂閱即可:

備份wallabag

利用Duplicati等工具直接備份整個$work目錄即可。

小結

Docker版wallabag的安裝和使用還是比較簡單的,我也只是簡單介紹一下。你想了解多一些,看文檔或者自己點開配置試玩一下吧,我就不深入討論了。個人覺得,Wallabag最貼心的功能就是通過API將個人保存網(wǎng)頁生成RSS源,這樣使用RSS閱讀器的人可以很方便看這個文章。沒用過RSS的人可以看我博客學習地圖里的RSS系列,這里就不在贅述了!你安裝或使用中有什么問題,可以評論區(qū)留言或加討論。

參考

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容