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

发布与命令速查

第十章 发布与命令速查

说明

源码发布检查、版本更新、常用命令、上线清单与禁止事项。

#51. 发布给其他人前检查源码包

服务器 SSH / 终端

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

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

最终发布 ZIP 内不得包含:

.env
database.sqlite
vault.key
secure-store.enc
AGE Private Key
Microsoft Client Secret
Access Token
Refresh Token
真实 Tenant ID
真实 Client ID
真实域名配置
真实管理员账号数据
storage/logs 中真实日志

检查:

unzip -l TOTP-Vault-v1.2.0-Baota-Final-20260824.zip

源码包应该只有模板与空 .gitkeep 数据目录。


#52. 更新最终源码到已有网站

服务器 SSH / 终端

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

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

先备份:

cd /www/wwwroot/2fa.example.com
PHP_BINARY=/www/server/php/82/bin/php bash scripts/backup.sh

备份关键运行配置:

UPGRADE_BAK="/root/totp-vault-upgrade-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$UPGRADE_BAK"
cp -a .env "$UPGRADE_BAK/.env"
cp -a /www/server/totp-vault/data/database.sqlite "$UPGRADE_BAK/database.sqlite"
cp -a /www/server/totp-vault/secrets/vault.key "$UPGRADE_BAK/vault.key"
cp -a /www/server/totp-vault/secrets/secure-store.enc "$UPGRADE_BAK/secure-store.enc" 2>/dev/null || true
chmod -R go-rwx "$UPGRADE_BAK"

替换源码时:

保留 .env
不要覆盖 /www/server/totp-vault/data
不要覆盖 /www/server/totp-vault/secrets

替换后:

cd /www/wwwroot/2fa.example.com
/www/server/php/82/bin/php artisan totp:migrate
/www/server/php/82/bin/php artisan totp:test
sudo -u www /www/server/php/82/bin/php artisan totp:health --online
/etc/init.d/php-fpm-82 restart
/etc/init.d/nginx reload

#53. 最常用命令

服务器 SSH / 终端

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

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

#PHP

/www/server/php/82/bin/php -v

#项目测试

cd /www/wwwroot/2fa.example.com
/www/server/php/82/bin/php artisan totp:test

#健康检查

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

#在线健康检查

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

#手动备份

PHP_BINARY=/www/server/php/82/bin/php bash scripts/backup.sh

#延迟备份

PHP_BINARY=/www/server/php/82/bin/php bash scripts/backup-due.sh

#Nginx

/www/server/nginx/sbin/nginx -t
/etc/init.d/nginx reload

#PHP 重启

/etc/init.d/php-fpm-82 restart

#日志

tail -n 100 /www/wwwroot/2fa.example.com/storage/logs/php-error.log
tail -n 100 /www/wwwlogs/2fa.example.com.error.log

#AGE

command -v age
age --version

#proc_open

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

#54. 最终上线 Checklist

核对 / 预期结果

用途:核对 / 验收 / 发布前检查

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

#系统

#PHP

#数据安全

#Web

#Microsoft

#AGE

#备份


#55. 绝对不要做

核对 / 预期结果

用途:核对 / 验收 / 发布前检查

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

不要:

chmod -R 777 /www

不要:

rm -rf /www/server/totp-vault/secrets/vault.key

不要把:

AGE Private Key
vault.key
secure-store.enc
.env
Microsoft Client Secret
Refresh Token

上传公开 GitHub 或发给不可信第三方。

不要用新生成 vault.key 去尝试解密旧数据库。

不要在唯一生产实例上做第一次恢复演练。


#56. 官方参考

核对 / 预期结果

用途:核对 / 验收 / 发布前检查

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

宝塔官方安装:

https://docs.bt.cn/getting-started/quick-installation-of-bt-panel

Microsoft Authorization Code Flow:

https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow

Microsoft Graph Files.ReadWrite 权限:

https://learn.microsoft.com/en-us/graph/permissions-reference

Microsoft Graph 创建 OneDrive 文件夹:

https://learn.microsoft.com/en-us/graph/api/driveitem-post-children?view=graph-rest-1.0

AGE 官方:

https://github.com/FiloSottile/age/releases