自建 Wallabag 服务

admin
5月22日发布 /正在检测是否收录...

自建 Wallabag 服务

图片[1] - 自建 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

图片预览

图片[2] - 自建 Wallabag 服务 - 清~幽殇

图片[3] - 自建 Wallabag 服务 - 清~幽殇

图片[4] - 自建 Wallabag 服务 - 清~幽殇

图片[5] - 自建 Wallabag 服务 - 清~幽殇

搭建环境

  • 系统 Debian12
  • 域名一枚,并做好解析到服务器上
  • 安装好Docker、Docker-compose
  • 账号密码:wallabag:wallabag

开始搭建

sudo -i # 切换到root用户

apt update -y  # 升级packages

apt install wget curl sudo vim git -y  # 安装常用的软件

创建一下安装的目录:

mkdir -p /home/wallabag

cd /home/wallabag

vim docker-compose.yml

docker-compose.yml​填入以下内容:

sql版本

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   # 8080可以修改成其他的自己想用的端口
    volumes:
      - ./images:/var/www/wallabag/web/assets/images  # 将图片映射挂载到本地,这样docker停止了,数据不会丢失
      - ./data:/var/www/wallabag/data

mysql 版本

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   # 8000可以修改成其他的自己想用的端口
    volumes:
      - /root/achen/achen_wanjia/wallabag/images:/var/www/wallabag/web/assets/images  # 将图片映射挂载到本地,这样docker停止了,数据不会丢失
    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  # 将数据映射挂载到本地,这样docker停止了,数据不会丢失
      - ./images:/var/www/wallabag/web/assets/images  # 将图片映射挂载到本地,这样docker停止了,数据不会丢失
    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架构。如果遇到架构不支持的问题,请尝试以下配置

version: '3'
services:
  wallabag:
    image: wallabag/wallabag
    restart: always
    environment:
      - POSTGRES_PASSWORD=wallaroot # 自行设置密码  
      - POSTGRES_USER=wallabag_admin # 自行设置用户名
      - SYMFONY__ENV__DATABASE_DRIVER=pdo_pgsql # 适用于 pgsql 的驱动
      - SYMFONY__ENV__DATABASE_HOST=db
      - SYMFONY__ENV__DATABASE_PORT=5432 # pgsql 的默认端口
      - 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

version: '3'
services:
  wallabag:
    image: wallabag/wallabag
    environment:
      - MYSQL_ROOT_PASSWORD=wallaroot # 修改成你自己的mysql-root密码,需要此项来创建数据库和用户
      - SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
      - SYMFONY__ENV__DATABASE_HOST=172.17.0.1 #这里修改成宿主机在docker中的内网地址
      - SYMFONY__ENV__DATABASE_PORT=3306
      - SYMFONY__ENV__DATABASE_NAME=wallabag # 修改成你自己的mysql数据库名
      - SYMFONY__ENV__DATABASE_USER=wallabag # 修改成你自己的mysql数据库账户名
      - SYMFONY__ENV__DATABASE_PASSWORD=wallapass # 修改成你自己的mysql数据库账户密码
      - SYMFONY__ENV__REDIS_HOST=172.17.0.1 #这里修改成宿主机在docker中的内网地址
      - SYMFONY__ENV__REDIS_PORT=6379 
      - SYMFONY__ENV__REDIS_PASSWORD= #这里修改成宿主机在redis密码
      - 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   # 8080可以修改成其他的自己想用的端口
    volumes:
      - ./images:/var/www/wallabag/web/assets/images  # 将图片映射挂载到本地,这样docker停止了,数据不会丢失
      - ./data:/var/www/wallabag/data

然后运行:

docker-compose up -d

利用宝塔面板反向代理

新建一个站点,不要数据库,不要 php,纯静态

然后打开下面的配置,修改 Nginx 的配置

注释掉上图内容

图片[6] - 自建 Wallabag 服务 - 清~幽殇

添加下列代码:

图片[7] - 自建 Wallabag 服务 - 清~幽殇

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

创建 API 服务

image

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

image

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

设置中文

image

image

之后再点击下方的SAVE进行保存即可

配置插件

Chrome 搜索:应用商店

图片[8] - 自建 Wallabag 服务 - 清~幽殇

搜索 Wallabag

图片[9] - 自建 Wallabag 服务 - 清~幽殇

点击添加到Chrome

图片[10] - 自建 Wallabag 服务 - 清~幽殇

点击浏览器插件

image

将需要的网页添加到Wallabag​即可!

图片[11] - 自建 Wallabag 服务 - 清~幽殇

这样就可以进到Wallabag​查看了!

图片[12] - 自建 Wallabag 服务 - 清~幽殇

手机安装相应的 App 即可同步查看!

导入 worker

要运行 异步 redis 导入 worker⁠,请使用以下命令:

$ 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

多次刷新也之后提示这一句,看上去导入任务并没有开始的样子。。
此时需要去手动执行一下同步任务才能开始:

docker exec -it wallabag /var/www/wallabag/bin/console wallabag:import:redis-worker firefox --env=prod

导入完成后,刷新一下 wallabag 网页,应该能看到导入的内容了。

保存的文章不显示图片

如果你保存的文章不显示图片,需要到NAS中对docker这个文件夹开启写入权限,因为没有写入权限,图片因此无法保存到本地

然后在宿主机执行下面这个命令,将宿主机挂载目录的权限调整至 777 ,也就是允许(任何)其他用户读写:

sudo chmod -R 777 data

终究还是翻了一下官方的 dockerfile ,原来容器内的用户和组都是 nobody

最根本的办法,就是在宿主机将挂载目录的归属指定为 nobody​ 用户和组。

但是这个特殊的用户和组直接 sudo chown nobody:nobody data​ 是不行的,需要指定 uid 和 gid 才行:

sudo chown -R 65534:65534 data

最后再执行一下 docker compose up -d​ 重建容器就可以了(因为刚才修改了 compose 配置文件)。

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论
所有页面的评论已关闭