How to Install Seafile on Ubuntu 16.04

/ Category: Tutorials / Comments: None

How to Install seafile on Ubuntu 16.04
Spread the love

installing seafile on ubuntu 16.04

SeaFile is an enterprise file hosting platform with high reliability and performance, there are Community Edition and Professional Edition. SeaFile Community Edition is an open source file storage system, it is an alternative to DropBox, we can synchronize the files between multiple computers or mobile devices using the Seafile client. In this tutorial, we will provide you with a step by step instruction on how to install SeaFile Community Edition on Ubuntu 16.04.


  • Ubuntu 16.04 with minimum 2GB of RAM
  • SSH access with root privileges

1. Log in to your server via SSH:

# ssh root@server_ip

Before starting with the SeaFile installation, it is encouraged to check that our system package database is up to date.

2. Update the system

# apt update
# apt upgrade

The installation requires a working LAMP, stack. If you don’t have a LAMP stack installed, you need to install it first

#apt install lamp-server^

3. Install dependencies

We need to install some dependencies prior to installing SeaFile Community Edition, run the following commands:

# apt install python2.7 libpython2.7 python-setuptools python-imaging python-ldap python-mysqldb python-memcache python-urllib3 python-pip

and run

# pip install boto

4. Install SeaFile

Let’s create a directory to store SeaFile core files.

# mkdir /opt/seafile
# cd /opt/seafile
# wget
# tar -xzvf seafile-server_6.3.4_x86-64.tar.gz
# cd /opt/seafile/seafile-server-6.3.4

Let’s create a password for MySQL root user. If your MySQL root user already has a password, you can skip this step

# mysql_secure_installation

Now we have configured a password for MySQL root user, let’s proceed with the installation

# ./

During the installation process, you will be asked for MySQL root password and a new password for Seafile database user.

root@rose:/opt/seafile/seafile-server-6.3.4# ./
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

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

What is the ip or domain of the server?
For example:,
[ This server's ip or domain ]

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/opt/seafile/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 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:            seafile
    server ip/domain:

    seafile data dir:       /opt/seafile/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 ...

Successly create configuration dir /opt/seafile/ccnet.
Generating seafile configuration ...

Generating seahub configuration ...

Now creating seahub database tables ...


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

Your seafile server configuration has been finished successfully.

run seafile server:     ./ { start | stop | restart }
run seahub  server:     ./  { start  | stop | restart  }

If you are behind a firewall, remember to allow input/output of these tcp ports:

port of seafile fileserver:   8082
port of seahub:               8000

When problems occur, Refer to

for information.

Once completed, you can start SeaFile and SeaHub:

# ./ start
# ./ start

When starting seahub for the first time, you will be asked for your email address and a password to create a new SeaFile admin

root@rose:/opt/seafile/seafile-server-6.3.4# ./ start
LANG is not set in ENV, set to en_US.UTF-8
LC_ALL is not set in ENV, set to en_US.UTF-8
Starting seahub at port 8000 ...

It's the first time you start the seafile server. Now let's create the admin account

What is the email for the admin account?
[ admin email ]

What is the password for the admin account?
[ admin password ]

Enter the password again:
[ admin password again ]

Successfully created seafile admin

Seahub is started


Now, you can access your new SeaFile installation at http://YOUR_IP_ADDRESS:8000 or

install seafile ubuntu 16.04

5. Configure Apache

To access it without typing the port in the web browser, we need to create an apache virtual host and configure it as a reverse proxy. Apache module proxy_http is not enabled by default, and we need to enable it to run Apache as a reverse proxy.

# a2enmod proxy_http
# nano /etc/apache2/sites-available/

Add the following lines to the file

 <VirtualHost *:80>
    DocumentRoot /opt
    Alias /media  /opt/seafile/seahub/media
    RewriteEngine On
    <Location /media>
        Require all granted
    ProxyPass /seafhttp
    ProxyPassReverse /seafhttp
    RewriteRule ^/seafhttp - [QSA,L]
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    ProxyPass /
    ProxyPassReverse /

Restart apache to apply the configuration changes

# systemctl restart apache2

Now, you can access your SeaFile installation at

6. Create SystemD file

In the previous step, we ran seafile and seahub using the provided bash script. Let’s create systemd files to make it easier to manage the application.

# nano /etc/systemd/system/seafile.service
Description=Seafile hub seafile.service

# change start to start-fastcgi if you want to run fastcgi
ExecStart=/opt/seafile/seafile-server-latest/ start
ExecStop=/opt/seafile/seafile-server-latest/ stop

# nano /etc/systemd/system/seahub.service

We also need to change the permissions:

# chown -R www-data: /opt/seafile /tmp/seahub_cache
systemctl daemon-reload
systemctl restart seafile
systemctl restart seahub
systemctl enable seafile
systemctl enable seahub

If you want to access your SeaFile installation securely, you can install a free certificate from LetsEncrypt. Follow the steps below to enable HTTPS on your website.

apt-get install software-properties-common python-software-properties
add-apt-repository ppa:certbot/certbot
apt update
apt-get install python-certbot-apache

In the last command, you will be asked for your email address and the domain name you want to install a certificate to, and whether you want to redirect HTTP to HTTPS or not. Once finished, you can access your SeaFile installation at

That is it, SeaFile has been successfully installed on your Ubuntu 16.04 server.

install seafile on ubuntu 16.04Of course, you don’t have to Install Seafile on Ubuntu 16.04, if you use one of our Optimized Ubuntu Hosting plans, in which case you can simply ask our expert Linux admins to install Seafile on Ubuntu 16.04 for you. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post on How to Install Seafile on Ubuntu 16.04, please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.

Be the first to write a comment.

Your feedback