Selfhosting -- temat zbiorczy

Witam.
W ramach integracji i wymiany informacji w tym skupisku osób odpalam ogólny wątek gdzie możemy luźno wymieniać się postami dot. seflhostingu poprzez opisywanie swoich rozwiązań, historii czy poprzez udostępnianie ciekawych nowości znalezionych w sieci “Internet”. To może ja zacznę.

Wstępnie

Zainteresowanie selfhostingiem “zaatakowało” mnie z trzech stron. Pierwszym źródłem pchnięć był taki podcast, może kojarzycie, nazywa się Internet. Czas działać!. Prowadzący mówili o systemie Yunohost ułatwiającym selfhosting. Drugim źródłem pchnięć był kolega ze studiów, który miał swojego NAS-a oraz Home Assistanta. Trzecie źródło to była chęć korzystania z CalDAV do synchronizacji tasków z tasks.org. Dlatego też zanim zacząłem hostować “świadomie”, miałem VPS Ubuntu w Linode z Nextcloudem ale praktycznie nic wtedy nie ogarniałem.

Ścieżka sprzętowa

Zaczęło się od Raspberry Pi 3B+, na którym zainstalowałem Yunohost. Poznałem wtedy sporo ważnych aplikacji, z których korzystam do dzisiaj, np. Hedgedoc. Szybko jednak poczułem brak większej wydajności. Wtedy właśnie używane Mini PC zaczynały być tanie i dobre i za bodajże 800 zł kupiłem HP 800 z i5-6500t, na którego przeniosłem Nextclouda i kilka innych aplikacji. Następnie przeprowadziłem się i do tego doszedł rabbit hole w postaci Home Assistanta, a wcześniej wspomniane Raspberry Pi 3B+ teraz wykorzystywałem do Pi-Hole i VPN-a.


Udało mi się znaleźć jakiś neofetch z Raspberry

Po kilku miesiącach pojawiła się opcja przesiadki na znacznie wydajniejszy Asrock X300 z Ryzen 5 5700G. W tym komputerze mam więcej miejsc na dyski, dlatego też mam tutaj dyski 2.5" HDD w raid1 na zdjęcia i inne dane, mam też dodatkowy dysk na multimedia do Jellyfina. Z tego komputera jako serwera korzystam do dzisiaj i jest to najwydajniejszy sprzęt tego typu w moim zasobniku. Sprzęt pracuje dalej pod kontrolą Yunohost (teraz v12) ale przygotowuję się do migracji.


Komputer GMKTec z N100

Do migracji na inne rozwiązanie aplikujące IaaC. Dlatego też w moim zasobniku pojawił komputer GMKTec z Intel N100 (popularny wybór) w celu nauki Terraforma (a raczej OpenTofu) w połączeniu z Proxmoxem w oparciu o własne moduły i skrypty. Póki co, repozytorium na Codeberg rośnie sobie powoli.


Fragment kodu HCL

Dodatkowo mam VPSy w Mikrus i kilka rozwiązań w Scaleway. Po drodze za drugie mini pc “robił” u mnie Xiaomi Mini PC, ale ten sprzęt zmienił swoją rolę jako zapasowy komputer desktopowy. Mam też Orange Pi Zero 2, który zawsze pełnił rolę serwera, ale z różnymi aplikacjami, aktualnie serwuje cups oraz Adguard Home. Wykorzystuję także storagebox w Hetzner (do backupów) oraz mam router ASUS z OpenWRT.


Beszel

Aplikacje

Kilka aplikacji już zdradziłem, ale postaram się wymienić w punktach jak największą liczbę tych, którą używam.
Hostowane przeze mnie:

  • Nextcloud - baza dla kalendarzy, tasków, kontaktów, plików, zdjęć, tablic kanban i dokumentów. Nie wykorzystuję pełnego potencjału ale bardzo cenię sobie ten kombajn.
  • Adguard Home - blocker reklam oparty o DNS. Cała konfiguracja i sposób zarządzania na trzech node’ach udostępniłem tutaj: https://codeberg.org/cichy1173/adguard-home-cm-repository
  • HedgeDoc - lekka aplikacja do notatek markdown. Trochę brakuje w niej tree view czy folderów, ale cieszy szybkością, wygodą, prostotą i opcją kooperacji i publikacji zawartości dla innych.
  • Home Assistant - kombajn do smart home i nie tylko. Wykorzystuję tylko fragment możliwości ale jest to ważny element życia codziennego.
  • Beszel - proste narzędzie do monitoringu i alertów. Podobne do Zabbixa ale znacznie prostsze.
  • Overleaf - korzystam mniej, ale sobie cenię. Jest to kooperacyjny edytor LaTeX.
  • Uptime Kuma - narzędzie do pingania wybranych hostów/stron itd. i alertowania w razie downtime’u.
  • Wallabag - używam już nieco mniej, ale jest to zamiennik do Pocket, pozwala zapisywać artykuły na później.
  • Jellyfin - narzędzie do streamowania swojej biblioteki multimediów. Taki własny Netflix.
  • Lubelogger - taka cyfrowa książeczka serwisowa dla samochodów. Całkiem fajne narzędzie.
  • RabbitMQ - Broker MQTT dla urządzeń Smart i nie tylko.
  • Homebox - narzędzie do tworzenia inwentarza sprzętów. Niestety, od jakiegoś czasu nie używam i nie uzupełniałem zawartości.
  • Silverbullet - aplikacja do notatek Markdown z obsługą skryptów. Na razie się na nią nie przesiadłem.
  • Pinchflat - ma kilka zastosowań, ale ja tę aplikację wykorzystuję do przerabiania filmów YouTube na podcasty audio słuchane w AntennaPod.
  • Hoarder - apka, w której zapisuję jakieś linki czy obrazki na później.

Niehostowane przeze mnie, ale dostępne do hostingu:

  • Mealie - hostuje kolega. Narzędzie do zapisywania przepisów kuchennych.
  • Codeberg, czyli Forgejo - git forge, zamiennik Githuba. Bardzo dużo ostatnio korzystam z tego narzędzia, włącznie z Forgejo Actions na moim własnym runnerze, hostowanym na Proxmox.
  • Bitwarden i Bitwarden Secret Manager - korzystam z oficjalnej instancji. Znany i lubiany password manager.
  • Telegram - tego akurat hostować się nie da, ale używam botów Telegrama w automatyzacjach i alertingu.

A jak to wygląda u Was?

Ja mam wszystko spisane na blogu, więc pozwolicie że nie będę się powtarzać, a na wszelkie pytania chętnie odpowiem :slight_smile:

Stan aktualny mojego homelaba
Mój homelab rok temu
Cała historia mojego selfhostowania rzeczy

A moje ostatnie odkrycia w temacie selhostingu to
ActualBudget - aplikacja do śledzenia wydatków i
Unbound - serwer DNS poprawiający prywatność, idealny dodatek do PiHole

Edytowałem*. Dopisałem sprzęt i aplikacje o których zapomniałem

W moim przypadku wszystko zaczęło się w grudniu 2020 roku. Oglądałem wtedy na YouTube materiały o inteligentnym domu i natknąłem się na Home Assistant. Rekomendowanym sposobem uruchomienia tego oprogramowania wydawało się być zainstalowanie Home Assistant Operating System (HAOS) na Raspberry Pi 4. W ten sposób stałem się posiadaczem tego urządzenia:

Zgodnie z instrukcją zainstalowałem HAOS i zacząłem eksperymentować. Kilka miesięcy później YouTube zasugerował mi Nexcloud, o którym wcześniej słyszałem. Postanowiłem więc zgłębić temat i ostatecznie spodobał mi się ten koncept, więc zdecydowałem się go zainstalować… tylko jak? Posiadałem malinkę z zainstalowanym już Home Assistantem – jak tu upchąć dwa systemy na jednym sprzęcie? Po kilku godzinach przeszukiwania internetu natknąłem się na Proxmoxa – wydawał się idealny do mojego zastosowania! Przygotowałem kartę pamięci, zacząłem flashować Proxmoxa, włożyłem kartę do Raspberry Pi – malinka nie uruchamia się.

Po godzinie poszukiwań w internecie dowiedziałem się, że Proxmox działa tylko na architekturze AMD64, a moje Raspberry Pi ma architekturę ARM64. No to dzisiejszego wieczoru siedzimy po ciemku bez świateł, bo wtedy miałem jeszcze inteligentne żarówki Xiaomi, które nie miały żadnego wsparcia dla fizycznego przełącznika.

Następnego dnia planowałem przywrócenie HAOS do działania, ale chęć zainstalowania Nexclouda wygrała XD. Kilka godzin poszukiwań fraz w stylu “proxmox on rpi4” doprowadziło mnie do projektu PiMox7 – dedykowanego portu Proxmoxa dla urządzeń Raspberry Pi. Zflashowałem kartę i uruchomiło się!

Tu pojawiły się pierwsze problemy, ponieważ instalacja HAOS na Proxmoxie nie była jeszcze dobrze opisana na oficjalnej stronie HA. Znalazłem jednak bloga osoby, która opisała, jak zainstalować HAOS na Proxmoxie z użyciem obrazu qcow2. Po kilku poleceniach w terminalu miałem już zainstalowanego HA. Nie zrobiłem wcześniej kopii zapasowej, więc wszystko musiałem skonfigurować manualnie, ale to nie miało wtedy dla mnie to już większego znaczenia, ponieważ cieszyłem się, że to jakkolwiek działa :stuck_out_tongue:

Na osobnej maszynie wirtualnej zainstalowałem Ubuntu, a na nim Dockera, w którym zainstalowałem Nexcloud. Kilka dni później dowiedziałem się, że to, co robię, nazywa się “self-hosting”. Bardzo spodobał mi się ten koncept zacząłem szukać projektów na GitHubie pod tagiem “selfhosted”.

Na pewnym etapie zaczęło mi brakować miejsca na dysku (a raczej na karcie pamięci). W grudniu 2022 roku (czyli dwa lata po zakupie Raspberry Pi) postanowiłem kupić Dell Wyse 5060 za 164 zł:
image

Od razu zainstalowałem na nim Proxmoxa i przeniosłem swój setup z Raspberry Pi, jednocześnie odkładając Raspberry Pi do szuflady, myśląc, że kiedyś się przyda (jeszcze się nie przydało). Przez kilka lat Dell Wyse dzielnie wykonywał swoje obowiązki do maja 2024 roku, kiedy moja pralka kopnęła w kalendarz jednocześnie uszkadzając wszystkie urządzenia w obwodzie, w tym mój ukochany Dell Wyse :sob:

Utworzyłem posta na forum internetowym, gdzie dowiedziałem się, że nie naprawię tego sprzętu nawet wyłaczając uszkodzony rdzeń we flagach kernela. Po sprzęt zgłosił się student z uniwersytetu, który akurat badał procesory uszkodzone w wyniku przepięcia. Uniwersytet opłacił przesyłkę i sprzęt wyruszył w świat – bo co ja bym zrobił z usmażonym sprzętem? :man_shrugging:

W międzyczasie doszedłem do wniosku, że kupowanie drugiego takiego samego, dziesięcioletniego sprzętu nie ma sensu. Zacząłem więc rozglądać się za nowszymi terminalami i w ten sposób kilka dni później stałem się dumnym posiadaczem HP T640:
image

Razem z nim dokupiłem:

  • Dwie kości RAM po 16 GB (dające całkowitą pojemność 32 GB), za które zapłaciłem 120 za sztukę
  • Dysk NVMe ADATA Legend 800 o pojemności 1 TB za 260 zł. Dopiero po zakupie zorientowałem się, że jest na kościach QLC o których przeczytałem wiele niepochlebnych opinii, ale ostatecznie zostawiłem i działa do dziś. Wearout na stan z 15 lipca 2025 to 6%

Całość zatem kosztowała mnie około 830 zł

Jestem z niego bardzo zadowolony, ponieważ nie tylko zużywa o połowę mniej energii od mojego poprzedniego Dell Wyse, ale także jest znacznie wydajniejszy.

Przez pierwsze 3 lata usługi, z których korzystałem intensywnie się zmieniały, jednak z czasem mój setup osiągnął stan “setup & forget”. Obecnie znajduję się w fazie, w której mam kilka sprawdzonych i działających usług, a co jakiś czas dodaję coś nowego – jeśli się sprawdza, zostawiam, jeśli nie, usuwam.

A to usługi które aktualnie u mnie działają:

  • nginx – Reverse proxy dla wszystkich usług. Kieruje ruch z subdomen do odpowiednich kontenerów dockerowych (np. cloudocis).
  • authelia – Ponieważ wystawiam swoje usługi “na świat”, aby mieć do nich dostęp spoza sieci domowej LAN, do bardziej krytycznych usług dodałem middleware Authelia, który przed przekierowaniem ruchu upewnia się, że jestem zalogowany.
  • plausible – Statystyki odwiedzin strony respektujące prywatność użytkowników i zgodne z RODO.
  • immich – Totalny banger! Selfhostowane Google Photos. Tego nie można opisać, po prostu trzeba spróbować. Polecam każdemu :slight_smile:
  • n8n – Narzędzie do automatyzacji poprzez przeciąganie i łącznie bloczków jak w scratchu.
  • kitchenowl – Synchronizowana lista zakupów i przepisy dla rodzin.
  • gitea – Serwer Gita
  • paperless – Apka do przechowywania dokumentów, kategoryzowania, automatyczny OCR itd.
  • memos (neosmemo/memos) – Szybkie notatki, coś jak Google Keep, ale nie do końca? Ma nieoficjalną apkę companion w F-Droid.
  • yourspotify – Historia jakich utworów słuchasz, jakich wykonawców, gatunki, jak często, nawyki słuchania etc.
  • vaultwarden – Serwer BitWarden zaimplementowany w Rust
  • radicale – Serwer CalDAV (kalendarz), CardDAV (kontakty) do synchronizacji między urządzeniami (np. telefon, tablet, komputer). Na Androidzie współpracuje wyśmienicie z DAVx⁵, a na komputerze GNOME ma świetną integrację.
  • ntfy – Powiadomienia UnifiedPush
  • ocis – OwnCloud, ale napisany od zera w języku Go – szybszy i nie wywala się w losowych momentach jak OC i NextCloud w PHP
  • uptime-kuma – Monitoring wszystkiego co wyżej :stuck_out_tongue:

Teraz jestem na etapie testowania:

  • outline – Aplikacja do notatek, ale bardziej coś jak Obsidian albo Notion. Jak na razie działa nienagannie.
1 Like

Czy ocis nie ma wbudowanej obsługi CalDAV i CardDAV? Pytam ponieważ mam Nextcloud i te funkcje tam są.

Na tej samej maszynie masz czy jakiejś zewnętrznej?

W sumie do wszytkich pytanie: wszystko trzymacie na homelabie, czy dzielicie jakoś usługi na te siedzące na VPSie i te na kąkuterze w szufladzie? Jestem w trakcie rozważań i nie mogę się zdecydować, czy bardziej zależy mi na uptime i dostępności zapewnianej przez podmiot zewnętrzny, czy na pełnej niezależności - czyli zależności od prądu i łącza, które mam chu… znaczy z Netii.

W aktualnej konfiguracji mam tak, że na VPSach utrzymuję monitoring serwisów zainstalowanych u mnie w domowym “homelabie”. Natomiast w domu mam dwa główne sprzęty – Asrock z Yunohost oraz GMKTec z Proxmox i Asrocka traktuję jako powiedzmy takie “mission critical”, staram się na nim nie eksperymentować, nie dodawać nowych aplikacji ani nic się nie bawić, po prostu ma działać. Natomiast na GMKTec bawię się więcej, coś dodaje, usuwam, zmieniam.