Облачные сервисы для хранения и обмена файлами давно стали привычными и популярными как среди простых пользователей, так и в корпоративной среде. В большинстве случаев публичные сервисы закрывают основные потребности пользователей в облачных хранилищах, но в ряде случаев может потребоваться собственное решение. Это может быть связано как с объемом хранимых данных, так и с требованиями безопасности или конфиденциальности. В этом случае обратите внимание на 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.
После окончания установки на экран будут выведены учетные данные администратора, пути расположения данных и конфигурационных файлов, а также некоторые советы, советуем сохранить эту информацию.
Работу сервиса можно проверить, набрав в браузере IP-адрес сервера, после чего вы должны увидеть окно входа, для аутентификации используйте полученные на предыдущем шаге учетные данные.
После чего вы попадете в пользовательскую часть сервиса, где можете работать со своими файлами, для перехода в административную панель следует в меню справа вверху выбрать пункт Системный администратор.
В административной части вы можете управлять коллекциями, пользователями и группами, а также изменять настройки сервера.
Следует отметить особенность продукта - все сделанные в веб-интерфейсе настройки записываются в базу данных и имеют больший приоритет, нежели настройки в конфигурационных файлах. Поэтому если нужные настройки есть в веб-интерфейсе. то следует в первую очередь использовать их.
Мы же пока выполним одну из рекомендованных настроек - отправку электронной почты через внешний 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 и предложит получить сертификаты для всех найденных доменных имен, просто укажите нужный.
После получения сертификата вернемся к конфигурационному файлу 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:
Последний штрих, перейдем в административную панель и изменим два параметра SERVICE_URL и FILE_SERVER_ROOT, заменив в них http://127.0.0.1 на реальное доменное имя с указанием защищенного протокола: https://seafile.it-31.ru, во втором параметре обязательно сохраните оставшуюся часть строки адреса:
На этом основная настройка сервера Seafile завершена, можете переходить к его эксплуатации. Для работы с ним можете использовать как веб-интерфейс, так и официальный клиент, который можно скачать с официального сайта под все основные настольные или мобильные системы. Для Linux также доступны Snap и Flatpak пакеты.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии