使用 Docker 与 Wallos 快速搭建个人订阅管理系统

简介

在数字化时代,我们订阅的服务越来越多:Netflix、Spotify、Youtube Premium、各种云存储服务或是网站会员等等。这些订阅费用看似不多,但累积起来却是一笔不小的开支。有时,我们会忘记自己订阅了什么,导致为不再使用的服务继续付费。

今天介绍的 Wallos 可以解决这个问题,它是一款轻量、自托管(self-hosted) 的个人订阅管理应用,界面美观,功能强大。

而且部署起来非常简单!只要你有 Docker,几分钟就能搞定。它对硬件要求极低,无论是树莓派、NAS 还是云端服务器,都能稳定运行。

在开始前,可以在这里查看在线演示:https://demo.wallosapp.com(用户名:demo,密码:demo)

wallos-desktop

Wallos 主要特点

Wallos 是一款使用 PHP 编写的开源个人订阅管理应用:GitHub 项目地址,目前已经获得 6k 的 Star。

  • 开源 & 自托管:专为隐私与数据自主而设计
  • 轻量 & 快速:基于 SQLite 数据库,性能优化
  • 安装简单:完整支持 Docker 部署
  • 现代且友好的用户界面:响应式设计,支持移动端访问
  • 强大的订阅管理功能
    • 订阅分类管理和自定义标签
    • 多货币支持和自动汇率转换
    • 自动 Logo 搜索功能
    • 支付周期跟踪(月付、年付等)
    • 订阅统计和可视化图表
  • 智能通知系统:支持邮件、Discord、Telegram、Pushover 等多种通知方式
  • 多语言支持:支持超过 21 种语言
  • AI 分析:支持 AI 推荐分析(需要自己提供 API Key)

我们将使用 DockerDocker Compose 来快速搭建 Wallos。

一、环境准备

在开始之前,需要拥有一个自己的 VPS 或是支持 Docker 容器的 NAS 系统。

1. 安装 Docker 和 Docker Compose

这是我们容器化部署的基础。如果你的服务器尚未安装,可以参考以下教程。

2. 准备域名(可选)

为了通过 HTTPS 安全地访问你的订阅管理系统,你可以准备一个域名,并将其解析到你的服务器 IP。当然,你也可以直接通过 IP 地址访问。

3. 创建项目目录

为 Wallos 创建一个专用的目录,用于存放配置文件和数据。

1
2
mkdir -p /opt/wallos
cd /opt/wallos

二、使用 Docker Compose 部署

创建 compose.yml 文件

在项目目录 (/opt/wallos) 中,创建一个名为 compose.yml 的文件。

1
vim compose.yml

填入下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
services:
wallos:
container_name: wallos
image: bellamy/wallos:latest
ports:
- "127.0.0.1:8282:80" # 仅监听本地端口,由反向代理访问
environment:
TZ: 'Asia/Shanghai' # 设置时区
# Volumes store your data between container upgrades
volumes:
- './db:/var/www/html/db'
- './logos:/var/www/html/images/uploads/logos'
restart: unless-stopped

配置解析:

  • ports: 将容器的 80 端口映射到主机的 127.0.0.1:8282127.0.0.1 表示 Wallos 只能通过本机(或反向代理)访问,增强安全性。
  • environment:
    • TZ: 设置时区为中国时区(Asia/Shanghai)。
  • volumes: 将 Wallos 的数据库文件和 logo 图片持久化存储在主机当前目录下,确保容器更新或重建后数据不会丢失。

ports 可以先设置为 "8282:80",在容器启动后确认可以正常访问再设置为 "127.0.0.1:8282:80"

启动服务

compose.yml 文件所在目录中,执行以下命令来拉取镜像并启动服务:

1
docker compose up -d

启动成功后,可以通过以下命令查看运行状态:

1
docker compose ps

在 ports 设置中如果未指定为 127.0.0.1:8282 则可以访问 http://ip:8282 进行访问 Wallos 的 Web 界面

三、配置 Nginx 反向代理

为了安全地通过 HTTPS 访问你的订阅管理系统,强烈建议使用 Nginx 等反向代理工具。

以下是一个 Nginx 的配置示例。你需要为你的域名申请一个 SSL 证书(例如通过 Let’s Encrypt)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# /etc/nginx/sites-available/wallos.yourdomain.com.conf
server {
listen 80;
server_name wallos.yourdomain.com;

# 将所有 HTTP 请求重定向到 HTTPS
location / {
return 301 https://$host$request_uri;
}
}

server {
listen 443 ssl http2;
server_name wallos.yourdomain.com;

# SSL 证书路径 (请替换为你的实际路径)
ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/privkey.pem;

# 安全相关的 SSL 设置 (推荐)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;

location / {
proxy_pass http://127.0.0.1:8282;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

注意:

  • wallos.yourdomain.com 替换为你的实际域名。
  • 将 SSL 证书路径 /path/to/your/fullchain.pem/path/to/your/privkey.pem 替换为你的证书文件实际存放的路径。

测试并重载 Nginx 配置:

1
2
nginx -t
nginx -s reload

四、开始使用

现在,你可以通过浏览器访问 https://wallos.yourdomain.comhttp://your-server-ip:8282 来打开你的订阅管理系统了。

首次访问时,Wallos 会自动进入初始化界面,按照提示完成基本配置即可。

基本配置

  1. 创建管理员账户:设置用户名和密码
  2. 货币设置:选择主要货币和汇率 API( Fixer 与 ApiLayer 都提供每月 100 次的 API 额度,足够我们使用)
  3. 通知配置:根据需要配置邮件或其他通知方式

添加订阅服务

配置完成后,你可以开始添加第一个订阅服务:

  1. 点击 “Add Subscription” 按钮
  2. 输入服务名称(Wallos 可以点击搜索按钮从网络中获取对应的 Logo)
  3. 设置价格和付费周期
  4. 选择分类和标签
  5. 设置下次扣费日期

五、高级功能配置

1. 汇率 API 配置

如果你使用多种货币的订阅服务,建议配置 Fixer API 来获取实时汇率:

  1. 访问 Fixer.io 注册免费账户
  2. 获取 API Key
  3. 在 Wallos 设置中配置 API Key

2. 通知设置

Wallos 支持多种通知方式,可以在订阅即将到期时提醒你:

  • 邮件通知:配置 SMTP 服务器
  • Telegram 通知:通过 Bot API 发送消息
  • Discord 通知:通过 Webhook 发送消息
  • Pushover 通知:移动端推送通知

六、数据备份与恢复

由于所有数据存储在 SQLite 数据库中,备份非常简单:

备份数据

1
2
3
4
cd /opt

# 备份整个目录
tar -czf wallos-backup-$(date +%Y%m%d).tar.gz ./wallos

总结

通过 Docker 和 Wallos,我们只用了几分钟就搭建起一个功能全面、界面美观的个人订阅管理系统。相比于市面上的商业订阅管理应用,自托管方案不仅免费,还从根本上保障了你的财务数据隐私。

Wallos 的优势在于:

  • 完全免费开源透明
  • 数据隐私得到充分保障
  • 功能丰富,支持多货币、AI 分析、多种通知方式
  • 界面友好,支持移动端访问
  • 部署简单,维护成本低

开始使用 Wallos 来管理你的订阅服务,告别被遗忘的订阅费用吧!