Docker configurations and install scripts for my personal homelab on a Mac Mini M4.
- Mac Mini M4 — Apple M4, 32GB RAM, 2TB custom Chinese NVMe replacing the internal 256GB SSD
| Service | Description | Port |
|---|---|---|
| Dockge | Compose stack management UI | 5001 |
| Homepage | Dashboard | 3000 |
| Speedtest Tracker | Internet speed monitoring | 8081 |
| Glances | System monitoring | 61208 |
| Twingate | Remote access connector | — |
| Muse | Discord music bot | — |
| Vert | File converter | 3002 |
Managed via CLI from the games/ directory.
| Service | Port |
|---|---|
| Project Zomboid | — |
Web UIs, management ports, and SSH are accessed via Twingate. No ports are exposed to the internet. Install the Twingate client, authenticate, and reach services directly at their localhost address.
Define Resources in the Twingate admin console for each service you want to access remotely (e.g. localhost:3000 for Homepage, localhost:5001 for Dockge).
Game servers are not routed through Twingate. Players connect directly via router port forwarding. Each game's port is documented in its docker-compose.yaml.
Run once on a fresh machine. After that, use Dockge at
:5001for day-to-day management.
Prerequisites: macOS, internet connection.
git clone https://github.com/jiwidi/homelab.git
cd homelab
./master_install.shThe script will:
- Install Homebrew, Colima, Docker, tmux if missing
- Create a
.envfile (prompts for required secrets) - Start all services via their
install.shscripts
Game servers are not auto-started — spin them up on demand:
docker compose -f games/hytale/docker-compose.yaml up -dAll secrets live in .env (git-ignored). Required variables:
| Variable | Purpose |
|---|---|
TWINGATE_NETWORK |
Twingate network name |
TWINGATE_ACCESS_TOKEN |
Connector access token from Twingate console |
TWINGATE_REFRESH_TOKEN |
Connector refresh token from Twingate console |
HOMEPAGE_AUTH_TOKEN |
Homepage auth token (auto-generated) |
SPEEDTEST_APP_KEY |
Speedtest app key (auto-generated) |
- Create a directory with
docker-compose.yamlandinstall.sh - Add any required env vars to
.env - Run
bash <service>/install.shor use Dockge
Minimal install.sh:
#!/bin/bash
set -e
DIR="$(cd "$(dirname "$0")" && pwd)"
docker compose --file "$DIR/docker-compose.yaml" up -dhomelab/
├── .env # Secrets (git-ignored)
├── .gitignore
├── master_install.sh # One-time bootstrap script
│
├── dockge/ # Stack management UI
├── homepage/ # Dashboard + Glances + Speedtest
├── twingate/ # Remote access connector
├── muse/ # Discord music bot
├── vert/ # File converter
│
└── games/ # Game servers (managed via CLI)
└── zomboid/
MIT — see LICENSE