Skip to content

fabito/htk8s

Repository files navigation

HTPC powered by k3s

This is my current HTPC setup. It runs on k3s - a lightweight and easy to install Kubernetes distribution. It includes the following applications:

Getting Started

Quickstart

# for x86_64
kubectl apply -f https://raw.githubusercontent.com/fabito/htk8s/v0.1/install_x86_64.yaml

#for raspberry pi (ARM)
kubectl apply -f https://raw.githubusercontent.com/fabito/htk8s/v0.1/install_armhf.yaml

Verifying the installation

All resources are created in the htpc namespace. So if you run:

k3s kubectl get all -n htpc

You should get something similar to:

NAME                                READY   STATUS    RESTARTS   AGE
pod/bazarr-795f88c5c9-w75l7         1/1     Running   0          24h
pod/emby-6f457df664-fqbmc           1/1     Running   0          24h
pod/jackett-6bcf6cd8d6-lrh6j        1/1     Running   0          24h
pod/radarr-5c965c7678-zt8sq         1/1     Running   0          24h
pod/sonarr-b65c8956-mxng4           1/1     Running   0          24h
pod/transmission-5f7fdc6cb5-nrtbb   1/1     Running   0          24h

NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/bazarr         ClusterIP   10.43.43.224    <none>        6767/TCP   24h
service/emby           ClusterIP   10.43.212.198   <none>        8096/TCP   24h
service/jackett        ClusterIP   10.43.104.233   <none>        9117/TCP   24h
service/radarr         ClusterIP   10.43.141.101   <none>        7878/TCP   24h
service/sonarr         ClusterIP   10.43.35.98     <none>        8989/TCP   24h
service/transmission   ClusterIP   10.43.184.198   <none>        9091/TCP   24h

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/bazarr         1/1     1            1           24h
deployment.apps/emby           1/1     1            1           24h
deployment.apps/jackett        1/1     1            1           24h
deployment.apps/radarr         1/1     1            1           24h
deployment.apps/sonarr         1/1     1            1           24h
deployment.apps/transmission   1/1     1            1           24h

NAME                                      DESIRED   CURRENT   READY   AGE
replicaset.apps/bazarr-795f88c5c9         1         1         1       24h
replicaset.apps/emby-6f457df664           1         1         1       24h
replicaset.apps/jackett-6bcf6cd8d6        1         1         1       24h
replicaset.apps/radarr-5c965c7678         1         1         1       24h
replicaset.apps/sonarr-b65c8956           1         1         1       24h
replicaset.apps/transmission-5f7fdc6cb5   1         1         1       24h

You should also be able to reach each component's ui using the links below. Don't forget to replace localhost by the IP or the server name running k3s.

App URI
radarr https://localhost/radarr
sonarr https://localhost/sonarr
bazarr https://localhost/bazarr
transmission https://localhost/transmission
emby https://localhost/

Check the ingress.yaml for more details.

Each module except for Emby is configured to respond on a custom basepath (check the init containers logic for more details).

How it works

It uses LinuxServers images.

It uses a hostPath volume to store configuration and media files. It defaults to the /opt/htpc directory

/opt/htpc
├── bazarr
├── downloads
├── emby
├── jackett
├── media
│   ├── movies
│   └── tv
├── radarr
├── sonarr
└── transmission

TODO