如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本项目提供基于OpenSSH的SFTP服务器Docker镜像,支持通过Docker CLI、Docker Compose及Kubernetes(kubectl和Helm)进行部署,适用于需要安全文件传输的场景,可灵活配置用户、权限及存储路径。
适用于企业内部文件共享、服务器间数据同步、开发环境文件传输等需要安全文件传输的场景,支持单机部署和容器集群部署,满足不同规模的文件传输需求。
若需要帮助或发现bug,请在https://github.com/emberstack/docker-sftp GitHub项目提交issue,也可加入Slack工作区交流:
SFTP服务器使用JSON格式配置文件定义全局选项和用户信息,该文件需挂载到容器内/app/config/sftp.json路径。不支持环境变量配置(原因见下文"高级配置"部分)。
基础配置示例
json{ "Global": { "Chroot": { "Directory": "%h", "StartPath": "sftp" }, "Directories": ["sftp"] }, "Users": [ { "Username": "demo", "Password": "demo" } ] }
此配置创建用户demo(密码demo),在用户主目录下创建sftp目录并设为可读写,用户被chroot到/home/demo目录,连接后起始路径为sftp。可添加多用户、自定义目录或按用户覆盖起始路径,也可指定用户UID和GID(详见"高级配置")。
Docker CLI部署
简单启动
shellsession$ docker run -p 22:22 -d --name sftp emberstack/sftp
使用默认配置启动SFTP容器,可通过用户demo、密码demo连接。
自定义配置
shellsession$ docker run -p 22:22 -d --name sftp -v /host/sftp.json:/app/config/sftp.json:ro emberstack/sftp
使用主机/host/sftp.json文件覆盖默认配置。
挂载用户目录
shellsession$ docker run -p 22:22 -d --name sftp -v /host/sftp.json:/app/config/sftp.json:ro -v /host/demo:/home/demo/sftp emberstack/sftp
将主机/host/demo目录挂载到demo用户的sftp目录。
Docker Compose部署
创建配置文件
yamlversion: '3' services: sftp: image: "docker.xuanyuan.run/emberstack/sftp" ports: - "22:22" volumes: - ../config-samples/sample.sftp.json:/app/config/sftp.json:ro
启动服务
shellsession$ docker-compose -p sftp -f docker-compose.yaml up -d
上述配置可在项目的deploy\docker-compose目录找到,可基于此自定义部署。
Kubernetes Helm部署
添加Helm仓库并安装
shellsession$ helm repo add emberstack https://emberstack.github.io/helm-charts $ helm repo update $ helm upgrade --install sftp emberstack/sftp
自定义配置参数
| 参数 | 描述 | 默认值 |
|---|---|---|
nameOverride | 覆盖发布名称 | "" |
fullnameOverride | 覆盖完整发布名称 | "" |
image.repository | 容器镜像仓库 | emberstack/sftp |
image.tag | 容器镜像标签 | latest |
image.pullPolicy | 镜像拉取策略 | 若image.tag为latest则为Always,否则为IfNotPresent |
storage.volumes | 定义Pod额外卷 | {} |
storage.volumeMounts | 定义SFTP容器额外卷挂载 | {} |
configuration | 内联覆盖配置值 | null |
configuration.Global.Chroot.Directory | SFTP用户组全局chroot目录,可按用户覆盖 | "%h" |
configuration.Global.Chroot.StartPath | SFTP用户组起始路径,可按用户覆盖 | "sftp" |
configuration.Global.Directories | 为所有SFTP用户创建的目录,可按用户追加 | ["sftp"] |
configuration.Global.HostKeys.Ed25519 | 服务器ED25519私钥 | "" |
configuration.Global.HostKeys.Rsa | 服务器RSA私钥 | "" |
configuration.Users | 用户及其属性数组 | 默认包含demo用户 |
configuration.Users[].Username | 用户名 | N/A |
configuration.Users[].Password | 用户密码,为空或null时禁用密码认证 | N/A |
configuration.Users[].PasswordIsEncrypted | 密码是否已加密(true/false) | false |
configuration.Users[].AllowedHosts | 允许的客户端主机,为空则允许所有 | [] |
configuration.Users[].PublicKeys | 用户公钥列表 | [] |
configuration.Users[].UID | 用户UID | null |
configuration.Users[].GID | 用户GID,会创建对应组并将用户加入 | null |
configuration.Users[].Chroot | 按用户覆盖全局Chroot设置 | null |
configuration.Users[].Directories | 为该用户创建的额外目录 | null |
initContainers | Pod额外初始化容器 | {} |
resources | 资源限制 | {} |
nodeSelector | Pod分配的节点标签 | {} |
tolerations | Pod容忍标签 | [] |
affinity | 节点亲和性配置 | {} |
可在https://hub.helm.sh/charts/emberstack查看更多信息。
此部分因配置选项较多仍在开发中,如需帮助,请在https://github.com/emberstack/docker-sftp项目提交issue。
以下是 emberstack/sftp 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务