Title: Making my server completely replacable
Category: Blog
Tags: /dev/diary, linux, ancible
Date: 2018-02-08
Status: Draft

**This is mostly a draft so far, so maybe pad it a bit more 😉**

I have a virtual server running Arch Linux hosted somewhere in Germany
which I want to use to host some personal services and toolchains.
Currently this is done via LXD which I was a fan of for quite a while.
I am using Zfs as a backend for these containers which means
that I can do quick snapshots and deduplication between the base systems.
But...I'm not really sure this is a nice way to do it anymore.
I would like to run services in Containers just because
it means that the host can be setup in a more clean way.

But right now there is a lot of manual configuration required because
I'm struggling with the new way that LXD handles network taps.
And while I'm gonna have to touch my configs anyways, I thought: why not go a bit further?

# Existing setup

```
 ☁ (icarus) ~> lxc list
+-------------+---------+----------------------+------+------------+-----------+
|    NAME     |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+-------------+---------+----------------------+------+------------+-----------+
| betakookie  | STOPPED |                      |      | PERSISTENT | 2         |
+-------------+---------+----------------------+------+------------+-----------+
| dcmerge     | RUNNING | 10.130.123.13 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
| dns         | STOPPED |                      |      | PERSISTENT | 1         |
+-------------+---------+----------------------+------+------------+-----------+
| gitlab      | RUNNING | 10.130.123.20 (eth0) |      | PERSISTENT | 2         |
+-------------+---------+----------------------+------+------------+-----------+
| hazelnot    | RUNNING | 10.130.123.12 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
| partkeepr   | STOPPED |                      |      | PERSISTENT | 3         |
+-------------+---------+----------------------+------+------------+-----------+
| spacekookie | RUNNING | 10.130.123.10 (eth0) |      | PERSISTENT | 2         |
+-------------+---------+----------------------+------+------------+-----------+
| stats       | RUNNING | 10.130.123.22 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
| turtl       | STOPPED |                      |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
| vpn-core    | STOPPED |                      |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
| wiki        | RUNNING | 10.130.123.23 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
```

Ultimately I want to run a few core services:

 - My website (Also available in early access on Github 😱)
 - A friend's static website
 - Gitlab
 - Bookstack (my wiki)
 - Matomo (previously Piwik)
 - Partkeepr (a tool for managing electronic components)
 - Turtl (a cool evernote clone)
 - My own Quassel core (instead of using my ex-girlfriend's one 😉)

And maybe some more that I haven't setup yet.
Including a VPN between my server,
my NAS and all of my other devices.

# Future setup idea

I have two servers running pretty much all the time:

 - My cloud server
 - My NAS at home

What I want to get over is having to manually configure containers and