Skip to main content

Eric Drechsel

Building the Libre.sh Node

3 min read

I set up my own libre.sh IndieHost yesterday.

The whole process took about 30 minutes, and at the end, I had two domains running:

It's a really great setup which completely avoids inventing new technologies and instead leverages the best available components.

Each domain is running as an isolated multi-container Docker Compose app. Apps are managed as system.services, with CoreOS as the base OS.

This is a complete hosting system, with domain name purchasing, auto-SSL, tidy domain backups, an email server, and a suite of excellent applications. (sorry, you'll just have to page through their repos, as there's no compiled list of apps yet - I think I'll contribute one back).

Guide 

If you are interested in setting up your own node, read on. The rest of this post is just my notes. The Install Guide should be your primary resource for provisioning your node.

Setting up Digital Ocean

Added doctl (to install https://github.com/digitalocean/doctl/) to my dotfiles.

Already had SSH key uploaded to DO.

Ran

libre.sh git/master
❯ doctl compute ssh-key list
ID	Name		FingerPrint
KEYID	name	        ...
❯ doctl compute droplet create ... --ssh-keys=KEYID 
❯ doctl compute droplet list ❯ ssh core@IP

Libre

Once connected to the host, most tasks are performed using the libre command. Run

libre help

for a list of subcommands. Most libre subcommands require root so you'll need to prefix them with sudo.

Backups

A complete backup system is available as a /system module. You simply have to configure it with a remote SSH login. You'll need an SSH-able host with enough persistent storage to contain all your backups. I'm using a low-power Intel NUC box at home.

Follow the backups module install instructions. The command to get key signatures added to authorized keys on the dest and known_hosts on the backups container doesn't quite work, see indiehosters/backups#2 for working instructions.

WIP

Logs

There's an experimental app/system module for aggregating/searching/analyzing logs using ELK stack.

Things I have not set up yet, which I plan to

  • Automatic domain provisioning. There's optional API integration to purchase and configure Namecheap domains using the command line tool. I decided to skip this for now, since I have my domains registered through another provider. I'll probably come back to this when I have validated the platform more.
  • Email. There is a fully functional email application modeled after Mail-in-a-Box, the best available documentation for setting up an email server nowadays.