产品的保修跟踪器Warracker

简介

什么是 Warracker ?

Warracker 是一个自托管的 Web 应用程序,用于在一个集中位置管理产品保修。Warracker 设计为轻量级、安全且易于使用,可帮助您掌握购买日期、到期提醒、收据等。该工具旨在帮助用户有条理地管理保修信息,避免因保修失效而造成的损失。

主要特点

  1. 集中管理:所有产品保修信息集中在一个地方,方便用户查看和管理。
  2. 详细记录:允许用户存储购买日期、保修时长和备注等信息。
  3. 文档存储:支持上传收据、发票和手册等相关文档。
  4. 主动提醒:提供到期提醒通知,确保用户及时了解保修状态。
  5. 快速搜索和过滤:根据产品名称、序列号、供应商、标签或备注等进行快速查找。
  6. 多用户支持:支持多个用户账户和管理员控制,适合团队使用。
  7. 数据导入导出:支持将数据导出为 CSV 格式,或从 CSV 文件导入数据。
  8. 电子邮件通知:提供到期提醒的电子邮件通知功能。
  9. 可定制设置:用户可以调整货币符号和日期格式等设置。
  10. **单点登录 (SSO)**:支持通过身份提供者(如 GoogleGitHubKeycloak)进行无缝登录。

应用场景

  • 个人保修管理:用户可以跟踪家庭中各种产品的保修状态,确保不遗漏任何保修。
  • 团队合作:团队可以使用 Warracker 来管理共同使用的设备和产品的保修信息。
  • 商家与客户服务:商家可以利用该工具帮助客户管理购买的产品保修,提升客户满意度。
  • 高效的保修跟踪:适合任何需要跟踪多个产品保修的用户,避免因遗忘保修而造成的经济损失。

Warracker 是一款功能强大的保修管理工具,旨在简化保修信息的管理。

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 0.10.0.0

env.txt

env.txt 修改自 .env.example,源文件地址:https://github.com/sassanix/Warracker/blob/main/Docker/.env.example

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
### ** Database Configuration**

# Database connection settings
DB_HOST=warrackerdb
DB_NAME=warranty_db
DB_USER=warranty_user
DB_PASSWORD=warranty_password

# PostgreSQL-specific settings (for the database container)
POSTGRES_DB=warranty_db
POSTGRES_USER=warranty_user
POSTGRES_PASSWORD=warranty_password

### Security Configuration**

# Application secret key for JWT tokens and Flask sessions
# IMPORTANT: Generate a strong, unique secret key for production!
SECRET_KEY=sSGw55bt92HEgZoeGs6bfBpUFFwdvgZ6

# JWT token expiration time (in hours)
JWT_EXPIRATION_HOURS=24

### Email/SMTP Configuration**

# SMTP server settings for sending notifications and password resets
SMTP_HOST=smtp.88.com
SMTP_PORT=465
SMTP_USERNAME=wbsu2003@88.com
SMTP_PASSWORD=<your_email_password>

# Optional SMTP settings
SMTP_USE_TLS=false
SMTP_USE_SSL=true
SMTP_SENDER_EMAIL=wbsu2003@88.com

### **URL Configuration**

# Frontend URL (used for redirects and email links)
# IMPORTANT: Must match your public-facing URL for OIDC and email links to work
FRONTEND_URL=http://192.168.0.197:8005

# Application base URL (used for links in emails and redirects)
APP_BASE_URL=http://192.168.0.197:8005

### **File Upload Configuration**

# Maximum file upload size in megabytes
MAX_UPLOAD_MB=32

# Nginx maximum body size (should match or exceed MAX_UPLOAD_MB)
NGINX_MAX_BODY_SIZE_VALUE=32M

下面是老苏使用的环境变量的简单说明

其中 192.168.0.197 是老苏群晖主机的 IP

环境变量 说明
DB_HOST 数据库主机名,通常为数据库容器的名称(如 warrackerdb)。
DB_NAME 数据库名称,指定要使用的数据库(如 warranty_db)。
DB_USER 数据库用户,连接数据库所需的用户名(如 warranty_user)。
DB_PASSWORD 数据库用户密码,用于身份验证(如 warranty_password)。
POSTGRES_DB PostgreSQL 数据库名称(如 warranty_db)。
POSTGRES_USER PostgreSQL 数据库用户名(如 warranty_user)。
POSTGRES_PASSWORD PostgreSQL 数据库用户密码(如 warranty_password)。
SECRET_KEY 应用程序的秘密密钥,用于 JWT 令牌和 Flask 会话。建议在生产环境中生成强大且唯一的密钥。
JWT_EXPIRATION_HOURS JWT 令牌的过期时间,以小时为单位(如 24 小时)。
SMTP_HOST SMTP 服务器地址,用于发送通知和密码重置邮件(如 smtp.88.com)。
SMTP_PORT SMTP 服务器端口(如 465)。
SMTP_USERNAME SMTP 服务器的用户名,用于身份验证(如 wbsu2003@88.com)。
SMTP_PASSWORD SMTP 服务器的密码,确保保密。
SMTP_USE_TLS 是否使用 TLS,设置为 truefalse
SMTP_USE_SSL 是否使用 SSL,设置为 truefalse
SMTP_SENDER_EMAIL 发件人邮箱地址,用于发送邮件(如 wbsu2003@88.com)。
FRONTEND_URL 前端 URL,用于重定向和电子邮件链接,必须与公开可访问的 URL 匹配(如 http://192.168.0.197:8005)。
APP_BASE_URL 应用程序基础 URL,用于电子邮件和重定向中的链接(如 http://192.168.0.197:8005)。
MAX_UPLOAD_MB 最大文件上传大小,以兆字节为单位(如 32 MB)。
NGINX_MAX_BODY_SIZE_VALUE Nginx 最大请求体大小,应该与 MAX_UPLOAD_MB 相匹配或超过(如 32M)。

docker-compose.yml

docker-compose.yml 基于官方的 docker-compose.yml 微调,源文件地址:https://github.com/sassanix/Warracker/blob/main/Docker/docker-compose.yml

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
services:
warracker:
image: ghcr.io/sassanix/warracker/main:latest
container_name: warracker-app
restart: unless-stopped
ports:
- "8005:80"
volumes:
- ./uploads:/data/uploads
env_file:
- env.txt
depends_on:
warrackerdb:
condition: service_healthy

warrackerdb:
image: postgres:15-alpine
container_name: warracker-db
restart: unless-stopped
volumes:
- ./data:/var/lib/postgresql/data
env_file:
- env.txt
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
interval: 5s
timeout: 5s
retries: 5

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 warracker 和 子目录
mkdir -p /volume1/docker/warracker/{data,uploads}

# 进入 warracker 目录
cd /volume1/docker/warracker

# 将 docker-compose.yml 和 env.txt 放入当前目录

# 一键启动
docker-compose --env-file env.txt up -d

运行

在浏览器中输入 http://群晖IP:8005 就能看到登录界面

第一次需要 Create Account 注册用户

登录成功后的主界面

点右上角的名字 –> Settings

可以进入设置,根据需要修改模式、货币单位等

Add New Warranty 则可以添加新的保修

随便添加了两项

切换到状态

如果有保修快到期时(似乎是小于一个月),会收到邮件提醒

虽然不支持多语言,但使用很简单,可以看官方的动图

参考文档

sassanix/Warracker: An open-source web application to manage product warranties, track expiration dates, and store related documents.
地址:https://github.com/sassanix/Warracker

Warracker v0.9.9.9 – Self-hosted warranty tracker now with CSV import, SSO, tags, and advanced search : r/selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/1l27f6c/warracker_v0999_selfhosted_warranty_tracker_now/