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

4.7 KiB
Raw Blame History

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
    ```