Hacker News new | ask | show | jobs
by schemescape 1242 days ago
Any chance you could outline your process? E.g. if you had to start from a new VM, what all would you need to do?

I've always just set everything up via the command line, and it's tedious/not repeatable (and there's also no isolation). I'm sure there's a better way, but usually the solutions I see involve gluing together a bunch of different tools--possibly even more work than I'm already doing (although there are benefits!).

2 comments

Sure! My requirements are very simple, so my setup isn’t very complicated. The process isn’t precisely repeatable because each self-hosted app has different requirements, some require multiple containers, and so on.

I start with a template docker-compose yaml that contains the barebones: network settings, labels for Traefik (eg. Let’s Encrypt config), placeholders for the image/container name, volumes, env variables, etc. I fill this in based on the container I want to setup. Many self-hosted apps provide example docker-compose configurations - I often just merge them with my template by hand. It’s usually just a couple of lines.

I edit the files in vscode (but directly over ssh). Not a huge fan of editing YAML in the terminal.

Then, I execute an aliased command that goes something like this:

  docker-compose down ; docker-compose pull && docker-compose up -d && docker-compose logs -f
to see if the container stands up, and tweak if necessary.
Can't speak for the parent but since I also use a docker-compose & traefik based setup I can describe my migration process (executed by ansible in my case, could easily be done manually though):

1. Copy docker-compose.yml (for my private stuff there is a single one containing all services + traefik) and config files (host-mounted into services from a config dir) to new host.

2. Start services (docker-compose up).

3. Restore runtime data (in my case I mostly pull some db dumps from my restic repos and load them into the db containers).