Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Homelab Setup

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.

Services

  • Portainer
  • qBittorrent
  • Radarr
  • Sonarr
  • Prowlarr
  • Byparr
  • Jellyseerr
  • Jellyfin
  • Nextcloud AIO

Set up Docker

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-plugin

Create Required Folders

mkdir -p /data/{downloads/{tv,movies},media/{tv,movies}}
sudo chown -R 1000:1000 /data

Run the Docker Compose

docker compose up -d

First-Time Service Setup

After the stack is up, each app still needs a few manual settings.

qBittorrent

  1. Set default download folder to /data/downloads in qBittorrent.
  2. Add 2 categories - tv and movies - and set the Save path to tv and movies. It uses the subfolders of the default download folder.

*Arr

  1. Set root folder to /data/media/tv and /data/media/movies in Sonarr and Radarr respectively.

Coolify

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
nano /data/coolify/source/docker-compose.override.yml

Paste 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"

Caddy

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 caddy

Set up Caddyfile

Get yourself a domain from duckdns.org and put it in your Caddyfile, or just use Cloudflare Tunnel.

caddy run --config /path/to/Caddyfile

Ports

  • 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.

Jellyfin Custom CSS

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;
}

About

Config files for my homelab

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors