Как установить самодостаточное облачное хранилище Seafile на Debian 12

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 работает следующим образом включен и работает.

проверить службу mariadb

Теперь проверьте службу Nginx с помощью следующей команды.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Вы можете увидеть, что веб-сервер Nginx находится ниже работает и включено.

проверка состояния службы nginx

Наконец, проверьте службу Memcached, чтобы убедиться, что она запущена. Служба Memcached должна быть запущена и включено.

sudo systemctl is-enabled memcached
sudo systemctl status memcached

Проверка службы 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

настройка venv

Далее запустите команду ‘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

Установите зависимости Python

После завершения установки измените права собственности на ‘/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 с MySQL/MariaDB

установка завершена

После завершения настройки вы измените конфигурацию 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, поэтому не забудьте ввести имя пользователя, электронную почту и пароль.

Запуск Seafile и Seahub

Настройка 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

настройка 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

установить certbot и ufw

Теперь выполните приведенную ниже команду, чтобы включить ‘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

включить ufw

Наконец, теперь вы можете сгенерировать 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).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *