如何找回DigitalOcean上已部署Supabase实例的丢失JWT并生成API密钥
解决DigitalOcean Droplet上Supabase丢失JWT密钥的问题
完全无需重新部署实例或丢失数据,直接通过Droplet控制台操作即可重新生成anon API密钥和service密钥,具体步骤如下:
1. 进入Supabase部署目录
登录Droplet控制台后,切换到Supabase默认安装目录:
cd /home/supabase
2. 生成新的JWT密钥
使用OpenSSL生成一个安全的32位十六进制密钥:
openssl rand -hex 32
复制生成的字符串,后续配置会用到。
3. 更新环境变量文件
编辑.env配置文件,替换相关密钥字段:
nano .env
找到以下字段并更新:
JWT_SECRET:直接设置为刚生成的密钥字符串ANON_KEY:格式为eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiJ9.${新密钥},替换末尾的密钥部分SERVICE_ROLE_KEY:格式为eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIn0.${新密钥},同样替换末尾的密钥部分
保存并退出编辑器(按Ctrl+O回车确认,再按Ctrl+X退出)。
4. 同步docker-compose.yml配置(如需要)
检查docker-compose.yml文件中的环境变量配置,确保JWT_SECRET、ANON_KEY、SERVICE_ROLE_KEY与.env文件中的内容一致,若不一致则同步修改:
nano docker-compose.yml
5. 重启Supabase服务
让新配置生效,重启所有Supabase容器:
docker-compose down && docker-compose up -d
6. 验证密钥有效性
重启完成后,用新的anon密钥调用Supabase API(比如查询公开数据表),或通过Dashboard测试功能,确认服务正常运行且密钥有效。
注意:新密钥生效后,旧密钥签发的JWT会立即失效,需同步更新所有使用旧密钥的客户端应用配置。
内容的提问来源于stack exchange,提问作者Gwhyyy
相关产品推荐
相关产品推荐

