Поиск по сайту:

Как установить Seafile с Nginx на Ubuntu 18.04 LTS


Это руководство существует для этих версий ОС

  • Ubuntu 15.04 (Vivid Vervet)

На этой странице

  1. Предпосылки
  2. Что будем делать?
  3. Шаг 1. Установите зависимости Seafile Python
  4. Шаг 2. Установка и настройка MySQL
  5. Шаг 3. Загрузите сервер Seafile для системы Linux.
  6. Шаг 4. Установите сервер Seafile с MySQL
  7. Шаг 5. Установите и настройте Nginx с помощью Letsencrypt
  8. Шаг 6. Настройте Nginx в качестве обратного прокси-сервера для сервера Seafile.
  9. Шаг 7. Настройка сервера Seafile
  10. Шаг 8. Запуск Seafile Server как службы
  11. Шаг 8. Настройка брандмауэра UFW
  12. Шаг 9. Тестирование
  13. Справочник

Seafile — это файловый хостинг с открытым исходным кодом и система облачного хранения с расширенными функциями, такими как синхронизация с нескольких платформ (кроссплатформенная система), защита конфиденциальности со встроенным шифрованием файлов и поддержка двухфакторной аутентификации (TFA), контроль версий, блокировка файлов, онлайн-редактирование и многое другое. Seafile написан на языках программирования C и Python и предоставляет такие же функции, как Dropbox, mega.co.nz и другие.

В этом руководстве я пошагово покажу вам, как установить и настроить сервер Seafile с веб-сервером Nginx и базой данных MySQL. Мы установим сервер seafile под веб-сервером Nginx с включенным HTTPS SSL Letsencrypt, используя последнюю версию MySQL 5.8 в системе Ubuntu 18.04.

Предпосылки

  • Убунту 18.04
  • Привилегии root

Что мы будем делать?

  1. Установка зависимостей Seafile Python
  2. Установка и настройка MySQL
  3. Загрузить сервер Seafile для системы Linux
  4. Установить сервер Seafile
  5. Установите Nginx и Letsencrypt
  6. Настройка Nginx в качестве обратного прокси-сервера для сервера Seafile
  7. Настройка сервера Seafile
  8. Запуск Seafile Server как службы
  9. Настройка брандмауэра UFW
  10. Тестирование

Шаг 1 — Установите зависимости Seafile Python

Первый шаг, который мы должны сделать перед установкой сервера Seafile в системе, — это установить его зависимости. Seafile — это приложение на основе Python, и для его работы на сервере требуется Python 2.7.

Перед установкой любых пакетов нам необходимо обновить репозиторий Ubuntu.

sudo apt update

Теперь установите python 2.7 со всеми зависимостями, необходимыми для установки сервера Seafile, используя приведенные ниже команды apt.

sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -y

Подождите, пока все зависимости будут установлены.

Шаг 2 — Установите и настройте MySQL

Seafile предлагает поддержку SQLite и сервера баз данных MySQL. В этом руководстве мы будем использовать сервер базы данных MySQL для нашей установки. Мы развернем сервер seafile, используя последнюю версию MySQL 5.8.

Установите сервер MySQL с помощью приведенной ниже команды apt.

sudo apt install mysql-server mysql-client -y

После завершения установки запустите службу MySQL и включите ее запуск каждый раз при загрузке системы.

systemctl start mysql
systemctl enable mysql

Сервер MySQL установлен в системе Ubuntu.

Теперь нам нужно настроить пароль root для MySQL с помощью команды mysql_secure_installation.

mysql_secure_installation

Теперь вас спросят о политике паролей MySQL, 0 для НИЗКОЙ, 1 для СРЕДНЕЙ и 2 для СИЛЬНОЙ. Введите номер 1 для политики паролей MEDIUM, нажмите клавишу ввода, а затем введите безопасный пароль.

Для других просто введите Y, как показано ниже.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Установка корневого пароля MySQL завершена.

Далее мы создадим новую базу данных для сервера Seafile. Мы создадим 3 базы данных для каждого компонента Seafile и создадим нового пользователя базы данных. Мы создадим нового пользователя с именем seafile, и у него будут все привилегии ко всем трем базам данных ccnet-db, seafile-db и seahub-db.

Войдите в оболочку MySQL, используя клиентскую команду MySQL.

mysql -u root -p

Теперь создайте новые базы данных ccnet-db, seafile-db, seahub-db и создайте новый пользовательский файл seafile. Затем предоставьте все 3 права доступа к базе данных пользователю seafile.

Запустите запросы MySQL ниже.

create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8';
create database `seahub-db` character set = 'utf8';

create user 'seafile'@'localhost' identified by '';

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;

Установлен сервер MySQL, установлен пароль root и создана база данных для установки Seafile.

Шаг 3. Загрузите сервер Seafile для системы Linux.

В этом руководстве сервер seafile будет работать как служба в системе systemd и будет работать под пользователем без полномочий root.

Создайте нового пользователя с именем mohammad.

useradd -m -s /bin/bash mohammad

Теперь войдите под пользователем mohammad и загрузите последнюю версию сервера seafile с помощью wget.

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

Извлеките файл seafile-server.tar.gz и переименуйте главный каталог в seafile-server.

tar -xf seafile-server_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/

Исходный код сервера seafile загружен в каталог /home/mohammad/seafile-server.

Шаг 4 — Установите сервер Seafile с MySQL

На этом этапе мы установим сервер Seafile, используя сценарий установки MySQL, предоставленный Seafile.

Войдите в систему как пользователь mohammad и перейдите в каталог seafile-server.

su - mohammad
cd seafile-server/

Теперь запустите сценарий setup-seafile-mysql.sh.

./setup-seafile-mysql.sh

Сценарий установки выполнит проверку модуля Python. Убедитесь, что все зависимости установлены, а затем нажмите Enter.

Теперь вы приступите к настройке Seafile.

  • имя сервера: введите имя вашего сервера Seafile, например hakase-cloud.
  • имя домена сервера: введите доменное имя вашего сервера seafile cloud.hakase-labs.io.
  • Каталог данных Seafile: оставьте конфигурацию по умолчанию и нажмите Enter.
  • Порт файлового сервера seafile: оставьте порт по умолчанию 8082.

Теперь о конфигурации базы данных. Вам будет предложено 2 варианта: позволить сценарию создать базу данных для вас или использовать существующую базу данных.

Выберите вариант 2, чтобы использовать существующие настройки базы данных.

  • хост базы данных: локальный хост по умолчанию
  • порт базы данных: по умолчанию обычный порт mysql 3306
  • пользователь базы данных — это seafile с паролем [email
  • база данных ccnet: ccnet-db
  • база данных Seafile: seafile-db
  • база данных Seahub: seahub-db

Теперь снова нажмите Enter, чтобы подтвердить конфигурацию нашего сервера Seafile.

И когда установка будет завершена, вы получите результат, как показано ниже.

Установка и настройка сервера Seafile успешно завершена. А файловый сервер seafile будет работать через порт 8082, служба seahub будет работать через порт 8000.

Далее мы проверим запуск сервера seafile и сервера seahub с помощью сценария запуска.

Как пользователь mohammad, перейдите в каталог ~/seafile-server-latest.

su - mohammad
cd ~/seafile-server-latest/

Теперь запустите сервер Seafile, выполнив приведенную ниже команду.

./seafile.sh start

Затем запустите сервер seahub.

./seahub.sh start

При первом запуске сценария запуска seahub.sh вам будет предложено создать пользователя-администратора и пароль для сервера seafile.

Введите адрес электронной почты и пароль администратора, затем нажмите Enter.

Пользователь и пароль администратора созданы — теперь проверьте сервисные порты 8082 и 8080 Seafile и Seahub с помощью команды netstat.

netstat -plntu

И вы увидите, что сервер seafile и сервер seahub запущены и работают в системе Ubuntu 18.04.

Теперь остановите серверы seafile и seahub.

./seafile.sh stop
./seahub.sh stop

Шаг 5 — Установите и настройте Nginx с помощью Letsencrypt

В этом руководстве сервер Seafile будет работать под веб-сервером Nginx с включенным HTTPS. На этом этапе мы установим веб-сервер Nginx и инструмент Letsencrypt, а затем сгенерируем SSL letsencrypt и ключ DHPARAM для доменного имени сервера Seafile.

Установите веб-сервер Nginx с помощью приведенной ниже команды apt.

sudo apt install nginx -y

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

systemctl start nginx
systemctl enable nginx

Теперь установите инструмент letsencrypt для создания сертификатов SSL letsencrypt.

sudo apt install letsencrypt -y

Установлены веб-сервер Nginx и инструмент letsencrypt.

Затем перейдите в каталог /etc/nginx и создайте новый файл конфигурации certbot.conf для letsencrypt.

cd /etc/nginx/
vim snippets/certbot.conf

Вставьте туда следующую конфигурацию.

location /.well-known {
    alias /var/www/html/.well-known;
}

Сохранить и выйти.

Отредактируйте файл виртуального хоста по умолчанию.

vim sites-available/default

Добавьте следующую строку включения в скобку server {...}.

include snippets/certbot.conf;

Сохранить и выйти.

Проверьте конфигурацию nginx и перезапустите веб-сервер.

nginx -t
systemctl restart nginx

И были готовы сгенерировать новый SSL-сертификат letsencrypt для доменного имени сервера seafile.

Создайте файлы сертификатов SSL с помощью команды certbot, как показано ниже.

certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email  -w /var/www/html -d cloud.hakase-labs.io

Примечание:

  • мы создадим новый сертификат SSL и укажем размер ключа 4096.

Теперь вы получите все файлы сертификатов SSL, расположенные в каталоге /etc/letsencrypt/live.

А для дополнительной безопасности мы сгенерируем ключ Диффи-Хеллмана размером 4096 с помощью команды OpenSSL.

openssl dhparam -out /etc/nginx/dhparam.pem 4096

Все необходимые сертификаты созданы.

Шаг 6. Настройте Nginx в качестве обратного прокси-сервера для сервера Seafile.

Перейдите в каталог конфигурации /etc/nginx и создайте новый файл виртуального хоста seafile с помощью vim.

cd /etc/nginx/
vim sites-available/seafile

Вставьте туда следующую конфигурацию.

 server {
        listen       80;
        server_name  cloud.hakase-labs.io;
        rewrite ^ https://$http_host$request_uri? permanent;
        server_tokens off;
    }
    server {
        listen 443 ssl http2;
        server_name cloud.hakase-labs.io;
        
        ssl on;
        ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/cloud.hakase-labs.io/privkey.pem;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:5m;

        ssl_dhparam /etc/nginx/dhparam.pem;

        #SSL Security
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_ecdh_curve secp384r1;
        ssl_prefer_server_ciphers on;
        server_tokens off;
        ssl_session_tickets off;

        proxy_set_header X-Forwarded-For $remote_addr;

        location / {
            proxy_pass         http://127.0.0.1:8000;
            proxy_set_header   Host $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 file via Office Online Server
            client_max_body_size 0;

            access_log      /var/log/nginx/seahub.access.log;
            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;
        }
        location /media {
            root /home/mohammad/seafile-server-latest/seahub;
        }
    }

Сохранить и выйти.

Включите виртуальный хост Seafile и проверьте конфигурацию.

ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t

убедитесь, что ошибки нет, и перезапустите службу nginx.

systemctl restart nginx

Настройка Nginx в качестве обратного прокси для сервера Seafile завершена.

Шаг 7 — Настройте сервер Seafile

Чтобы запустить сервер seafile под доменным именем веб-сервера Nginx, нам нужно отредактировать конфигурацию seafile по умолчанию для службы ccnet, сервера seafile и сервера seahub.

Войдите в систему как пользователь mohammad и перейдите в каталог conf/.

su - mohammad
cd conf/

Отредактируйте файл конфигурации службы ccnet ccnet.conf.

vim ccnet.conf

В строке SERVICE_URL измените значение на доменное имя с HTTPS, как показано ниже.

SERVICE_URL = https://cloud.hakase-labs.io

Сохранить и выйти.

Теперь отредактируйте файл seafile.conf для конфигурации сервера seafile.

vim seafile.conf

Добавьте строку хоста со значением 127.0.0.1 localhost, как показано ниже.

[fileserver]
host = 127.0.0.1
port = 8082

Сохранить и выйти.

И, наконец, отредактируем файл seahub_settings.py.

vim seahub_settings.py

В строке FILE_SERVER_ROOT измените значение на доменное имя с HTTPS.

FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'

Сохранить и выйти.

Шаг 8. Запуск Seafile Server как службы

В этом руководстве мы запустим сервер Seafile как службу в системе Ubuntu 18.04. Мы создадим новый сервисный скрипт для seafile и seahub.

Перейдите в каталог /etc/systemd/system и создайте новый служебный файл seafile.service.

cd /etc/systemd/system/
vim seafile.service

Вставьте туда следующий скрипт службы Seafile.

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seafile.sh start
ExecStop=/home/mohammad/seafile-server-latest/seafile.sh stop
User=mohammad
Group=mohammad

[Install]
WantedBy=multi-user.target

Сохранить и выйти.

Теперь создайте файл службы seahub seahub.service.

vim seahub.service

Вставьте туда следующий скрипт службы Seahub.

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seahub.sh start
ExecStop=/home/mohammad/seafile-server-latest/seahub.sh stop
User=mohammad
Group=mohammad

[Install]
WantedBy=multi-user.target

Сохранить и выйти.

Примечание:

  • Измените путь к сценариям seafile.sh и seahub.sh.

Теперь перезагрузите систему systemd.

systemctl daemon-reload

И запустите службу seafile и seahub.

systemctl start seafile
systemctl start seahub

Включите запуск этих служб каждый раз при загрузке системы.

systemctl enable seafile
systemctl enable seahub

Службы seafile и seahub запущены и работают — проверьте это с помощью приведенных ниже команд.

systemctl status seafile
systemctl status seahub

netstat -plntu

Шаг 8. Настройте брандмауэр UFW.

Рекомендуется всегда включать брандмауэр в любой системе. Для системы Ubuntu мы включим брандмауэр UFW и добавим на него порты SSH, HTTP и HTTPS.

Добавьте порт ssh и включите брандмауэр UFW.

ufw allow ssh
ufw enable

введите y, чтобы включить брандмауэр.

Теперь добавьте службы HTTP и HTTPS.

ufw allow http
ufw allow https

Проверьте правила списка на брандмауэре.

ufw status numbered

И вы получите три сервиса SSH, HTTP и HTTPS в списке.

Шаг 9 — Тестирование

Откройте веб-браузер и введите URL-адрес установки сервера Seafile. Мой:

И вы будете перенаправлены на страницу входа в защищенное соединение HTTPS.

Введите адрес электронной почты администратора [email  и пароль mypassword, затем нажмите кнопку «Войти».

Теперь вы получите панель управления Seafile, как показано ниже.

Дополнительно - загрузил изображение и просмотр на дашборде seafile.

Установка и настройка сервера Seafile с веб-сервером Nginx и Letsencrypt на Ubuntu 18.04 успешно завершена.

Ссылка

  • https://manual.seafile.com/