切換菜單
切換偏好設定選單
切換個人選單
尚未登入
若您做出任何編輯,會公開您的 IP 位址。
於 2026年2月1日 (日) 01:06 由 Feng對話 | 貢獻 所做的修訂

2FAuth 是一款由 PHP (Laravel) 編寫的自託管二步驗證(2FA)管理工具。相比 Google Authenticator,它最大的優勢在於數據完全掌握在自己手中,且支持 Web 端跨設備訪問。

注意:該項目對文件權限和路徑映射非常敏感。網上的舊教程(包括部分官方文檔示例)容易導致 Permission denied500 Server Error

0. 環境準備

  • 伺服器系統:Debian 11/12 或 Ubuntu 20.04+
  • 核心組件:Docker & Docker Compose

如果你的搬瓦工伺服器是剛連上SSH客戶端的話,請先執行下面的一鍵命令安裝 Docker:

apt update && apt upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable --now docker

執行完上面的命令,再輸入systemctl status docker 並回車。

看到Active: active 就說明docker已經成功安裝並正在運行中了。


1. 建立目錄與解決權限(這裏很關鍵)

這是大部分人失敗的原因:Docker 自動創建的目錄屬於 root 用戶,而 2FAuth 容器內部使用 1000 (www-data) 用戶,導致沒有權限寫入數據庫。

我們需要先創建目錄,並提前授權(四條命令從上到下依次輸入):

# 1. 创建项目根目录
mkdir -p /root/data/docker_data/2fauth

# 2. 创建核心数据目录
mkdir -p /root/data/docker_data/2fauth/data

# 3. 【核心步骤】修改权限
# 将 data 目录的所有权赋予容器内的用户(ID 1000)
# 如果不做这一步,容器会因无法生成数据库文件而无限重启
chown -R 1000:1000 /root/data/docker_data/2fauth/data

# 4. 进入项目目录
cd /root/data/docker_data/2fauth

2. 生成 APP_KEY

Laravel 框架必須有一個 32 位的密鑰才能運行。在終端執行以下命令,複製 輸出的字符串(可以先複製到電腦的記事本上):

openssl rand -base64 32

輸出示例:base64:xgT+...(一长串字符)...=

3. 配置文件編寫

我們需要創建兩個文件:.envdocker-compose.yml

第一步:創建 .env 文件

這裏我們移除了容易引發衝突的數據庫路徑配置,直接使用容器默認值。

vim .env

粘貼以下內容(請務必替換你的 APP_KEY):

# --- 基础配置 ---
APP_NAME=2FAuth
APP_ENV=production
APP_DEBUG=false
APP_URL=http://你的服务器IP:8000

# --- 密钥配置 (必须修改) ---
# 将第2步生成的 base64 字符串完整粘贴在这里
APP_KEY=base64:你刚刚生成的密钥

# --- 数据库配置 ---
# 仅保留连接类型,不要手动指定 DB_DATABASE 路径!
# 让容器自动使用默认的 /2fauth/database.sqlite
DB_CONNECTION=sqlite

第二步:創建 docker-compose.yml

vim docker-compose.yml

粘貼以下內容。注意:我們將整個 ./data 掛載到了容器的 /2fauth 目錄,這樣可以確保存儲、日誌和數據庫都能正確持久化且互不衝突。

version: "3"
services:
  2fauth:
    image: 2fauth/2fauth:latest
    container_name: 2fauth
    restart: unless-stopped
    ports:
      - 8000:8000/tcp
    env_file: .env
    volumes:
      # 【核心修改】直接挂载应用根目录
      # 这样 database.sqlite 会自动生成在宿主机的 ./data 目录下
      - ./data:/2fauth

4. 啟動服務

確認當前目錄結構如下:

  • /2fauth
    • .env
    • docker-compose.yml
    • /data (權限已改為 1000:1000)

執行啟動命令:

docker compose up -d

5. 驗證部署

查看實時日誌:

docker compose logs -f

部署成功的標誌: 你需要耐心等待幾秒鐘,當你看到日誌中出現密密麻麻的 Running migrations,並且包含 create_users_tablecreate_options_table 等字樣,最後停在:

Application key set successfully.

這說明數據庫初始化已經完成!

現在,打開瀏覽器訪問 http://你的IP:8000,即可看到登錄界面。點擊 Register 註冊你的第一個賬號(自動成為管理員)。

完成後,需要給網站加上HTTPS進行訪問的話,可以參考:如何搭建Nginx Proxy Manager並使用反向代理和遠程桌面加速