sFTPGo на Rocky Linux: установка и настройка безопасного SFTP / WebDAV / HTTP(S) сервера
TL;DR
sFTPGo — современный SFTP-сервер с поддержкой HTTPS и WebDAV. В этой инструкции показано, как установить sFTPGo на Rocky Linux (v8/ v9), включить веб-панель и WebDAV, открыть порты в firewalld, подключить SSL-сертификаты от Let’s Encrypt и создать пользователей. В конце — чеклисты, сценарии отката, рекомендации по безопасности и часто задаваемые вопросы.
Важно: перед развёртыванием в продакшен убедитесь, что у вас есть резервные копии конфигурации и доступ к консоли сервера.
О чём статья
- Установка sFTPGo через репозиторий DNF или RPM-пакет
- Конфигурация протоколов: SFTP (порт 2022), httpd (порт 8080), WebDAV (порт 8090)
- Настройка SSL (Let’s Encrypt) и firewalld
- Создание администратора и пользователей через веб-интерфейс
- Примеры подключения: FileZilla (SFTP), WebClient, WebDAV
- Проверки, сценарии восстановления и рекомендации по безопасности
Введение
sFTPGo — гибкий сервер для обмена файлами с поддержкой нескольких бэкендов хранения (локальный файловый диск, S3-совместимые хранилища, Google Cloud Storage, Azure Blob и т. п.), баз данных (SQLite по умолчанию, PostgreSQL, MySQL/MariaDB) и множества сетевых протоколов: SFTP, FTP/S, HTTP/S и WebDAV. Он подходит как для локального использования, так и для корпоративных развёртываний.
Определения в одну строку:
- SFTP: безопасная передача файлов по SSH.
- WebDAV: расширение HTTP для работы с удалённой файловой системой.
- httpd в контексте sFTPGo: встроенный HTTPS-интерфейс администратора и WebClient.
Требования
- Сервер с Rocky Linux 8 или 9.
- Ненулевой привилегированный sudo-пользователь.
- Домен, указывающий на IP сервера (рекомендуется для SSL и доступа из браузера).
- Доступ к Интернету для установки пакетов и получения SSL-сертификатов.
Советы по окружению:
- Для продакшена используйте отдельный IP или поддомен и защитный брандмауэр.
- Планируйте резервное хранилище для логов и бэкапов конфигураций.
Установка sFTPGo (варианты)
Есть два основных способа установки: через репозиторий с помощью DNF или установкой RPM-пакета. Оба варианта показаны ниже; выберите тот, который удобнее вам.
Установка через DNF (рекомендуемый для упрощённого обновления)
Добавьте репозиторий sFTPGo и установите пакет:
ARCH=`uname -m`
curl -sS https://ftp.osuosl.org/pub/sftpgo/yum/${ARCH}/sftpgo.repo | sudo tee /etc/yum.repos.d/sftpgo.repoОбновите списки пакетов и установите sftpgo:
sudo dnf update
sudo dnf install sftpgoЕсли система запрашивает подтверждение GPG-ключа репозитория — подтвердите.

После установки запустите и включите сервис:
sudo systemctl start sftpgo
sudo systemctl enable sftpgoПроверьте статус:
sudo systemctl status sftpgo
Установка через RPM (альтернатива)
Если вы хотите загрузить конкретную версию вручную, можно скачать RPM с релизов GitHub и установить его.
Пример автоматического скачивания последнего релиза:
VER=$(curl -s https://api.github.com/repos/drakkan/sftpgo/releases/latest|grep tag_name | cut -d '"' -f 4 |sed 's/v//g')
wget https://github.com/drakkan/sftpgo/releases/download/v$VER/sftpgo-$VER-1.x86_64.rpmУстановите RPM-пакет:
sudo rpm -Uvh sftpgo-$VER-1.x86_64.rpmПосле установки включите и запустите сервис:
sudo systemctl enable sftpgo
sudo systemctl start sftpgoПроверьте статус:
sudo systemctl status sftpgo
Примечание: в оригинальном примере в командах была опечатка systemd-юнита (sftpdgo). Используйте единое имя сервиса sftpgo.
Настройка firewalld для sFTPGo
sFTPGo использует несколько сервисов и портов. Для доступа клиентов и администраторов откройте необходимые порты.
Рекомендуемые порты:
Protocol Port Доступ
-----------------------------------
TCP 8080 httpd (админ/веб-клиент)
TCP 2022 SFTP
TCP 8090 WebDAV (HTTPS)Добавьте правила в firewalld и перезагрузите настройки:
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8090/tcp
sudo firewall-cmd --permanent --add-port=2022/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-portsЕсли сервер находится за NAT, перенаправьте эти порты на внешний IP/маршрутизатор. Для дополнительных зон firewalld укажите ключ –zone=public (или вашу зону).

Совет: ограничьте доступ к административному порту (8080) по IP-адресу или VPN для большей безопасности.
Подготовка SSL (Let’s Encrypt)
Для защищённых HTTPS/WebDAV соединений нужен сертификат. Рекомендуется использовать Let’s Encrypt и certbot.
Установка certbot и получение сертификата (пример для Apache/Nginx не требуется, используем –standalone):
sudo dnf install certbot
sudo certbot certonly --standalone -d sftp.example.comПолученные файлы обычно лежат в /etc/letsencrypt/live/sftp.example.com/fullchain.pem и privkey.pem. Эти пути нужно указать в конфигурации sFTPGo.
Важно: если на сервере уже запущен веб-сервер на 80/443, используйте –webroot или получите сертификат на другом хосте и перенесите файлы.
Конфигурация sFTPGo (файл sftpgo.json)
Файл конфигурации находится обычно по пути /etc/sftpgo/sftpgo.json. Всегда делайте резервную копию перед изменением:
sudo cp /etc/sftpgo/sftpgo.json /etc/sftpgo/sftpgo.json.bak
sudo nano /etc/sftpgo/sftpgo.jsonНиже приведены ключевые фрагменты для WebDAV и HTTP (httpd). Обновите пути к сертификатам и, при необходимости, адреса привязки.
Пример фрагмента webdavd (отредактируйте certificate_file и certificate_key_file):
"webdavd": {
"bindings": [
{
"port": 8090,
"address": "",
"enable_https": true,
"certificate_file": "/etc/letsencrypt/live/sftp.example.com/fullchain.pem",
"certificate_key_file": "/etc/letsencrypt/live/sftp.example.com/privkey.pem",
"min_tls_version": 12,
"client_auth_type": 0,
"tls_cipher_suites": [],
"prefix": "",
"proxy_allowed": [],
"client_ip_proxy_header": "",
"client_ip_header_depth": 0
}
],Фрагмент httpd (включая веб-панель и WebClient):
"httpd": {
"bindings": [
{
"port": 8080,
"address": "",
"enable_web_admin": true,
"enable_web_client": true,
"enabled_login_methods": 0,
"enable_https": true,
"certificate_file": "/etc/letsencrypt/live/sftp.example.com/fullchain.pem",
"certificate_key_file": "/etc/letsencrypt/live/sftp.example.com/privkey.pem",
"min_tls_version": 12,
"client_auth_type": 0,
"tls_cipher_suites": [],
"proxy_allowed": [],
"client_ip_proxy_header": "",
"client_ip_header_depth": 0,
"hide_login_url": 0,
"render_openapi": true,
"web_client_integrations": [],После правки перезапустите сервис:
sudo systemctl restart sftpgoПримечание: внимательно указывайте верный путь к сертификатам (в примере исходной инструкции были опечатки с “letsencryt”).
Настройка хранилища и базы данных (обзор)
sFTPGo по умолчанию использует SQLite для хранения метаданных; для более крупной инфраструктуры стоит рассмотреть PostgreSQL или MySQL/MariaDB. Бэкенды хранения файлов также разнообразны:
- Локальная файловая система (включая зашифрованные каталоги).
- Amazon S3 / S3-совместимые сервисы.
- Google Cloud Storage.
- Azure Blob Storage.
Пример: настроить S3-бэкенд можно через GUI или добавить профиль в конфигурации bэкендов. В документации sFTPGo есть подробные примеры конфигурации для каждого провайдера.
Когда использовать базы:
- SQLite: тестовые и небольшие инсталляции.
- PostgreSQL/MySQL: когда требуется высокая нагрузка, кластеризация и резервные копии.
Создание администратора и пользователей через веб-интерфейс
Откройте в браузере: https://sftp.example.com:8080/ (замените sftp.example.com на ваш домен). При первом запуске система предложит создать администратора.
- Заполните форму: имя администратора, email, пароль.
- После входа создайте группы и пользователей через меню “Groups” и “Users”.
Пошагово (GUI):
- Меню “Groups” → “New group” → укажите имя (например, manager) → примените ACL, дисковую квоту и ограничение трафика при необходимости.
- Меню “Users” → “New user” → укажите логин (alice), пароль, привязать к группе manager, задать домашнюю директорию и права.

Подсказка: можно автоматизировать создание пользователей через REST API или CLI-инструменты sFTPGo.
Примеры подключения клиентов
Ниже приведены детальные примеры для популярных клиентов.
Подключение через FileZilla (SFTP)
Откройте FileZilla → File → Site Manager (или Ctrl+S) → New site.
Параметры:
- Protocol: SFTP - SSH File Transfer Protocol
- Host: sftp.example.com
- Port: 2022
- Logon Type: Normal
- User: alice
- Password: <ваш пароль>
Нажмите Connect. При первом подключении клиент спросит принять серверный сертификат/ключ — подтвердите, если доверяете серверу.

После соединения вы сможете передавать файлы как обычно.
Доступ через WebClient (httpd)
Откройте в браузере: https://sftp.example.com:8080/web/client/login Войдите под пользователем alice. Через WebClient можно загружать файлы, настраивать 2FA, создавать публичные ссылки на файлы и управлять ACL.

Подключение через WebDAV
Примеры URL и подсказки по монтированию:
- Windows: через “Map network drive” или прописав адрес в Проводнике: davs://sftp.example.com:8090/
- macOS: Finder → Go → Connect to Server → davs://sftp.example.com:8090/
- Linux (Nautilus, Dolphin): в адресной строке используйте davs://sftp.example.com:8090/
Вставьте учетные данные (alice и пароль). Если используется самоподписанный сертификат, ОС может запросить доверие к сертификату.

Автоматизация: примеры команд и REST API
sFTPGo предоставляет HTTP REST API для управления пользователями, группами и бэкендами. Примеры запросов можно найти в официальной документации (OpenAPI), а WebAdmin обычно имеет пункт “Render OpenAPI”.
Короткая демонстрация: получить список пользователей через API (пример, предварительно получите токен администратора):
# Пример curl-запроса (требует корректный токен авторизации)
curl -X GET "https://sftp.example.com:8080/api/v2/users" -H "Authorization: Bearer " -k Не забывайте защищать токены и хранить их в сейфе секретов.
Проверки и критерии приёмки
Перед переводом в продакшен выполните следующие проверки:
- Сервис sftpgo запущен и включён в systemd.
- Порты 8080, 8090 и 2022 доступны из нужных сетей.
- SSL-сертификаты корректны и не истекают.
- Администратор создан, доступен GUI, можно создать пользователя.
- Пользователь может подключиться через SFTP и WebClient и передать файл.
- Логирование работает и логи собираются системой ретенции.
Критерии приёмки:
- Все перечисленные проверки успешны.
- Документация по развёртыванию и откату сохранена в репозитории.
Runbook: типичные операции и откат
Операция: обновление sFTPGo через DNF
- Сделайте бэкап /etc/sftpgo/sftpgo.json и папки хранения.
- Выполните sudo dnf upgrade sftpgo
- Перезапустите: sudo systemctl restart sftpgo
- Проверьте статус и логи: sudo journalctl -u sftpgo –no-pager -n 200
Откат (если новая версия нарушила работу):
- sudo systemctl stop sftpgo
- Восстановите предыдущий sftpgo.json из бэкапа.
- Если обновлён бинарный пакет, установите старую версию RPM (если доступна).
- sudo systemctl start sftpgo
Инцидент: некорректный SSL после обновления certbot
- Проверьте файлы сертификата в /etc/letsencrypt/live/
. - Перезапустите sftpgo: sudo systemctl restart sftpgo
- Если проблема не решена — временно отключите enable_https: false в sftpgo.json для диагностики (не рекомендуется в продакшене).
Роли и чеклисты
Чеклист для администратора (DevOps):
- Настроить бэкап конфигурации и данных.
- Настроить мониторинг статуса сервиса и метрик диска/трафика.
- Ограничить доступ к 8080 по IP/VPN.
- Настроить автоматическое обновление сертификатов.
Чеклист для владельца сервиса (Owner):
- Определить SLA для восстановления сервиса.
- Настроить квоты и ACL для пользователей/групп.
- Подготовить процесс управления доступом и ротации паролей.
Чеклист для пользователя (User):
- Получить учётные данные и тестовый доступ.
- Убедиться, что можно загружать и скачивать файлы.
- При необходимости включить 2FA через WebClient.
Безопасность и жёсткие рекомендации
- Всегда используйте HTTPS для WebClient и WebDAV (enable_https: true).
- Закрывайте административный порт 8080 от публичного интернета, если возможно.
- Ограничивайте права пользователей и используйте группы с ACL.
- Логируйте и централизуйте логи (rsyslog, ELK или аналог).
- Планируйте регулярные обновления и тесты восстановления бэкапов.
Security hardening — чеклист:
- Принудительное использование TLS 1.2+ (min_tls_version: 12).
- Настройка HSTS, если фронтенд проходит через обратный прокси.
- Установка fail2ban на SSH/SFTP для защиты от грубфорса (если применимо).
- Ограничение исходящих подключений сервиса (security group / firewall).
Цитата эксперта: “Простая и надёжная конфигурация с регулярными бэкапами и ограничением доступа часто сильнее сложных мер безопасности без дисциплины в эксплуатации.”
Конфиденциальность и соответствие GDPR
Если вы храните персональные данные через sFTPGo (имена пользователей, загружаемые файлы), продумайте следующие моменты:
- Убедитесь, что доступ к данным ограничен и логируются все админ-операции.
- Настройте политики хранения и удаления данных (retention policy).
- При необходимости предоставьте механизмы удаления/экспорта данных по запросу пользователя.
Эти рекомендации помогут соответствовать общим требованиям в области защиты персональных данных; при юридических сомнениях проконсультируйтесь с юристом.
Тестовые случаи и приёмка (микро)
- TC-01: Установить sftpgo, создать администратора, зайти в GUI — ожидаемый результат: доступ присутствует.
- TC-02: Создать пользователя alice, подключиться через SFTP — ожидаемый результат: успешная передача файлов.
- TC-03: Монтаж WebDAV в файловом менеджере — ожидаемый результат: директория доступна для чтения/записи согласно ACL.
- TC-04: Обновление сертификата — ожидаемый результат: перезапуск sftpgo и корректные HTTPS-подключения.
Отладка — часто встречаемые проблемы и их решения
Проблема: невозможность подключиться через SFTP.
- Проверьте, запущен ли сервис systemctl status sftpgo.
- Убедитесь, что порт 2022 открыт в firewalld и нет сетевого блокирования.
- Посмотрите логи: sudo journalctl -u sftpgo -n 200
Проблема: браузер не доверяет сертификату.
- Убедитесь, что сертификат действителен и корректно указан в sftpgo.json.
- Если используете самоподписанный сертификат — импортируйте его в доверенные хранилища клиента.
Проблема: WebDAV монтируется только на чтение.
- Проверьте права файловой системы на стороне сервера и настройки ACL в sFTPGo для пользователя.
Дополнительные варианты развёртывания (альтернативные подходы)
- Размещение sFTPGo за обратным прокси (Nginx/Traefik) для управления TLS, HSTS и rate-limiting.
- Использование внешней базы данных (PostgreSQL) для масштабируемости.
- Интеграция с системой аутентификации LDAP/AD для централизованного управления пользователями.
Пример проксирования через Nginx (упрощённо):
# Пример server блока Nginx для проксирования WebClient
server {
listen 443 ssl;
server_name sftp.example.com;
ssl_certificate /etc/letsencrypt/live/sftp.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sftp.example.com/privkey.pem;
location / {
proxy_pass https://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}1‑строчный глоссарий
- ACL: набор правил доступа к файлам/директориям.
- WebClient: веб-интерфейс sFTPGo для пользователей.
- httpd: встроенный в sFTPGo HTTPS-интерфейс и WebClient.
Часто задаваемые вопросы
Как обновлять сертификаты Let’s Encrypt автоматически?
Используйте certbot с cron или systemd-timer. После обновления сертификатов перезапустите sftpgo или отправьте ему сигнал для перезагрузки конфигурации.
Можно ли использовать sFTPGo без SSL?
Технически можно, но не рекомендуется: WebClient и WebDAV в таком случае будут передавать данные в открытом виде. Лучше включить HTTPS.
Как подключить S3-бэкенд для хранения файлов?
Через GUI или добавление профиля в конфигурации: укажите endpoint, ключи доступа и имя бакета, затем сопоставьте профиль пользователю или группе.
Где смотреть логи sFTPGo?
Журналы доступные через systemd: sudo journalctl -u sftpgo. Дополнительно можно настраивать файловые лог-файлы в конфигурации.

Заключение
Вы развернули sFTPGo на Rocky Linux и настроили основные протоколы: SFTP, WebDAV и HTTPS через httpd. В статье рассмотрены варианты установки, настройка SSL, открытие портов в firewalld, создание пользователей и практические чеклисты для эксплуатации и безопасности. Следуйте процедурам бэкапа и отката, ограничивайте доступ к административному интерфейсу и используйте внешние бэкенды и базы данных для масштабирования.
Короткий список дальнейших шагов:
- Настроить автоматическое обновление сертификатов и мониторинг логов.
- Подумать о внешней базе данных для большего масштаба.
- Внедрить регулярное тестирование отката обновлений.
FAQ (в конце статьи)
- Как получить помощь по специфичным ошибкам? Проверьте логи systemd и документацию на GitHub проекта sFTPGo. Коммьюнити и issue-трекер часто содержат решения для типичных проблем.
- Поддерживает ли sFTPGo двухфакторную аутентификацию? Да, WebClient поддерживает двухфакторную аутентификацию; её можно включить для пользователей в интерфейсе.
- Можно ли интегрировать sFTPGo с LDAP/AD? Да, sFTPGo поддерживает внешние механизмы аутентификации, включая LDAP/AD — настройка выполняется через конфигурацию или API.

Похожие материалы
Herodotus — Android‑троян: признаки и защита
Включить новое меню Пуск в Windows 11
Панель полей сводной таблицы в Excel
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — исправление