亚克斯普「墨浅情深,见字如晤;长路未歇,且共从容。」
独立:首页 示例页面
分类: 技术(16) 未分类(1)

Docker 搭建 vaultwarden 密码管理

分类:技术

发布时间:2025年04月25日

字数统计:3318 字

创建隧道

在Cloudflare 控制面板 创建一条 Tunnel

记住 Tunnel Token (就是提示执行命令里面 后面一长串的)

docker-compose.yml

将 TUNNEL_TOKEN 填入

services:
  vaultwarden:
    image: vaultwarden/server:latest-alpine
    volumes:
      - ./data:/data
    restart: always
    environment:
      - IP_HEADER=CF-Connecting-IP
      #- SIGNUPS_ALLOWED=false

  tunnel:
    image: cloudflare/cloudflared
    restart: always
    command: tunnel run
    depends_on:
      - vaultwarden
    environment:
      - TUNNEL_TOKEN=xxx
docker compose up -d

到Cloudflare tunnels 里面,可以看到已经成功 tunnel 了, 将域名映射到 http vaultwarden:80

然后访问域名 , 创建 vaultwarden 账户

然后, 关闭容器

docker compose down

自动备份到github

3.1 创建一个私人 github 仓库

创建完成后, github -> setting - > developer setting - > personal access tokens -> Fine-grained tokens

给 Commit statuses 和 Contents 的 read and write 权限

3.2 初始化仓库

在vps上, cd 到项目路径下

git init
git add .
git commit -m ”first commit“
git branch -M main
git remote add origin https://github.com/账户名/项目名.git
git push -u origin main

看看能否正常推送

3.3 创建 backup.sh

docker-compose.yml 同目录创建一个 backup.sh 文件, 将下面的代码复制进去

#!/bin/bash

log() {
    current_time=$(date ”+%Y-%m-%d %H:%M:%S“)
    echo ”$current_time: $*“
}

# 检查/root/.gitconfig是否存在
if [ ! -f ”/root/.gitconfig“ ]; then
    # 文件不存在,创建文件并写入配置
    cat > /root/.gitconfig << EOF

[user]

email = github-actions[bot]@users.noreply.github.com name = AutoBackup

[credential]

helper = store

[safe]

directory = /app EOF log ”文件 /root/.gitconfig 已创建并写入配置。“ fi # 检查环境变量 GITHUB_USER 和 GITHUB_TOKEN 是否已设置 if [[ -n ”$GITHUB_USER“ ]] && [[ -n ”$GITHUB_TOKEN“ ]]; then # 拼接要写入的凭据字符串 credentials=”https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com“ # 检查 .git-credentials 文件是否已经存在 if [[ -f /root/.git-credentials ]]; then # 读取现有的 .git-credentials 文件内容 existing_credentials=$(cat /root/.git-credentials) # 比较现有内容和即将写入的内容 if [[ $existing_credentials == $credentials ]]; then : else echo ”$credentials“ > /root/.git-credentials log ”凭据已更新到 /root/.git-credentials“ fi else echo ”$credentials“ > /root/.git-credentials log ”凭据已写入到 /root/.git-credentials“ fi else log ”环境变量 GITHUB_USER 或 GITHUB_TOKEN 未设置。“ fi # 切换到 /app 目录 cd /app || exit # 添加所有更改到暂存区 git add . # 检查是否有文件变化 if ! git diff —cached —quiet; then log ”检测到文件变化,准备进行备份...“ if ! git commit -m ”AutoBackup“; then log ”提交失败,检查是否有文件变化或其他错误。“ exit 1 fi git push log ”备份成功“ else log ”没有检测到变化,跳过推送。“ fi

3.4 配置最终 docker-compose.yml

将token 填入 docker-compose.yml 文件中

services:
  vaultwarden:
    image: vaultwarden/server:latest-alpine
    volumes:
      - ./data:/data
    restart: always
    environment:
      - IP_HEADER=CF-Connecting-IP
      - SIGNUPS_ALLOWED=false

  tunnel:
    image: cloudflare/cloudflared
    restart: always
    command: tunnel run
    depends_on:
      - vaultwarden
    environment:
      - TUNNEL_TOKEN=xxx

  backup:
    image: alpine:latest
    restart: always
    depends_on:
      - vaultwarden
    volumes:
      - ./:/app
    command: /bin/sh -c ”apk add —no-cache git && chmod +x /app/backup.sh && echo ’*/5 * * * * /bin/sh /app/backup.sh‘ | crontab - && crond -f“
    environment:
      - GITHUB_TOKEN=xxx
      - GITHUB_USER=xxx
docker compose up -d

3.5 观察日志,是否正常推送

docker compose logs -f backup
最后发布时间:2025年04月25日 | 全站总字数:18,561
站长网站合集:点击进入
联系邮箱: hi@yaxp.com
回到顶部