thank you to everyone who has used and supported this project over the past few years.
i will keep a baseline *.homelab.express certificate available through march, after which the site will shut down.
if you need any of the multi-level subdomains, you can request them in the discord and i will do my best to provide a cert that will work for you.
homelab.express provides a certificate updater to simplify the process of regularly pulling down our updated certificates for your docker environment.
this container was created to work with the traefik reverse proxy, but it should work for any TLS provider that supports a certificate with a separate plaintext private key.
if you just acquired a new raspberry pi or similar device and are looking to get it stood up as a personal deployment environment, consider using the setup outlined here to get it up and running in no time.
follow these steps to prepare your device:
once your device is prepped, you can use our script to set up the environment:
then head to /run/homelab/compose/infrastructure/ and start your infrastructure containers:
as long as you have your new lab's IP set in your hosts file, you can head to https://manage.homelab.express, set up a password, and explore portainer.
you can also head to https://{hostname}.homelab.express (replacing {hostname} with the hostname of your device) to view the traefik dashboard.
if you prefer not to use the script, you can replicate its functionality by running the following commands:
once you've copied the files over, make sure to update /run/homelab/compose/infrastructure/docker-compose.yaml to replace ${hostname} with your machine's hostname.
when standing up additional containers, all you need to do to have them served correctly by traefik behind our certificate is to ensure the container is on the same network as traefik and add the traefik labels:
here is an example with the whoami container, which stands up a lightweight demo server:
adding additional devices is the same as setting up the first one, except the script to set up the environment is slightly different:
if you prefer not to use the script, the only difference between the first script and the add-on script is that we use portainer agent instead of portainer in /run/homelab/compose/infrastructure/docker-compose.yaml:
follow these steps to prepare your device:
if your device has multiple IP addresses assigned to it, you will need to specify the static IP address you set in the first step by including the --advertise-addr option in the docker swarm init command.
once your device is prepped, you can use our script to set up the environment:
then head to /run/homelab/compose/infrastructure/ and start your infrastructure services:
as long as you have your new lab's IP set in your hosts file, you can head to https://manage.homelab.express, set up a password, and explore portainer.
you can also head to https://monitor.homelab.express to view the traefik dashboard.
if you prefer not to use the script, you can replicate its functionality by running the following commands:
when standing up additional services, all you need to do to have them served correctly by traefik behind our certificate is to ensure the service is on the same network as traefik and add the traefik labels:
here is an example with the whoami container, which stands up a lightweight demo server:
adding additional nodes to the swarm comes with a challenge: namely, how to managed shared data. you have a few options for how to go about this: you can create global volumes, have copies of the relevant data on every node, or use placement constraints to keep services that rely on certain data deployed only to the nodes that contain that data.
once you've solved the data problem, you can add a node to your swarm by getting a join token from a manager node already in the swarm:
run the returned join command on the node you want to join to the swarm. you can continue managing the swarm and its services from a manager node or from within portainer.