
简介
什么是 EinVault ?
EinVault是一个专为homelabs设计的开源的宠物健康和护理追踪器。它可以帮助用户记录宠物的健康档案、每日活动、护理日程,所有数据都保存在本地硬件上,不依赖云服务,无需注册外部账号。
主要特点
- 宠物档案:支持记录品种、简介、兽医信息、紧急联系人和头像照片
- 每日日记 :为每只宠物创建日记条目,支持心情追踪和每日最多
5张照片 - 健康追踪:记录就诊、疫苗接种、药物、程序和体重历史
- 活动日志:追踪散步、餐食、排泄、零食、玩耍和美容记录
- 提醒功能 :支持
recurring和一次性提醒,覆盖药物、疫苗、美容等场景 - 护理轮班 :安排工作轮班并导出为
iCalendar(.ics)格式 - 角色权限:管理员管理应用,成员跟踪健康,护理人员记录活动
- 自包含部署 :单
Docker容器 +SQLite数据库,无外部依赖 - 多语言支持:英语、德语、西班牙语、法语、意大利语和葡萄牙语
- 响应式 UI:支持桌面和移动端,暗色和亮色主题
应用场景
- 家庭宠物管理:为家中宠物建立完整的健康档案和日常记录
- 多宠物家庭:同时管理多只宠物的健康和活动
- 宠物寄养:护理人员可以记录宠物日常情况
- 兽医记录:保存就诊历史和疫苗接种记录
- 轮班看护:家庭成员轮流照顾宠物时共享信息

EinVault 是一个功能全面的宠物健康和护理管理工具,适合有宠物且希望本地管理宠物数据的用户。
安装
在群晖上以 Docker 方式安装。
该镜像托管在 ghcr.io,群晖 Docker 套件无法直接搜索,需要通过命令行部署
docker cli 安装
如果你熟悉命令行,可能用 docker cli 更快捷
bash
# 新建文件夹 einvault 和 子目录
mkdir -p /volume1/docker/einvault/data
# 进入 einvault 目录
cd /volume1/docker/einvault
# 修改目录权限
chmod a+rw data
# 运行容器
docker run -d \
--name=EinVault \
--restart=unless-stopped \
-p 3608:3000 \
-v $(pwd)/data:/data \
-e ORIGIN=http://192.168.0.197:3608 \
-e TZ=Asia/Shanghai \
-e NODE_ENV=production \
-e DATABASE_URL=/data/einvault.db \
-e BODY_SIZE_LIMIT=10M \
-e UPLOAD_MAX_MB=10 \
-e user=1000:1000 \
ghcr.io/davefatkin/einvault:latest
关于环境变量的说明
| 可变 | 值 | 说明 |
|---|---|---|
ORIGIN |
http://群晖IP:端口 |
必填,公共访问地址,用于 CSRF 保护 |
TZ |
Asia/Shanghai |
时区设置,确保日期和时间正确显示 |
NODE_ENV |
production |
生产环境模式 |
DATABASE_URL |
/data/einvault.db |
数据库路径 |
BODY_SIZE_LIMIT |
10M |
请求体大小限制 |
UPLOAD_MAX_MB |
10 |
上传文件大小限制(MB) |
user |
1000:1000 |
容器运行的用户 UID:GID |
docker-compose 安装
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
yaml
services:
einvault:
image: ghcr.io/davefatkin/einvault:latest
container_name: einvault
restart: unless-stopped
# Option A (default): host-level proxy (Nginx, Caddy, Traefik on the host)
ports:
- '3608:3000'
# Option B: Docker-network proxy (Traefik, Caddy running in Docker)
# Comment out ports above and uncomment below, then add your proxy labels/config.
# expose:
# - "3000"
# networks:
# - proxy
volumes:
- ./data:/data
user: '1000:1000'
environment:
# Your public URL --- must match the address you access EinVault from.
# Used for CSRF protection; the app will reject form submissions without it.
ORIGIN: http://192.168.0.197:3608
NODE_ENV: production
DATABASE_URL: /data/einvault.db
BODY_SIZE_LIMIT: 10M
UPLOAD_MAX_MB: 10
# Set to your local timezone so dates and times display correctly.
# Defaults to UTC if omitted. Example: America/New_York, Europe/London
# TZ: America/New_York
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
read_only: true
tmpfs:
- /tmp:mode=1777,size=64m
deploy:
resources:
limits:
# cpus: '0.5'
memory: 256M
reservations:
memory: 64M
healthcheck:
test: ['CMD', 'wget', '-qO-', 'http://127.0.0.1:3000/api/health']
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
# Uncomment if using Option B
# networks:
# proxy:
# external: true
然后通过 SSH 登录到您的群晖,执行下面的命令:
bash
# 新建文件夹 einvault 和 子目录
mkdir -p /volume1/docker/einvault/data
# 进入 einvault 目录
cd /volume1/docker/einvault
# 修改目录权限
chmod a+rw data
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d

运行
在浏览器中访问 http://<群晖IP>:3608 ,第一次要创建账号
底部支持多语言切换,但是没有中文;

添加你的宠物
Name:名字Breed:品种Sex:性别Date of birth:出生日期Weight unit:重量单位Microchip number:芯片编号Bio / notes:简介 / 注释

添加完成后的主界面,左侧菜单
Dashboard:仪表板Journal:每日日记,每个宠物的记录,带情绪追踪,每天最多 5 张照片Health:健康追踪,包括兽医就诊、疫苗接种、用药、手术及体重历史Reminders:提醒,包括药物、疫苗接种、美容等的反复和一次性提醒

如果你有多只宠物,可以在 Settings 中点 Add Companion 添加

注意事项
- 数据备份 :数据保存在
./data目录,定期备份该目录即可 - ORIGIN 设置 :必须与实际访问地址一致,否则会导致
CSRF验证失败 - 端口占用 :确保本地端口
3608未被其他服务占用 - HTTPS 访问 :如需
HTTPS访问,需要配置反向代理(Caddy/Nginx/Traefik)
参考文档
EinVault: A private, self-hosted companion health and care tracker