4.7 KiB
SFTPGo — це сучасний, високопродуктивний сервер обміну файлами з відкритим вихідним кодом (написаний на Go), який розширює можливості стандартного SSH/SFTP до повноцінного корпоративного рішення для керування даними.
Основні можливості
-
Мультипротокольність: Підтримує SFTP, FTPS, FTP, WebDAV, а також має вбудований Web UI для користувачів та адміністраторів і REST API.
-
Гнучкість сховищ (Storage Backends): Працює як з локальною файловою системою, так і з хмарними сховищами (Amazon S3, Google Cloud Storage, Azure Blob, S3-сумісні MinIO/Ceph). Також є підтримка прозорого шифрування (CryptFS).
-
Централізована база даних: Зберігає користувачів та налаштування в PostgreSQL, MySQL, MariaDB, CockroachDB або SQLite.
Надійність та відмовостійкість
SFTPGo розроблений для високонавантажених і критичних систем:
-
Кластеризація (High Availability): Оскільки самі екземпляри SFTPGo є stateless (безбереженими), ви можете запустити кілька вузлів за навантажувачем (Load Balancer), підключивши їх до однієї бази даних та спільного сховища.
-
Ізоляція та квоти: Можна жорстко обмежити кількість одночасних сесій, швидкість завантаження/вивантаження (Bandwidth limit) та дискову квоту (байти або кількість файлів) для кожного користувача або групи.
-
Автоматична грозозахист-локалізація (Event Actions): При виявленні підозрілої активності або помилок аутентифікації SFTPGo може автоматично блокувати IP (за допомогою встроенних механізмів або інтеграції з Fail2ban).
Акцент на бекапах та захисті від Ransomware
SFTPGo — ідеальне рішення для збору резервних копій завдяки захисту від підміни та видалення:
-
WORM / Immutable Backups: Налаштування прав "тільки на запис" унеможливлює видалення або зашифрування старого бекапу, якщо сервер, з якого робиться бекап, буде закомпрометований вірусом-вимагачем.
-
Автоматизація обробки (Hooks & Event Manager): Після успішного вивантаження файлу бекапу SFTPGo може автоматично виконати скрипт, надіслати вебхук (Webhook) або сповіщення в Telegram/Slack, запустити ротацію або перемістити файл у Glacier-сховище.
-
Віртуальні папки (Virtual Folders): Можна прокинути окремі каталоги з різних систем або S3-бакетів у єдину структуру папок для агента бекапу.
version: "3.8"
services:
sftpgo:
image: drakkan/sftpgo:latest
container_name: sftpgo
ports:
- "8080:8080"
- "2022:2022"
- "8022:8022"
- "8081:8081"
- "990:990"
environment:
- SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080
- SFTPGO_SFTPD__BINDINGS__0__PORT=2022
- SFTPGO_HTTPD__BINDINGS__0__PORT=8080
- SFTPGO_DATA_PROVIDER__DRIVER=sqlite
# Указываем путь к БД внутри контейнера (соответствует объему sftpgo_data)
- SFTPGO_DATA_PROVIDER__NAME=/var/lib/sftpgo/sftpgo.db
- SFTPGO_LOG__LEVEL=info
- SFTPGO_BOOTSTRAP_ADMIN_USERNAME=admin
- SFTPGO_BOOTSTRAP_ADMIN_PASSWORD=admin
volumes:
# Монтируем локальные папки на диске в пути внутри контейнера
- /mnt/docker_data/sftpgo/data:/var/lib/sftpgo
- /mnt/docker_data/sftpgo/storage:/srv/sftp
- /mnt/docker_data/music:/mnt/music
- /mnt/docker_data/sd:/mnt/sd
restart: unless-stopped
```