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