Seafile: разверни свой аналог облачного диска.
Общая
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
, нажмем ОК
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 создаем новый соеденитель получения и настраиваем согласно приложенным картинкам
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'
Вот вариант темного оформления.
https://itcrowd.top/seafile#sigProId2d7fddbf7d
- Просмотров: 22216