You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2上Weblate Docker实例重建后丢失SSH密钥,如何持久化存储?

解决方案:将Weblate的SSH密钥存储到持久化存储

完全可以将Weblate的SSH密钥存储到持久化存储中,核心思路是将容器内存储密钥的目录挂载到AWS的持久化存储服务,避免EC2或容器重建时密钥丢失。以下是具体实现步骤:

1. 确定Weblate SSH密钥的默认存储路径

Weblate容器默认将SSH密钥存储在/app/data/.ssh目录下,这是需要持久化的核心目录。

2. 选择AWS持久化存储方案

根据你的部署场景选择合适的存储:

  • EBS卷:适合单EC2实例部署,挂载到EC2后直接映射给容器使用。
  • EFS文件系统:适合多EC2实例共享的集群场景,跨实例自动同步密钥,无需额外配置。

3. 配置Docker挂载持久化目录

单容器启动方式

假设你已将持久化存储挂载到EC2的/mnt/weblate_ssh路径,启动容器时添加挂载参数:

docker run -v /mnt/weblate_ssh:/app/data/.ssh weblate/weblate

Docker Compose方式

在docker-compose.yml中添加卷挂载配置:

services:
  weblate:
    image: weblate/weblate
    volumes:
      - /mnt/weblate_ssh:/app/data/.ssh

4. 迁移现有SSH密钥到持久化存储

如果容器中已有可用的SSH密钥,先将其复制到持久化目录:

docker cp <你的容器ID>:/app/data/.ssh/ /mnt/weblate_ssh/

然后修正目录和文件权限(确保Weblate容器运行用户可读取):

chmod 700 /mnt/weblate_ssh
chmod 600 /mnt/weblate_ssh/id_rsa

5. 验证持久化效果

销毁并重建EC2实例后,重新挂载持久化存储到相同的本地路径,启动Weblate容器。检查容器内/app/data/.ssh目录是否存在密钥文件,测试Bitbucket VCS同步功能是否正常。

注意事项

  • 不要使用EC2实例存储(临时存储),实例销毁后数据会直接丢失。
  • 使用EBS时,需确保EC2重建时将EBS卷重新挂载到指定路径;使用EFS时,只要EC2在同一VPC且有权限,挂载路径一致即可自动同步数据。

内容的提问来源于stack exchange,提问作者Daniele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:35:43