💥 究极保姆喂饭级!GCP 永久免费小鸡零基础搭建 Vaultwarden
嘿,各位小伙伴们!你是否还在为那堆积如山的网站密码抓狂?🤯 每次登录都要“找回密码”?或者,你是不是还在用那些“云端”密码管理器,心里总嘀咕着“我的密码真的安全吗?” “会不会被XX偷窥?”
告别焦虑!今天,这篇堪称“把饭喂到嘴里”的教程,将手把手带你起飞!🚀 我们将利用 Google Cloud Platform (GCP) 那 香喷喷的永久免费 小鸡 ☁️,从零开始,搭建一个 完全私有、绝对安全、功能炸裂 的个人密码保险库——Vaultwarden!
Vaultwarden 是何方神圣?
简单粗暴地说,它是大名鼎鼎的 Bitwarden 的 轻量级开源“战神”版!拥有 Bitwarden 服务器的核心功能,但资源占用小到令人发指,简直是为我们这些在免费小鸡上“极限白嫖”的玩家量身定做!最最最关键的是:开源!免费!数据 100% 牢牢攥在你自己手里! 💪

为啥要自建?值友们,听我细数这其中的“真香”定律:
🔒 安全感爆棚: 你的密码,只存在于你的专属服务器!从此告别对第三方平台的依赖和潜在的数据泄露焦虑!妈妈再也不用担心我的密码啦!
🤫 绝对隐私: 除了你自己,没有人(包括谷歌、开发者,甚至未来的你穿越回来)能偷窥你的密码库。你的小秘密,自己守护!
💰 真正零成本: GCP 的“始终免费”套餐不是吹的!虚拟机、硬盘、流量,只要你不浪出天际,真的可以 一直免费用到地老天荒!每月省下的咖啡钱都能加个鸡腿了!🍗
📱 全平台制霸: 浏览器扩展 (Chrome/Edge/Firefox…)、手机 App (iOS/Android)、电脑客户端 (Win/Mac/Linux),一个不少!随时随地,无缝同步,体验丝滑~
🚀 功能不打折: 自动填充、强密码生成、安全笔记、文件附件、两步验证 (TOTP) 存储... 主流密码管理器该有的骚操作,它全都有!甚至更强!
🛠️ 折腾的乐趣 + 技能 Get√: 搭建过程不仅酷,还能让你顺便点亮 Linux、Docker 等新技能树!成就感满满!
GCP 免费大餐深度解析 (咱到底能薅多少羊毛?) 🐑
Google Cloud 为了“诱拐”我们(bushi),提供了相当慷慨的“始终免费” (Always Free) 套餐,跟我们这次搭建相关的核心福利有:
1 台 e2-micro 虚拟机 (VM):
配置: 0.25 vCPU + 1GB 内存。别看它“弱小”,跑个 Vaultwarden 绰绰有余,稳如老狗!
区域限制 (敲黑板!): 免费 VM 仅限 美国的少数几个区域,如 us-west1 (俄勒冈), us-central1 (爱荷华), us-east1 (南卡罗来纳)。选错区域,钱包流泪!务必盯紧! 💧
时长: 每月免费 = 当月总小时数,意味着你可以 7x24 小时开机,全年无休!
30GB 标准永久性磁盘:
装个 Debian 系统 (约 10GB),剩下的空间放你的密码数据(通常很小,几 MB 到几十 MB),甚至再跑点小东西都够用。注意!注意!注意! 免费的只有 标准 (Standard) 磁盘!选了“平衡”或“SSD”,你的信用卡就要开始燃烧了!🔥
静态 IP 地址 (有条件免费): 标准层级的虚拟机可以免费附加一个静态 IP,避免 IP 变动导致域名解析失效。只要虚拟机在运行,这个静态 IP 就是免费的。(本教程假设你使用动态 IP,但配置静态 IP 更佳)
⚠️ 定心丸时间 - 关于那个吓人的“每月估算费用”:
在你选好 e2-micro 和标准磁盘后,GCP 右侧那个“每月估算费用” 可能还会显示几美元!
别慌!稳住!这只是“预估”,还没算上免费折扣! 就像超市打折,标价还在,结账才减!
只要你 严格遵守 免费规则(选对区域、e2-micro、标准磁盘、用量不超),最终账单里这部分费用会被 免费层级折扣 (Free Tier Discount) 完美抵消掉!
结论:按教程操作,放心大胆地点“创建”,你的钱包很安全! 👍
一句话总结: 跟着教程走,精准操作,你的 Vaultwarden 服务器就能稳稳地实现 零成本 运行,比共享单车月卡还便宜!
开干前的准备 (新手宝宝也能看懂)
Google 账号: 这个应该都有吧?没有就注册一个。
信用卡: Visa 或 Mastercard,用来验证身份,只要不作死用付费服务,一分钱都不会扣!
GCP 控制台: 注册登录好 https://console.cloud.google.com/,准备就绪。
一台 Debian 12 虚拟机 (已创建):
路径: GCP 控制台 -> Compute Engine -> VM 实例 -> 创建实例。
名称: 随意,比如 my-vaultwarden。
区域: 务必选免费区 (如 us-west1)!
机器类型: E2 系列 -> e2-micro (关键!)。
启动磁盘:
点击“更改”。
操作系统: Debian,版本: Debian GNU/Linux 12 (bookworm) (或更新稳定版)。
磁盘类型: 🚨 极其重要!选 标准永久性磁盘 (Standard persistent disk)!选错立刻变付费!
大小: 默认 10GB 够用 (免费上限 30GB)。
点“选择”。
防火墙: 暂时 别勾选 HTTP/HTTPS,后面手动精控。(想偷懒也可以勾选,后续就不用配置防火墙了)
创建! 等待几分钟,小绿灯亮起 ✅。
你自己的域名: 任意后缀 (.com, .net, .xyz...),后面要用它来访问。强烈建议搞一个! 用 IP 访问不安全、不方便,还可能没法自动搞定 HTTPS。
SSH 连接工具: 💻
最无脑(推荐): GCP VM 实例列表,点实例后面的 "SSH" 按钮,浏览器里弹窗直接用。
更专业 用 PuTTY (Win), Termius (跨平台), FinalShell (Win/Mac), 或系统自带终端/PowerShell。需要配置 SSH 密钥或密码(不推荐密码)。假设你已经连上了。
亿点点耐心: 遇到问题别砸键盘,仔细看教程,深呼吸~
起飞!🚀 (全程图文级指引,手把手教学)
步骤 1: 给小鸡“大保健” (更新系统 & 装必备小工具) 🛀
新出厂的小鸡系统有点“糙”,咱们先给它搓搓澡,打扫干净。
SSH 连上你的小鸡。 看到命令行提示符 your_username@my-vaultwarden:~$ 就对了。
执行神圣的更新&升级二连: 复制下面命令,粘贴到 SSH 窗口,回车!
sudo apt update && sudo apt upgrade -ysudo: 获取临时管理员权限。
apt update: 刷新软件库列表,看看有啥新货。
&&: 前面成功了,再执行后面。
apt upgrade -y: 把所有能升级的软件都升到最新,-y 是自动确认。
⚠️ 新手高能预警!超级重要!⚠️
因为我们用的是“抠门级” e2-micro,性能有限,这一步 apt upgrade 可能会 非!常!慢! 🐌 可能需要下载几百 MB 的更新、解压、安装,花个十五分钟甚至半小时都完全正常! 请务必 耐心等待,屏幕会滚动很多行,直到最后重新出现命令行提示符 your_username@my-vaultwarden:~$ 才算完事。千万不要中途 Ctrl+C 中断或关掉 SSH 窗口! 否则系统可能更新不完整,后面会出幺蛾子!去泡杯茶 ☕️,刷会儿 B 站,或者思考下人生,让子弹飞一会儿!安装必备工具箱: 等上面龟速升级完成后,继续复制粘贴执行:
sudo apt install -y curl wget gnupg apt-transport-https ca-certificates lsb-release nanocurl, wget: 下载神器。
gnupg, apt-transport-https, ca-certificates, lsb-release: 装 Docker 的“准生证”和依赖。
nano: 一个对新手友好的命令行编辑器,后面改配置就靠它了!(Vim 大佬请无视)
这次安装通常很快。
步骤 2: 召唤“搬家神器” Docker & Compose 🐳
Docker 能把应用和它的运行环境打包成一个“集装箱”,在哪都能跑,部署超方便!
添加 Docker 官方“介绍信” (GPG 密钥): 保证我们下的 Docker 是正版,没被动手脚。
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL [https://download.docker.com/linux/debian/gpg](https://download.docker.com/linux/debian/gpg) | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg这几条命令基本秒执行完。
告诉系统 Docker 的“官方仓库”在哪: 让 apt 知道去哪拉货。
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] [https://download.docker.com/linux/debian](https://download.docker.com/linux/debian) $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null这条命令会自动适配你的系统版本,写入配置文件。
正式请 Docker 大佬和它的好基友 Compose 进场:
sudo apt update # 先刷新下列表,让系统知道新仓库 sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin这一步会下载安装 Docker 本体和 Compose 插件,耐心等几分钟。
测试 Docker 是否安装成功,跑个“Hello World”试试水:
sudo docker run hello-world第一次跑,Docker 会自动去网上下载 hello-world 镜像。
如果看到类似这样的输出,尤其是那句 "Hello from Docker!",就说明你的 Docker 活蹦乱跳,安装成功!✅
[...] Hello from Docker! This message shows that your installation appears to be working correctly. [...]
告别 sudo 的小技巧 (可选但推荐):
每次敲 docker 都得带 sudo 是不是很烦?执行 sudo usermod -aG docker $USER 把你当前用户加到 docker 用户组。
关键: 执行完需要 退出 SSH,重新登录一次 才生效!之后就能直接 docker ps、docker compose up 了。
为保持教程一致性,后面我还是会带 sudo,你加不加组跟着敲都没问题。
步骤 3: 精装修!给 Vaultwarden 和 Caddy “划分房间” 🏠
我们要给 Vaultwarden (密码库本体) 和 Caddy (门卫+HTTPS 自动化) 准备好它们各自的“小窝”(数据目录)和一份详细的“入住指南”(配置文件)。
创建项目主目录并钻进去:
mkdir ~/vaultwarden && cd ~/vaultwarden这会在你的用户家目录下创建 vaultwarden 文件夹并进入。用 pwd 确认你在 /home/your_username/vaultwarden。
创建核心指挥文件 docker-compose.yml:
用 nano 编辑器新建并打开。
nano docker-compose.yml复制下面的“装修图纸” (YAML 配置),整个粘贴进去:
(从 services: 到 caddy-config: 全部复制)# docker-compose.yml - 定义服务蓝图 services: # 这里定义我们要跑的几个服务 (容器) # --- Vaultwarden 本体服务 --- vaultwarden: image: vaultwarden/server:latest # 使用官方最新镜像,稳! container_name: vaultwarden # 给容器起个名,好认 restart: always # 挂了?Docker 会自动拉起来! environment: # 配置 Vaultwarden 的环境变量 # ------------------------------------------------------------- # !!! 🚨 超级无敌旋风霹雳重要:管理员后台令牌 🚨 !!! # 这是你访问 Vaultwarden 管理后台 (/admin) 的唯一钥匙! # 必须替换成一个【极其复杂】的【随机】字符串!否则等于裸奔! # 生成方法:在 SSH 终端里运行 `openssl rand -base64 48` # 会输出一长串天书,复制它! ADMIN_TOKEN: '在此处粘贴你生成的超强无敌管理员令牌' # 👈 删掉中文,粘贴你的令牌! # ------------------------------------------------------------- # 允许新用户注册吗? (关系到安全!) # 'true' = 谁都能来注册。(初始设置时用 true,方便自己注册) # 'false' = 禁止新用户注册。(你自己注册完,【必须】改成 false!) SIGNUPS_ALLOWED: 'true' # 👈 先保持 true,后面一定记得改! # 启用 WebSocket 通知 (让多端同步更实时) WEBSOCKET_ENABLED: 'true' # 推荐开启 volumes: # 数据持久化,密码存在外面才安全 # 把容器里的 /data 目录 (所有密码数据都在这) # 映射到宿主机当前目录下的 ./vw-data 文件夹里。 # 这样就算容器删了重建,你的密码数据也安然无恙! - ./vw-data:/data # --- Caddy - 门卫 & HTTPS 自动化大师 --- caddy: image: caddy:latest # 用最新的 Caddy 镜像 container_name: caddy # Caddy 容器名 restart: always # 同样自动重启 ports: # 端口映射 (本机端口:容器端口) # 把本机的 80 端口交给 Caddy 处理 HTTP 请求 (续签证书要用) - "80:80" # 把本机的 443 端口交给 Caddy 处理 HTTPS 请求 (主要访问端口) - "443:443" # 也把 443 UDP 端口给 Caddy (为了 HTTP/3,更快更潮) - "443:443/udp" volumes: # 挂载 Caddy 的配置文件和数据 # 把我们稍后创建的 Caddyfile 挂进去,让 Caddy 按指令工作 - ./Caddyfile:/etc/caddy/Caddyfile # 把 Caddy 的持久化数据 (如图床证书) 存到外面 - ./caddy-data:/data # 把 Caddy 的配置状态也存外面 - ./caddy-config:/config depends_on: # 依赖关系 - vaultwarden # 最好等 vaultwarden 启动后再启动 Caddy # 定义数据卷 (更规范的写法,虽然上面用相对路径已经能工作) volumes: vw-data: # Vaultwarden 数据卷 caddy-data: # Caddy 数据卷 (证书等) caddy-config: # Caddy 配置状态卷🎯 精准修改!找到并替换两个关键点:
ADMIN_TOKEN:
另外开一个 SSH 窗口 (或暂时退出 nano: Ctrl+X 不保存,后面再 nano docker-compose.yml 进来),运行命令:openssl rand -base64 48
屏幕会输出一长串类似 aBcDeF1/2+G...乱七八糟...XyZ= 的字符。
完整复制 这串字符。
回到 nano 编辑器,找到 ADMIN_TOKEN: 那行,删掉 '在此处粘贴你生成的超强无敌管理员令牌' 这几个字(包括单引号),然后 粘贴 你复制的令牌,确保它被英文单引号包着。例如:ADMIN_TOKEN: 'aBcDeF1/2+G...你的令牌...XyZ='。
🚨 这个令牌是后台最高权限!自己藏好!打死也不能泄露! 🤫
SIGNUPS_ALLOWED:
现在 保持 'true' 不动。这样你等下才能注册第一个账号。
‼️ 再次强调:注册成功后,务必、一定、必须回来改成 'false' 并重启服务!否则你的服务器就成了公共厕所!
保存并退出 nano 编辑器:
按 Ctrl + X。
提示 "Save modified buffer?",按 Y。
提示 "File Name to Write: docker-compose.yml",直接按 Enter 确认。
搞定!用 ls 命令看看,当前目录下应该有 docker-compose.yml 了。
步骤 4: 配置“门卫大哥” Caddy 的工作守则 (创建 Caddyfile) 💂
Caddyfile 就是给 Caddy 看的说明书,告诉它收到不同网址请求时该怎么处理。
创建 Caddyfile: 继续用 nano。
nano Caddyfile复制并粘贴下面的“门卫规则”,整个塞进去:
# Caddyfile - Caddy 工作指令 # ------------------------------------------------------------- # !!! 🎯 把 "your.domain.com" 换成你自己的【真实域名】 !!! # 例如:vw.zhangsan.com 或者 mypass.example.net your.domain.com { # ------------------------------------------------------------- # --- 核心功能:反向代理到 Vaultwarden --- # 把所有对你域名的访问 (除了下面特殊路径),都丢给 'vaultwarden' 容器的 80 端口处理 # 'vaultwarden:80' 是 Docker 内部网络能识别的地址 reverse_proxy vaultwarden:80 { # 传个真实 IP 给 Vaultwarden,方便看日志 header_up X-Real-IP {remote_ip} } # --- 配置 WebSocket 代理 (为了实时同步更新) --- # 访问 /notifications/hub 这个特殊路径时 # 单独把它丢给 vaultwarden 容器的 3012 端口 (WebSocket 服务端口) reverse_proxy /notifications/hub vaultwarden:3012 # --- 魔法发生的地方:全自动 HTTPS! --- # 让 Caddy 自动去 Let's Encrypt 申请并续签 HTTPS 证书 # 把下面的邮箱换成你自己的真实邮箱,证书快过期时会收到邮件提醒 tls your-email@example.com # 👈 🎯 替换成你的邮箱! # --- 安全加固:推荐添加的安全 Headers --- header { # 强制浏览器一年内必须用 HTTPS 访问 (HSTS) Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" # 禁止被其他网站用 iframe 嵌套 (防点击劫持) X-Frame-Options "DENY" # 防止浏览器瞎猜文件类型 (MIME-sniffing) X-Content-Type-Options "nosniff" # 开启浏览器内置 XSS 防护 X-XSS-Protection "1; mode=block" # 隐藏 Caddy 版本号,低调点好 -Server } # --- 性能优化:启用压缩 --- # 压缩传输内容,访问更快一点 encode gzip zstd # (可选) 如果你想看 Caddy 的访问日志,可以取消下面这行的注释 (#) # log { # output file /data/access.log #} }🎯 再次精准打击!修改两个占位符:
找到靠近顶部的 your.domain.com {,把 your.domain.com 换成 你准备用来访问 Vaultwarden 的那个域名。比如 vw.mydomain.com,那就写 vw.mydomain.com {。
找到 tls your-email@example.com,把 your-email@example.com 换成 你自己的真实邮箱,比如 me@qq.com。
保存退出 nano: 老规矩 Ctrl+X, Y, Enter。现在 ls 一下,目录下应该有 docker-compose.yml 和 Caddyfile 两个好基友了。
步骤 5: 打通“任督二脉” (配置 GCP 防火墙放行) 🚪
默认小鸡是“六亲不认”的,我们要告诉 GCP 防火墙:“嘿,放行访问我 80 和 443 端口的客人!”
若之前创建虚拟机时勾选了允许http和https流量,此步骤可略去,直接看步骤6。
回到浏览器里的 GCP 控制台。
找到防火墙规则页面: 左上角菜单 ☰ -> VPC 网络 (VPC network) -> 防火墙 (Firewall)。
新建防火墙规则: 点顶部的 创建防火墙规则 (CREATE FIREWALL RULE)。
名称 (Name): 好记就行,比如 allow-web-traffic。
网络 (Network): 保持 default。
优先级 (Priority): 默认 1000。
流量方向 (Direction): 入站 (Ingress)。
匹配操作 (Action on match): 允许 (Allow)。
目标 (Targets):
下拉选 指定的 GCE 实例 (Specified target tags)。
目标标记 (Target tags): 输入一个自定义标签,比如 vaultwarden-node。记住这个标签! 后面要给 VM 打上。
来源过滤 (Source filter):
选 IP 地址范围 (IP ranges)。
来源 IP 地址范围 (Source IP ranges): 填 0.0.0.0/0 (表示允许任何来源 IP 访问)。
协议和端口 (Protocols and ports):
选 指定的协议和端口 (Specified protocols and ports)。
勾选 tcp,在后面框里输入 80, 443 (英文逗号隔开)。
确认无误,点页面底部的 创建 (CREATE)。
给你的 VM 实例打上刚才设置的“通行证” (目标标记):
回到 GCP 控制台菜单 -> Compute Engine -> VM 实例。
找到你的 my-vaultwarden 实例,点击它的名字进入详情页。
点页面顶部的 修改 (EDIT)。
往下找到 网络 (Networking) -> 网络标记 (Network tags)。
在框里输入你刚才创建防火墙规则时用的 目标标记 (如 vaultwarden-node),输完按回车,它会变成一个标签。
拖到页面最下面,点 保存 (SAVE)。
OK!现在全世界都可以通过 HTTP (80) 和 HTTPS (443) 端口访问到你的小鸡了!✅
步骤 6: 全球广播你的“新家地址” (配置 DNS 解析 - 新手看仔细!) 🗺️📍
这一步是告诉全世界的互联网:当有人想去 your.domain.com 时,应该去哪个 IP 地址找你的小鸡。
拿到你家小鸡的“公网门牌号” (外部 IP 地址):
还在 GCP 的 "VM 实例" 页面。
找到你的实例那一行,有一列叫 外部 IP (External IP),下面有一串数字 (类似 35.xxx.yyy.zzz)。复制 这串 IP 地址。
登录你的“域名户口本管理处” (域名注册商/DNS 服务商后台):
就是你买域名的地方,比如阿里云/万网、腾讯云/DNSPod、GoDaddy、Namecheap、Cloudflare 等。登录进去。
找到域名解析 (DNS Management / DNS Zone) 设置: 每个平台界面不一样,但核心功能都叫“DNS 解析”。找到你要用的那个域名,点进去管理。
添加一条 A 记录 (Address Record):
点“添加记录”或类似按钮。
记录类型 (Type): 选 A。
主机记录 (Host / Name):
如果你想用 yourdomain.com 直接访问,填 @ 或留空 (看服务商提示)。
如果你想用子域名,比如 vw.yourdomain.com,就填 vw。强烈推荐用子域名 (如 vw, safe, pass 等),避免冲突。这里假设你用 vw。
记录值 (Value / Points to / 指向): 粘贴 你刚才复制的 GCP 小鸡的 外部 IP 地址。
TTL (Time To Live / 缓存时间): 用默认值 (比如 600 秒/10 分钟) 就行。想快点生效可以改短,比如 60 秒。新手不管它。
保存 / 确认。
(Cloudflare 用户专属) 是否开启代理小云朵? ☁️
在 Cloudflare 添加记录后,旁边有个云朵图标。
灰色 (DNS Only): 流量直连你的服务器 IP。
橙色 (Proxied): 流量先经过 CF 中转 (隐藏 IP,可能加速)。对于 Caddy 自动获取证书,通常灰色或橙色都可以成功。 如果你想隐藏 IP,就点亮它变橙色。
耐心等待 DNS 全球广播 (DNS Propagation): ⏳
你刚加的记录不会瞬间同步到全世界,需要点时间。短则几分钟,长则几小时。
怎么检查?
本机电脑命令行/终端,ping vw.yourdomain.com (换成你的域名),看返回的 IP 是不是你设置的 GCP IP (或者开了 CF 代理后的 CF IP)。
用在线工具 https://dnschecker.org/,输入域名,选 A 记录,看全球各地是否解析到正确 IP。
🚨 重要提示: 在 DNS 解析基本生效前,别急着启动服务! 否则 Caddy 可能因为找不到你的域名对应的 IP 而申请证书失败!建议添加完 A 记录后,等个 10-15 分钟,或者用 ping 确认一下再进行下一步。
步骤 7: 点火,发射!🚀 (启动 Vaultwarden & Caddy)
万事俱备,只欠东风!是时候让我们的密码库跑起来了!
确认 SSH 终端还在项目目录: 输入 pwd 确认在 ~/vaultwarden。如果不在,cd ~/vaultwarden。
执行最终启动命令 (用 sudo 保险):
sudo docker compose up -ddocker compose up: 读取 docker-compose.yml,按图纸施工。
-d: 在后台运行 (detached),关掉 SSH 窗口服务也不会停。
接下来会发生啥?
Compose 会检查 vaultwarden 和 caddy 服务。
发现本地没镜像?自动从 Docker Hub 拉取 vaultwarden/server:latest 和 caddy:latest (首次运行需要点时间下载)。
镜像下载完,创建并启动两个容器。
Caddy 容器启动,读取 Caddyfile,发现你要搞定 your.domain.com 的 HTTPS,它会自动联系 Let's Encrypt,验证你的域名所有权(需要 DNS 生效 + 防火墙放行 80/443),然后 申请并配置好 SSL/TLS 证书。全程自动化,简直不要太爽!
检查“发射成果” (容器运行状态): 等上一步命令跑完,输入:
sudo docker compose ps你应该看到类似这样的输出:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS caddy caddy:latest "caddy run --config …" caddy About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 443/udp vaultwarden vaultwarden/server:latest "/start.sh" vaultwarden About a minute ago Up About a minute (healthy) 80/tcp, 3012/tcp盯住 STATUS 列: 确保 caddy 和 vaultwarden 都是 Up 或 running。(Vaultwarden 可能先 (health: starting),稍等几十秒再 ps 会变 (healthy))。如果有不是 Up 的,说明启动失败,得看日志找原因。
掏出“放大镜”看日志 (排错必备技能): 🕵️♂️
强烈建议!先看 Caddy 日志,确认 HTTPS 证书搞定了没:
sudo docker compose logs -f caddy-f: 持续输出新日志 (按 Ctrl+C 退出)。
找成功的信号: 如果在日志里看到类似 certificate obtained successfully 或 serving initial configuration 这样的信息,恭喜!HTTPS 自动搞定!🎉
看到错误? 比如 Timeout during connect, connection refused, No route to host, NXDOMAIN 等,多半是:
DNS 没生效或配错了 (回头看步骤 6)。
GCP 防火墙没开对端口或没应用到 VM (回头看步骤 5)。
网络抽风 (少见)。
仔细读错误信息,对症下药。改完配置后,用 sudo docker compose restart caddy 重启 Caddy 再看日志。
看看 Vaultwarden 启动日志 (可选):
sudo docker compose logs -f vaultwarden正常应该能看到类似 Rocket has launched from http://0.0.0.0:80。
混合双打看所有日志 (可选):
sudo docker compose logs -f
步骤 8: 验收成果 & 加固你的“密码堡垒” 🔒🏰
激动人心的时刻!看看我们的成果,并完成最后一步安全加固!
打开你的电脑/手机浏览器 (推荐用电脑先试试)。
在地址栏输入你的域名,务必带 https://开头! 例如:https://vw.yourdomain.com (换成你自己的域名)。
见证奇迹的时刻:
如果一切顺利,你应该能看到 Vaultwarden 那简洁的登录/注册页面了!
同时,检查浏览器地址栏左边的小锁头 🔒! 点击它,应该显示“连接是安全的”,证书是颁发给你域名的有效证书。这表示 Caddy 自动 HTTPS 魔法成功!
打不开?提示不安全?
确认域名拼写对吗?https:// 加了吗?
回去看 Caddy 日志,证书真的拿到了吗?
GCP 防火墙 443 端口开了吗?
清浏览器缓存,或者换个浏览器/无痕模式试试。
创建你的第一个(也是管理员)账号:
在 Vaultwarden 页面点 创建账户 (Create Account)。
填你的 邮箱地址 (这将是你的登录名)。
设置一个 【极其复杂】的主密码 (Master Password)!这是解开你整个密码库的唯一钥匙!用生命去记住它!可以设个密码提示。
创建账户!
‼️‼️‼️ 立刻!马上!关上“公共注册”的大门!‼️‼️‼️ (安全重中之重!)
你已经有账号了,赶紧禁止其他人也能在你的服务器上注册!
回到 SSH 终端 (还在 ~/vaultwarden 目录)。
先优雅地让服务暂停一下:
sudo docker compose down(别怕,数据和证书都在外面挂载的目录里,丢不了)
再次请出 nano 编辑器:
nano docker-compose.yml找到 environment: 下面那行 SIGNUPS_ALLOWED: 'true'。
把 'true' 改成 'false'。 (引号别丢!)
保存退出: Ctrl+X, Y, Enter。
用新配置重新启动服务:
sudo docker compose up -d搞定!现在除了你,没人能在你这儿注册了。你可以刷新下网页注册页面,应该会提示已禁用。
探秘管理员后台 (可选,好奇宝宝可以看看):
浏览器访问 https://你的域名.com/admin。
输入 Admin Token (就是你在步骤 3 设置的那个超级长的令牌),登录。
这里可以看服务器状态、管理用户(比如删掉手滑多注册的)、配置邮件发送(高级玩法)等。
不懂的设置别乱动,看看就好。
步骤 9: “传家宝”备份!备份!备份!(数据安全,重于泰山!) 💾🛡️
你的所有密码身家性命都在这台小鸡上,万一哪天 GCP 不免费了、服务器崩了、硬盘挂了…… 后果不堪设想!所以,数据备份不是选择题,是必做题!
备份啥? 核心数据都在 ~/vaultwarden/vw-data 文件夹。最保险是把整个 ~/vaultwarden 目录(包括 docker-compose.yml, Caddyfile, vw-data, caddy-data, caddy-config)都备份下来。
备份到哪? 千万别只存在本机! 要异地备份!
GCP Cloud Storage: GCP 自家存储,有免费额度,可写脚本自动上传 (推荐)。
其他网盘: OneDrive, Google Drive, Dropbox 等 (可能需要 rclone 等工具同步)。
你的 NAS 或另一台 VPS: 用 rsync 同步过去。
你自己的电脑: 定期手动 tar 打包 (tar czvf vaultwarden_backup_$(date +%Y%m%d).tar.gz ~/vaultwarden),然后用 scp 或 SFTP 工具 (如 FileZilla, WinSCP) 下载回来。
怎么备份?
手动 (懒人慎用): 定期想起来就去打包下载。容易忘!
自动 (强烈推荐): 写个简单的 Shell 脚本,打包 + gcloud storage cp (传到 GCS) 或 rclone copy (传到网盘) 等,然后用 Linux 的 cron 定时任务,设置每天凌晨自动执行一次。一劳永逸!(具体脚本网上搜“docker volume backup script”有很多例子)
备份频率? 看你密码更新多勤快。经常加新密码就 每天备份。佛系用户 每周备份 也行。
记住大佬的话:没有备份的自建服务,就是在玩火!🔥
步骤 10: 全平台客户端连接,爽歪歪! 💻📱⌚️
最后一步,让你在所有设备上都能丝滑地使用你的专属密码库!
下载 Bitwarden 官方客户端: 去官网 https://bitwarden.com/download/ 下载:
浏览器扩展 (必装!): Chrome, Firefox, Edge, Safari...
桌面应用: Windows, macOS, Linux
手机 App: iOS (App Store), Android (Google Play 或 F-Droid)
关键一步:配置自建服务器地址!
打开你下载的客户端,在登录界面,先别急着输邮箱密码!
找到 设置图标 (通常是齿轮 ⚙️) 或者类似 "登录选项" / "自托管环境" (Self-hosted Environment) 的地方。
点击它,找到 服务器 URL (Server URL) 或类似输入框。
填入你的 Vaultwarden 访问地址,必须带 https://! 例如:https://vw.yourdomain.com
保存设置!
登录! 回到登录界面,现在输入你在 步骤 8 注册的 邮箱地址 和你的 主密码。
Boom!登录成功! 客户端会从你的服务器同步数据。现在你可以开始添加、管理你的密码了!所有操作都会自动同步到你的服务器,并在你所有登录的设备间保持一致!
🎉 真・大功告成!你毕业了!🎉
恭喜你!历经九九八十一难(并没有),你亲手打造了一个完全属于你的、安全免费、全平台通用的私人密码保险库!这不仅省下了一笔订阅费,更是你掌控自己数字生活主权的一大步!
现在,快去把你那些散落在浏览器、记事本、大脑里的密码都“收编”进你的 Vaultwarden 吧!享受科技带来的安全感和便捷性!
觉得这篇“喂饭级”教程让你功力大增?别忘了【点赞👍】【收藏⭐】【评论✍️】三连击!分享给更多还在密码苦海挣扎的朋友吧!让他们也一起上车! 😉👇
作者提示含AI生成内容。

cwz1985
校验提示文案
浮生不得闲
请假下,这玩意儿,装好了,需要科技上网,才能登录或者备份密码吗?
校验提示文案
taiyixiaozi
校验提示文案
一万个一万
校验提示文案
吃蜂蜜的猫
校验提示文案
liloew
校验提示文案
liloew
校验提示文案
cwz1985
校验提示文案
吃蜂蜜的猫
校验提示文案
一万个一万
校验提示文案
taiyixiaozi
校验提示文案
浮生不得闲
请假下,这玩意儿,装好了,需要科技上网,才能登录或者备份密码吗?
校验提示文案