Собственное облачное хранилище на Ubuntu 18. Установка SeaFile + Apache + SSL

  Etc

Юзаем вот эту документацию с небольшими изменениями https://manual.seafile.com/deploy/using_mysql.html

Для начала установим MySQL сервер и пароль на MySQL root.

apt-get update && apt upgrade -y
apt-get install mysql-server
mysql_secure_installation

При выполенении mysql_secure_installation Вам будет предложено ответить на несколько вопросов (Y) и установить пароль для рута MySQL. Указываем, запоминаем.

Далее преступаем к более интересному. Идем сюда https://www.seafile.com/en/download/ и ищем последнюю версию сервера под линукс. В моем случае это 6.2.5, поэтому везде будет фигурировать именно она. Поменять на * не сложно, но лень.

Следуя инструкции на оф сайте, делаем:

wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz
mkdir haiwen
mv seafile-server_* haiwen
cd haiwen
tar -xzf seafile-server_*
mkdir installed
mv seafile-server_* installed

Инструкция предлагает заняться созданием баз данных, однако, новые версии инсталятора сами умеют делать это. Поэтому пропускаем и ставим Python и его модули, не сильно отклоняясь от инструкции.

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

Я попробовал предложенные варианты установки через pip, однако, это ничему не привело, поэтому просто установил python-pil.

Переходим в папку seafile-server-* и запускаем скрипт установки.

 ./setup-seafile-mysql.sh 

Во время установки будут заданы простые вопросы и попросят указать пароль от рута MySQL, который мы заранее записали. После чего нужно будет создать юзера БД и указать пароль для него. Кроме назавания сервера и домена все оставил дефолтным.

Как это будет выглядеть:

Checking python on this machine ...
Checking python module: setuptools ... Done.
Checking python module: python-imaging ... Done.
Checking python module: python-mysqldb ... Done.

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

https://github.com/haiwen/seafile/wiki

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 ] dropbox

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] dropbox.domain.com

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/root/haiwen/seafile-data" ]

Which port do you want to use for the seafile fileserver?
[ default "8082" ]

-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ] 1

What is the host of mysql server?
[ default "localhost" ]

What is the port of mysql server?
[ default "3306" ]

What is the password of the mysql root user?
[ root password ]

verifying password of user root ...
verifying password of user root ... done

Enter the name for mysql user of seafile. It would be created if not exists.
[ default "seafile" ]

Enter the password for mysql user "seafile":
[ password for seafile ]
Enter the password for mysql user "seafile":
[ password for seafile ]

Enter the database name for ccnet-server:
[ default "ccnet-db" ]

Enter the database name for seafile-server:
[ default "seafile-db" ]

Enter the database name for seahub:
[ default "seahub-db" ]

---------------------------------
This is your configuration
---------------------------------

server name: dropbox
server ip/domain: dropbox.domain.com

seafile data dir: /root/haiwen/seafile-data
fileserver port: 8082

database: create new
ccnet database: ccnet-db
seafile database: seafile-db
seahub database: seahub-db
database user: seafile



---------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

Generating ccnet configuration ...

done
Successly create configuration dir /root/haiwen/ccnet.
Generating seafile configuration ...

Done.
done
Generating seahub configuration ...

----------------------------------------
Now creating seahub database tables ...

----------------------------------------

creating seafile-server-latest symbolic link ... done

На этом установка Seafile закончена. Можно запустить и проверить работу по адресу dropbox.domain.com:8000

./seafile.sh start
./seahub.sh start

Переходим к установке Apache и настройке SSL. Первоначально нужно получить сертификаты. Можно воспользоваться бесплатными сервисами. У меня же сертифит был. Его и ключ закинул в
/etc/ssl/domain.com/

apt install apache2
a2enmod rewrite
a2enmod proxy_http
a2enmod ssl

Идем в /etc/apache2/sites-available/ и создаем файл нашего виртуал хоста. У меня это dropbox.domain.com-ssl.conf. Пример содеражания:


<VirtualHost *:443>
ServerName dropbox.domain.com
DocumentRoot /var/www

SSLEngine On
SSLCertificateFile /etc/ssl/domain.com/cert.pem
SSLCertificateKeyFile /etc/ssl/domain.com/privatekey.pem

Alias /media /root/haiwen/seafile-server-latest/seahub/media/


Require all granted


RewriteEngine On

#
# seafile fileserver
#
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]

#
# seahub
#
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>

На этом почти все. Включаем сайт:

 a2ensite dropbox.domain.com-ssl.conf 

Изменяем в haiwen/conf/ccnet.conf переменную SERVICE_URL

 SERVICE_URL = https://dropbox.domain.com 

Добавляем строку в haiwen/conf/seahub_settings.py

 FILE_SERVER_ROOT = 'https://dropbox.domain.com/seafhttp' 

И перезагружаем сервер:

cd ../seafile-server-latest
./seahub.sh restart
./seafile.sh restart
service apache2 restart

Готово. Теперь по адресу

https://dropbox.domain.com

Можно авторизоваться в нашем облачном хранилище.