Notes of setting up SeaFile under docker on Ubuntu Server 16.04 LTS

I have recently started using SeaFile to provide an easy method of centralized file storage. Trying the normal install with the installation script kept failing (Appears to not support latest version). As I am aiming for an easy install for others I looked to the docker based image. I use docker for packaging up other servers I often use, so this seems like a natural and easy way to work.

Setup

For Ubuntu Linux we need to install docker and also update the system.


sudo apt update
sudo apt upgrade
sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common \
    git

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt update

Install the SeaFile docker image


sudo git clone https://github.com/haiwen/seafile-docker.git /var/seafile/
cd /var/seafile/

sudo cp samples/server.conf bootstrap/bootstrap.conf

sudo nano bootstrap/bootstrap.conf
#Edit the first 3 fields minimum
#server.name = local_ip
#admin.email = [email protected]
#admin.password = asecret

sudo ./launcher bootstrap
sudo ./launcher start

Check you can login

Before continuing, check you can login to the user interface over the web. This verifies that the server is setup correctly.

Port Forwarding

Open ports for FileServer - 8082/TCP Seahub - 8000/TCP Web Portal - 80/TCP

Move the Data directory

Be default the docker image will store all user data in the /var/seafile folder. In most installations this is not ideal, as often boot off a smaller fast drive and store data on a large storage volume. In this example my data volume is at /mnt/Data and I will store everything in a folder called seafile inside it.

sudo ./launcher stop
sudo mv shared /mnt/Data/Seafile/
sudo ln -s /mnt/Data/Seafile/ shared
sudo ./launcher start

Automatically starting

As of current the launcher script does not appear to use the new docker restart features. Using the docker website as a reference, a systemd service can be used to automatically start the docker image for us.

Edit the file with sudo nano /etc/systemd/system/docker-seafile.service

[Unit]
Description=Seafile container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a seafile
ExecStop=/usr/bin/docker stop -t 2 seafile

[Install]
WantedBy=default.target
sudo systemctl daemon-reload
sudo systemctl start docker-seafile.service
sudo systemctl enable docker-seafile.service
sudo reboot

Done.

This really is just a small memo for future installs.