Seafile: разверни свой аналог облачного диска.

Main

Оценка: 92.7% - 17 Голосов

Общая

Seafile это достойная замена любого облачного сервиса хранения данных. Кроcсплатформенная система, имеющая клиенты для работы в ОС Windows, Linux, Android, IOS. Имеет как платную PRO-версию сервера (версия PRO бесплатна для 3х пользователей системы), так и бесплатную комьюнити-версию сервера с неограниченным количеством пользователей.

В статье будет рассмотрена возможность установки Seafile в ОС Debian 9, с веб-сервером Nginx.

Содержание

Подготовка сервера.

Установка сервера.

Настройка почтовых уведомлений уведомлений.

Скрипт для очистки сервера от мусора, потерянных библиотек и файлов.

Интеграция с Active Directory.

Кастомизация сервера.

 

Подготовка сервера.

Перед началом установки сервера необходим установить английскую UTF-8 локаль, выполнив команду:


dpkg-reconfigure locales

И выбрав en_US.UTF-8 UTF-8, нажмем ОК

View the embedded image gallery online at:
https://itcrowd.top/seafile#sigProId18387057b5

 

Установка необходимых пакетов.


apt install openjdk-8-jre poppler-utils libreoffice libreoffice-script-provider-python libpython2.7 python-pip mysql-server python-setuptools python-imaging python-mysqldb python-memcache ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy python-pip nginx -y

 

Установка сервера.

Скачиваем и распаковываем последнюю версию Seafile сервера:


wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz
tar -zvxf seafile-server_6.2.4_x86-64.tar.gz

 

Переносим распакованную папку в нужное для вас место (я перенес просто в корень):


mkdir /seafile-server
mv -v seafile-server-6.2.4/* /seafile-server

 

Переходим в папку и запускаем скрипт и отвечаем на вопросы установки:


cd /seafile-server
./setup-seafile-mysql.sh

 

В пункте "Where do you want to put your seafile data? Please use a volume with enough free space" указываем путь к папке, в которой будут храниться файловые библиотеки:


[ default "/seafile-data" ] /seafile-server/seafile-data

 

В пункте "Please choose a way to initialize seafile databases:" выбираем первый пункт:


[1] Create new ccnet/seafile/seahub databases

 

Root пароль от MySQL это пароль от учетки root ОС.

Скрипт создаст отдельного пользователя MySQL.
Базы можно создать предложенные по-умолчанию.

 

После успешной установки запускаем сервер и создаем пароль первого пользователя с правами администратора:


./seafile.sh start
./seahub.sh start
admin user

 

Создаем авто запускаемые службы.

Служба seafile:

Создаем файл:


nano /etc/systemd/system/seafile.service

Помещаем в файл:


[Unit]
Description=Seafile Server
After=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/seafile-server/seafile.sh start
ExecStop=/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=root
Group=root
[Install]
WantedBy=multi-user.target

 

Служба seahub:

Создаем файл:


nano /etc/systemd/system/seahub.service

Помещаем в файл:


[Unit]
Description=Seafile Hub
After=network.target seafile.service
[Service]
Type=oneshot
ExecStart=/seafile-server/seahub.sh start-fastcgi
ExecStop=/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=root
Group=root
[Install]
WantedBy=multi-user.target

 

Активируем автозапускаемые службы:


systemctl enable seafile
systemctl enable seahub

 

Настройка Nginx.


nano /etc/nginx/sites-available/seafile.conf

Добавляем в файл:


server {
listen 80;
server_name IP\ИМЯ_ДОМЕНА;
proxy_set_header X-Forwarded-For $remote_addr;
# Reverse proxy for seafile
location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REMOTE_ADDR $remote_addr;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
# Reverse Proxy for seahub
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 1000m;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
location /media {
root /seafile-server/seahub;
}
}

 

Удаляем настройку по-умолчанию и активируем созданную конфигурацию сайта:


rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled

 

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


SERVICE_URL: ИМЯ-САЙТА
FILE_SERVER_ROOT: ИМЯ-САЙТА\seafhttp

Перезапускаем сервер.

 

Настройка почтовых уведомлений уведомлений.

Настройка уведомлений происходит в файле seahub_settings.py

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

После произведения настроек необходимо перезагрузить службы seafile и seahub:


service seahub stop
service seafile stop
service seafile start
service seahub start

 

Настройка с использованием TLS шифрованием.

Добавляем в файл seahub_settings.py:


EMAIL_USE_TLS = True
EMAIL_HOST = 'SMTP-Сервер'
EMAIL_HOST_USER = 'ИМЯ-ЯЩИКА'
EMAIL_HOST_PASSWORD = 'ПАРОЛЬ'
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = 'ИМЯ-ЯЩИКА'

 

Настройка с использованием SSL шифрования.

Здесь почему то все не однозначно. Заверено что должно поддерживаться но по факту мне не удалось  заставить работать уведомления с использованием ящика от Яндекс почты. Выходом из ситуации стал postfix.

Установка Postfix

Во время установки необходимо указать, что система должна работать как Сателлит.


apt install postfix mailutils stunnel

Настройка Postfix

Создаем файл с логином и паролем от ящика:


nano /etc/postfix/password

В нем прописываем следующее:


[127.0.0.1]:11125 логи_ящика:пароль

 

Далее обрабатываем файл командой postmap:


postmap /etc/postfix/password

 

Редактируем файл main.cf:


nano /etc/postfix/main.cf

 

Добавляем и редактируем следующие строки:


relayhost = [127.0.0.1]:11125
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/password
smtp_sasl_security_options =
sender_canonical_maps = static:имя_почтового_ящика
smtputf8_enable = no

 

Редактируем файл stunnel4


nano /etc/default/stunnel4

Меняем ENABLED=0 на  ENABLED=1

 

Редактируем stunnel.conf:


nano /etc/stunnel/stunnel.conf

Добавляем в файл:


[smtp-tls-wrapper]
accept = 11125
client = yes
connect = smtp_имя_почтовго_сервера:465

 

Редактируем hosts.allow:


nano /etc/hosts.allow

Добавляем в файл:


smtp-tls-wrapper: 127.0.0.1

 

Перезапускаем postfix и stunnel:


service stunnel4 restart
service postfix restart

 

Редактируем файл seahub_settings.py:

Добавляем:


EMAIL_USE_TLS = False
EMAIL_HOST = 'localhost'
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_PORT = 25
SERVER_EMAIL = 'ИМЯ ПОЧТОВОГО ЯЩИКА'
DEFAULT_FROM_EMAIL = SERVER_EMAIL

 

Настройка с использованием корпоративного сервера Exchange.

На Exchange создаем новый соеденитель получения и настраиваем согласно приложенным картинкам

View the embedded image gallery online at:
https://itcrowd.top/seafile#sigProId31e4e8c19a

Редактируем файл seahub_settings.py:


EMAIL_USE_TLS = False
EMAIL_HOST = 'Доменное имя Exchange-сервера'
EMAIL_HOST_USER = 'Доменное имя пользователя почтовго ящика (user@domail.local)'
EMAIL_HOST_PASSWORD = 'Пароль' # password
EMAIL_PORT = 25
SERVER_EMAIL = 'Имя почтового ящика'
DEFAULT_FROM_EMAIL = SERVER_EMAIL

 

Скрипт для очистки сервера от мусора, потерянных библиотек и файлов.

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

В папке seafile-server создаем файл cleanup.sh и добавляем следующее:


#!/bin/bash
# Остановка сервера Seafile
echo Остановка сервера Seafile...
systemctl stop seafile.service
systemctl stop seahub.service
#
echo Ожидание остановки сервера
sleep 60
#
# Запуск очистки от мусора
echo Очистка Seafile от мусора...
ПУТЬ ДО ПАПКИ/seafile-server/seaf-gc.sh
#
echo Очистка....
sleep 60
#
# Запуск очистки от потерянных библиотек
ПУТЬ ДО ПАПКИ/seafile-server/seaf-gc.sh -r
echo Очистка....
sleep 60
#
# Запуск сервера Seafile
echo Запуск сервера Seafile...
systemctl start seafile.service
systemctl start seahub.service
#
echo Очистка завершена

Навастриваем задачу в cron:


crontab -e

Ставим выполнятся каждое воскресенье в 2 ночи (периодичность и время выполнения зависит от интенсивности использования сервера)


0 2 * * 0 ПУТЬ ДО ПАПКИ/seafile-server/cleanup.sh

Интеграция с Active Directory.

Настройки подключения производятся в файле ccnet.conf:

Указывать имя подразделения обязательно так как система не может работать с корнем домена


[LDAP]
HOST = ldap://IP-Адрем_Домен_контроллера/
BASE = ou=ИМЯ_ПОДРАЗДЕЛЕНИЯ,dc=ИМЯ_ДОМЕНА,dc=local
USER_DN = ИМЯ_ПОЛЬЗОВАТЕЛЯ@ИМЯ_ДОМЕНА.local
PASSWORD = ПАРОЛЬ
LOGIN_ATTR = mail
FILTER = memberOf=cn=ИМЯ_ГРУППЫ,ou=ИМЯ_ПОДРАЗДЕЛЕНИЯ,dc=ИМЯ_ДОМЕНА,dc=local

 

Кастомизация сервера.

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

Для изменения необходимо создать файл custom.css и положить его и все сопутствующие файлы в папку /seahub-data/custom

Чтобы применить указанный CSS пропишите в seahub_settings.py следующее:


BRANDING_CSS = 'custom/custom.css'

Вот вариант темного оформления.

View the embedded image gallery online at:
https://itcrowd.top/seafile#sigProId2d7fddbf7d
 

 

 

 

  • Просмотров: 22216
Добавить комментарий