Debian 8 - Install Seafile Server 6.x
This is a "refresh" of my previous tutorial on setting up a seafile server on Debian 7 (somehow I missed 8). Some things have changed, like the ability to use ffmpeg to genereate thumbnails for video files, but it's mostly the same.
Installation
Update And Install Packages
Run the following commands:
sudo apt update && sudo apt dist-upgrade -y
sudo apt-get install -y \
python2.7 \
python-setuptools \
python-imaging \
python-ldap \
python-mysqldb \
python-urllib3 \
python-simplejson \
python-memcache \
python-pip
FFmpeg and MoviePY
The seafile manual states that if you upgrade from 6.0 and you'd like to use the feature video thumbnail, you need to install FFmpeg, as well as the pillow
and moviepy
packages.
Unfortunately, I have not been able to fingure out how to get moviepy installed successfully on Debian 8, but will update this if I ever do figure it out.
Luckily this functionality is optional so we will skip it for now.
Install MySQL Database
If you have a MySQL or MariaDB database already deployed that you wish to use, just skip this section.
The Seafile docs don't appear to specify which versions of MySQL should be used, but I'm pretty sure it will work perfectly well with any version higher than 5.5 or even a MariaDB alternative. If you are unsure, use my guide to install MySQL 5.6 on Debian 8. I have other servers deployed that are using it, so I know it works.
Download And Install Seafile
cd $HOME
wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz
# extract the download
tar --extract --gzip --file seafile-server*
# remove the compressed file
rm seafile-server*.tar.gz
Create Seafile Database And User
Login to your database with your root user and run the following queries in order to create the seafile database and user.
CREATE DATABASE `seafile`;
GRANT ALL on seafile.* to seafile@localhost identified by 'mySeafileUserPasswordHere';
exit;
mySeafileUserPasswordHere
text for the password to something else!
Run The Setup Script
cd seafile-server-*
/bin/bash setup-seafile-mysql.sh
Install Nginx
The seafile manual wants us to install nginx 1.8+ but unfortunately, if you just install the nginx package as-is, you will get version 1.6.2, so follow this tutorial on installing the later version from dotdeb.
Configure Seahub To Use Nginx
sudo rm /etc/nginx/sites-enabled/default
sudo touch /etc/nginx/sites-available/seafile.conf
sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
Copy/paste the following chunk into the file at /etc/nginx/sites-enabled/seafile.conf
.
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;
error_log /var/log/nginx/seahub.error.log;
}
# If you are using [FastCGI](http://en.wikipedia.org/wiki/FastCGI),
# which is not recommended, you should use the following config for location `/`.
#
# location / {
# fastcgi_pass 127.0.0.1:8000;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param PATH_INFO $fastcgi_script_name;
#
# fastcgi_param SERVER_PROTOCOL $server_protocol;
# fastcgi_param QUERY_STRING $query_string;
# fastcgi_param REQUEST_METHOD $request_method;
# fastcgi_param CONTENT_TYPE $content_type;
# fastcgi_param CONTENT_LENGTH $content_length;
# fastcgi_param SERVER_ADDR $server_addr;
# fastcgi_param SERVER_PORT $server_port;
# fastcgi_param SERVER_NAME $server_name;
# fastcgi_param REMOTE_ADDR $remote_addr;
# fastcgi_read_timeout 36000;
#
# 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;
proxy_request_buffering off;
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 /full/path/to/seafile-server-latest/seahub;
}
}
seafile.example.com
to whatever your server's hostname is, and replace /full/path/to/seafile-server-latest/seahub
(towards the bottom), with the relevant path.
Now reload nginx:
sudo nginx -s reload
Change Seafile Settings To Use Nginx
Navigate to your conf
directory.
cd $HOME/conf
Now edit your ccnet.conf file so that the SERVICE_URL
no longer has the :8000
. For example:
SERVICE_URL = http://seafile.mydomain.com
Now edit your seahub_settings.py
file and add the following line (changing it for whatever your server's hostname is):
FILE_SERVER_ROOT = 'http://seafile.mydomain.com/seafhttp'
Start/Stop Scripts
Copy/paste the following script for starting seafile somewhere that you will find it and can execute it. E.g. I stick it at $HOME/start-seafile.sh
.
/bin/bash $HOME/seafile-server-latest/seafile.sh start
/bin/bash $HOME/seafile-server-latest/seahub.sh start
Copy/paste the following script for stopping seafile somewhere that you will find it and can execute it. E.g. I stick it at $HOME/stop-seafile.sh
.
/bin/bash $HOME/seafile-server-latest/seafile.sh stop
/bin/bash $HOME/seafile-server-latest/seahub.sh stop
Start Seafile
Run the script to start seafile. Since this is the first time you have started seafile, you will be promped for the admin's email address and password. This will be the login credentials for the first administrator in the system.
Once seafile has started, you should be able to connect to it in your browser at the hostname, and also be able to connect to it using the client.
Block Off Port 8000
I was having issues with my Seafile server becoming unresponsive until I made sure to use my firewall to block off port 8000. It appears if anyone connects directly rather than through the reverse proxy, your seafile server can become unresponsive so be sure to block off port 8000 to the outside world.
Optional - Add Memcached
Stop seafile if its running
/bin/bash $HOME/seafile-server-latest/seafile.sh stop
/bin/bash $HOME/seafile-server-latest/seahub.sh stop
Install the necessary packages
sudo apt-get install libz-dev -y
sudo apt-get install python2.7-dev -y
sudo apt-get install libmemcached-dev memcached -y
sudo apt-get install python-pylibmc -y
sudo pip install --upgrade pylibmc
sudo pip install django-pylibmc
Now edit your seahub_settings.py
configuration file.
vim conf/seahub_settings.py
Add/Append the following:
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
},
'locmem': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
},
}
COMPRESS_CACHE_BACKEND = 'locmem'
Start seafile
/bin/bash $HOME/seafile-server-latest/seafile.sh start
/bin/bash $HOME/seafile-server-latest/seahub.sh start
Conclusion
You now have a seafile server running that uses a MySQL database and an Nginx webserver. In future we will show you how to set up memcached and SSL certificates.
References
- Seafile Docs
- geek17.com - Debian Jessie 8: install and configure the latest version of Nginx and PHP 7 FPM
First published: 29th August 2018