**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 — ідеальне рішення для збору резервних копій завдяки захисту від підміни та видалення: 1. **WORM / Immutable Backups:** Налаштування прав "тільки на запис" унеможливлює видалення або зашифрування старого бекапу, якщо сервер, з якого робиться бекап, буде закомпрометований вірусом-вимагачем. 2. **Автоматизація обробки (Hooks & Event Manager):** Після успішного вивантаження файлу бекапу SFTPGo може автоматично виконати скрипт, надіслати вебхук (Webhook) або сповіщення в Telegram/Slack, запустити ротацію або перемістити файл у Glacier-сховище. 3. **Віртуальні папки (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 ```