Remote installation

Thunor Web's full installation procedure uses Docker Compose. This gives a lot of flexibility, e.g. a database instance can be launched, or an existing one used; the system can be deployed on the local machine (the one you're running commands on), or to a remote server or cloud provider like Amazon Web Services.

To run Thunor Web on a remote machine, you can start a shell on the target machine (e.g. by SSH) and follow the typical installation. However, for advanced users, this document shows how to deploy Thunor Web on a remote server using Docker Machine, which allows you to provision containers in the cloud by command line.

Requirements

  • Docker and Docker Compose (version 1.12 or later). Follow instructions for your platform:
  • Docker Machine. On Mac and Windows, this is installed along with Docker. For other platforms, see the installation instructions.
  • A Python installation. Python 3.6 or later is recommended, but other versions will probably work - it is only used for the configuration script.
  • Git. If you're not sure if you have git, it will be provided with the Anaconda download in the previous step.

Installation steps

  1. Create and activate the remote machine instance using docker-machine.

    Use docker-machine create to create the remote instance, and follow the instructions to activate it. Docker Machine can deploy to many different remote servers including Amazon Web Services (AWS), Microsoft Azure, Digital Ocean and many others. See the list of docker-machine drivers for specifics.

    Here is an simplified example for AWS, based on Docker's example:

    a) Set up your docker-machine with your AWS credentials. You can do this by environment variables, or by entering your credentials into the file ~/.aws/credentials:

    [default]
    aws_access_key_id = AKID1234567890
    aws_secret_access_key = MY-SECRET-KEY
    

    b) Create the instance. You may wish to customize the instance size, security group, region and other options if you're doing more than a quick test (see docs):

    docker-machine create --driver amazonec2 --amazonec2-open-port 80 --amazonec2-open-port 443 thunor-test
    

    c) Activate the instance as directed by the output of the above command. On Mac and Linux, this is usually:

    eval $(docker-machine env thunor-test)
    

    On Windows, follow the instructions given by running docker-machine env thunor-test. The machine is now active, and Docker and Docker Compose commands will affect the remote host, not the local machine. In production, we strongly recommend using a persistent volume with your provider - otherwise your data will be lost when the instance is terminated!

  2. (Optional) Configure a DNS name. This is an entry like thunor.example.com which points to the machine hosting Thunor Web. This is required if you're planning to use TLS encryption; otherwise, Thunor Web can be accessed by the instance's IP address.

  3. Retrieve the Thunor Web quick start tool using git

    git clone https://github.com/alubbock/thunor-web-quickstart thunor-web
    cd thunor-web
    
  4. Run the Thunor Web deploy script

    The deploy script will automatically detect if Docker Machine is active, but you'll need to specify a remote location to install Thunor Web. On AWS using an Ubuntu instance (the default), /home/ubuntu/thunor will do.

    To access the host by IP address (no hostname), and without an encrypted connection:

    python thunorctl.py deploy --thunorhome=/home/ubuntu/thunor
    

    To access Thunor Web by hostname thunor.example.com, and enable TLS encrypted connections:

    python thunorctl.py deploy --hostname=thunor.example.com --thunorhome=/home/ubuntu/thunor --enable-tls
    

Starting and stopping

To start Thunor Web:

python thunorctl.py start

To stop Thunor Web:

python thunorctl.py stop

These commands must be run from the thunor-web directory.

Note that stopping the Docker container doesn't delete the cloud instance (you're still getting charged!). For that, see Uninstallation, below.

Next steps

  • Check the installation FAQ if you're having issues.
  • By default, all services will be launched on the same AWS instance. To use an external database, for example to use PostgreSQL on Amazon RDS, comment out (with # symbol at start of lines) or remove the postgres section, and update thunor-db.env with the server's connection details, and restart Thunor Web.
  • Configure the system using settings in thunor-app.env (described in configuration options)
  • You can add and invite new users, and create user groups in the admin interface.
  • If you enabled TLS encryption, you may wish to schedule a job to renew those certificates automatically (they only last 90 days). See the section on TLS Encryption for details.

Uninstallation

  • Stop the system with python thunorctl.py stop
  • Backup the container and the local Thunor Web directory, if needed
  • Deactivate Docker Machine instance with eval $(docker-machine env --unset), or on Windows, follow the instructions given by docker-machine env --unset
  • Delete the instance with docker-machine rm thunor-test, noting that this action is permanent.
  • Delete the Thunor Web directory on your local machine

Upgrade Thunor Web

Check your current version with:

python thunorctl.py version

To upgrade to the latest version, run:

git pull
python thunorctl.py upgrade

In production, a database backup is recommended before performing an upgrade.