Настройка SeaFile
Перед установкой любых пакетов нам необходимо обновить репозиторий Ubuntu. $ apt-get update $ apt-get upgrade $ apt install mc Теперь установите python 3.x со всеми зависимостями, необходимыми для установки сервера Seafile, используя приведенные ниже команды apt. $ apt install python3 libpython3.8 python3-setuptools python3-pil python3-ldap python3-urllib3 ffmpeg python3-pip python3-mysqldb python3-memcache python3-requests libmemcached-dev После этого установите дополнительные пакеты Python из репозитория PyPI с помощью приведенной ниже команды pip. $ pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha python3-ldap Установите и настройте MariaDB $ apt install mariadb-server -y $ systemctl start mariadb $ systemctl enable mariadb Далее нам нужно настроить корневой пароль MariaDB с помощью команды «mysql_secure_installation». $ mysql_secure_installation Теперь вас спросят о конфигурации MariaDB и введите надежный пароль root для MariaDB. > Enter current password for root (enter for none): Press Enter > Set root password? [Y/n] Y > Remove anonymous users? [Y/n] Y > Disallow root login remotely? [Y/n] Y > Remove test database and access to it? [Y/n] Y > Reload privilege tables now? [Y/n] Y Войдите в оболочку MySQL, используя приведенную ниже команду.
$ mysql -u root -p Теперь создайте новые базы данных «ccnet-db», «seafile-db», «seahub-db» и создайте нового пользователя «seafile». Затем предоставьте все 3 права доступа к базе данных пользователю «seafile».
>>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 'Hakase-Seafile01@'; >>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; >> flush privileges; >>quit Создаем учетную запись seafile, от которой будет работать наш сервис: $ useradd seafile -r Создаем каталог, в который загрузим установочные файлы Seafile: $ mkdir -p /opt/seafile/bin загружаем архив: $ wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_9.0.2_x86-64.tar.gz И распаковываем его в каталог /opt/seafile/bin: $ tar zxf seafile-server_*.tar.gz -C /opt/seafile/bin --strip-components 1 Назначим в качестве владельца каталога seafile и распакованных файлов ранее созданного пользователя: $ chown -R seafile:seafile /opt/seafile Заходим под пользователем seafile: $ su seafile Переходим в каталог с установочными файлами и запускаем скрипт: $ cd /opt/seafile/bin $ ./setup-seafile-mysql.sh Мы увидим приветствие мастера установки. Просто нажимаем ENTER:
This script will guide you to setup your seafile server using MySQL. Make sure you have read seafile server manual at
https://download.seafile.com/published/seafile-manual/home.md
Press ENTER to continue
Вводим имя сервера, который будут видеть клиенты:
What is the name of the server? It will be displayed on the client. 3 - 15 letters or digits [ server name ] seafile
Вводим IP-адрес или имя сервера, по которому можно подключиться к серверу:
What is the ip or domain of the server? For example: www.mycompany.com, 192.168.1.101 [ This server's ip or domain ] ip_address
Вводим порт, на котором должен слушать сервис или оставляем 8082:
Which port do you want to use for the seafile fileserver? [ default "8082" ]
Выбираем, использовать имеющуюся базу или создать новую. 2 database host: default localhost: enter database port: default on mysql normal port '3306': enter database user is 'seafile' with password 'Hakase-Seafile01@' ccnet database: 'ccnet-db' seafile database: 'seafile-db' seahub database: 'seahub-db' Установка и настройка сервера Seafile успешно завершена. Файловый сервер seafile будет работать служба seahub будет работать через порт «8000».
Внесем изменения в конфигурационный файл:
$ nano /opt/seafile/conf/gunicorn.conf.py
Отредактируем строку
bind = "0.0.0.0:8000"
Теперь нам нужно запустить 2 сервиса:
seafile fileserver — сервер, принимающий запросы от клиентов. seahub — веб-сервер на python. Стартуем первый: $ /opt/seafile/bin/seafile.sh start Мы должны увидеть:
Starting seafile server, please wait ...
- Message: 16:02:58.146: seafile-controller.c(621): No seafevents.
Seafile server started
Done. Запускаем второй сервис: $ /opt/seafile/bin/seahub.sh start Адрес электронной почты администратора (это же будет логин администратора):
What is the email for the admin account? [ admin email ] postmaster@dmosk.ru
Пароль, который будет использоваться для администратора (вводим дважды):
What is the password for the admin account? [ admin password ]
Enter the password again: [ admin password again ]
Мы должны увидеть:
Seahub is started
Done. Включение HTTPS с Nginx $ sudo apt install nginx -y $ sudo systemctl start nginx $ sudo systemctl enable nginx Создайте файл конфигурации для seafile в /etc/nginx/conf.d: $ touch /etc/nginx/conf.d/seafile.conf Подготовка Nginx на Debian/Ubuntu¶ Создайте файл конфигурации для seafile в /etc/nginx/sites-available/: $ touch /etc/nginx/sites-available/seafile.conf Удалите файлы по умолчанию в /etc/nginx/sites-enabled/и /etc/nginx/sites-available: $ rm /etc/nginx/sites-enabled/default $ rm /etc/nginx/sites-available/default Создайте символическую ссылку: $ ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf Скопируйте следующий образец файла конфигурации Nginx в только что созданный файл /etc/nginx/sites-available/seafile.conf В файле CONF необходимо изменить следующие параметры: Имя сервера (server_name):
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.example.com;
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 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.conf не содержит синтаксических ошибок, и перезапустите Nginx, чтобы изменения конфигурации вступили в силу: $ nginx -t $ nginx -s reload
Настройка автозапуска
В нашем примере были разово запущены сервисы, которые перестанут работать после перезагрузки сервера. Для решения задачи автозапуска мы создадим два юнита в systemd.
С предыдущей настройки мы вошли в консоль под пользователем seafile. Оставаясь в нем, остановим ранее запущенные сервисы:
/opt/seafile/bin/seahub.sh stop
/opt/seafile/bin/seafile.sh stop
Вводим команду для создания первого юнита:
systemctl edit --full --force seafile
[Unit] Description=Seafile Service After=network.target
[Service] User=seafile Group=seafile Type=forking ExecStart=/opt/seafile/bin/seafile.sh start ExecStop=/opt/seafile/bin/seafile.sh stop ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure LimitNOFILE=infinity
[Install] WantedBy=multi-user.target
Создаем второй юнит:
systemctl edit --full --force seahub
[Unit] Description=Seahub Service After=network.target
[Service] User=seafile Group=seafile Type=forking ExecStart=/opt/seafile/bin/seahub.sh start ExecStop=/opt/seafile/bin/seahub.sh stop ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure
[Install] WantedBy=multi-user.target
Разрешаем запуск созданных сервисов:
systemctl enable seafile seahub
Стартуем их:
systemctl start seafile seahub
Проверяем состоянию запущенных служб:
systemctl status seafile seahub
Пробуем снова зайти на веб-интерфейс Seafile.
Установите Certbot и его плагин Nginx с помощью apt:
sudo apt install certbot python3-certbot-nginx
Получение SSL-сертификата (example.com меняете на своё)
sudo certbot --nginx -d example.com
Ваши сертификаты загружены, установлены и загружены. Попробуйте перезагрузить свой веб-сайт с помощью https://
Заходим на Seafile
>Системный админитсратор
>Настройки
SERVICE_URL https://example.com
URL адрес сервера, например: https://cloud.example.com или http://192.168.1.2:8000
FILE_SERVER_ROOT https://example.com/seafhttp Внутренний URL адрес для скачивания/загрузки файлов. Пользователи не смогут скачивать/загружать файлы, если это неправильно настроено. Если у вас Seafile установлен за Nginx/Apache, это должно быть SERVICE_URL/seafhttp, например: https://cloud.example.com/seafhttp .