Install CloudTables self-hosted

Author: Colin Marks 25th March 2022

This blog is a loose transcription of the Self-Hosted video. We hope that this written version will help our non-English speaking users follow along and also those of you who prefer written instructions!

For reference, this is the original video:


With SaaS (Software as a Service) solutions, your data is stored somewhere out there in the cloud. Some people love this, as it gives freedom from the underlying architecture - you don't need to worry about backups, system updates, or even your whereabouts, that data will always be available.

This freedom though does have a cost, and that is lack of ownership of your data. If your data is super-sensitive, you may not want that data outside of your premises and outside of your total control.

For that reason, CloudTables can be installed locally, what we refer to as a self-hosted installation. You'll get the same UI, the same experience, but you control the data and the configuration.

CloudTables self-hosted installations support macOS and Linux. Native Windows isn't supported, but we do support WSL (Windows Subsystem for Linux). WSL "lets developers run a GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a traditional virtual machine or dual-boot setup." The installation is straightforward, and the self-hosted video linked above was recorded entirely within a WSL environment.

We use Docker containers for the self-hosted environment. Docker can be installed by your standard package manager (dnf, yum, etc.), or from the Docker website. We also use Docker Compose to define and run the multiple containers. There appears to be different versions of docker-compose, some of which cause compatibility issues. The one you need is installable from the Docker website.


The CloudTables documentation area contains information about the install, but we'll go through it all here.

The installation is started from a single command:

/bin/bash -c "$(curl -fsSL"

This will download an installation script that performs a few dependency checks before asking a configuration questions, such as those below.

... CloudTables configurator version 1.3.1
... Let's run through a few quick questions to get you started.
??? IP address of this host server? []  
??? Port to be used for the web-server? [80]  
??? Use a Docker container for the Postgres database? [Y|n] 
??? Persist Postgres data in a docker volume? [y|N] 
??? PostgreSQL port? [5432]  
??? PostgreSQL database? [docker]  
??? PostgreSQL user? [docker]  
??? PostgreSQL password? [docker]  
??? Take default values for redis server? [Y|n] 
??? Configure SMTP server? [y|N] 

Questions are preceded by "???", progress statements with a "...". A default response to each question is provided in square brackets - just press "Enter" to accept those defaults, or type in an alternative response.

The first few questions deal with the details of the web-server. You're asked for

  • the IP address of the host that will run the CloudTables servers. This is asked because the host (the machine where the installation scripts are being executed and where the containers will run) may have multiple IP addresses. Alternatively, you can supply a hostname if that's how the server will be referenced.
  • the port for the web-server. Port 80 is the default for most web-servers.

After this, you'll be asked about the database. CloudTables uses Postgres. You can either use

  • a Docker Postgres container, or
  • an existing Postgres server if you have one up and running if you'd prefer CloudTables to be deployed onto that instead. If doing so, it is strongly recommended that your backups are current before going any further.

If you're using a Docker Postgres container, you can also choose where to store the database:

  • the default is within the Postgres container, or
  • you can store externally in a Docker volume. For a production system, this is worthwhile, as it means the data to is external to the container and therefore easier to backup and maintain.

Either way, you'll be asked for the connection details to the database.

We use Redis for an in-memory database. You could use an existing Redis server if you have one, or just use the default Docker container for it.

And finally, you'll be asked if you want to configure an SMTP server. This is only used if you invite users to join your CloudTables application - in that case, an email invitation is sent. The default is to not offer those emails.

That's the end of the questions. The script will now save your preferences, download the Docker containers from Docker Hub, and fire-up the server.

Once complete, you'll be given an address to access the CloudTables server. Paste that into your favourite browser and you're good to go!

Stopping and starting the containers

You can start and stop the containers after the initial configuration with

  • standard Docker commands, docker-compose stop, or docker stop <id>, or
  • you can use the two CloudTables scripts, start.bash and stop.bash. Run those scripts with -? to get their full usage.

Upgrading the server

The CloudTables UI will alert you if an upgrade to the server is available. When this happens, and you wish to upgrade (it's entirely optional), you can run the command:

bash ./start.bash -u

You'll be asked the configuration questions again, with your previous answers provided as the defaults.


Self-hosted CloudTables is a good solution for those concerned with their data's privacy, and as you've seen, the installation is quick and easy. As always, please get in touch if you have any questions or comments.