SFTPGo на Ubuntu 22.04 — установка и новинки v2.3.0
SFTPGo — это открытый, полнофункциональный SFTP-сервер с опциональной поддержкой HTTP/S, FTP/S и WebDAV. В статье показано, как установить SFTPGo на Ubuntu 22.04, настроить базовую безопасность (UFW), пройти начальную настройку через веб-мастер установки и использовать ключевые новые возможности версии v2.3.0: группы, внешние шаринги, брендинг, OpenID Connect, ACME, Geo‑IP фильтрацию и шаблонные ограничения по имени файлов. Резюме и чек‑листы для разных ролей прилагаются.
Введение
SFTPGo — бесплатный и открытый SFTP-сервер, ориентированный на гибкую конфигурацию и интеграцию с различными хранилищами: локальная файловая система, зашифрованная локальная FS, S3-совместимые Object Storage, Google Cloud Storage, Azure Blob Storage и даже другие SFTP‑серверы. Проект активно поддерживается на GitHub, где описаны все функции и примеры настройки.
В этом материале мы шаг за шагом установим SFTPGo на Ubuntu 22.04, пройдём мастер начальной настройки через веб-интерфейс и подробно разберём ключевые возможности v2.3.0. Цель — дать готовый набор действий и руководств для быстрого и безопасного развёртывания на сервере.
Важно: перед развёртыванием в продакшен подготовьте план резервного копирования, мониторинга и SLAs для ключевых сервисов.
Что вы получите из этой инструкции
- Пошаговая установка SFTPGo на Ubuntu 22.04.
- Настройка базовой защиты с помощью UFW.
- Как пользоваться мастером установки WebAdmin.
- Практические примеры использования групп и виртуальных папок для S3.
- Настройка внешних шарингов (read, write, read/write).
- Как подключить OpenID Connect и автоматическое создание пользователей.
- Настройка автоматического получения сертификатов через ACME (Let’s Encrypt).
- Включение Geo‑IP фильтрации и примеры плагина.
- Примеры правил для ограничения файлов по шаблонам и сокрытия.
- Рекомендации по безопасности и чек-листы для администраторов.
Требования
- Сервер с Ubuntu 22.04 LTS.
- Нерутовый пользователь с правами sudo.
- Доменное имя (для ACME/HTTPS), если планируется HTTPS.
- По возможности отдельное выделенное хранилище/пул для SFTP-данных.
Настройка UFW (базовая безопасность)
Рекомендуется включить и настроить брандмауэр UFW. Это простое и эффективное средство для ограничения входящих соединений.
Установка UFW:
sudo apt install ufw -yПо умолчанию SFTPGo использует TCP порты:
- 2022 — SFTP (по умолчанию в пакете)
- 8080 — WebAdmin / WebClient (HTTP)
Разрешите также порт для OpenSSH, чтобы не потерять доступ к серверу:
sudo ufw allow OpenSSH
sudo ufw allow 2022/tcp
sudo ufw allow 8080/tcpВключите UFW и проверьте статус:
sudo ufw enable
sudo ufw statusПример ожидаемого вывода:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
2022/tcp ALLOW Anywhere
8080/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
2022/tcp (v6) ALLOW Anywhere (v6)
8080/tcp (v6) ALLOW Anywhere (v6)Совет: при развёртывании в облаке дополнительно настройте правила безопасности на уровне хостинга (Security Groups). Для продакшен‑инфраструктур ограничьте доступ к WebAdmin по IP или VPN.
Установка SFTPGo на Ubuntu 22.04
SFTPGo доступен через PPA. Добавьте PPA и установите пакет:
sudo add-apt-repository ppa:sftpgo/sftpgo
sudo apt update
sudo apt install sftpgoПосле установки служба запускается автоматически. Проверьте статус:
systemctl status sftpgoЕсли служба не запущена, посмотрите вывод journalctl для диагностики:
sudo journalctl -u sftpgo -b --no-pagerЗавершение установки через веб‑мастер
Откройте в браузере страницу мастер‑установки: http://
При первом запуске будет создан учётный администратор через форму “Create Admin” в мастере. После создания вы попадёте в WebAdmin UI и сможете добавить пользователей, группы и виртуальные папки.

ALT: Скриншот мастера начальной установки SFTPGo WebAdmin.
Подсказки:
- Используйте сложный пароль для учётной записи admin.
- При доступности — сразу включите HTTPS и настройте ACME для автоматического получения сертификатов.
Основные новые возможности v2.3.0 и практическое применение
Ниже мы подробно разберём ключевые обновления, дадим примеры конфигурации и практические рекомендации.
Группы и наследование настроек
Группы позволяют централизовать настройки для набора пользователей: домашняя директория, лимиты загрузок, виртуальные папки, права доступа. В SFTPGo есть два типа групп:
- primary groups — основная группа, наследуемая как базовая настройка пользователя;
- secondary groups — дополнительные группы для расширения прав/ограничений.
Пользователь может иметь одну primary группу и несколько secondary. В зависимости от типа группы настройки наследуются по-разному — проверьте документацию и тестируйте поведение для пересекающихся правил.
Пример требований и их реализация (кейс):
Требования:
- Каждый пользователь ограничен локальной домашней директорией, где имя пользователя — последний сегмент: /srv/sftpgo/data/
- Лимит на загрузку одного файла — 1 ГБ
- Для каждого пользователя есть виртуальная S3‑папка по пути /s3
, доступ только к префиксу своего пользователя - Общая виртуальная папка /shared для совместной работы
- Группа A — полный доступ к /shared, группа B — только просмотр и скачивание
Реализация в WebAdmin (кратко):
- Создайте виртуальную папку «S3private», выберите хранилище AWS S3 (Compatible) и укажите bucket, region и credentials. Установите Key Prefix: users/%username%/.

ALT: Форма создания S3-папки в SFTPGo WebAdmin, поля bucket, region, credentials и Key Prefix.
Создайте виртуальную папку «S3shared» с Key Prefix: shared/ (статический путь).
Создайте группу «Primary», установите Home Dir: /srv/sftpgo/data/%username%, добавьте виртуальные папки и установите Max file upload size: 1073741824 (байт) — 1 ГБ.

ALT: Форма создания группы с указанием Home Dir и других настроек.
- Создайте группу «SharedReadOnly» и в разделе ACL задайте права на /shared только для чтения.

ALT: Интерфейс настройки пер-директории прав (ACL) для группы.
- Создайте пользователей и назначьте primary группу «Primary». Для тех, кто должен иметь read-only к /shared, добавьте «SharedReadOnly» как secondary группу.

ALT: Форма добавления пользователя в WebAdmin, поля username, password, primary group.
- Для массового создания используйте feature templates: задайте шаблон с группами, префиксами и паролями.

ALT: Интерфейс массового создания пользователей по шаблону.
Проверка: подключитесь через клиент (FileZilla, WinSCP) и проверьте ограничения.
Рекомендации:
- Тестируйте наследование прав на примере пересекающихся правил (primary vs secondary). Иногда имеет смысл использовать secondary группы для исключительных случаев.
- Храните шаблоны для массового развёртывания пользователей.
Внешние шаринги (External shares)
Внешние шаринги позволяют делиться файлами с пользователями без учётной записи SFTPGo. В v2.3.0 улучшена функциональность: три режима шаринга — read, write, read/write.
Пример рабочего процесса:
- В WebClient создайте директорию external_share.

ALT: WebClient — создание новой директории external_share.
- Загрузите файлы и нажмите „Share“ для папки.

ALT: Иконка шаринга в WebClient для выбранной папки.
- На экране “Add a new share” выберите scope: Read, Write или Read/Write, укажите при необходимости ограничения по числу использований, пароль, IP, дату истечения.

ALT: Параметры создания шаринга: scope, limit, password, source IP, expiration.
- Скопируйте ссылку для внешнего доступа и отправьте клиенту. Для режима Read пользователь может просматривать/скачивать или скачивать ZIP, для Write — загружать, но не просматривать содержимое, для Read/Write — полная совместная работа.

ALT: Окно со ссылкой на шаринг и инструкциями для внешних пользователей.
Ограничения и советы:
- Для Write-only шаринга проверьте разрешения на перезапись файлов (используйте per-directory ACLs, чтобы запретить перезапись).
- Для чувствительных данных используйте пароль и ограничение по IP и времени жизни ссылки.
- Логи и мониторинг — отслеживайте использование внешних ссылок для инцидентов безопасности.
Брендинг веб‑интерфейсов
SFTPGo поддерживает кастомизацию WebAdmin и WebClient через блок branding в /etc/sftpgo/sftpgo.json. Это полезно для корпоративной среды и white‑label решений.
Пример секции branding (фрагмент JSON конфигурации):
"branding": {
"web_admin": {
"name": "",
"short_name": "",
"favicon_path": "",
"logo_path": "",
"login_image_path": "",
"disclaimer_name": "",
"disclaimer_path": "",
"default_css": "",
"extra_css": []
},
"web_client": {
"name": "",
"short_name": "",
"favicon_path": "",
"logo_path": "",
"login_image_path": "",
"disclaimer_name": "",
"disclaimer_path": "",
"default_css": "",
"extra_css": []
}
}ALT: Пример конфигурации блока branding в файле sftpgo.json.
Ключевые моменты:
- Путь к ресурсам (favicon_path, logo_path и т. д.) должен быть относительно static_files_path. По умолчанию на Linux static_files_path = /usr/share/sftpgo/static.
- Можно положить кастомные файлы в /usr/share/sftpgo/static/branding/ и ссылаться на них как /branding/favicon.ico.
- Для мелких правок темы используйте extra_css; для полной замены — положите ваш скомпилированный CSS в default_css.
- После правок перезапустите сервис: sudo systemctl restart sftpgo.service
Рекомендации по ИБ при брендинге:
- Не размещайте в публичных ресурсах чувствительные данные (ключи, токены).
- Для корпоративных релизов храните ресурсы в CI/CD артефактах и выкладывайте в защищённый каталог.
OpenID Connect (OIDC)
SFTPGo поддерживает интеграцию с OpenID Connect провайдерами: Keycloak, Google Identity, Azure AD, Auth0 и др. Это даёт возможность единого входа (SSO) и упрощает управление учётными записями.
Возможности:
- Логин в WebAdmin/WebClient через провайдера OIDC.
- Соответствие claim полям SFTPGo и автоматическое создание пользователей по pre-login hook.
- Гибкая обработка токенов для маппинга ролей и групп.
Практические советы:
- Тестируйте на тестовом realm/tenant перед подключением prod IdP.
- Проверьте лимиты токенов и поведение при истечении сессии.
- Если вы планируете автоматическое создание пользователей, реализуйте pre-login hook, который валидирует и маппирует поля (email -> username, groups -> SFTPGo groups).
ACME (Let’s Encrypt)
SFTPGo имеет встроенную поддержку ACME для автоматического получения/обновления TLS сертификатов. Поддерживаются challenge типы HTTP-01 и TLS‑ALPN‑01.
Требование: у вас должен быть действующий DNS A/AAAA запись, указывающая на сервер.
Пример конфигурации ACME в /etc/sftpgo/sftpgo.json:
"acme": {
"domains": ["sftpgo.com"],
"email": "",
"key_type": "4096",
"certs_path": "/var/lib/sftpgo/certs",
"ca_endpoint": "https://acme-v02.api.letsencrypt.org/directory",
"renew_days": 30,
"http01_challenge": {
"port": 80,
"proxy_header": "",
"webroot": "/var/www/sftpgo.com"
},
"tls_alpn01_challenge": {
"port": 0
}
} ALT: Пример секции acme в конфигурационном файле sftpgo.json.
Шаги:
- Убедитесь, что webroot (например /var/www/sftpgo.com) доступен и sftpgo может в него писать (или заранее создайте .well-known/acme-challenge с нужными правами).
- Запустите команду получения сертификатов от имени пользователя sftpgo:
sudo -E su - sftpgo -m -s /bin/bash -c 'sftpgo acme run -c /etc/sftpgo'- Сертификаты сохраняются в /var/lib/sftpgo/certs по умолчанию. Обновите bindings в разделе httpd, указав путь к certificate_file и certificate_key_file, например:
"httpd": {
"bindings": [
{
"port": 9443,
"address": "",
"enable_web_admin": true,
"enable_web_client": true,
"enable_https": true,
"certificate_file": "/var/lib/sftpgo/certs/sftpgo.com.crt",
"certificate_key_file": "/var/lib/sftpgo/certs/sftpgo.com.key"
}
]
}- Перезапустите сервис:
sudo systemctl restart sftpgo.serviceСовет: если у вас на порту 80 уже запущен веб‑сервер, используйте http01.webroot или TLS‑ALPN‑01, либо настройте временный прокси для прохождения challenge.
Geo‑IP фильтрация
Плагин Geo‑IP позволяет допускать или блокировать соединения по географическому признаку IP‑адреса.
Требуется: база MaxMind в формате MMDB (GeoLite2 или коммерческая GeoIP2).
Пример конфигурации плагина (plugin path и args — пример):
"plugins": [
{
"type": "ipfilter",
"cmd": "/usr/local/bin/sftpgo-plugin-geoipfilter-linux-amd64",
"args": ["serve", "--db-file", "/var/lib/sftpgo/GeoLite2-Country.mmdb", "--allowed-countries", "IT"],
"sha256sum": "",
"auto_mtls": true
}
]ALT: Пример конфигурации Geo-IP плагина в sftpgo.json.
Пример лог‑записи при блокировке:
{"level":"debug","time":"2022-06-02T14:05:48.616","sender":"plugins.ipfilter.sftpgo-plugin-geoipfilter-linux-amd64","message":"[DEBUG] country not allowed: ip=XXX.XX.XXX.XXX country=NL"}Рекомендации:
- Храните MMDB обновлённой (MaxMind выпускает обновления регулярно).
- Будьте осторожны с блокировкой по странам — это влияет на внешних пользователей и мониторинг.
- Логи плагина подключите в централизованный лог‑агрегатор для аналитики.
Ограничения файлов и директорий по shell-паттернам
SFTPGo поддерживает per-user и per-directory правила, основанные на shell‑like шаблонах: файлы можно разрешать, запрещать или скрывать.
Пример: запретить файлы с расширениями .jpg и .png в определённой директории.
В WebAdmin выберите пользователя, разверните ACL и добавьте правило с шаблонами (.jpg, .png) и политикой Deny или Hidden.

ALT: Интерфейс добавления шаблонных ограничений для файлов в ACL.
Политики:
- Deny — файл нельзя скачать/загрузить, но он видим в листинге, если уже присутствует.
- Hidden — файл полностью скрыт из листинга и недоступен.

ALT: Выбор политики Hidden для шаблонных ограничений в SFTPGo.
Совет: комбинация шаблонов и прав делает гибкую политику доступа: используйте Hidden для приватных/служебных файлов и Deny для явных запрещённых типов.
Практические рекомендации по безопасности и эксплуатации
- Мониторинг и логирование
- Включите детальные логи для аутентификации и файловых операций.
- Интегрируйте с ELK/EFK или любой SIEM.
- Резервное копирование
- Резервируйте конфигурацию /etc/sftpgo и сертификаты /var/lib/sftpgo/certs.
- Для S3 — используйте встроенные возможности репликации или бэкап на уровне объекта.
- Ограничение доступа к WebAdmin
- Разрешите доступ только из внутренней сети или через VPN.
- Для публичного доступа включайте MFA на стороне IdP (при OIDC).
- Обновления
- Поддерживайте пакет SFTPGo обновлённым и тестируйте апдейты на staging.
- Минимизация прав
- Работа от отдельного системного пользователя sftpgo с минимальными правами.
- Шифрование хранения
- Используйте зашифрованное хранилище для чувствительных данных или объектное хранилище с серверной шифровкой.
Чек‑листы по ролям
Администратор (развёртывание):
- Установить пакет из PPA
- Настроить UFW и security groups
- Создать systemd unit и проверить auto‑start
- Настроить сертификаты (ACME) и HTTPS
- Создать шаблоны пользователей и группы
Администратор безопасности:
- Ограничить доступ к WebAdmin по IP/VPN
- Подключить OIDC и включить MFA на IdP
- Настроить Geo‑IP фильтрацию при необходимости
- Настроить резервное копирование конфигов и ключей
Оператор/DevOps:
- Настроить мониторинг и алерты на ошибки сервиса
- Подготовить процесс обновления и отката
- Интегрировать логи в централизованную систему
Мини‑методология по развёртыванию SFTPGo в организации
- Планирование: определить требования (сколько пользователей, S3/локальное хранение, WebAdmin публичный/внутренний).
- Тестовая зона: развёртывание на staging, тест основных сценариев — вход, загрузка, шаринги, группы.
- Безопасность: настроить UFW, WebAdmin доступ, ACME, OIDC.
- Документирование: сохранить runbook, SOP по восстановлению и инцидентам.
- Постановка на мониторинг: алерты по ошибкам и количеству ошибок аутентификации.
- Go‑live и пострелизная проверка.
Decision flowchart (Mermaid)
flowchart TD
A[Начало: требование к SFTP]
A --> B{Нужен публичный WebAdmin?}
B -- Да --> C[Настроить UFW + HTTPS + ACME]
B -- Нет --> D[WebAdmin только во внутренней сети]
C --> E{Требуется SSO?}
D --> E
E -- Да --> F[Интегрировать OIDC + pre-login hooks]
E -- Нет --> G[Локальные пользователи и шаблоны]
F --> H{Нужен доступ внешним пользователям?}
G --> H
H -- Да --> I[Настроить External Shares с политиками]
H -- Нет --> J[Обычный SFTP режим]
I --> K[Проверить логи, лимиты и срок жизни ссылок]
J --> K
K --> L[Мониторинг + Backup]
L --> M[Продакшен]ALT: Диаграмма принятия решений для развёртывания SFTPGo.
Примеры тест-кейсов и критерии приёмки
Критерии приёмки для базового развёртывания:
- Установлен и запущен сервис sftpgo
- WebAdmin доступен по HTTPS с валидным сертификатом
- Пользователь создаётся через WebAdmin и может подключиться по SFTP
- Виртуальные папки S3 доступны только в рамках заданных префиксов
- Внешние шаринги работают в режиме Read/Write согласно настройке
- Geo‑IP фильтр блокирует/разрешает страны как в конфиге
Тест-кейсы:
- Создать пользователя user1 в группе Primary — проверить upload 500MB
- Попробовать загрузить файл 2GB — ожидать отказ при лимите 1GB
- Создать внешнюю ссылку Read — скачать файлы как анонимный пользователь
- Создать external link Write — загрузить файл как внешнее лицо и убедиться, что list отсутствует
- Из страны, не входящей в allowed-countries плагина — попытаться подключиться и проверить логи
Сопроводительный playbook для быстрой ручной установки
- apt update && apt upgrade
- apt install ufw
- sudo ufw allow OpenSSH; sudo ufw allow 2022/tcp; sudo ufw allow 8080/tcp; sudo ufw enable
- add-apt-repository ppa:sftpgo/sftpgo; apt update; apt install sftpgo
- systemctl status sftpgo
- Открыть http://
:8080/ и пройти мастер установки - Настроить ACME и сертификаты при необходимости
- Перенастроить /etc/sftpgo/sftpgo.json (branding, plugins, httpd, acme)
- sudo systemctl restart sftpgo.service
Совместимость и миграция
- SFTPGo поддерживается на Linux, Windows, macOS и FreeBSD. В статье описана установка на Ubuntu 22.04.
- При миграции с другой SFTP-системы: экспортируйте пользователей, настройте маппинг путей и прав, протестируйте реплику на staging.
- Для S3-совместимых хранилищ убедитесь в корректности endpoint и валидности credentials.
Security hardening — краткий список
- Разрешать WebAdmin только из доверенной сети или через VPN.
- Включить HTTPS и ACME; закрыть HTTP, если не нужен.
- Использовать OIDC + MFA для управления доступом.
- Регулярные обновления SFTPGo и системы.
- Логи в SIEM и автоматические алерты на аномалии.
Примечания по приватности и юрисдикциям
- Если используете Geo‑IP или храните персональные данные, учитывайте требования GDPR/локального законодательства по хранению и обработке данных.
- Для передачи персональных данных через внешний шаринг используйте пароль и срок действия ссылки.
Заключение
SFTPGo — мощный и гибкий выбор для организации SFTP-услуг с поддержкой облачных бакетов, веб-интерфейсов и интеграций. Версия v2.3.0 добавляет важные возможности — группы, улучшенные внешние шаринги, брендинг, OIDC, ACME и Geo‑IP фильтрацию — которые упрощают управление и безопасную эксплоатацию сервиса. Следуйте чек-листам, тестируйте в staging и документируйте SOP для надёжной эксплуатации.
Ключевые шаги: правильно настроить брандмауэр, пройти мастер установки WebAdmin, настроить HTTPS/ACME, интеграцию с IdP (если требуется) и протестировать политики доступа на уровне групп и виртуальных папок.
Важно
- Всегда выполняйте масштабное тестирование политик доступа и интеграций в тестовой среде.
- Не оставляйте WebAdmin открытым без ограничения доступа.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента