Развертывание защищенного облака Seafile на своем сервере



Seafile

Seafile — это система хранения облачных данных с открытым исходным кодом с шифрованием файлов и групповым обменом.

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

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

Для развертывания данного облака будем использовать готовый docker образ https://github.com/haiwen/seafile-docker, в котором уже включен nginx и из коробки работает https. Нам понадобится самый простой выделенный сервер с root доступом.

Команды приводятся на примере CentOS 7, но для других дистрибутивов процесс аналогичный.

Для начала обновим систему, установим дополнительные пакеты и git.

yum update
yum install epel-release
yum install https://centos7.iuscommunity.org/ius-release.rpm
yum install rpmconf
yum install git2u

С помощью rpmconf -a --frontend=vimdiff поправим системные конфиги, если для них пришли изменения (*.rpmsave, *.rpmnew, *.rpmorig) после обновления системы.

Установим и запустим docker.

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl start docker

Установка и запуск Seafile

git clone https://github.com/haiwen/seafile-docker.git /opt/seafile-docker/
cd /opt/seafile-docker/
cp samples/server-https.conf bootstrap/bootstrap.conf
# нужно отредактировать настройки `server.hostname`, `admin.email`, `admin.password`
vim bootstrap/bootstrap.conf
./launcher bootstrap

Добавим настройки для email нотификации (подробнее в https://manual.seafile.com/config/sending_email.html) в файл shared/seafile/conf/seahub_settings.py.

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'username@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

Поправим настройки для WebDav (подробнее в https://manual.seafile.com/extension/webdav.html) в файле shared/seafile/conf/seafdav.conf.

[WEBDAV]
enabled = true
port = 8080
fastcgi = true
share_name = /seafdav

Инициализируем и запустим контейнер.

./launcher start

Настроим автозапуск после перезагрузки. Создадим файл /etc/systemd/system/seafile-docker.service со следующим содержимым.

[Unit]
Description=seafile-docker
Requires=docker.service
After=docker.service

[Service]
WorkingDirectory=/opt/seafile-docker
ExecStart=/usr/bin/docker start -a seafile
ExecStop=/opt/seafile-docker/launcher stop

[Install]
WantedBy=default.target

Затем включим автозагрузку сервисов.

systemctl enable docker
systemctl enable seafile-docker

С помощью crontab -e добавим в cron запуск garbage collector (срабатывает каждое воскресенье в 2 часа ночи).

0 2 * * Sun /usr/bin/bash -c 'cd /opt/seafile-docker/; ./launcher gc'

Теперь при посещении веб-адреса сервера будет открываться веб-интерфейс Seafile.

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

Осталось зайти в веб-интерфейс как администратор, проверить опцию — Управление системой (System Admin) -> Настройки (Settings) -> SERVICE_URL. В моем случае адрес нужно было изменить на актуальный. Затем создать пользователя. Далее под этим пользователем уже можно пользоваться своим новым защищенным облаком.