搬瓦工VPS
Bandwagonhost

搬瓦工 VPS 部署 2FAuth 教程:Docker 自托管二步验证管理器

2FAuth 是一款可以自托管的二步验证(2FA)管理工具,基于 PHP Laravel 开发,可以把验证码数据保存在自己的 VPS 或服务器中,并通过 Web 页面访问。和常见手机验证器 App 相比,2FAuth 的主要区别是数据由自己管理,迁移、备份和跨设备访问都可以放在自己的服务器环境中完成。

本文使用搬瓦工 VPS 的 Debian 12 系统,通过 Docker 和 Docker Compose 部署 2FAuth。部署过程中要处理好 data 目录权限、APP_KEY、SQLite 数据库持久化和后续访问安全,否则容易遇到 Permission denied、500 错误或数据无法保存的问题。

2FAuth 保存的是二步验证密钥,不建议长期使用公网 HTTP 地址访问。文中的 http://服务器IP:8000 只用于安装和测试,准备正式使用前,建议绑定域名并配置 HTTPS。

一、准备工作与系统检查

本次测试环境如下:

  • VPS:搬瓦工 VPS
  • 系统:Debian GNU/Linux 12 bookworm
  • 架构:x86_64
  • 部署方式:Docker Compose
  • 访问端口:8000

登录 SSH 后,先确认系统版本和 CPU 架构:

cat /etc/os-release
uname -m
apt update

如果系统显示 Debian 12,架构显示 x86_64,并且 apt update 可以正常读取软件源,就可以继续安装 Docker。

搬瓦工 VPS SSH 中显示 Debian 12 系统版本、x86_64 架构和 apt update 更新结果

通过 SSH 查看搬瓦工 VPS 系统版本、架构,并确认 Debian 12 软件源可正常更新。

如果系统提示有软件包可以升级,可以先执行:

apt upgrade -y

如果升级过程中更新了 Linux 内核,建议重启一次 VPS:

reboot

重新登录 SSH 后,可以查看当前内核版本:

uname -r

二、安装 Docker 和 Docker Compose

先安装添加 Docker 官方软件源需要用到的基础组件:

apt install -y ca-certificates curl gnupg

然后创建 keyrings 目录,并下载 Docker GPG key:

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

继续添加 Docker 官方 Debian 软件源:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update

如果输出中出现 download.docker.com/linux/debian bookworm,说明 Docker 软件源已经添加成功。

接着安装 Docker Engine 和 Docker Compose 插件:

apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装完成后,分别检查 Docker 和 Docker Compose 版本:

docker --version
docker compose version

命令输出如下:

Docker version 29.5.3, build d1c06ef
Docker Compose version v5.1.4
搬瓦工 VPS 终端显示 Docker 29.5.3 和 Docker Compose v5.1.4 版本信息

在搬瓦工 VPS 上检查 Docker 与 Docker Compose 版本,确认后续可用 Docker Compose 部署 2FAuth。

再检查 Docker 服务是否正在运行:

systemctl is-active docker

如果返回:

active

说明 Docker 服务已经启动。也可以使用下面的命令查看完整状态:

systemctl status docker --no-pager
搬瓦工 VPS 终端显示 Docker 服务为 active running 并已设置开机启动

检查 Docker 服务状态,确认 Docker 已启动并设置为开机自启。

Docker 和 Docker Compose 安装完成后,这台 VPS 后续也可以继续部署其他自托管应用。如果你还想搭建自动化工作流,可以参考 搬瓦工 VPS 部署 n8n 教程,用同类 Docker 环境接入 DeepSeek 和 n8n。

三、创建 2FAuth 数据目录并设置权限

2FAuth 的 Docker 容器内部使用 UID/GID 为 1000:1000 的用户运行。如果宿主机数据目录由 root 创建但没有修改权限,容器可能无法写入 SQLite 数据库,后续就容易遇到权限报错或容器反复重启。

先创建 2FAuth 项目目录和数据目录:

mkdir -p /root/data/docker_data/2fauth/data
cd /root/data/docker_data/2fauth
pwd
ls -ld /root/data/docker_data/2fauth /root/data/docker_data/2fauth/data

刚创建完成时,目录通常属于 root root

drwxr-xr-x 3 root root 4096 ... /root/data/docker_data/2fauth
drwxr-xr-x 2 root root 4096 ... /root/data/docker_data/2fauth/data
搬瓦工 VPS 终端显示 2FAuth data 目录创建后默认属于 root root 用户

创建 2FAuth 数据目录后查看权限,确认 data 目录初始归属为 root root。

接着把 data 目录的所有权改成 1000:1000

chown -R 1000:1000 /root/data/docker_data/2fauth/data
ls -ldn /root/data/docker_data/2fauth/data

看到类似下面的结果,说明权限已经处理完成:

drwxr-xr-x 2 1000 1000 4096 ... /root/data/docker_data/2fauth/data
搬瓦工 VPS 终端显示 2FAuth data 目录权限已修改为 1000 1000

将 2FAuth 的 data 目录所有权改为 1000:1000,确保容器可以写入数据库文件。

四、配置 .env 环境变量和 APP_KEY

2FAuth 运行前需要配置 APP_KEY。这个值用于 Laravel 应用加密,不能公开展示,也不要发给他人。

下面这组命令会自动生成新的 APP_KEY,并写入 .env 文件。执行时会提示输入服务器公网 IP,输入你的搬瓦工 VPS IP 后回车即可。

cd /root/data/docker_data/2fauth

APP_KEY=$(docker run --rm --entrypoint /usr/bin/php 2fauth/2fauth:latest artisan key:generate --show)

read -p "请输入服务器公网IP: " SERVER_IP

cat > .env <<EOF
APP_NAME=2FAuth
APP_ENV=production
APP_DEBUG=false
APP_URL=http://${SERVER_IP}:8000
APP_KEY=${APP_KEY}
DB_CONNECTION=sqlite
EOF

chmod 600 .env

grep -E '^(APP_NAME|APP_ENV|APP_DEBUG|APP_URL|DB_CONNECTION)=' .env
grep '^APP_KEY=base64:' .env >/dev/null && echo "APP_KEY 已写入 .env"

命令执行完成后,正常情况下会看到类似下面的输出:

APP_NAME=2FAuth
APP_ENV=production
APP_DEBUG=false
APP_URL=http://你的服务器IP:8000
DB_CONNECTION=sqlite
APP_KEY 已写入 .env
搬瓦工 VPS 创建 2FAuth .env 配置文件并确认 APP_KEY 已写入

创建 2FAuth 的 .env 配置文件,并确认 APP_KEY 已成功写入。

五、编写 docker-compose.yml 配置文件

继续在 /root/data/docker_data/2fauth 目录下创建 Docker Compose 配置文件:

cd /root/data/docker_data/2fauth

cat > docker-compose.yml <<'EOF'
services:
  2fauth:
    image: 2fauth/2fauth:latest
    container_name: 2fauth
    restart: unless-stopped
    ports:
      - "8000:8000"
    env_file:
      - .env
    volumes:
      - ./data:/2fauth
EOF

cat docker-compose.yml

这里的关键配置是:

  • ports:把宿主机的 8000 端口映射到容器 8000 端口。
  • env_file:读取当前目录下的 .env 配置文件。
  • volumes:把宿主机 ./data 目录挂载到容器内 /2fauth
搬瓦工 VPS 终端创建 2FAuth docker-compose.yml 文件并配置 8000 端口和 data 目录挂载

创建 2FAuth 的 docker-compose.yml 文件,配置容器名称、端口映射、环境变量文件和数据目录挂载。

启动前可以再检查一下当前目录结构和权限:

cd /root/data/docker_data/2fauth
ls -la
ls -ldn data

正常情况下,应能看到 .envdocker-compose.ymldata 目录,其中 .env 权限为 600data 目录归属为 1000:1000

六、启动 2FAuth Docker 容器

确认配置文件和目录权限没有问题后,启动 2FAuth:

docker compose up -d

如果输出类似下面这样,说明容器已经创建并启动:

[+] up 2/2
 ✔ Network 2fauth_default Created
 ✔ Container 2fauth       Started
搬瓦工 VPS 执行 docker compose up -d 成功启动 2FAuth 容器

执行 docker compose up -d 后,2FAuth 网络创建完成,容器成功启动。

接着查看容器运行状态:

docker compose ps

正常情况下,可以看到 2fauth 容器处于 Up 状态,并且端口已经映射:

0.0.0.0:8000->8000/tcp
搬瓦工 VPS 终端显示 2FAuth 容器处于 Up 状态并映射 8000 端口

检查 2FAuth 容器状态,确认容器已启动并监听 8000 端口。

七、检查 2FAuth 初始化状态和数据库文件

容器启动后,先查看应用初始化日志,确认数据库是否创建成功:

docker compose logs --tail=120 2fauth

如果日志中出现下面这些内容,说明 2FAuth 已经完成数据库初始化:

/2fauth/database.sqlite does not exist, we create it
INFO  Preparing database.
INFO  Running migrations.
create_users_table ... DONE
create_options_table ... DONE
create_twofaccounts_table ... DONE
INFO  Encryption keys generated successfully.

日志里如果出现 Client secret,不用复制或保存这类内容。确认 Running migrations 和多项 DONE 后,继续检查宿主机 data 目录是否已经生成数据库文件:

cd /root/data/docker_data/2fauth
ls -la data

正常情况下,可以看到:

database.sqlite
installed
storage

其中 database.sqlite 是 2FAuth 的 SQLite 数据库文件,后续备份时需要重点备份它。

搬瓦工 VPS 终端显示 2FAuth data 目录中已生成 database.sqlite 数据库文件

检查 2FAuth 的 data 目录,确认 database.sqlite 已生成并持久化保存。

八、访问 2FAuth 登录页面

先在 VPS 内部测试 2FAuth 是否有响应:

curl -I http://127.0.0.1:8000

如果返回:

HTTP/1.1 200 OK

说明 2FAuth 的 Web 服务已经正常响应。

这条命令的输出中可能包含 Set-Cookie。这是临时会话信息,看到 HTTP/1.1 200 OK 就可以继续下一步。

然后在浏览器中访问:

http://你的服务器IP:8000

如果能看到 2FAuth 登录页面,说明部署已经完成。页面底部有 Register 注册入口,可以注册第一个账号。

浏览器打开搬瓦工 VPS 上部署的 2FAuth 登录页面

浏览器访问服务器 8000 端口后,成功打开 2FAuth 登录页面。

九、安全与备份建议

2FAuth 保存的是二步验证密钥,部署成功后不要只停留在“能打开页面”。

如果准备长期使用 2FAuth,建议先把 VPS 的基础安全做好,包括 SSH 密钥登录、防火墙规则和异常登录防护。相关操作可以参考 搬瓦工 VPS 安全加固教程,先把服务器入口保护好,再继续保存二步验证密钥。

准备长期使用前,建议处理下面几件事:

  • 不要长期使用 HTTP 裸 IP 访问,建议绑定域名并配置 HTTPS。
  • 如果后续改成域名和 HTTPS 访问,需要同步修改 .env 里的 APP_URL,然后重启容器。
  • 不要公开 .env 文件内容,尤其是 APP_KEY
  • 不要把 Client secretSet-Cookie、账号邮箱、恢复码或二维码发给他人。
  • 定期备份 /root/data/docker_data/2fauth/data/database.sqlite
  • 不要随意修改 APP_KEY,否则可能导致原有加密数据无法读取。

除了备份 database.sqlite,VPS 本身也建议保留快照或灾难恢复方案。2FAuth 这类服务一旦丢失数据库,恢复成本会很高,可以参考 搬瓦工 VM 数据保险教程,提前规划快照、备份和故障恢复流程。

如果后续需要停止 2FAuth,可以在项目目录执行:

cd /root/data/docker_data/2fauth
docker compose down

如果需要重新启动:

cd /root/data/docker_data/2fauth
docker compose up -d

如果需要查看运行状态:

cd /root/data/docker_data/2fauth
docker compose ps

如果需要查看日志:

cd /root/data/docker_data/2fauth
docker compose logs --tail=120 2fauth

十、总结

到这里,2FAuth 已经可以在搬瓦工 VPS 上正常运行。教程使用 Debian 12 系统,先安装 Docker 和 Docker Compose,再创建 2FAuth 数据目录,提前把 data 目录权限改为 1000:1000,然后创建 .envdocker-compose.yml 文件,最后启动容器并检查日志、数据库文件和浏览器访问结果。

部署 2FAuth 时,最容易出问题的是目录权限和数据持久化。只要 data 目录权限正确,database.sqlite 能正常生成到宿主机目录,后续重启容器或更新镜像时,2FAuth 的数据就不会因为容器删除而丢失。

部署完成后,http://服务器IP:8000 可以用于测试访问。准备长期保存二步验证密钥时,建议先配置 HTTPS,再注册账号和导入验证码。

搬瓦工 VPS 套餐与购买参考
购买前建议先确认套餐区别、购买流程和优惠码,避免选错方案或漏用折扣。
下方表格整理了常见搬瓦工 VPS 套餐,包含配置、机房、价格和购买入口,适合快速对比。
套餐CPU内存硬盘流量带宽机房价格购买
KVM
(最便宜)
2核1GB20GB1TB1GbpsDC2 AO
DC8 ZNET
$49.99/年
最便宜
购买
3核2GB40GB2TB1Gbps$52.99/半年
$99.99/年
购买
CN2 GIA-E
最推荐
2核1GB20GB1TB2.5GbpsDC6 CN2 GIA-E
DC9 CN2 GIA
软银 JPOS_1
荷兰 EUNL_9
圣何塞 CN2 GIA
加拿大 CN2 GIA
$49.99/季度
$169.99/年
购买
3核2GB40GB2TB2.5Gbps$89.99/季度
$299.99/年
购买
SLA
(SLA 保障)
2核
独享
1GB20GB1TB2.5Gbps美国 DC5 SLA
99.99% 在线率
每两周免费换IP一次
$65.89/季
$239.99/年
购买
3核
独享
2GB40GB2TB2.5Gbps$116.99/季
$399.99/年
购买
香港(HKHK_8)
高端首选
2核2GB40GB0.5TB1Gbps中国香港
日本东京
日本大阪
新加坡
$89.99/月
$899.99/年
购买
4核4GB80GB1TB1Gbps$155.99/月
$1559.99/年
购买
大阪(JPOS_6)
(高性价比)
2核2GB40GB0.5TB1.5Gbps日本大阪$49.99/月
$499.99/年
购买
4核4GB80GB1TB1.5Gbps$86.99/月
$869.99/年
购买
选择建议:
  • 入门:KVM 常规套餐价格较低,适合预算有限、建站测试或轻量使用。
  • 推荐:CN2 GIA-E 套餐机房选择更多,线路表现更适合大陆访问用户。
  • 高端:香港、日本大阪等套餐价格更高,适合对延迟、机房位置或线路有明确需求的用户。
【常驻小尾巴】
无论本文聊的是 VPS、脚本还是一杯拿铁,我们都为折腾留了一个出口——
👥 搬瓦工中文网QQ交流群:238290124
一句话简介:技术闲聊、优惠爆料、翻车互助、红包随机掉落。
我们在这里等你一起把不可能变成日常。

关于搬瓦工 (BandwagonHost)

搬瓦工隶属于加拿大 IT7 Networks,是全球知名的 VPS 提供商。提供基于 KVM 架构的高性能主机,拥有包括香港、东京、洛杉矶在内的 20 个顶级机房。其自研的 KiwiVM 面板支持机房一键迁移、快照备份及 API 管理,以稳定性和极速直连线路著称。

搬瓦工购买教程搬瓦工套餐汇总