---
# You can also start simply with 'default'
theme: seriph
# random image from a curated Unsplash collection by Anthony
# like them? see https://unsplash.com/collections/94734566/slidev
background: https://cover.sli.dev
# some information about your slides (markdown enabled)
title: Homelab presentasjon
info: |
  ## Homelab presentasjon
  Av Martin og Sindre
# apply unocss classes to the current slide
class: text-center
# https://sli.dev/features/drawing
drawings:
  persist: false
# slide transition: https://sli.dev/guide/animations.html#slide-transitions
transition: slide-up
# enable MDC Syntax: https://sli.dev/features/mdc
mdc: true
---

# Homelabs

\- Martin og Sindre

<div @click="$slidev.nav.next" class="mt-12 py-1" hover:bg="white op-10">
  <carbon:arrow-down />
</div>

<div class="abs-br m-6 text-xl">
  <a href="https://codeberg.org/martials/homelab-presentasjon" target="_blank" class="slidev-icon-btn">
    <carbon:logo-github />
  </a>
</div>

<!--
The last comment block of each slide will be treated as slide notes. It will be visible and editable in Presenter Mode along with the slide. [Read more in the docs](https://sli.dev/guide/syntax.html#notes)
-->

---
transition: slide-up

layout: image-right

image: /homelab-martin-full.jpg
---

# Kort fortalt

- 🏠 En server man konfigurerer selv
- 🧑‍💻 Kan brukes for personlige tjenester og data
- 🪣 En sandbox hvor du kan leke "uten fare"

<style>
h1 {
  background-color: #2B90B6;
  background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
  background-size: 100%;
  -webkit-background-clip: text;
  -moz-background-clip: text;
  -webkit-text-fill-color: transparent;
  -moz-text-fill-color: transparent;
}
</style>

<!--
### En server man konfigurerer selv
- OS, programvare, hardware
### Kan brukes for personlige tjenester og data
- Data trenger ikke forlate stuen
- Kan føles tryggere enn å stole på at andre selskaper håndterer din data
-->

---
transition: slide-up

layout: two-cols
---

# Hvorfor?

- Hoste egne nettsider
- Sette opp personlige tjenester
- Eie egen data
- Selvutvikling
- Gøy

::right::

![](/server-in-the-house.jpeg)

<style>
h1 {
  background-color: #2B90B6;
  background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
  background-size: 100%;
  -webkit-background-clip: text;
  -moz-background-clip: text;
  -webkit-text-fill-color: transparent;
  -moz-text-fill-color: transparent;
}
</style>

<!--
### Hoste egne nettsider
Portefølje, personlige nettsider, hobby prosjekter eller annet

### Personlige tjenester
Skylagring, busjetthåndtering, bildegalleri og mye mer

### Eie egen data
Du har selv kontroll på dataene, de blir ikke solgt eller delt med andre, med mindre du selv deler det.

### Selvutvikling
Du kommer til å bruke en haug av forskjellige teknologier som gjør at du vil utvikle deg selv innad IT enda mer!

-->

---
transition: slide-up

layout: two-cols
---

# Hva kan man sette opp?

- **Home assistant** - Smarthussystem
- **Kitchenowl** - Handleliste
- **Nextcloud** - Fillagring
- **Ente photos** - Google images alternativ
- **Actual Budget** - Budsjettering
- **Gitea / Forgejo** - Git
- **Calibre** - eBook server
- **Jellyfin** - Media server
- **Navidrome** - Musikk server
- **Minecraft server** - & en haug av andre spillservere!

::right::

![](/complete-homelab-meme.jpg)

<style>
h1 {
  background-color: #2B90B6;
  background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
  background-size: 100%;
  -webkit-background-clip: text;
  -moz-background-clip: text;
  -webkit-text-fill-color: transparent;
  -moz-text-fill-color: transparent;
}
</style>

<!--
Det er mye forskjellig man kan sette opp på en homelab, blant annet:
- Home assistant for en smarthusløsning som integrerer med mange ulike gadgets, via ulike standarer og protokoller
- Kitchenowl som en handleliste man kan dele med alle i husstanden
- Nextcloud for skylagring og mye mer.
- Ente Photos for lagring og deling av bilder, samt 2FA app
- Actual Budget for budsjettering som kan kobles til banken din
- Gitea / Forgejo for å lagre å dele egen kode
- Calibre for å ha sine e-bøker lagret trygt (:eyes: Amazon)
- Jellyfin for å lagre en haug av forskjellige medier, eks. filmer og serier
- Navidrome for å lagre musikken sin på en dedikert tjeneste om man ikke bruker Spotify
- Spillservere! En haug av de.

Det finnes mye mer. Dersom det finnes et behov for en app så finnes det en open-source løsning som kan self-hostes.


Kan være veldig enkelt å sette opp! Ved å bruke docker og spesielt docker compose, kan man bare laste ned / skrive en fil
som man kjører for å sette opp applikasjonen. De fleste har veldig enkelt oppsett som kan settes opp på noen minutter med docker.
Dersom man ønsker å gjøre det tilgjengelig over nettet må man også sette opp domene å bruke en DNS provider og reverse proxy for å sende brukerne til rett sted.
-->

---
transition: slide-up

layout: image-right

image: /overview-martin.png
---

# Martins oppsett

## Servere
- **Homelab med Ubuntu**
- **RPI4 med NixOS**

## Software
- **Caddy**
- **Nextcloud**
- **Docker**
- **Tailscale med Headscale**
- **Kitchenowl**
- **Gitea**
- **Actual budget**
- Med mer

<style>
h1 {
  background-color: #2B90B6;
  background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
  background-size: 100%;
  -webkit-background-clip: text;
  -moz-background-clip: text;
  -webkit-text-fill-color: transparent;
  -moz-text-fill-color: transparent;
}
</style>

<!--
### Servere
Mitt oppsett bruker i dag to servere. En Raspberry Pi4 med NixOS, og en HP Homelab med Ubuntu Server.
Raspberry Pi har nylig blitt konvertert til NixOS og inneholder ikke noe nyttig for øyeblikket.

Nå ligger alt på Homelabben som jeg kjøpte på Bergen brukt PC.
- [HP ProDesk 600](https://bergenbruktpc.no/stasjonaer-pc/hp/hp-prodesk-600-g3-sff-i5-i7-6-gen#&variation=926582)
- 6. Generasjon i7 CPU
- 256 GB SSD + 500 GB HDD
- 16 GB RAM
- Ubuntu Server 24.04

### Software
- Jeg bruker Cloudflare som DNS provider, hvor domene blir registrert og sender trafikker til ruteren.
  - Her er det registrert hoveddomene samt alle subdomener.
- Ruteren bruker port forwarding for å sende https trafikken videre til homelab.
- Homelab bruker Caddy for å ta imot requests og sende de videre til de ulike programmene med reverse proxy
  - Den kan også bare returner ressurser som html eller filer
  - Caddy håndterer automatisk TLS sertifikat uten noen ekstra konfigurering
- Så godt som alle tjenester på homelab bruker docker for å kjøre, dette gjør det utrolig enkelt å sette opp, og fjerne tjenester.
  - Samt oppdateringer
  - Man får mye gratis, logging, health checks, enkle oppdateringer, enkel testing på andre enheter

#### Deployment
Jeg bruker Gitea for git, hvor all min kode blir lagret. Her kan jeg også sette opp Gitea Actions, som virker nesten identisk til GitHub actions.
Dette kan enkelt brukes for å deploye tjenester på serveren, ved at Gitea runneren kjører på enheten direkte og kan utføre kommandoer fra kommandolinjen.
For eksempel å kjøre en docker build kommando for å oppdatere en container som kjører på serveren, med den nye koden i siste commit.

#### Sikkerhet
Både homelab og Raspberry Pi bruker Tailscale, som er en VPN som gjør det enkelt å koble seg på enhetene i tailnettet fra hvor som helst i verden.
Tailscale kan ikke self-hostes, men det finnes en open-source løsning som heter Headscale som kan det. Og det kan brukes for å koble enheter på tailnettet.
Disse er konfigurert slik at det er kun mulig å nå de over SSH, dersom man er på samme nettverk, eller koblet til VPN.
I tillegg må man også ha brukernavn, passord og en 2FA kode.

-->

---
transition: slide-up

layout: two-cols
---

# Sindres oppsett

> I prosessen av å refaktorere hele oppsettet med NixOS🎉

### Servere

- **2 x HP Prodesk 600 G3 SFF** som kjører Proxmox
- **Raspberry Pi 4B** som kjører RetroPie🕹️

### Software

- **Caddy**
- **Tailscale med Headscale**
- **Docker**
- **Kitchenowl**
- **ForgeJo**
- **Minecraft server**
- Med mer

::right::

![](/overview-sindre.svg)

<style>
h1 {
  background-color: #2B90B6;
  background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
  background-size: 100%;
  -webkit-background-clip: text;
  -moz-background-clip: text;
  -webkit-text-fill-color: transparent;
  -moz-text-fill-color: transparent;
}
</style>

---
transition: slide-up

layout: statement
---

# Takk for oss
## Spørsmål?

<style>
h1 {
  background-color: #2B90B6;
  background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
  background-size: 100%;
  -webkit-background-clip: text;
  -moz-background-clip: text;
  -webkit-text-fill-color: transparent;
  -moz-text-fill-color: transparent;
}
</style>