argus/src/metric/ftp/README.md
2025-09-26 14:45:43 +08:00

3.8 KiB
Raw Blame History

FTP 镜像配置

环境变量配置

FTP_BASE_PATH

设置 FTP 数据的基础路径。

默认值: /private/argus/ftp

用途:

  • 共享目录路径: ${FTP_BASE_PATH}/share (用于版本发布)
  • 配置文件存储路径: /private/argus/etc/

DOMAIN

设置 FTP 服务的域名。

默认值: ftp.metric.argus.com

用途:

  • 容器IP记录文件: /private/argus/etc/${DOMAIN}

FTP_PASSWORD

设置 ftpuser 用户的密码。

默认值: ZGClab1234!

用途:

  • ftpuser 用户的登录密码

使用示例

1. 使用默认配置

docker run -d \
  --name ftp-server \
  -p 21:21 \
  -p 21100-21110:21100-21110 \
  -v /host/ftp/data:/private/argus/ftp \
  argus-metric-ftp:1.0.0

2. 自定义配置(运行时环境变量)

docker run -d \
  --name ftp-server \
  -p 21:21 \
  -p 21100-21110:21100-21110 \
  -e FTP_BASE_PATH=/custom/ftp/path \
  -e DOMAIN=custom.ftp.domain.com \
  -e FTP_PASSWORD=MySecurePassword123! \
  -v /host/ftp/data:/custom/ftp/path \
  argus-metric-ftp:1.0.0

目录结构

容器启动后会在 ${FTP_BASE_PATH} 下创建以下目录结构:

${FTP_BASE_PATH}/
└── share/                    # FTP根目录直接挂载
    └── (用户上传的文件)

/private/argus/etc/
└── ${DOMAIN}                 # 容器IP记录文件

vsftpd 配置说明

核心配置参数

根据README中的推荐配置vsftpd.conf包含以下关键设置

# 基本设置
local_enable=YES          # 允许本地用户登录
write_enable=YES          # 允许写操作(上传/删除/修改)
chroot_local_user=YES     # 限制用户在自己目录中
allow_writeable_chroot=YES # 防止 chroot 错误(重要!)

# 被动模式配置
pasv_enable=YES           # 启用被动模式
pasv_min_port=21100       # 被动模式最小端口
pasv_max_port=21110       # 被动模式最大端口

# 用户访问控制
userlist_enable=YES       # 启用用户列表
userlist_file=/etc/vsftpd.userlist  # 用户列表文件
userlist_deny=NO          # 只允许列表中的用户登录

用户管理

默认用户

  • 用户名: ftpuser
  • 密码: ZGClab1234! (可通过 FTP_PASSWORD 环境变量修改)
  • UID: 2133 (与prometheus用户保持一致可通过 FTP_UID 环境变量修改)
  • GID: 2015 (与prometheus用户保持一致可通过 FTP_GID 环境变量修改)
  • 主目录: ${FTP_BASE_PATH}/share (直接指向挂载目录)
  • Shell: /bin/bash
  • 用户列表: 已添加到 /etc/vsftpd.userlist

添加新用户

# 进入容器
docker exec -it ftp-server bash

# 添加新用户
useradd -d ${FTP_BASE_PATH}/share/newuser -s /bin/bash newuser
echo "newuser" >> /etc/vsftpd.userlist
passwd newuser

# 创建用户目录
mkdir -p ${FTP_BASE_PATH}/share/newuser
chown newuser:newuser ${FTP_BASE_PATH}/share/newuser

端口配置

  • 21: FTP 控制端口
  • 20: FTP 数据端口 (主动模式)
  • 21100-21110: 被动模式数据端口范围

日志文件位置

  • vsftpd 日志: /var/log/vsftpd/vsftpd.log
  • supervisor 日志: /var/log/supervisor/
    • supervisord.log: supervisor 主日志
    • vsftpd.log: vsftpd 标准输出
    • vsftpd_error.log: vsftpd 错误输出
# 在宿主机上配置 logrotate
cat > /etc/logrotate.d/ftp-docker << EOF
/var/lib/docker/containers/*/ftp-server-*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}
EOF

FTP连接测试

# 本地测试连接
ftp localhost

curl -fsS 'ftp://ftpuser:ZGClab1234!@177.177.70.200/setup.sh' -o setup.sh

# root用户直接执行非root用户需要使用sudo
chmod +x setup.sh
bash setup.sh --server {$域名} --user ftpuser --password 'ZGClab1234!'