根据https://github.com/drakkan/sftpgo中的readme.md,创建第一个管理员的一种方法是在配置文件中启用create_default_admin并设置环境变量SFTPGO_DEFAULT_ADMIN_USERNAME和SFTPGO_DEFAULT_ADMIN_PASSWORD。
我按照此操作,尽管设置成功,但我无法创建第一个管理员。
我想这样做的原因是在 GCP 上自动创建 SFTPGo 实例,然后使用一些预定义的管理员用户名和密码对其进行初始化。
这是我使用的启动脚本:
metadata_startup_script = <<-SCRIPT
#!/bin/bash
# Install SFTPGo
sudo apt-get update
sudo add-apt-repository -y ppa:sftpgo/sftpgo
sudo apt update
sudo apt-get install -y sftpgo
# Set ENV Variables
echo 'export SFTPGO_DEFAULT_ADMIN_USERNAME="user"' | sudo tee -a /etc/environment
echo 'export SFTPGO_DEFAULT_ADMIN_PASSWORD="password"' | sudo tee -a /etc/environment
# Apply changes to the current shell
source /etc/environment
# Change create_default_admin to true
sudo -s && jq '.data_provider.create_default_admin = true' /etc/sftpgo/sftpgo.json > temp.json && mv temp.json /etc/sftpgo/sftpgo.json
# Restart the shell to apply changes
exec bash
SCRIPT
虽然我的脚本中的所有内容都有效,但当我安装 SFTPGo 后第一次访问“https://IP:8080/web/admin”时,它仍然要求我创建第一个管理员。
我像这样重新启动了服务:
sudo systemctl restart sftpgo
服务重启失败。 我检查了这样的日志:
journalctl -u sftpgo
我看到这个错误:
{"level":"error","time":"2023-10-17T00:50:46.006","sender":"service","message":"error initializing data provider: to create the default admin you need to set the env vars \"SFTPGO_DEFAULT_ADMIN_USERNAME\" and \"SFTPGO_DEFAULT_ADMIN_PASSWORD\"""}
如果我在这里遗漏了什么,有人可以告诉我吗?我确实正在设置这些 ENV 变量。我登录到实例并检查所需的 ENV 变量是否已全局声明。
*如果这个问题非常特定于 Stack Overflow 上的服务,我们深表歉意
根据 sftpgo systemd 文件,您可以使用
/etc/sftpgo/sftpgo.env
作为 env 文件。
尝试将您的环境变量添加到此文件中:
echo 'SFTPGO_DEFAULT_ADMIN_USERNAME="admin"' >> /etc/sftpgo/sftpgo.env
echo 'SFTPGO_DEFAULT_ADMIN_PASSWORD="password"' >> /etc/sftpgo/sftpgo.env