Kotiverkkoni yleiskuva

Mitä kotonani pyörii ja miksi

3 min lukuaika

Edellisissä kirjoituksissa olen maininnut ohimennen omat palveluni ja kotipalvelimeni. Tässä on yleiskuva siitä, mitä kotonani oikeastaan pyörii. Homelab-tyyppisestä kokeilusta kasvoi vähitellen ympäristö, joka korvasi aiemmin käyttämäni pilvipalvelut. Nämä palvelut ovat arkikäytössä joka päivä, joten niiden pitää ennen kaikkea toimia.

Laitteet

Kokonaisuus rakentuu kolmen laitteen varaan. Koneilla on nimet, koska palvelimista puhuminen on mukavampaa, kun niillä on persoona.

  • Pehtoori on päätyöjuhta: pieni Intel N100 -prosessorilla varustettu NUC-tietokone, jossa on 16 Gt muistia ja 500 Gt SSD-levytilaa. Siinä pyörii Ubuntu Server ja Docker, ja kaikki palvelut ovat sen konteissa.
  • Kirjuri on Synologyn DS223-verkkolevy eli NAS. Siinä on kaksi 6 Tt:n WD Red Plus -levyä, ja sinne tallentuvat tiedostot, varmuuskopiot ja valvontakameran tallenteet.
  • UPS eli varavirtalähde, APC Back-UPS 650VA, pitää laitteet päällä lyhyiden sähkökatkojen yli, suojaa laitteita sähköverkon virtapiikeiltä ja sammuttaa koneet turvallisesti sähkökatkon jatkuessa.

Palvelut

Palvelut pyörivät Docker-konteissa, ja hallitsen niitä Dockge-nimisellä selainkäyttöliittymällä. Jokainen palvelu on oma pinonsa, jonka voi käynnistää, päivittää ja varmuuskopioida muista riippumatta.

  • Tiedostot ja toimisto: Nextcloud ja OnlyOffice korvaavat Google Driven ja Docsin.
  • Musiikki: Navidrome hoitaa omaa levykirjastoani ja tarjoaa musiikin OpenSubsonic API:n kautta soittimille.
  • Koti: Home Assistant ohjaa Hue-valaisimia, Zigbee- ja RuuviTag-antureita ja automaatioita. Valvontakameroiden kuva tallentuu omalle NAS:lle eikä valmistajan pilveen.
  • Kirjanmerkit: Karakeep tallentaa ja arkistoi verkkosivuja, joihin haluan palata.
  • Koodi: Gitea säilyttää omat koodiprojektini. Siinä ajan myös automaatioita (Actions), jotka pilvipalveluissa maksaisivat, kun ilmaiset minuutit loppuvat.
  • Nimipalvelu: Technitium DNS hoitaa kotiverkon nimipalvelun, jotta palvelut löytyvät omilla nimillään.

Miten palveluihin pääsee

Jokaisella palvelulla on oma osoitteensa oman verkkotunnukseni alla. Pehtoorilla toimii Nginx, joka ohjaa liikenteen oikealle palvelulle ja hoitaa salauksen. Let’s Encryptin varmenne haetaan erilliselle virtuaalipalvelimelle, josta Pehtoori kopioi sen itselleen.

Palvelut eivät näy avoimeen internetiin. Kodin ulkopuolelta niihin pääsee vain WireGuard-VPN:n kautta, ja pehtoorin palomuuri päästää palveluihin vain Nginxin kautta kulkevan liikenteen.

Kun sähköt katkeavat tai levy hajoaa

UPS on kytketty NAS:iin, joka tiedottaa sähkökatkosta muille koneille verkon yli. Jos katko pitkittyy, pehtoori sammuttaa itsensä hallitusti ennen kuin akku loppuu, ja NAS sammuu viimeisenä.

Kirjurin levyt ovat peilattuina (RAID 1), joten yhden levyn hajoaminen ei vie dataa. Peilaus ei kuitenkaan ole varmuuskopio: jos tiedosto poistuu vahingossa tai korruptoituu, muutos kopioituu heti molemmille levyille. NAS-palvelin varmuuskopioidaan erilliselle ulkopuoliselle levylle Synologyn backup-ohjelmistolla.

Docker-konttien varmuuskopiot ajetaan automaattisesti kerran viikossa. Skripti pysäyttää kunkin palvelun hetkeksi, pakkaa sen asetukset ja datan NAS:lle ja käynnistää palvelun uudelleen. Kopioita säilytetään 30 päivää.

Heikoin kohta on se, että kaikki varmuuskopiot ovat toistaiseksi samassa talossa kuin alkuperäiset. Tulipalo tai murto veisi molemmat. Työn alla on varmuuskopioiden siirtäminen myös mökille, jolloin ne olisivat kahdessa eri fyysisessä paikassa.

Mikä ei toiminut ensimmäisellä yrityksellä

Lokakuussa Home Assistantin Zigbee-tikku jumittui. Kaikki anturit katosivat näkyvistä, eikä Home Assistantin uudelleenkäynnistys auttanut: tikku piti irrottaa ja kytkeä takaisin. Koska en halua juosta palvelimen luo joka kerta, kirjoitin pienen vahtiskriptin. Se tarkistaa viiden minuutin välein, onko tikku jumissa, ja käynnistää sen tarvittaessa uudelleen ohjelmallisesti. Jos sekään ei auta, Home Assistant lähettää minulle ilmoituksen.

Arkikäytössä

Kokonaisuus ei ole valmis eikä tällaiset projektit varmaan koskaan edes tule valmiiksi, mutta se on vakaa ja käytössä. Isompia ongelmia ei ole ollut, mutta aina on jotain pientä. Yritän ratkaista ongelmat aina niin, että ne korjautuvat jatkossa automaattisesti. Tarkoitukseni on julkaista myöhemmin vielä erillisiä muistiinpanoja eri osien pystytyksestä ja konfiguroinnista.