TOTP Vault DocsDeployment & Recovery
TOTP VAULT · OPERATIONS GUIDE · v1.2.0

宝塔与运行环境

第三章 宝塔与运行环境

说明

安装 Nginx、PHP 8.2、扩展、AGE,并完成域名与站点基础配置。

#12. 宝塔只安装必要软件

宝塔面板

🧰 执行位置:宝塔面板(部分步骤配合 SSH)

下方命令块可以直接复制;带“检查/预期”的内容用于核对结果,不要当作命令输入。

进入:

宝塔 → 软件商店

安装:

Nginx
PHP 8.2

本项目不需要:

MySQL
MariaDB
Redis
Docker
Node.js 常驻
Java
phpMyAdmin
FTP

#13. PHP 8.2 扩展

宝塔面板

🧰 执行位置:宝塔面板(部分步骤配合 SSH)

下方命令块可以直接复制;带“检查/预期”的内容用于核对结果,不要当作命令输入。

进入:

宝塔 → 软件商店 → PHP 8.2 → 安装扩展

确保:

pdo_sqlite
sqlite3
sodium
curl
mbstring
fileinfo
openssl
json

检查:

/www/server/php/82/bin/php -v
/www/server/php/82/bin/php -r '
foreach (["pdo_sqlite","sqlite3","sodium","curl","json","mbstring","openssl","fileinfo"] as $extension) {
    echo $extension . ": " . (extension_loaded($extension) ? "OK" : "MISSING") . PHP_EOL;
}
'

必须至少:

pdo_sqlite: OK
sodium: OK
curl: OK
json: OK
mbstring: OK

#14. PHP 禁用函数

宝塔面板

🧰 执行位置:宝塔面板(部分步骤配合 SSH)

下方命令块可以直接复制;带“检查/预期”的内容用于核对结果,不要当作命令输入。

进入:

宝塔 → PHP 8.2 → 禁用函数

最终必须长期可用:

proc_open

AGE 加密备份和恢复都依赖它。

检查:

/www/server/php/82/bin/php -r '
echo "proc_open: " . (function_exists("proc_open") ? "AVAILABLE" : "DISABLED") . PHP_EOL;
'

必须:

proc_open: AVAILABLE

putenv

可以禁用。
最终安装脚本检测到 putenv 不可用时会跳过可选 Composer 步骤。

shell_exec

可以禁用。
如果禁用,创建管理员时密码可能不能隐藏回显,但最终代码不会因此 Fatal Error。

#15. 安装服务器 AGE

服务器 SSH / 终端

🖥️ 执行位置:服务器 SSH / 终端

下方命令块可以直接复制;带“检查/预期”的内容用于核对结果,不要当作命令输入。

Ubuntu 22.04:

apt update
apt install -y age
command -v age
age --version

正常:

/usr/bin/age

最终安装脚本会自动写入正确 AGE_BINARY


#16. 域名 DNS

浏览器 / Microsoft Entra

🌐 执行位置:浏览器 / Microsoft Entra / 网站后台

下方命令块可以直接复制;带“检查/预期”的内容用于核对结果,不要当作命令输入。

添加 A 记录:

类型:A
主机:2fa
值:服务器公网 IPv4

检查:

getent ahostsv4 2fa.example.com

Windows:

nslookup 2fa.example.com

必须解析到新服务器。

没有使用 IPv6 时,不要保留错误的 AAAA 记录。


#17. 宝塔创建网站

宝塔面板

🧰 执行位置:宝塔面板(部分步骤配合 SSH)

下方命令块可以直接复制;带“检查/预期”的内容用于核对结果,不要当作命令输入。

宝塔 → 网站 → 添加站点

填写:

域名:2fa.example.com
根目录:/www/wwwroot/2fa.example.com
PHP:8.2
数据库:不创建
FTP:不创建

#18. 防跨站攻击 / open_basedir

宝塔面板

🧰 执行位置:宝塔面板(部分步骤配合 SSH)

下方命令块可以直接复制;带“检查/预期”的内容用于核对结果,不要当作命令输入。

部署阶段建议:

宝塔 → 网站 → 站点 → 网站目录 → 防跨站攻击
关闭

原因:

程序必须访问:

/www/server/totp-vault/data
/www/server/totp-vault/secrets
/www/server/totp-vault/tmp

如果以后一定要开启 open_basedir,至少允许:

/www/wwwroot/2fa.example.com/
/www/server/totp-vault/
/tmp/
/proc/

开启后必须重新测试网页与:

sudo -u www /www/server/php/82/bin/php artisan totp:health --online