Notefix/1.Projects/Персональний сайт портфоліо/Self Hosted/sftpgo.md

62 lines
4.7 KiB
Markdown
Raw Normal View History

2026-07-28 19:24:46 +03:00
**SFTPGo** — це сучасний, високопродуктивний сервер обміну файлами з відкритим вихідним кодом (написаний на Go), який розширює можливості стандартного SSH/SFTP до повноцінного корпоративного рішення для керування даними.
2026-08-02 12:31:38 +03:00
## Основні можливості
- **Мультипротокольність:** Підтримує 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-сховище.
2026-08-02 13:52:07 +03:00
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
```