Очень много файлов требуют постоянной синхронизации на разных устройствах и иногда очень удобно из любой точки мира загрузить необходимый файл, без необходимости таскать флешку искать где её открыть и т.п. В общем очевидные плюсы. Давным давно в моем пользовании были 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