
Alpine ProFTPD是一个基于Alpine Linux的轻量级ProFTPD Docker镜像,内置配置模板,支持通过环境变量灵活自定义服务参数。该镜像集成了FTP、SFTP协议支持,提供管理Web界面,并包含日志轮转、用户权限控制等功能,适用于快速部署安全高效的文件传输服务。
yamlalpine_proftpd: container_name: alpine_proftpd image: h0tmann/alpine_proftpd_db:latest hostname: alpine_proftpd network_mode: host # 推荐使用host模式以确保端口映射和网络规则正常工作 environment: # 系统变量 - TZ=Europe/Berlin # 时区设置,例如"Asia/Shanghai" - LANG=de_DE.UTF-8 # 语言编码,例如"zh_CN.UTF-8" # 基础ProFTPD设置 # - PUBLIC_IP=0.0.0.0 # 公网IP,host模式下必填,IPv4+IPv6使用"0.0.0.0 ::" # - SFTP_PORT=22 # SFTP端口,默认22 # - FTP_PORT=21 # FTP端口,默认21 # 应用用户权限 # - APP_UID=850 # 运行ProFTPD的用户UID,默认850 # - APP_GID=850 # 运行ProFTPD的用户GID,默认850 # 其他配置参数参见"配置参数说明"部分 volumes: - "/etc/timezone:/etc/timezone:ro" # 挂载主机时区配置 - "/etc/localtime:/etc/localtime:ro" # 挂载主机时间配置 - "/var/log/proftpd/:/var/log/proftpd/:rw" # 日志存储目录 - "./folder/data/:/etc/proftpd/data/:rw" # 配置数据目录 - "/mnt/ftpusers/:/mnt/ftpusers/:rw" # 用户文件存储目录 deploy: resources: limits: memory: 512M # 内存限制,根据需求调整 restart: unless-stopped
bashdocker run -d \ --name alpine_proftpd \ --hostname alpine_proftpd \ --net=host \ -e TZ=Asia/Shanghai \ -e LANG=zh_CN.UTF-8 \ -v /etc/timezone:/etc/timezone:ro \ -v /etc/localtime:/etc/localtime:ro \ -v /var/log/proftpd/:/var/log/proftpd/:rw \ -v ./folder/data/:/etc/proftpd/data/:rw \ -v /mnt/ftpusers/:/mnt/ftpusers/:rw \ --restart unless-stopped \ h0tmann/alpine_proftpd_db:latest
| 变量名 | 默认值 | 描述 |
|---|---|---|
| TZ | Europe/Berlin | 服务时区,例如"Asia/Shanghai" |
| LANG | de_DE.UTF-8 | 语言编码,例如"zh_CN.UTF-8" |
| 变量名 | 默认值 | 描述 |
|---|---|---|
| PUBLIC_IP | 0.0.0.0 | 公网IP,host模式下必填,IPv4+IPv6使用"0.0.0.0 ::" |
| SFTP_PORT | 22 | SFTP服务端口 |
| FTP_PORT | 21 | FTP服务端口 |
| APP_UID | 850 | 运行ProFTPD的用户UID |
| APP_GID | 850 | 运行ProFTPD的用户GID |
| MAX_INSTANCES | 2001 | 最大实例数 |
| MAX_CLIENTS | '1000 "max %m total connections"' | 最大客户端连接数 |
| MAX_CLIENTS_PER_USER | '20 "max %m connections per user"' | 每用户最大连接数 |
| ALLOW_OVERWRITE | off | 是否允许覆盖文件 |
| UMASK | 0007 | 默认文件权限掩码 |
| USE_IPV6 | on | 是否启用IPv6支持 |
| 变量名 | 默认值 | 描述 |
|---|---|---|
| ENABLE_SFTP | true | 是否启用SFTP |
| SFTP_AUTH_METHODS | publickey password | 认证方式,可选hostbased/keyboard-interactive/password/publickey |
| SFTP_CLIENT_ALIVE | 6 10 | 客户端保活参数 |
| SFTP_MAX_CHANNELS | 50 | 最大通道数 |
| SFTP_EXTENSIONS | -hardlink -spaceAvailable -statvfs -vendorID -xattr | 禁用的SFTP扩展 |
| 变量名 | 默认值 | 描述 |
|---|---|---|
| ENABLE_FTP | false | 是否启用FTP |
| ENABLE_FTPS | false | 是否启用FTPS |
| FTP_PASS_PORT_MIN | 49152 | 被动模式端口范围起始值 |
| FTP_PASS_PORT_MAX | 65534 | 被动模式端口范围结束值 |
| FTPS_REQUIRED | on | 是否强制FTPS |
| FTPS_CIPHER_SUITE | DEFAULT:!ADH:!EXPORT:!DES:!NULL | 加密套件 |
| FTPS_SSL_CERT | cert.pem | SSL证书文件名(位于/etc/proftpd/ssl/) |
| FTPS_SSL_KEY | key.pem | SSL密钥文件名(位于/etc/proftpd/ssl/) |
| 变量名 | 默认值 | 描述 |
|---|---|---|
| ENABLE_LOGS | true | 是否启用通用日志 |
| ENABLE_SFTP_LOGS | true | 是否启用SFTP日志 |
| ENABLE_FTPS_LOGS | true | 是否启用FTPS日志 |
| ENABLE_TRANS_LOGS | true | 是否启用传输日志 |
| LOG_TRANS_FILE | xfer.log | 传输日志文件名 |
| LOG_SERVER_FILE | server.log | 服务器日志文件名 |
| LOGROTATE_SIZE | 100M | 日志轮转大小阈值 |
| LOGROTATE_ROTATE | 10 | 日志文件保留数量 |
| 变量名 | 默认值 | 描述 |
|---|---|---|
| ADMIN_IP | 0.0.0.0 | 管理界面绑定IP |
| ADMIN_PORT | 8003 | 管理界面端口 |
| ADMIN_PASS | Hy2i3kBw4q8Z4zmNVKWHPGV5eC9roeN3 | 管理界面密码(建议修改) |
| ADMIN_JWT_SIGN | dy8ECoA0z1aLvLqXDRjanaRSABzuzi4e | JWT签名密钥(建议修改) |
| ADMIN_JWT_ENC | po35XsS8jpEIg708VV4d4TyEDBkSocUH | JWT加密密钥(建议修改) |
| 挂载路径 | 宿主机路径示例 | 权限 | 描述 |
|---|---|---|---|
| /etc/timezone | /etc/timezone | ro | 主机时区配置,只读 |
| /etc/localtime | /etc/localtime | ro | 主机时间配置,只读 |
| /var/log/proftpd/ | /var/log/proftpd/ | rw | 日志存储目录,读写 |
| /etc/proftpd/data/ | ./folder/data/ | rw | 配置数据目录,读写 |
| /mnt/ftpusers/ | /mnt/ftpusers/ | rw | 用户文件存储目录,读写 |
推荐使用network_mode: host,可避免端口映射复杂问题,且便于从物理机ProFTPD迁移。若使用端口映射,需注意被动模式端口范围需与宿主机端口一致,且可能需要调整配置以适配Docker网络。
ProFTPD要求SFTP公钥使用RFC4716格式,转换命令:
bashssh-keygen -e -f ~/.ssh/id_rsa.pub -m RFC4716 > ~/.ssh/id_rsa.rfc4716.pub
也可通过管理Web界面内置功能转换。
在较新系统中,需创建/etc/modprobe.d/iptables.conf:
options nf_conntrack_ftp ports=21 # 端口需与FTP_PORT一致
然后加载模块:modprobe nf_conntrack_ftp(旧系统使用ip_conntrack_ftp)。
管理界面JWT令牌密钥(ADMIN_JWT_SIGN、ADMIN_JWT_ENC)需设置为32位以上随机字符串,且每个实例使用唯一密钥以确保安全。
日志文件默认存储在/var/log/proftpd/,建议定期备份或通过日志轮转配置(LOGROTATE_*参数)控制日志大小和保留数量。
Q: 被动模式连接失败?
A: 确保被动端口范围(FTP_PASS_PORT_MIN至FTP_PASS_PORT_MAX)在防火墙中开放,且PUBLIC_IP正确配置为公网IP。
Q: SFTP公钥认证失败?
A: 检查公钥是否为RFC4716格式,可通过转换命令或管理界面转换后重试。
Q: 管理界面无法访问?
A: 检查ADMIN_IP是否允许当前IP访问(默认0.0.0.0允许所有),ADMIN_PORT是否映射正确,以及防火墙规则是否开放该端口。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务