Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

wallabag 的优点是可以下载并保存网页,防止链接失效无法访问收藏的内容。wallabag 有一些抓取不全的问题,用作 miniflux 的插件就还好。本文说明了如何使用 docker-compose 安装 wallabag ,以及在 miniflux 中使用 wallabag

2022/6/21:新增一些 wallabag console command,如果忘记了密码,可以用命令直接修改

安装 wallabag (docker-compose)

docker-compose.yml 的填写参考官方说明,各个环境变量的说明在这里

version: '3'
services:
  wallabag:
    image: wallabag/wallabag  
    container_name: wallabag  # 自定义容器名
    depends_on:    
      - db
      - redis
    ports:
      - 自定义端口号:80  # 前面的是为自定义端口,80不可变
    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__DOMAIN_NAME不能用 127.0.0.1:端口号,也不能用 ip地址:端口号
      # 否则将出现加入reverse proxy之后,wallabag图标主题等显示不全的问题
      - SYMFONY__ENV__DOMAIN_NAME=https://wallabag.example.com  # 修改为自己的域名
      # 邮箱设置(下面是默认设置的值,其实不设置也不影响使用)
      - SYMFONY__ENV__MAILER_HOST=127.0.0.1
      - SYMFONY__ENV__MAILER_USER=~
      - SYMFONY__ENV__MAILER_PASSWORD=~
      - [email protected]
    volumes: # 冒号之前的目录名是上文要求你新建的文件夹地址
      - /wallabag/images:/var/www/wallabag/web/assets/images
      - /wallabag/data:/var/www/wallabag/data
    restart: always

  db:
    image: mariadb
    container_name: wallabag_mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=wallaroot
    volumes: # 冒号之前的目录名是上文要求你新建的文件夹地址
      - /wallabag/mysql:/var/lib/mysql
    restart: always

  redis:
    image: redis:alpine
    container_name: wallabag_redis
    restart: always

然后是自己用 caddy 设置了 reverse-proxy

输入网址,即可管理 wallabag 和创建新用户

创建完成的 wallabag 实例,有默认的管理帐号: 用户名和密码都是 wallabag (记得登录上去修改密码)

可以直接在 web 端,使用管理帐号创建新帐号,或者 enable 新注册的帐号

在 miniflux 中使用 wallabag integration

integration 的添加引用参考 minifluxIntegration with External Services,就可以完成了

然后就可以在 miniflux ,save 文章到 wallabag 稍后读啦~

wallabag 的 re-fetch content,帮我弥补了忘记在 miniflux 设置全文抓取了问题。但是,我现在发现 wallabag 的抓取问题有:

  • 对于 podcast,抓取不了附带的音频,但是 miniflux 能做到。

  • 对于有些代码块,显示奇怪,比如,行号和内容会分开,但是 miniflux 不会出问题

  • 对于有些文章,内容本来就只有几行,会显示 reload 失败,其实是已经抓取了全文了

caddy 的简要使用方法

在设置 caddy 的时候遇到了一些问题,于是再次重新设置了,记一下(万一以后又出错了)

caddy 可以自动获取 Let’s Encrypt SSL certificate 并自动续期,设置也比 NGINX 简单。

caddy 的设置参考了Docker 快速搭建 Miniflux + RSSHub

下载 caddy

# 下载编译好的 Caddy 执行档
wget https://github.com/caddyserver/caddy/releases/download/v2.0.0-beta.15/caddy2_beta15_linux_amd64
# 赋予执行和设定低端口绑定的权限
chmod +x caddy2_beta15_linux_amd64 && sudo setcap cap_net_bind_service=+ep caddy2_beta15_linux_amd64
# 把执行档放在系统文件夹并改名
sudo mv caddy2_beta15_linux_amd64 /usr/local/bin/caddy

创建 caddyfile

sudo mkdir /etc/caddy && sudo nano /etc/caddy/Caddyfile

写入 caddyfile

wallabag.example.com {
        encode zstd gzip
        reverse_proxy localhost:8090  # 修改为自己的端口号
}

防火墙打开 port 80 和 port 443,为 caddy 申请 SSL certificate 做准备

sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo apt install iptables-persistent  # 将上面2个防火墙规则自动永久载入本机

试运行 caddyfile

sudo caddy run --config /etc/caddy/Caddyfile

如果没问题,会看见显示一连串的 INFO,包括获取证书的提示。此时访问设置好的域名,将可以访问服务。确认没问题之后,ctrl + C 中断 caddyfile 执行

下面要做的是设置系统每次重启,都会自动启动 caddy

新建设置文件

sudo nano /etc/systemd/system/caddy.service

写入

[Unit]
Description=Caddy Server
After=syslog.target
After=network.target
[Service]
User=root
Group=root
LimitNOFILE=64000
ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
Restart=always
[Install]
WantedBy=multi-user.target

启用 caddy

sudo systemctl daemon-reload
sudo systemctl enable caddy.service
sudo systemctl start caddy.service

管理 MariaDB

(其实用 wallabag 自带的命令,会更简单,下一节有写)

进入 MariaDB

mysql -u root -p -h localhost

显示全部 databases

SHOW DATABASES;

使用某一个 database

USE <databasename>;

展示选择的 database 的 tables

SHOW tables;

显示 table 里面的数据

SHOW [FULL] {COLUMNS | FIELDS} FROM tbl_name [FROM db_name]
    [LIKE 'pattern' | WHERE expr];
  • 例如:
SHOW COLUMNS FROM mytable FROM mydb;
SHOW COLUMNS FROM mydb.mytable;

Console Commands (docker-compose version)

wallabag has a number of CLI commands to manage a number of tasks.

这里写出针对 docker-compose 安装方式的命令使用,格式是:

docker exec -t <container-name> /var/www/wallabag/bin/console <your-command> --env=prod --no-interaction
  • 是 wallabag 容器的名字,如果记不清了,使用 docker container ls 命令查询
  • 就是官方说明文档里,针对非 docker-compose 安装方式的命令
  • help 是查询命令的详细用法

一些重要的可用

assets:install   # May be helpful if assets are missing.
cache:clear     # should be run after each update (included in make update).
doctrine:migrations:status     # Output the status of your database migrations.
fos:user:activate      # 手动激活用户
fos:user:change-password  # 修改用户密码
fos:user:create  # 创建用户
fos:user:deactivate  # 冻结用户
fos:user:demote  # 移除用户角色,通常是不再设为管理员
fos:user:promote  # 添加用户角色,通常是设为管理员
rabbitmq:*         # May be useful if you're using RabbitMQ.
wallabag:clean-downloaded-images    # Cleans downloaded images which are no more associated to an entry
wallabag:clean-duplicates   # Removes all entry duplicates for one user or all users
wallabag:entry:reload      # Reload entries.
wallabag:export    # Exports all entries for a user. You can choose the output path of the file.
wallabag:generate-hashed-urls   # Generates hashed urls for each entry
wallabag:import         # Import entries to different formats to a user account.
wallabag:import:redis-worker        # 添加 Redis worker
wallabag:install         # (re)Install wallabag
wallabag:tag:all      # Tag all entries for a user using his/her tagging rules.
wallabag:user:show   # Shows the details for a user.
wallabag:user:list   # 列出存在的所有用户

评论