Seafile – это файловый хостинг с открытым исходным кодом, написанный на веб-фреймворке Django. Это кроссплатформенное программное обеспечение, которое предлагает набор функций облачного хранилища и позволяет пользователям хранить, управлять и делиться файлами в экосистеме Seafile.
В Seafile файлы хранятся на центральном сервере и могут быть синхронизированы с клиентами на различных устройствах и мобильных телефонах. Seafile – это альтернатива таким файловым хостингам, как Google Drive, Dropbox и Mega.nz. С помощью Seafile вы можете создать файлообменное решение для своих частных облачных приложений.
В этой статье мы расскажем вам, как установить Seafile на сервер Debian 12 с MariaDB в качестве базы данных, Nginx в качестве обратного прокси и HTTPS через Letsencrypt и UFW (Uncomplicated Firewall) для защиты Seafile.
Установка зависимостей
Seafile написан на веб-фреймворке Django, который основан на Python. Чтобы установить Seafile, необходимо убедиться, что Python установлен. Кроме того, вам понадобятся такие зависимости, как MariaDB/MySQL в качестве базы данных, Nginx в качестве обратного прокси и Memcached или Redis для управления сессиями и кэшем. В этом разделе вы установите эти пакеты с помощью менеджера пакетов APT.
Сначала выполните приведённую ниже команду, чтобы обновить индекс пакетов Debian.
sudo apt update
Теперь выполните следующую команду, чтобы установить в систему такие зависимости, как Python3, сервер MariaDB, веб-сервер Nginx, Memcached и некоторые дополнительные библиотеки.
sudo apt install mariadb-server nginx python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv memcached libmemcached-dev
Введите ‘Y‘, чтобы подтвердить установку.
После завершения установки проверьте сервер MariaDB с помощью следующей команды.
sudo systemctl is-enabled mariadb sudo systemctl status mariadb
В следующем выводе видно, что сервер MariaDB работает следующим образом включен и работает.
Теперь проверьте службу Nginx с помощью следующей команды.
sudo systemctl is-enabled nginx sudo systemctl status nginx
Вы можете увидеть, что веб-сервер Nginx находится ниже работает и включено.
Наконец, проверьте службу Memcached, чтобы убедиться, что она запущена. Служба Memcached должна быть запущена и включено.
sudo systemctl is-enabled memcached sudo systemctl status memcached
Настройка сервера MariaDB
Теперь, когда вы установили MariaDB, следующим шагом будет настройка и обеспечение безопасности развертывания сервера MariaDB. Затем вы создадите нового пользователя MariaDB с несколькими базами данных, которые будут использоваться Seafile. Вы будете защищать MariaDB с помощью ‘mariadb-secure-installation‘ и используя команду ‘mariadb‘ Клиент для создания новых пользователей и баз данных.
Выполните команду ‘mariadb-secure-installation‘ команда ниже, чтобы защитить установку сервера MariaDB.
sudo mariadb-secure-installation
Теперь вас спросят о следующих конфигурациях:
- Для установки сервера MariaDB по умолчанию без пароля root, нажмите ENTER когда вас спросят о пароле.
- Локальная аутентификация для пользователей MariaDB root по умолчанию защищена, введите ‘n‘ при запросе на изменение метода аутентификации на ‘unix_socket‘.
- Вход ‘Y‘, чтобы создать новый пароль корневого пользователя MariaDB. Затем введите надежный пароль для пользователя MariaDB root и повторите.
- Когда появится запрос на отключение удаленной аутентификации для корневого пользователя MariaDB, введите ‘Y‘, чтобы согласиться.
- Ввод ‘Y‘, чтобы удалить базу данных по умолчанию ‘test’ и снять привилегию анонимности.
- Наконец, введите ‘Y‘, чтобы подтвердить права на перезагрузку таблицы.
Теперь, когда вы настроили пароль корня MariaDB и обеспечили безопасность MariaDB, вам предстоит создать новые базы данных и пользователя для установки Seafile.
Запустите команду ‘mariadb‘ введите команду ниже, чтобы войти на сервер MariaDB. Введите пароль корня MariaDB, когда появится запрос.
sudo mariadb -u root -p
Создайте нового пользователя ‘морской файл‘ с помощью следующего запроса. Обязательно замените следующий пароль новым надежным паролем.
create user 'seafile'@'localhost' identified by 'password';
Выполните следующие запросы для создания новых баз данных ‘ccnet_db‘, ‘seafile_db‘, и ‘seahub_db‘.
create database ccnet_db character set = 'utf8'; create database seafile_db character set = 'utf8'; create database seahub_db character set = 'utf8';
Далее выполните приведенные ниже запросы, чтобы разрешить пользователю ‘морской файл‘ для доступа к базам данных Seafile.
GRANT ALL PRIVILEGES ON ccnet_db.* to seafile@localhost; GRANT ALL PRIVILEGES ON seafile_db.* to seafile@localhost; GRANT ALL PRIVILEGES ON seahub_db.* to seafile@localhost;
Теперь проверьте привилегии для пользователя ‘морской файл‘ для обеспечения доступа и привилегий к базам данных ‘ccnet_db‘, ‘seafile_db‘, и ‘seahub_db‘.
SHOW GRANTS FOR seafile@localhost;
Наконец, введите ‘выйти‘, чтобы выйти из сервера MariaDB.
Установка зависимостей Python
В этом разделе вы создадите нового системного пользователя для запуска Seafile, создадите каталог установки и виртуальную среду Python, а затем установите зависимости Python с помощью ‘pip‘ команда.
Сначала добавьте нового пользователя ‘морской файл‘ с помощью следующей команды.
sudo adduser seafile
Теперь создайте новый каталог установки ‘/opt/seafile‘ и переместитесь в него.
mkdir -p /opt/seafile; cd /opt/seafile
Выполните приведенную ниже команду, чтобы создать ‘venv‘ Виртуальная среда Python и активируйте ее. После активации ваша оболочка должна стать похожей на ‘(venv) user@hostname #‘.
python3 -m venv venv source venv/bin/activate
Далее запустите команду ‘pip3‘ команда ниже для установки зависимостей Python для Seafile. Эти пакеты должны быть установлены внутри ‘venv‘ виртуальная среда.
pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
После завершения установки измените права собственности на ‘/opt/seafile‘ каталог пользователю ‘морской файл‘ с помощью приведенной ниже команды.
sudo chown -R seafile: /opt/seafile
Загрузка и установка Seafile
На этом этапе вы готовы к установке Seafile. Теперь вам предстоит скачать исходный код Seafile, установить его с MariaDB и Memcached, добавить доменное имя Seafile через конфигурацию по умолчанию, а затем запустить процесс Seafile вручную.
Выполните следующую команду, чтобы войти в систему под именем пользователя ‘seafile‘ и перейдите на страницу ‘/opt/seafile‘ директория.
su seafile cd /opt/seafile
Скачайте исходный код Seafile и распакуйте его с помощью следующей команды. В этом примере вы будете устанавливать Seafile 11, обязательно проверьте Страница загрузки Seafile , чтобы получить последнюю версию.
wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_11.0.12_x86-64.tar.gz tar xf seafile-server_11.0.12_x86-64.tar.gz
Теперь активируйте ‘venv‘ виртуальное окружение со следующими параметрами:
source venv/bin/activate
Перейдите в ‘seafile-server-11.0.12‘ каталог и выполните команду ‘setup-seafile-mysql.sh‘ сценарий. С помощью этого скрипта вы установите Seafile на свою систему с MariaDB в качестве базы данных.
cd seafile-server-11.0.12 ./setup-seafile-mysql.sh
Теперь вам будут предложены следующие конфигурации Seafile:
- Введите имя вашего сервера Seafile.
- Введите ваш домен для установки Seafile.
- Введите ‘2‘ для интеграции Seafile с существующими базами данных MySQL/MariaDB и пользователями
- Введите данные о хосте, порте, пользователе и пароле MariaDB
- Введите базу данных для ccnet как ‘ccnet_db‘, seafile как ‘seafile_db‘, а seahub – как ‘seahub_db‘
- Нажмите ENTER, чтобы подтвердить установку и завершить настройку.
После завершения настройки вы измените конфигурацию Seafile, чтобы запустить его под обратным прокси Nginx.
Перейдите к разделу ‘/opt/seafile/conf‘ каталог и откройте файл ‘seahub_settings.py‘ с помощью ‘nano‘ редактор.
cd /opt/seafile/conf nano seahub_settings.py
Добавьте свое доменное имя в ‘SERVICE_URL‘ и обязательно включите опцию ‘https‘ в начале.
SERVICE_URL = 'https://seafile.local'
Добавьте ‘FILE_SERVER_ROOT‘ с именем вашего домена.
FILE_SERVER_ROOT = 'https://seafile.local/seafhttp'
Наконец, добавьте опцию ‘CACHES‘ настройка для интеграции Seafile с системой кэширования Memcached.
CACHES = { 'default': { 'BACKEND': 'django_pylibmc.memcached.PyLibMCCache', 'LOCATION': '127.0.0.1:11211', }, }
После завершения сохраните файл и выйдите из редактора.
Теперь вернемся к ‘/opt/seafile/seafile-server-latest/‘ каталог и выполните команду ‘seafile.sh‘ и ‘seahub.sh‘ Скрипты для запуска Seafile.
cd /opt/seafile/seafile-server-latest/
./seafile.sh start
./seahub.sh start
Когда Seafile запустится, вы увидите вывод ‘Сервер Seafile запущен‘. Вам также будет предложено установить пользователя-администратора для Seafile, поэтому не забудьте ввести имя пользователя, электронную почту и пароль.
Настройка Nginx в качестве обратного прокси-сервера
Теперь, когда Seafile работает с MariaDB и Memcached, следующим шагом будет настройка Nginx в качестве обратного прокси для Seafile. Убедитесь, что у вас есть готовое доменное имя, указанное на IP-адрес вашего сервера.
Создайте новую конфигурацию блока сервера Nginx ‘/etc/nginx/sites-available/seafile‘ со следующим ‘nano‘ редактор.
sudo nano /etc/nginx/sites-available/seafile
Вставьте приведенную ниже конфигурацию и не забудьте изменить ‘имя_сервера‘ с именем вашего домена.
log_format seafileformat '$http_x_forwarded_for $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_response_time';
server {
listen 80;
server_name seafile.local;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 1200s;
# used for view/edit office files via Office Online Server
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log seafileformat;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
access_log /var/log/nginx/seafhttp.access.log seafileformat;
error_log /var/log/nginx/seafhttp.error.log;
}
location /media {
root /opt/seafile/seafile-server-latest/seahub;
}
}
Сохраните и выйдите из файла после завершения работы.
Теперь выполните приведенную ниже команду, чтобы активировать серверный блок ‘seafile’ и проверить синтаксис Nginx. Вы увидите вывод ‘синтаксис в порядке – проверка успешна‘, когда вы правильно настроите Nginx.
sudo ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/ sudo nginx -t
Наконец, выполните приведенную ниже команду, чтобы перезапустить веб-сервер Nginx и применить внесенные изменения.
sudo systemctl restart nginx
Защита Seafile с помощью UFW и HTTPS
После того как вы настроили Nginx в качестве обратного прокси, вам предстоит защитить Seafile с помощью HTTPS и UFW (Uncomplicated Firewall). Вы установите UFW и Certbot, откроете такие службы, как SSH, HTTP и HTTPS, а затем сгенерируете новые SSL-сертификаты с помощью Certbot от Letsencrypt.
Сначала выполните приведенную ниже команду для установки ‘ufw‘ и ‘certbot‘ пакеты.
sudo apt install ufw certbot -y
Теперь выполните приведенную ниже команду, чтобы включить ‘OpenSSH‘ и ‘Nginx Full‘ Профили. The ‘OpenSSH‘ профиль откроет порт SSH по умолчанию ‘22‘, и ‘Nginx Full‘ профиль позволит использовать оба HTTP и HTTPS соединения с сервером.
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full'
Далее выполните следующую команду, чтобы запустить и включить UFW. Введите ‘y‘ для подтверждения, и вы увидите вывод ‘Брандмауэр активен и включен при запуске системы‘.
sudo ufw enable
Наконец, теперь вы можете сгенерировать SSL-сертификаты и защитить свою установку Seafile с помощью ‘certbot‘ команду ниже. Не забудьте изменить доменное имя и адрес электронной почты на свои данные.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d seafile.local
После завершения процесса ваш Seafile должен быть защищен HTTPS, а ваши сертификаты будут доступны в ‘/etc/letsencrypt/live/domain.com‘ директория.
Доступ к Seafile
Откройте веб-браузер и зайдите на доменное имя Seafile, например https://seafile.local. Если установка прошла успешно, вам будет предложено перейти на страницу входа в Seafile.
Введите адрес электронной почты администратора и пароль, затем нажмите кнопку ‘Войти‘.
Если у вас есть правильные учетные данные администратора, вы увидите следующую приборную панель Seafile.
Теперь вы можете попробовать загрузить файлы в Seafile, чтобы убедиться, что установка прошла успешно.
Заключение
Поздравляем! Вы завершили установку облачного хранилища Seafile Self-Hosted Cloud Storage на сервер Debian 12. Вы запустили Seafile с сервером базы данных MariDB и Nginx в качестве обратного прокси. Вы также защитили Seafile с помощью UFW (Uncomplicated Firewall) и SSL через Certbot и Letsencrypt. Теперь, когда Seafile установлен, вы можете интегрировать Seafile с другими приложениями, такими как ONLYOFFICE Document Server или LibreOffice Online (Collabora Online).