Выполните следующую команду для создания необходимых каталогов:
mkdir -p ./ftpd/{logs,passwd} && cd ftpd
📂 Структура каталогов будет выглядеть так:
ftpd/ ├── logs/ └── passwd/
Для удобства и гибкости создайте файл .env
для переменных окружения, необходимых для конфигурации. Добавьте в него:
DOMAINE=example.com
USERNAME=ftpuser
PASSWORD=ftppassword
TRAEFIK_NETWORK=traefik_network
⚠️ Примечание: Замените значения
example.com
,ftpuser
,ftppassword
, иtraefik_network
на ваши собственные данные.
docker-compose.yml
для FTP-сервера 📝Теперь создайте файл docker-compose.yml
в папке ftpd
и добавьте в него следующую конфигурацию:
version: '3.3'
services:
ftpd:
image: stilliard/pure-ftpd
container_name: ftpd
# ports:
# - "21:21"
# - "30000-30009:30000-30009"
volumes:
- "/data/ftp:/home"
- "./passwd:/etc/pure-ftpd/passwd"
- "./logs:/var/log/pure-ftpd"
environment:
FTP_MAX_CLIENTS: "10"
ADDED_FLAGS: "-d -d"
PUBLICHOST: ftp.${DOMAINE}
FTP_USER_NAME: ${USERNAME}
FTP_USER_PASS: ${PASSWORD}
FTP_USER_HOME: /home/backup
restart: always
labels:
- traefik.enable=true
- traefik.tcp.routers.router-ftp.entrypoints=entrypoint-ftp
- traefik.tcp.routers.router-ftp.rule=HostSNI(`*`)
- traefik.tcp.routers.router-ftp.service=service-ftp
# Настройки для пассивного режима
- traefik.tcp.routers.router-ftp-passive-0.entrypoints=entrypoint-ftp-passive-0
- traefik.tcp.routers.router-ftp-passive-0.rule=HostSNI(`*`)
- traefik.tcp.routers.router-ftp-passive-0.service=service-ftp-passive-0
# Добавьте следующие лейблы для портов 30001-30009 для пассивного режима
- traefik.tcp.services.service-ftp.loadbalancer.server.port=21
- traefik.tcp.services.service-ftp-passive-0.loadbalancer.server.port=30000
- traefik.tcp.services.service-ftp-passive-1.loadbalancer.server.port=30001
- traefik.tcp.services.service-ftp-passive-2.loadbalancer.server.port=30002
- traefik.tcp.services.service-ftp-passive-3.loadbalancer.server.port=30003
- traefik.tcp.services.service-ftp-passive-4.loadbalancer.server.port=30004
- traefik.tcp.services.service-ftp-passive-5.loadbalancer.server.port=30005
- traefik.tcp.services.service-ftp-passive-6.loadbalancer.server.port=30006
- traefik.tcp.services.service-ftp-passive-7.loadbalancer.server.port=30007
- traefik.tcp.services.service-ftp-passive-8.loadbalancer.server.port=30008
- traefik.tcp.services.service-ftp-passive-9.loadbalancer.server.port=30009
networks:
default:
external:
name: ${TRAEFIK_NETWORK}
Добавьте в секцию command
для Traefik следующие строки, чтобы настроить порты для FTP и пассивного режима:
command:
- --entrypoints.entrypoint-ftp.address=:21
- --entrypoints.entrypoint-ftp-passive-0.address=:30000
- --entrypoints.entrypoint-ftp-passive-1.address=:30001
- --entrypoints.entrypoint-ftp-passive-2.address=:30002
- --entrypoints.entrypoint-ftp-passive-3.address=:30003
- --entrypoints.entrypoint-ftp-passive-4.address=:30004
- --entrypoints.entrypoint-ftp-passive-5.address=:30005
- --entrypoints.entrypoint-ftp-passive-6.address=:30006
- --entrypoints.entrypoint-ftp-passive-7.address=:30007
- --entrypoints.entrypoint-ftp-passive-8.address=:30008
- --entrypoints.entrypoint-ftp-passive-9.address=:30009
В секцию ports
добавьте:
ports:
- "21:21"
- "30000-30009:30000-30009"
После того как конфигурация будет готова, запустите FTP-сервер с помощью следующей команды:
docker-compose up -d
Перезапустите контейнер Traefik, чтобы применить новые настройки:
docker-compose up -d
✅ Результат: FTP-сервер теперь доступен через Traefik, и работает с использованием активного и пассивного режима на указанных портах.
Важные компоненты:
Теперь ваш FTP-сервер полностью настроен и работает с Traefik! 🎉