Personal homelab for Ubuntu LTS.
This README keeps the full setup flow, the service list, and the personal tweaks I reuse when rebuilding the machine.
- Portainer
- qBittorrent
- Radarr
- Sonarr
- Prowlarr
- Byparr
- Jellyseerr
- Jellyfin
- Nextcloud AIO
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginmkdir -p /data/{downloads/{tv,movies},media/{tv,movies}}
sudo chown -R 1000:1000 /datadocker compose up -dAfter the stack is up, each app still needs a few manual settings.
- Set default download folder to
/data/downloadsin qBittorrent. - Add 2 categories -
tvandmovies- and set the Save path totvandmovies. It uses the subfolders of the default download folder.
- Set root folder to
/data/media/tvand/data/media/moviesin Sonarr and Radarr respectively.
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
nano /data/coolify/source/docker-compose.override.ymlPaste this:
services:
coolify:
ports:
- "9000:8080"Restart the container.
You might also need to change the root email and password after this:
docker exec -ti coolify sh -c "php artisan root:change-email"
docker exec -ti coolify sh -c "php artisan root:reset-password"sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddyGet yourself a domain from duckdns.org and put it in your Caddyfile, or just use Cloudflare Tunnel.
caddy run --config /path/to/Caddyfile- qBittorrent: 8080
- Sonarr: 8989
- Radarr: 7878
- Prowlarr: 9696
- Jellyfin: 8096
- Coolify: 9000
- Nextcloud: 11000 (Apache)
I only really expose Nextcloud to be able to share my hosted files directly to anyone.
Completely optional. You can even use other custom CSS if you want.
@import url("https://cdn.jsdelivr.net/gh/AumGupta/abyss-jellyfin@main/abyss.css");
/* Accent colour
Format: R, G, B (no rgb() wrapper)
Used for highlights, active states, progress bars. */
:root {
--abyss-accent: 245, 245, 247;
--abyss-radius: 12px;
--abyss-indicator: 55, 55, 55;
}
/* Custom font: Import any Google Font and override body. */
@import url("
https://fonts.googleapis.com/css2?family=Google+Sans:ital,opsz,wght@0,17..18,400..700;1,17..18,400..700&display=swap");
body {
font-family: "Google Sans", sans-serif;
}