Kubernetes et Emby Server

Preparation

Passer 32Go de la ZFS de Proxmox au ubuntu qui host kubernetes

Dans TrueNas exposer /mnt/Magneto/9-VideoClub en SMB

Passer la carte Graphic a ubuntu

Installation filesystem

installation de Cifs et edition de fstab pour monter automatiquement le share truenas

sudo apt install cifs-utils
sudo nano /etc/fstab

//192.168.1.46/9-VideoClub /Videoclub cifs uid=0,credentials=/home/david/.smb,iocharset=utf8,noperm 0 0

Cree une partion sur le disk de 32Go provenant de Proxmox via fdisk , formater en ext4 et monter cette partion sur le filesystem /usr/kubedata

sudo nano /etc/fstab

/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part1 /usr/kubedata ext4 defaults    0 0

deployement

La commande docker avec le filesystem preparé

sudo docker run -d \
    --name embyserver \
    --volume /usr/kubedata/embyserver/config:/config \
    --volume /Videoclub:/mnt/videoclub \
    --net=host \
    --device /dev/dri:/dev/dri \
    --publish 8096:8096 \
    --publish 8920:8920 \
    --env UID=1000 \
    --env GID=100 \
    --env GIDLIST=100 \
    emby/embyserver:latest

traduction en kubernetes deploy :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: embyserver 
  namespace: default
  labels:
    app: emby
spec:
  replicas: 1
  selector:
    matchLabels:
      app: emby
  template:
    metadata:
      labels:
        run: embyserver 
        app: emby
    spec:
      containers:
      - name: embyserver 
        image: emby/embyserver:latest
        env:
          - name: "UID"
            value: "1000"
          - name: "GID"
            value: "100" 
          - name: "GIDLIST"
            value: "100" 
        ports:
        - containerPort: 8096
          name: emby-http
        - containerPort: 8920
          name: emby-https
        volumeMounts:
        - mountPath: /config
          name: emby-config
        - mountPath: /mnt/videoclub
          name: emby-media
      volumes:
      - name: emby-media
        hostPath:
          type: Directory
          path: /Videoclub
      - name: emby-config
        hostPath:
          type: DirectoryOrCreate
          path: /usr/kubedata/embyserver/config
---
apiVersion: v1
kind: Service
metadata:
  name: emby
spec:
  selector:
    app: emby
  ports:
    - name: "http"
      port: 8096
      targetPort: 8096
    - name: "https"
      port: 8920
      targetPort: 8920
  type: NodePort

puis on recupere le recupere le port d’exposition

kubectl get all --all-namespaces | grep emby

resultat le dashboard est accecible https://<master-ip>:30647

Exposer le Dashboard K8s

https://stackoverflow.com/questions/48286170/how-to-access-canonical-kubernetes-dashboard-externally

Pour rendre accesible le dashboard Kurbernetes “form outside the machine” il est possible de modifier le type d’exposition de clusterIp a NodePort.

kubectl -n kube-system edit service kubernetes-dashboard

remplacer “type: ClusterIp” par “type: NodePort”

en executant la commande suivante on recupere le port d’exposition

kubectl -n kube-system get service kubernetes-dashboard

resultat le dashboard est accecible https://<master-ip>:31834

Configurer TrueNas

Une fois l’installation de TrueNAs términé , a partir de la console du PVE , on attache les disques necessaire pour TrueNas “/etc/pve/qemu-server/<VMID>. conf”

qm set 102 -scsi1 /dev/disk/by-id/ata-WDC_WD10EZRX-00D8PB0_WD-WCC4M0EE37RE
qm set 102 -scsi2 /dev/disk/by-id/ata-WDC_WD20EZRX-22D8PB0_WD-WCC4M7UHY201
qm set 102 -scsi5 /dev/disk/by-id/ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5HL7SHY-part1
qm set 102 -scsi6 /dev/disk/by-id/ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5HL7SHY-part2

On se connecter a la webinterface

installation disque/pool

Il faut des disque sans données pour crée une Pool de disque ZFS (tout les disques doivent etre de la meme taille

Tout mes diques sont differents , jutilise donc 2 mes disques Usb de secours pour initialiser 2 Pool (un par disque) un de 500 g0 et un de 300 go

Les donnes des disques seront effacer

Si les zfs existe deja on peut le importer

Creation des Datasets

On edite les permissions et il faut editer via ACL en utilisant le preset “OPEN”

Le proprietaire et ROOT et dans GROUP {un groupe a definir}

Creation user

On creé un user avec “Microsoft Account” et “Samba Authentification” et dans le groupe auxliaire “wheel” et {un groupe a definir}

Creation Share

Netwok Configuration

Il faut parametre la gateaway etait le rputer de la box et les namespaces etait le serveur dns de mon providers

Debugging

Pour faciliter le debug , j’active la console gui et le niveau debug

Premier VM TrueNAS

Dabord pour cettte premier vm je souhaite tester la monté de drive ,c’est pour cela que jJe formate mes 2 disques usb ssd de recup (husk (300go) et penance (500go) ) et je les attaches au serveur.

Apres avoir telecharger l’iso de TrueNAS-12.0-U6.iso on crée une nouvelle VM

Passthrough Physical Disk to Virtual Machine (VM)

https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM)

Recupere la liste des disks sur le serveur

lsblk |awk 'NR==1{print $0" DEVICE-ID(S)"}NR>1{dev=$1;printf $0" ";system("find /dev/disk/by-id -lname \"*"dev"\" -printf \" %p\"");print "";}'|grep -v -E 'part|lvm'
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT DEVICE-ID(S)
sda                            8:0    0 111.8G  0 disk   /dev/disk/by-id/wwn-0x50026b738058fd3e /dev/disk/by-id/ata-KINGSTON_SA400S37120G_50026B738058FD3E
sdb                            8:16   0   1.8T  0 disk   /dev/disk/by-id/wwn-0x50014ee2b5e069bb /dev/disk/by-id/ata-WDC_WD20EZRX-22D8PB0_WD-WCC4M7UHY201
sdc                            8:32   0 465.8G  0 disk   /dev/disk/by-id/ata-HGST_HTS545050A7E680_RBF50FM52MY7UR /dev/disk/by-id/wwn-0x5000cca7a3e53fde
sdd                            8:48   0 931.5G  0 disk   /dev/disk/by-id/wwn-0x50014ee261364daf /dev/disk/by-id/ata-WDC_WD10EZRX-00D8PB0_WD-WCC4M0EE37RE
sde                            8:64   0 298.1G  0 disk   /dev/disk/by-id/usb-JMicron_Generic_0123456789ABCDEF-0:0
sdf                            8:80   0   3.6T  0 disk   /dev/disk/by-id/wwn-0x50014ee26394dace /dev/disk/by-id/ata-WDC_WD40EZRZ-00GXCB0_WD-WCC7K5HL7SHY

puis on attache un disk a la vm

qm set 102 -scsi1 /dev/disk/by-id/ata-HGST_HTS545050A7E680_RBF50FM52MY7UR

Récupération serveur

Direction le serveur pour le débrancher, le nettoyer et le préparer à ça nouvel vie dans le monde moderne de la virtualisation.

Avant

Après

En passant j’achète une extension de 4go de ram pour passer à 8go

Et je prend une carte réseau dual nic (2 port rj45) pour le futur firewall

Modernisation Infra

La refonte et modernisation de mon d’infrastructure local passe par un hypervisor et un system de containerisation.

Bare métal

  • Proxmox
Proxmox Server Solutions

Virtualize(hypervisor)

  • Windows + Blueiris(sécurité)
  • Firewall (open sense)
  • Ubuntu (docker, kubernetes, rancher)
  • Freenas (file sharing)
File:Logo-ubuntu cof-orange-hex.svg - Wikimedia Commons

Container

  • Home assistant/Home bridge (automation)
  • Pi hole
  • Emby
  • Heimdall Application Dashboard
  • ZoneMinder (sécurité)
  • Unify server (Home network)
  • Next cloud (cloud file)
  • Syncthing (Backup)
  • Web server (wordpress, dokuwiki, sickchill)
  • Perso api
  • Mysql
  • Nginx proxy (Reverse proxy)
  • Prometheus + Grafana (reporting)
  • FTP fillezilla
  • Document Management System
  • Transmission
  • Nzbget
  • Redmine

Docker Logos | Docker

Que fais mon serveur actuel ?

Mon serveur ubuntu à plusieurs fonctionnalité.

Videoclub :

  • Sickchill
  • Transmission
  • Nzbget
  • Emby

Bibliothèque photo

  • Disque partager sauvegarde primaire -> Warehouse
  • (exposition via un page Web)

Base de connaissances

  • Dokuwiki
  • WordPress blog (celui ci)

Utilitaire

  • Domoticz
  • Redmine

Utilitaire System

  • Firewall
  • (PiHole)
  • (Kubernetes)

Utilisation a distance

  • Webmin
  • Ssh
  • Prometheus

Exposition Fichier

  • backup_git
  • backup_home-desk
  • backup_kitchen
  • backup_locker
  • backup_office
  • backup_photo
  • backup_sickrage
  • backup_system
  • backup_varwwwhtml
  • backup_wordpress
  • storage_html
  • storage_mail
  • storage_mysqlbackup
  • storage_smartphone
  • storage_usbkey

Serveur de fichiers

  • Samba

Sauvegarde automatique

  • Git -> local
  • Ovh -> local
  • Warehouse -> oneDrive

Serveur Web

  • Autoconstruction
  • 40 ans au soleil levant
  • Ma vie.. En tranche
  • Chess
  • Android
  • Carnet de voyage aux USA

Serveur 13 hardware and filesystem

La serveur crée il y a plusieurs années fonctionne avec Ubuntu.

Le materiel :

AM1B-ITX
64KiB BIOS
4GiB Mémoire Système
4GiB DIMM DDR3 Synchrone Unbuffered (Unregistered) 800 MHz
256KiB L1 cache
2MiB L2 cache
AMD Athlon(tm) 5350 APU with Radeon(tm) R3

4 hard drive :

storage (System)
disk 120GB KINGSTON SA400S3
volume 111GiB Volume EXT4

Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal


storage
disk 2TB WDC WD20EZRX-22D
volume 1863GiB Volume EXT4

/dev/sdb1 /mnt/magneto

mediarack
videoclub
warehouse


storage
disk 1TB WDC WD10EZRX-00D
volume 931GiB Volume EXT4

/dev/sdc1 /mnt/diablo

kitchen
locker
videoclubSeries


storage
disk 4TB WDC WD40EZRZ-00G
volume 3726GiB Volume EXT4

/dev/sdd1 /mnt/cyclops

‘Film VF’
home-desk
office
photo
‘Series VF’
timeshift -> /90-warehouse/backup_system/timeshift
videoclubAnime

Les liens base de repertoire :

10-home-desk -> /mnt/cyclops/home-desk
20-photo -> /mnt/cyclops/photo
23-videoclub -> /mnt/magneto/videoclub
30-office -> /mnt/cyclops/office
40-locker -> /mnt/diablo/locker
50-kitchen -> /mnt/diablo/kitchen
70-mediarack -> /mnt/magneto/mediarack
80-photocopie -> /mnt/cyclops/home-desk/80-Photocopie
82-source_code -> /mnt/diablo/kitchen/source_code
90-warehouse -> /mnt/magneto/warehouse

Les repertoires Warehouse

backup_git
backup_home-desk -> /mnt/colossus/home-desk
backup_kitchen -> /mnt/diablo/kitchen/
backup_locker -> /mnt/diablo/locker/
backup_office -> /mnt/colossus/office/
backup_photo -> /mnt/colossus/photo/
backup_sickrage
backup_system
backup_varwwwhtml
backup_wordpress
storage_html
storage_mail
storage_mysqlbackup
storage_smartphone
storage_usbkey