Как установить Seafile с Nginx на Ubuntu 18.04 LTS
Это руководство существует для этих версий ОС
- Ubuntu 15.04 (Vivid Vervet)
На этой странице
- Предпосылки
- Что будем делать?
- Шаг 1. Установите зависимости Seafile Python
- Шаг 2. Установка и настройка MySQL
- Шаг 3. Загрузите сервер Seafile для системы Linux.
- Шаг 4. Установите сервер Seafile с MySQL
- Шаг 5. Установите и настройте Nginx с помощью Letsencrypt
- Шаг 6. Настройте Nginx в качестве обратного прокси-сервера для сервера Seafile.
- Шаг 7. Настройка сервера Seafile
- Шаг 8. Запуск Seafile Server как службы
- Шаг 8. Настройка брандмауэра UFW
- Шаг 9. Тестирование
- Справочник
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
Что мы будем делать?
- Установка зависимостей Seafile Python
- Установка и настройка MySQL
- Загрузить сервер Seafile для системы Linux
- Установить сервер Seafile
- Установите Nginx и Letsencrypt
- Настройка Nginx в качестве обратного прокси-сервера для сервера Seafile
- Настройка сервера Seafile
- Запуск Seafile Server как службы
- Настройка брандмауэра UFW
- Тестирование
Шаг 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/