部署需要的配置文件已经开源,可自行修改和定制,详情查看 → fava-synology-sso
先说整体方案:
-
beancount 账本数据提交到 Github 私有仓库,并通过AGWA/git-crypt加密隐私数据。
-
用群晖的 Container Manage 构建项目
- 用 fava 可视化 beancount
-
用群晖内置的 SSO 服务增加访问鉴权
- 需要拥有一个自己的域名,因为 SSO 有要求
- 需要有域名的 https 证书
- 定时任务每 6h 更新一次最新账本数据
-
用群晖的 Web Station 套件增加别名访问
-
有公网需求就做好对应的安全措施就可以了
服务编排大概是这么一个流程
- 用户请求到 Nginx 网关
- Nginx 通过群晖 SSO 鉴权
- 鉴权通过就转发到 Fava
- 不通过就打开群晖的 SSO 登录页,登录成功后跳 Fava 服务
docker-compose.yml
fava:
container_name: fava_server
environment:
- TZ=Asia/Shanghai
# 不对外暴露端口, Fava 服务本体
# 网关,作为访问的主入口
sso_gateway:
image: nginx:latest
container_name: sso_gateway
ports:
- "8111:8111" # 对外暴露端口
volumes:
- ./sso_nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- sso_auth
- fava
# 群晖 SSO 服务为 Fava 提供鉴权
sso_auth:
container_name: sso_auth
depends_on:
- fava
