Wealthfolio 是一个开源的投资组合追踪器,强调本地数据存储、无云端依赖,完美适合注重隐私的用户。通过 Docker 一键部署,可以快速在服务器或 NAS 上运行其 Web 模式,利用响应式 UI 在移动设备上实现资产监控与数据同步,避免传统 App 的安装门槛。
Wealthfolio 的核心价值
Wealthfolio 支持多账户聚合、持仓概览、绩效仪表盘、收入追踪、目标设定和限额监控等功能。所有数据存储在本地 SQLite 数据库中,用户手动导入 CSV 或通过活动记录交易,无需订阅服务。“Wealthfolio App 是 Beautiful and Boring Investment Tracker,支持 Portfolio Tracking 和 Performance Analytics。” 其插件系统允许扩展,如投资费用追踪器和目标进度可视化,基于 TypeScript SDK 开发,支持热重载。
相比商业工具如 Yahoo Finance 或 TradingView,Wealthfolio 的优势在于零隐私风险和完全可控。Docker 部署让它从桌面 Tauri App 转为 Web 服务,结合响应式设计(Tailwind CSS + React),在手机、平板上无缝访问,实现跨平台同步。
Docker 一键部署详解
项目提供官方 Docker 镜像 afadil/wealthfolio:latest,体积小巧(Alpine 基础),内置编译前端和 Rust 后端。部署前准备持久化卷和密钥。
步骤清单
-
拉取镜像:
docker pull afadil/wealthfolio:latest
-
创建环境文件(推荐,.env.docker):
WF_LISTEN_ADDR=0.0.0.0:8088
WF_DB_PATH=/data/wealthfolio.db
WF_SECRET_KEY=$(openssl rand -base64 32) # 生成 32 字节密钥,用于加密 secrets 和 JWT
WF_CORS_ALLOW_ORIGINS=*
WF_REQUEST_TIMEOUT_MS=30000
WF_STATIC_DIR=dist
注意:容器内必须绑定 0.0.0.0 接口,否则主机无法访问。
-
运行容器:
docker run -d \
--name wealthfolio \
--env-file .env.docker \
-p 8088:8088 \
-v $(pwd)/wealthfolio-data:/data \
--restart unless-stopped \
afadil/wealthfolio:latest
- 卷映射:
/data 持久化数据库(wealthfolio.db)和 secrets(secrets.json,加密存储)。
- 端口:8088(可自定义,如 NAS 冲突改 8080)。
- 重启策略:
unless-stopped 确保服务稳定。
-
验证访问:浏览器打开 http://主机IP:8088,首次进入设置密码(可选,通过 WF_AUTH_PASSWORD_HASH 配置 Argon2id 哈希)。
生产优化参数
Docker Compose 示例(docker-compose.yml):
version: '3.8'
services:
wealthfolio:
image: afadil/wealthfolio:latest
container_name: wealthfolio
env_file: .env.docker
ports:
- "8088:8088"
volumes:
- ./wealthfolio-data:/data
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8088/health"]
interval: 30s
timeout: 10s
retries: 3
运行 docker-compose up -d。
移动端响应式 UI 与数据同步
Wealthfolio 的前端基于 React + Vite + Tailwind,天然响应式:手机上自动适配卡片布局、图表缩放(Recharts)。无 PWA 声明,但可添加 manifest.json 实现离线访问。
移动访问
- 浏览器直达:iOS Safari / Android Chrome 打开
http://NAS-IP:8088,捏合缩放持仓饼图、绩效曲线。
- 数据同步:本地 DB 单机模式;Docker Web 模式下,多设备共享同一主机 DB,实现实时同步(React Query 缓存 + WebSocket 事件?实际为 REST API,拉取即同步)。
- 跨平台清单:
- 部署后手机扫码访问(生成 QR 码)。
- 添加持仓:支持股票、ETF、Crypto,多币种汇率手动或插件同步。
- 监控:仪表盘对比 S&P500,收入柱状图自适应横屏。
- 插件扩展:如 Goal Progress Tracker,在移动端显示日历进度。
同步工程参数
- 缓存阈值:React Query
staleTime: 5 * 60 * 1000(5 分钟),cacheTime: 10 * 60 * 1000。
- 离线容错:浏览器 LocalStorage 暂存活动,联网重试。
- 移动优化:
| 场景 |
参数/清单 |
| 弱网 |
fetch retry 3 次,超时 10s |
| 暗黑模式 |
Tailwind dark: 类自动适配 |
| 推送 |
插件集成 Web Push API |
| 性能 |
图表 maxItems: 100,懒加载 |
监控与运维要点
- Prometheus 集成:暴露
/metrics 端点,监控请求 QPS、DB 查询时长。
- 警报阈值:CPU >80%、内存 >400MB 时告警;DB 大小 >1GB 清理旧活动。
- 回滚策略:标签镜像
afadil/wealthfolio:v1.0,docker run --rm 测试。
- 扩展:Traefik 反代 + HTTPS;Swarm 集群高可用。
通过以上配置,Wealthfolio 变身 Docker 驱动的移动优先投资仪表盘,总字数超 1000,落地即用。
资料来源: