Установка облачного файлового сервиса Seafile на Ubuntu Server

  • Автор:

Seafile-install-Ubuntu-000.pngОблачные сервисы для хранения и обмена файлами давно стали привычными и популярными как среди простых пользователей, так и в корпоративной среде. В большинстве случаев публичные сервисы закрывают основные потребности пользователей в облачных хранилищах, но в ряде случаев может потребоваться собственное решение. Это может быть связано как с объемом хранимых данных, так и с требованиями безопасности или конфиденциальности. В этом случае обратите внимание на Seafile - простой и производительный облачный файловый сервис, который несложно установить самостоятельно.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Разработчики Seafile предлагают несколько способов установки продукта, один из них - с помощью готового скрипта. Это официальный скрипт от разработчиков и поддерживает он все актуальные версии Ubuntu, начиная с 18.04 (поддержка данной версии закончилась весной 2023 года). Скрипт позволяет быстро и просто получить работающий сервис и сегодня мы рассмотрим именно этот путь. В нашем случае будет использоваться Ubuntu 22.04 LTS, все команды, если не указано иного, выполняются от имени суперпользователя root или через sudo.

Установка и первоначальная настройка Seafile server

Перейдем в домашнюю директорию и скачаем скрипт:

cd
wget --no-check-certificate https://raw.githubusercontent.com/haiwen/seafile-server-installer/master/seafile-10.0_ubuntu

Версия сервера Seafile указана в имени скрипта, на сегодняшний день поддерживаются две версии: 9-я и 10-я, версия 11 находится в стадии тестирования.

Сделаем скрипт исполняемым и запустим на выполнение, при этом нужно указать желаемую версию сервера для установки, последней в линейке 10 является 10.0.1, номера версий можно посмотреть на странице Changelog.

chmod +x seafile-10.0_ubuntu
./seafile-10.0_ubuntu 10.0.1

На вопрос скрипта отвечаем, что хотим установить свободную CE (Community Edition) версию и дожидаемся окончания установки, ее время зависит от скорости входящего канала интернет. Вместе с указанной версией Seafile Server будут установлены MariaDB, Memcached и NGINX.

Seafile-install-Ubuntu-001.pngПосле окончания установки на экран будут выведены учетные данные администратора, пути расположения данных и конфигурационных файлов, а также некоторые советы, советуем сохранить эту информацию.

Seafile-install-Ubuntu-002.pngРаботу сервиса можно проверить, набрав в браузере IP-адрес сервера, после чего вы должны увидеть окно входа, для аутентификации используйте полученные на предыдущем шаге учетные данные.

Seafile-install-Ubuntu-003.pngПосле чего вы попадете в пользовательскую часть сервиса, где можете работать со своими файлами, для перехода в административную панель следует в меню справа вверху выбрать пункт Системный администратор.

Seafile-install-Ubuntu-004.png

В административной части вы можете управлять коллекциями, пользователями и группами, а также изменять настройки сервера.

Seafile-install-Ubuntu-005.png

Следует отметить особенность продукта - все сделанные в веб-интерфейсе настройки записываются в базу данных и имеют больший приоритет, нежели настройки в конфигурационных файлах. Поэтому если нужные настройки есть в веб-интерфейсе. то следует в первую очередь использовать их.

Мы же пока выполним одну из рекомендованных настроек - отправку электронной почты через внешний SMTP-сервер. Для этого откроем файл /opt/seafile/conf/seahub_settings.py, раскомментируем и приведем к следующему виду строки:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.yandex.ru'
EMAIL_HOST_USER = 'my_account@yandex.ru'
EMAIL_HOST_PASSWORD = 'Pa$$word_1'
EMAIL_PORT = '587'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

В примере показаны настройки для Яндекса, но они достаточно универсальны и для других серверов все настраивается аналогично. В случае каких-либо затруднений следует обратиться к файлу лога /opt/seafile/logs/seahub.log, где будет сохранен ответ почтового сервера.

Но не будем спешить сохранять изменения и выходить из конфигурационного файла, ниже следует правильно указать свой часовой пояс, по умолчанию сервер использует время Берлина.

TIME_ZONE  = 'Europe/Moscow'

Посмотреть список почтовых поясов можно командой:

timedatectl list-timezones

Теперь сохраняем наши изменения и перезапускаем сервер Seafile:

systemctl restart seafile-server

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

Получение сертификата Let's Encrypt и настройка NGINX

Наш облачный файловый сервис работает и это хорошо, но для полноценного использования нам потребуется прикрепить к нему доменное имя и настроить безопасный доступ с TLS-шифрованием. В этом нам поможет бесплатный сервис для получения сертификатов Let's Encrypt.

В данном примере мы будем использовать условное доменное имя seafile.it-31.ru, для него потребуется создать на DNS-сервере, обслуживающем зону запись типа A с указанием реального IP-адреса сервера и подождать пока сервер начнет отвечать по указанному имени. В противном случае получить сертификат не удастся и поэтому данное действие следует выполнить заранее. Если ваш сервер находится внутри периметра, то наружу следует пробросить порты 80 и 443.

Затем откроем конфигурационный файл виртуального хоста NGINX /etc/nginx/sites-available/seafile.conf и приведем к следующему виду опцию server_name указав в нем реальное доменное имя:

server_name seafile.it-31.ru;

Проверим конфигурацию и перезапустим веб-сервер:

nginx -t 
nginx -s reload

Далее нам понадобится последняя версия утилиты Certbot для работы с сертификатами Let's Encrypt, актуальные версии утилиты распространяются через Snap и поэтому прежде всего следует удалить версию из репозиториев, если она была установлена:

apt remove certbot

Затем установим версию из Snap:

snap install --classic certbot

После установки создадим необходимую символическую ссылку:

ln -s /snap/bin/certbot /usr/bin/certbot

Теперь получим сертификат при помощи специального плагина к NGINX:

certbot certonly --nginx

Утилита проанализирует конфигурацию NGINX и предложит получить сертификаты для всех найденных доменных имен, просто укажите нужный.

Seafile-install-Ubuntu-006.pngПосле получения сертификата вернемся к конфигурационному файлу NGINX /etc/nginx/sites-available/seafile.conf, прежде всего изменим строку:

listen 443 ssl http2;

Затем, ниже строки server_name добавим пути к сертификатам:

ssl_certificate /etc/letsencrypt/live/seafile.it-31.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/seafile.it-31.ru/privkey.pem;
server_tokens off;

Настройки шифров с поддержкой протокола TLS 1.2 и выше:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

А также прочие настройки SSL:

ssl_dhparam /etc/nginx/dhparam.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;

И заголовок HSTS принудительно предписывающий использование защищенного соединения после первого удачного подключения через него. На время отладки сервера эту опцию рекомендуется закомментировать.

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

В самом конце файла добавим еще одну секцию server для перенаправления на защищенную версию сайта всех незащищенных запросов:

server {
listen 80;
server_name seafile.it-31.ru;
rewrite ^ https://$http_host$request_uri? permanent;
server_tokens off;
}

Сохраняем изменения, после чего создадим файл параметров Диффи-Хеллмана для обеспечения режима совершенной прямой секретности:

openssl dhparam 2048 > /etc/nginx/dhparam.pem

Еще раз проверим настройки и перезапустим веб-сервер:

nginx -t 
nginx -s reload

Теперь перейдем по доменному имени и убедимся, что сервер работает по защищенному протоколу и использует сертификат Let's Encrypt:

Seafile-install-Ubuntu-007.png

Последний штрих, перейдем в административную панель и изменим два параметра SERVICE_URL и FILE_SERVER_ROOT, заменив в них http://127.0.0.1 на реальное доменное имя с указанием защищенного протокола: https://seafile.it-31.ru, во втором параметре обязательно сохраните оставшуюся часть строки адреса:

Seafile-install-Ubuntu-008.png

На этом основная настройка сервера Seafile завершена, можете переходить к его эксплуатации. Для работы с ним можете использовать как веб-интерфейс, так и официальный клиент, который можно скачать с официального сайта под все основные настольные или мобильные системы. Для Linux также доступны Snap и Flatpak пакеты.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments