Синхронизация файлов Seafile

Очень много файлов требуют постоянной синхронизации на разных устройствах и иногда очень удобно из любой точки мира загрузить необходимый файл, без необходимости таскать флешку искать где её открыть и т.п. В общем очевидные плюсы. Давным давно в моем пользовании были SugarSync, которые резко стал платным, DropBox размер хранилища правда маленький, YandexDisk, Google Drive — тоже хорошо, но у них есть минус большой — это тормознутость клиентов (возможно это на моих устройствах), это дико раздражат, особенно когда нужно синхронизировать всего один файл. В качестве альтерантивы было решено попробовать Seafile.

Плюсы-Минусы

Из очевидных плюсов:

  • хранение файлов на собственном сервере
  • разворачивается любым удобным способом (в том числе через docker)
  • клиенты для всех платформ

из неочевидных плюсов ещё возможность настройки webdav, об этом ниже

Из очевидных минусов:

  • нужен собственный сервер
  • необходимо администрировать
  • никто не отвечат за безопасность кроме самого себя

Установка seafile

На странице Seafile Server есть полное описание вариантов установки. Мы используем Docker вариант
Считается, что докер уже есть в системе. Скачиваем файл docker-compose.yml и помещаем в нужную папку. В файле, если нужно — необходимо заменить пароль для mysql, админский email и пароль для входа в seafile в переменных SEAFILE_ADMIN_EMAIL и SEAFILE_ADMIN_PASSWORD, если настроен SSL, можно так же указать параметры. Так же можно изменить путь до файлов данных контейнера mysql и seafile, но если изменить их расположение, то необходимо убедиться, что владельцем являеется root. Так же можно изменить порты, если 80 или 443 уже заняты и использовать reverse_proxy для nginx

запускаем docker-compose up -d

Настройка nginx

Прокинем через прокси сам контейнер

server {
    listen 80;
    server_name seafile.example.com;
    location / {
        proxy_pass http://127.0.0.1:85;
    }
}

перезагрузим nginx
Теперь наш сервер будет доступен по адресу seafile.example.com

WebDAV

WebDAV очень полезен, когда необходимо работать с файлами как с локальным диском, загружать бекапы и т.п. Seafile поддерживает WebDAV, для этого необходимо выполнить 3 шага:

1. Настройка seafile webdav

Настройка происходит в файле /opt/seafile/conf/seafdav.conf (если смотреть внутри контейнера) или можно найти по адресу ваших volume в docker-compose.yml, seafile-data это именно оно.
Включаем в файле Webdav — параметр enabled и указываем порт. Этот порт внутри контейнера, поэтому его желательно будет прокинуть, какой его указать тут, не суть важно.

2. Настройка портов в docker-compose.yml

Добавим порт "8080:8080" (или другой, на ваше усмотрение) для контейнера seafile и перезапустим контейнер

3. Настройка webdav в nginx

добавим к конфигурации для сервера seafile конфигурацию для webdav по ссылке seafdav

    location /seafdav {
         proxy_pass         http://127.0.0.1:8080/seafdav;
         proxy_set_header   Host $host;
         proxy_set_header   X-Real-IP $remote_addr;
         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header   X-Forwarded-Host $server_name;
         proxy_set_header   X-Forwarded-Proto $scheme;

         client_max_body_size 0;

         proxy_connect_timeout  36000s;
         proxy_read_timeout  36000s;
         proxy_send_timeout  36000s;
         send_timeout  36000s;
    }

перезагружаем nginx

Теперь webdav будет доступен по ссылке http://sf.example.com/seafdav

Источники

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.