Перейти до основного вмісту

SFTPgo – сервер бекапів

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-бакетів у єдину структуру папок для агента бекапу.

    Мій файл docker-compose.yml для розготання чере докер. Увага! не забувайте міняти паролі на свої.
    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