feat(vaultwarden): deploy Vaultwarden password manager and daily NAS backup

Browse Source
This commit is contained in:
Yin Kou committed 2026-11-06 23:00:02 +08:00
1 parent 562f16732a
commit b4a1255d24
6 files changed
+80 -1

No files matched your search

+11
View File
@@ -165,3 +165,14 @@
### 16. 部署 Vaultwarden 私人密码保险箱 (`https://vw.961504.xyz`) 与极空间每日自动备份
- **操作时间**:2026-11-06 22:57 ~ 22:59
- **目标设备**:Mac mini (`192.168.31.164`) & SG Azure (`104.43.105.243`) & 极空间 Z4 (`192.168.31.185`)
- **变更内容**:
1. **Vaultwarden 容器**:编写 [`stacks/vaultwarden/docker-compose.yml`](file:///Users/ixvii0iv/homelab/stacks/vaultwarden/docker-compose.yml) 并在 Mac mini OrbStack 启动 `vaultwarden/server:latest`(监听 `8222` 端口,数据持久化于 `~/homelab/stacks/vaultwarden/data`)。
2. **双通道 HTTPS 反代与导航页卡片**:
- 免端口访问:`https://vw.961504.xyz`(走 Azure 443 反代至 `100.108.205.40:8222`)
- 家宽直连访问:`https://vw.home.961504.xyz:10443`(走家里 10443 反代至 `127.0.0.1:8222`)
- 已将 **「Vaultwarden 密码库」** 添加至 `https://nav.961504.xyz` 导航页。
3. **极空间 20TB 每日自动备份**:编写 [`scripts/backup-to-nas.sh`](file:///Users/ixvii0iv/homelab/scripts/backup-to-nas.sh) 并注册 `~/Library/LaunchAgents/com.homelab.nas-backup.plist`(每天凌晨 03:30 自动打包备份 Vaultwarden 数据、Sun-Panel 配置与 Homelab 脚本至 `/Users/ixvii0iv/nas/个人空间/MacMini_Backups/`,自动保留最近 30 份)。
- **回滚方式**:`ssh mini "cd ~/homelab/stacks/vaultwarden && docker compose down && launchctl unload ~/Library/LaunchAgents/com.homelab.nas-backup.plist"`
+4 -1
View File
@@ -60,4 +60,7 @@
- [x] **4.2 极空间 Z4 (`192.168.31.185`) 20TB 存储自动挂载与保活**: - [x] **4.2 极空间 Z4 (`192.168.31.185`) 20TB 存储自动挂载与保活**:
- 已编写 [`scripts/mount-zspace.sh`](file:///Users/ixvii0iv/homelab/scripts/mount-zspace.sh) 并在 Mac mini 注册 `com.homelab.mount-zspace.plist` 守护任务(每 2 分钟巡检断线自动重连)。 - 已编写 [`scripts/mount-zspace.sh`](file:///Users/ixvii0iv/homelab/scripts/mount-zspace.sh) 并在 Mac mini 注册 `com.homelab.mount-zspace.plist` 守护任务(每 2 分钟巡检断线自动重连)。
- 已成功将极空间 20TB 磁盘挂载至 Mac mini 的 `~/nas/共享文件` 与 `~/nas/个人空间`(可用空间 17TB)。 - 已成功将极空间 20TB 磁盘挂载至 Mac mini 的 `~/nas/共享文件` 与 `~/nas/个人空间`(可用空间 17TB)。
- [ ] **4.3 智能家居中枢**:部署 **Home Assistant + Scrypted**(摄像头接入 Apple HomeKit 安全视频)。 - [x] **4.3 部署 Vaultwarden 私人密码保险箱与极空间每日自动备份**:
- 已部署 **Vaultwarden** ([`stacks/vaultwarden/docker-compose.yml`](file:///Users/ixvii0iv/homelab/stacks/vaultwarden/docker-compose.yml)),提供免端口入口 **`https://vw.961504.xyz`** 与家宽直连入口 **`https://vw.home.961504.xyz:10443`**,并已添加至家庭导航页。
- 已编写 [`scripts/backup-to-nas.sh`](file:///Users/ixvii0iv/homelab/scripts/backup-to-nas.sh) 并注册 `com.homelab.nas-backup.plist` 定时任务,每天凌晨 03:30 自动打包备份 Vaultwarden 密码库与配置至极空间 `~/nas/个人空间/MacMini_Backups/`(保留最近 30 份)。
- [ ] **4.4 开启 Mac mini 全屋无线时间机器 (Time Machine) 备份中心**:将极空间挂载目录或 Mac mini 共享为 Apple Time Machine 服务器,让你的 MacBook Air 在家连 Wi-Fi 时自动无感备份。
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
# ==============================================================================
# Mac mini 核心数据自动备份至极空间 Z4 (20TB NAS) 脚本
# 每天凌晨 03:30 自动打包备份 Vaultwarden 密码库、Sun-Panel 导航页及 Homelab 配置
# ==============================================================================
set -euo pipefail
NAS_BACKUP_DIR="/Users/ixvii0iv/nas/个人空间/MacMini_Backups"
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
# 确保极空间已挂载
/Users/ixvii0iv/homelab/scripts/mount-zspace.sh >/dev/null 2>&1 || true
if [ ! -d "/Users/ixvii0iv/nas/个人空间" ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [WARN] 极空间未挂载,跳过本次备份"
exit 0
fi
mkdir -p "$NAS_BACKUP_DIR"
ARCHIVE="$NAS_BACKUP_DIR/homelab_backup_${TIMESTAMP}.tar.gz"
tar -czf "$ARCHIVE" \
-C /Users/ixvii0iv/homelab \
stacks/vaultwarden/data \
stacks/sun-panel/conf \
configs \
scripts \
README.md PLAN.md CHANGELOG.md 2>/dev/null || true
# 保留最近 30 份备份
ls -1t "$NAS_BACKUP_DIR"/homelab_backup_*.tar.gz 2>/dev/null | tail -n +31 | xargs rm -f 2>/dev/null || true
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [OK] 已备份至极空间: $ARCHIVE"
+8
View File
@@ -30,3 +30,11 @@ agy.961504.xyz:443 {
} }
reverse_proxy 100.108.205.40:7681 reverse_proxy 100.108.205.40:7681
} }
# 5. Vaultwarden 私人密码保险箱 (443 免端口访问) -> https://vw.961504.xyz
vw.961504.xyz:443 {
encode zstd gzip
reverse_proxy 100.108.205.40:8222 {
header_up X-Real-IP {remote_host}
}
}
+9
View File
@@ -58,3 +58,12 @@ agy.home.961504.xyz:10443 {
} }
reverse_proxy 127.0.0.1:7681 reverse_proxy 127.0.0.1:7681
} }
# 6. Vaultwarden 私人密码保险箱 (https://vw.home.961504.xyz:10443)
vw.home.961504.xyz:10443 {
tls /Users/ixvii0iv/homelab/stacks/gateway/certs/fullchain.pem /Users/ixvii0iv/homelab/stacks/gateway/certs/privkey.pem
encode zstd gzip
reverse_proxy 127.0.0.1:8222 {
header_up X-Real-IP {remote_host}
}
}
+15
View File
@@ -0,0 +1,15 @@
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
- DOMAIN=https://vw.961504.xyz
- SIGNUPS_ALLOWED=true
- WEBSOCKET_ENABLED=true
- ADMIN_TOKEN=k10y15ZXC.
- TZ=Asia/Shanghai
volumes:
- ./data:/data
ports:
- "8222:80"