Skip to content

🚀 使用 Docker Compose 部署 Wallabag

🚀 使用 Docker Compose 部署 Wallabag

Wallabag 是一款开源的“稍后阅读”工具,它允许你保存网页内容(如文章、新闻、博客帖子等),并提供一个干净、无干扰的阅读环境。它能够智能提取网页的核心内容,去除广告和无关的导航元素,支持多平台同步,并且所有数据都掌握在你自己手中。

📦 项目简介

Wallabag 的核心价值在于帮助你高效管理网络阅读资源,其具备以下特点:

  • 自托管与数据控制:你可以将 Wallabag 部署在自己的服务器上,确保数据的安全性和隐私性。
  • 内容提取与净化:它能智能识别并提取网页的主要文章内容,去除广告等干扰元素,提供舒适的阅读视图。
  • 跨平台同步:支持通过 Web 界面、浏览器扩展以及移动应用(Android 和 iOS)访问和管理你的收藏。
  • 强大的内容管理:你可以为文章打标签分类,并利用强大的筛选搜索功能快速定位内容。
  • 数据迁移与导出:支持从 Pocket、Instapaper 等服务导入数据,并可将文章导出为 EPUB、PDF 等多种格式。

⚙️ 部署前准备

  1. 环境要求

    • 确保你的系统已安装 DockerDocker Compose
    • 建议系统内存不少于 1GB
    • 确保计划使用的端口(例如配置文件中的 8070)未被占用。
  2. 环境检查 在终端中执行以下命令,确认 Docker 环境正常: bash docker --version docker-compose --version

  3. 创建项目目录 建议创建一个独立的目录来管理所有部署文件。 bash mkdir -p /opt/docker/wallabag cd /opt/docker/wallabag

🛠️ 配置 Docker Compose

在你创建的目录下,创建 docker-compose.yml 文件。这里直接采用了你提供的配置,它设置了 Wallabag、MariaDB 数据库和 Redis 缓存,是一个功能完整的生产级配置。

#五、避坑指南
#• 首次登录账号:wallabag/wallabag(记得修改!)
#• 中文设置路径:右上角用户图标 → Settings → Language
#• 内存优化技巧:MySQL容器可替换为MariaDB,资源占用直降30%

services:
  wallabag:  # 主服务:Wallabag 应用
    image: wallabag/wallabag  # 官方镜像
    container_name: wallabag  # 容器名称,便于识别
    environment:
      - MYSQL_ROOT_PASSWORD=wallaroot  # 数据库 root 密码(建议修改为复杂密码)
      - SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql  # 数据库驱动(使用 MySQL)
      - SYMFONY__ENV__DATABASE_HOST=db  # 数据库服务名(对应下方 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  # 数据库字符集(支持 emoji)
      - SYMFONY__ENV__DATABASE_TABLE_PREFIX="wallabag_"  # 数据库表前缀
      - SYMFONY__ENV__MAILER_HOST=127.0.0.1  # 邮件服务器(暂不配置可留默认)
      - SYMFONY__ENV__MAILER_USER=~  # 邮件用户名(可选)
      - SYMFONY__ENV__MAILER_PASSWORD=~  # 邮件密码(可选)
      #- SYMFONY__ENV__FROM_EMAIL=admin@yemengstar.com # 修改为你自己的邮箱
      - SYMFONY__ENV__FROM_EMAIL=admin@open.io  # 发件人邮箱(修改为自己的邮箱)
      #- SYMFONY__ENV__DOMAIN_NAME=http://192.168.0.3:8070
      #- SYMFONY__ENV__DOMAIN_NAME=https://tech.yemengstar.com # 修改为你自己的域名
      - SYMFONY__ENV__DOMAIN_NAME=https://wallabag.clxr-25.top  # 服务域名(修改为自己的域名/IP)
      - SYMFONY__ENV__SERVER_NAME="Shi Wallabag Instance"  # 服务显示名称(可自定义)
    ports:
      - "8070:80"  # 端口映射:服务器 8070 端口 → 容器 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 再启动 wallabag
      - db
      - redis

  db:  # 数据库服务:使用 MariaDB 存储数据
    image: mariadb  # MariaDB 镜像(兼容 MySQL)
    environment:
      - MYSQL_ROOT_PASSWORD=wallaroot  # 需与上方 wallabag 服务的密码一致
    volumes:
      - ./data:/var/lib/mysql  # 持久化数据库:保存所有文章和用户数据
    healthcheck:  # 数据库健康检查
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      interval: 20s
      timeout: 3s

  redis:  # 缓存服务:提升 Wallabag 访问速度
    image: redis:alpine  # 轻量版 Redis 镜像
    healthcheck:  # 缓存服务健康检查
      test: ["CMD", "redis-cli", "ping"]
      interval: 20s
      timeout: 3s

关键配置说明

配置项 说明与建议
SYMFONY__ENV__DOMAIN_NAME 这是最重要的配置之一,必须设置为您访问 Wallabag 的完整地址(例如 https://您的域名http://IP:8070),否则可能导致网页保存或插件连接问题。
volumes 配置了数据持久化。./images 用于保存网站图片等资源,./data 是 MariaDB 的数据目录。请务必确保这些目录存在且具有正确的读写权限,否则可能导致容器启动失败。
ports "8070:80" 将容器内的 80 端口映射到主机的 8070 端口。您可以根据需要修改主机端口。
depends_on 确保服务启动顺序,Wallabag 会在 db (数据库) 和 redis (缓存) 之后启动。
healthcheck 定义了容器健康检查,有助于 Docker Compose 管理服务状态。

注意:在启动容器前,请务必将 SYMFONY__ENV__DOMAIN_NAMESYMFONY__ENV__FROM_EMAIL 的值修改为您自己的域名和邮箱地址。如果 SYMFONY__ENV__DOMAIN_NAME 设置不正确,容器可能会不断重启。

🚀 启动与验证

  1. 启动服务docker-compose.yml 文件所在目录执行: bash docker-compose up -d 此命令会拉取镜像并在后台启动所有容器。

  2. 检查服务状态 bash docker-compose ps 检查所有容器的状态是否为 Up。首次启动时,由于要进行初始化,Wallabag 容器可能需要多花一点时间。

  3. 查看日志(可选) 如果容器状态异常,可以通过日志排查问题: bash docker-compose logs wallabag

  4. 访问并初始化

    • 打开浏览器,访问 http://你的服务器IP:8070
    • 首次访问,可以使用默认管理员账号登录:用户名为 wallabag,密码为 wallabag
    • 登录后请立即在设置中修改管理员密码

⚙️ 基础配置与使用

  1. 收录新文章

    • 手动收录:在 Web 界面点击右上角的 + 按钮,输入文章地址即可保存。
    • 浏览器扩展:这是更便捷的方式。以 Chrome 为例,安装 Wallabagger 插件。
      • 在 Wallabag Web 界面,点击右上角头像,进入 "API 客户端管理",创建一个新的客户端,记下生成的 ID密钥
      • 在浏览器插件的设置页面,配置服务器地址、ID 和密钥,然后就可以一键保存网页了。
  2. 文章管理与阅读

    • 在首页可以查看所有收藏的文章,支持搜索筛选(如按标签、未读、收藏等)。
    • 点击文章即可进入净化后的阅读视图,专注于内容本身。
  3. 配置通知(可选)

    • 如果你配置了正确的 SYMFONY__ENV__MAILER_* 环境变量和发件邮箱,可以启用邮件通知功能。

🔒 维护与管理

  • 服务管理

    • 停止服务docker-compose down
    • 重启服务docker-compose restart
    • 查看状态docker-compose ps
  • 数据备份

    • 定期备份项目目录下的 dataimages 文件夹。data 目录包含了全部数据库内容,至关重要。
  • 版本更新bash # 进入项目目录 docker-compose down docker-compose pull docker-compose up -d # 可选:清理无用镜像 docker image prune

🐛 常见问题排查

问题现象 可能原因与解决方法
无法访问 Web 界面 1. 检查防火墙是否放行了 8070 端口。
2. 确认所有容器状态正常:docker-compose ps
3. 检查 SYMFONY__ENV__DOMAIN_NAME 设置是否正确。
容器启动失败或不断重启 1. 检查 SYMFONY__ENV__DOMAIN_NAME 环境变量是否已设置且格式正确(包含 http://https://)。
2. 检查挂载的数据目录(./data, ./images)权限是否正确。
浏览器插件无法连接 1. 确认插件中配置的服务器地址与 DOMAIN_NAME 完全一致。
2. 检查 Wallabag 中生成的 API 客户端 ID 和密钥是否正确填写到插件中。
网页内容保存失败或格式错乱 部分网页结构复杂,可能导致 Wallabag 的内容提取不理想,这是正常现象。

希望这份教程能帮助你顺利搭建起属于自己的 Wallabag 服务,尽情享受高效、纯净的阅读体验吧!