Интересное по SFTPGo

В общем тут просидел пару дней с этой штукой, чуть глаза не вытекли :sweat_smile:, но подумал, что может имеет место быть отдельной темы про всякое разное с этой штукой.

Не сразу въехал из-за разнообразной документации у них на сайте.
В итоге имеем 3 версии этой программы: ИнтэрпрайзЭдишен (кто-то пользуется кстати?), потом 2.7 и наконец 2.6.

Что-то работает в одной, но не работает в другой, но в целом они все похожи. Вот такой зоопарк там с версиями.

Например в 2.6 есть rsync и он работает. А в 2.7 его выпилили и я не мог понять долго, почему в 2.7 не заводится никак… пока не прочитал изменения между версиями :nerd_face:

В ынтырпрайз-эдишен похоже даже синтаксис описания скриптов-ХУКов у них более расширенное. Тоже долго не мог заставить работать автосоздание пользователей по входу через OpenID, согласно доке.

Сейчас нахожусь на 2.7 версии, продолжаю изучать. Так же там не заработал нормально русский интерфейс (видимо в 2.6 он иначе или что, не ясно). Пока это оставил.

Еще не смог заставить срабатывать хук на логин по WebDAV-протоколу. Вот по OIDC в одном месте схватывает, по SFTP - в другом… может у кого срабатывает или кто знает, как заставить для WebDAV работать хук SFTPGO_DATA_PROVIDER__PRE_LOGIN_HOOK? Было бы полезно.

Ну а по итогу получил более-менее рабочее решение взамен Synology File, Synology WebDAV и Synology SFTP…

В SFTPGo умеет и настроено сейчас:

  1. Брать пользователей из LDAP, что полезно при sftp, webdav подключениях
  2. Подвязывается к OIDC, что круто при входе по https, где можно убрать логин\пароль для входа.
  3. Автосоздание пользователя с включением в группу (крючки в OIDC, SFTP, но не срабатывает при WebDAV :sob:)
  4. Квоты
  5. Виртуальные общие папки (обычные папки на самом деле, просто расположены вне хомяка пользователя)
  6. ACL (чтобы кто-то мог только читать, а кто-то и записывать в папку).

Сама по себе настройка всего этого не столько очевидная, местами. Но по итогу что-то как-то получилось и поехало в народ. Тестирую.

тоже тестил 2.7, по поводу русского языка сделал так: есть файл итальянской локали, его нейронка перевела и я его в контейнере прописал, вероятно это колхоз, но это работало)
из плюсов работает быстро и файлы хранятся как есть (не бьется на чанки).

А выложи этот файл, подсуну тоже, гляну. Интерфейс весь на русском в итоге?

Еще с учетом того, что у меня веб-клиент заходит без пароля, только по OIDC, то выход был не очень. Т.е. при выходе сессия самого sftpgo закрывалась, но сессия самого OIDC - нет.

Нашел решение в шаблонах sftpgo. Т.е. в файле base.html для шаблонов админа и юзера в соответствующих папках webadmin и webclient поиском нашел и заменил с

<a id="id_logout_link" href="#" class="menu-link px-3 py-2">

на ссылку логаута моего OIDC, например

<a id="id_logout_link" href="https://auth.example.ru/logout" class="menu-link px-3 py-2">

В итоге при нажатии внутри вэб-морды sftpgo на кнопку sign out, т.е. выход - сессия в OIDC закрывается и при входе снова придется пройти автоизацию

volumes:
- ./locales/it:/usr/share/sftpgo/static/locales/it

файл на ядиск скинул, тут не нашел как загрузить:

Спасибо, привязал. Похоже почти все на русском теперь. Гораздо приятнее народу стало работать в вэб.

Разраб вроде как движется в сторону улучшения многоязыковой поддержки. Может быть из коробки все будет в будущем.

а можете выложить готовый docker compose для развертывания ?

Упрощенно, для запуска хватит.
файлик локали подлолжить выше в папку

services:
  sftpgo:
    image: drakkan/sftpgo:v2.7.6-plugins
    container_name: sftpgo
    ports:
      - 8813:8813 # HTTP
      - 2022:2022 # SFTP
      - 10080:10080 # WEBDAV
    environment:
      SFTPGO_CONFIG_FILE: "/conf/sftpgo.json"
      SFTPGO_LOG_LEVEL: "debug" # debug, info, warn, error
      SFTPGO_COMMON__DEFENDER__ENABLED: true
      SFTPGO_WEBDAVD__BINDINGS__0__PORT: 10080
      SFTPGO_WEBDAVD__CACHE__USERS__EXPIRATION_TIME: 1
      SFTPGO_MFA__TOTP: ""
      SFTPGO_HTTPD__BINDINGS__0__PORT: 8813
      SFTPGO_HTTPD__BINDINGS__0__LANGUAGES: "it"
      SFTPGO_HTTPD__BINDINGS__0__ENABLE_WEB_ADMIN: 1
      SFTPGO_HTTPD__BINDINGS__0__ENABLE_REST_API: 0
      SFTPGO_HTTPD__BINDINGS__0__RENDER_OPENAPI: 0
      SFTPGO_HTTPD__BINDINGS__0__HIDE_LOGIN_URL: 1
    volumes:
      - ./conf/sftpgo.json:/conf/sftpgo.json:ro
      - ./conf/locales/it/:/usr/share/sftpgo/static/locales/it/:ro
      - ./data/:/var/lib/sftpgo/:rw
      - ./homes/:/srv/sftpgo/data/:rw

В строке SFTPGO_COMMON__DEFENDER__ENABLED: true нужно поставить кавычки вокруг "true"

еще бы conf/sftpgo.json без паролей compose монтирует этот файл с хоста что бы можно было повторить с чистой установкой