A Compose manifest that will :
- Deploy lots of cool services
- Isolate them in virtual networks based on the principle of least privilege
- Automatically handle service dependency
- Run with dedicated users so you don't accidentally give root privileges to your WAN-exposed Jellyfin instance.
- A domain name with the following A records :
goaccess 10800 IN A YOUR_SERVER_IP
grafana 10800 IN A YOUR_SERVER_IP
hedgedoc 10800 IN A YOUR_SERVER_IP
home 10800 IN A YOUR_SERVER_IP
jellyfin 10800 IN A YOUR_SERVER_IP
kavita 10800 IN A YOUR_SERVER_IP
manyfold 10800 IN A YOUR_SERVER_IP
paperless 10800 IN A YOUR_SERVER_IP
portainer 10800 IN A YOUR_SERVER_IP
privatebin 10800 IN A YOUR_SERVER_IP
-
A fresh install of your favourite distribution on a machine that has ports
80
and443
exposed to WAN
That's it !
Clone the repo and create the users and their password.
(clone it where it won't bother - you'll have to keep it to perform maintenance !)
$ git clone https://github.com/Chelsea486MHz/compose-homelab
$ bash ./00_create_users.sh
You can now manually configure some important informations.
$ echo 'DOMAIN="chelsea486mhz.fr"' > .env # Set to your chosen domain name
$ echo 'INFRA_TIMEZONE="Europe/Paris"' >> .env # Set to your desired timezone
$ echo 'INFRA_DIR="/mnt/data"' >> .env # Preferably a dedicated drive
$ echo 'GRAFANA_USERNAME="chelsea"' >> .env # Choose your own
$ echo 'PAPERLESS_USER="chelsea"' >> .env
$ echo 'GOACCESS_USER="chelsea"' >> .env
We can now create the directories the services will use.
$ bash ./01_create_directories.sh
The next configuration step consists of configuring the subdomains based on the domain you chose.
$ bash ./02_subdomains.sh
Secrets (that is to say, passwords for default accounts) will have to be generated next.
$ bash ./03_create_secrets.sh
You can now bring up the entire stack with one magic command !
$ docker compose up -d
Wait ~10mins for everything to start. You can now access localhost:81
and configure your reverse proxy with NGINX Proxy Manager !