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?

1 Like

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

1 Like

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

1 Like

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.
2 Likes

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.

1 Like

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.

Nie, ocis jest nastawiony tylko na pliki i podoba mi się to. Wolę mieć to rozdzielone na wiele usług, aby uniknąć SPOFa.

Na tej samej maszynie. To nie są na tyle krytyczne usługi, że muszą być cały czas online. Jedynie serwer Bitwardena jest tu dość ważny, ale klienci i tak trzymają lokalnie ostatni stan bazy jaki widzieli, więc pomijam to :upside_down_face:

Nie podoba mi się pomysł routowania mojego ruchu przez VPSa, a tym bardziej trzymania na nim prywatnych danych. Wszystko mam u siebie w domu, na własnym sprzęcie, własnych dyskach.

Router od dostawcy jest w trybie bridge, a mój router z OpenWrt ma przekierowany port 443. Mam kilka domen kierujących na mój publiczny adres IP.

Nginx przyjmuje żądania tylko dla tych domen (dla innych requestów zamyka połączenie, dla bezpieczeństwa).

W zasadzie zależy jak to u Ciebie wygląda ze stabilnością prądu i Internetu.

W moim przypadku przez całe życie w moim lokalu zanik prądu zdarzył się 2-3 razy na kilka sekund.

Z Internetem już gorzej, bo kilka razy zdarzyła się wielorodzinna awaria, ale to wpływa jedynie na dostęp z zewnątrz. Na tym w końcu polega selfhostowanie, żeby nie być zależnym od innych :wink:

U mnie selfhosting dzielę na dwie sfery, to co hostuję z domu + mój VPS z Hetznera.

Domowy selfhosting kończy się na Raspberry Pi 3 B+ z zainstalowanym HAOS (HomeAssistant OS) + Syncthing + openvpn. Dostęp ze świata do tego Raspberry Pi mam zapewniony przez openvpn wystawiony z mojego VPSa. Dla zainteresowanych tutorial jest dostępny tutaj: Własny cloud dla Home Assistanta

VPS w Hetznerze, ponieważ nie mam czasu na zarządzanie postawiłem swojego Yunohosta jakieś 5 lat temu, z powodzeniem wszystko mi działa i przeżyło setki updejtów

Lista apek z których korzystam:

  • CodiMD - Collaborative editor to work on notes written in Markdown
  • Gitea - Lightweight Git forge
  • Miniflux - Minimalist and opinionated RSS feed reader
  • Nextcloud - Online storage, file sharing platform and various other applications
  • Plainpad - Note taking application
  • PrivateBin - Pastebin where the server has zero knowledge of pasted data
  • Redirect - Create a redirection or a proxy to another path
  • Roundcube - Open Source Webmail software
  • Sshwifty - Web SSH & Telnet (WebSSH & WebTelnet client)
  • Syncthing - Continuous file synchronization program
  • Tandoor - Manage and share recipes, plan meals, build shopping lists
  • Wallabag - Save and classify articles. Read them later
  • Whitebophir - Open source vector collaborative board
  • my_webapp - Custom Web app with SFTP access to serve static (HTML, CSS, JS) and PHP files
  • mail server dostarczany przez Yuno

Ręcznie na VPSie instalowałem tylko openvpna i jakieś configi terminali, żeby dostawać się tam przez Ghostty.

To chyba jak będziesz poza domem i będziesz mieć hw failure lub przerwę w dostawie internetu, to raczej alarmów nie dostaniesz? :thinking:

To w zasadzie to samo co HedgeDoc :sweat_smile: https://hedgedoc.org/history/

A też w sumie używam, stąd u mnie w Adguard Home tyle redirectów różnych adresów lokalnych na ten sam adres IP :stuck_out_tongue:

Też używam :sweat_smile:. Do hostowania https://cichy1173.eu

1 Like

Zgadza się

Dobra, przekonałeś mnie. Sam homelab to prostsza zabawa niż kombo z VPSem. Żadnych krytycznych usług tam nie planuję, a też myślałem o tym trochę i w sumie nic nie stoi na przeszkodzie, żeby sobie ogarnąć UPSa jak prądu zabraknie i modem LTE z jakąś kartą SIM, żeby zmitygować problemy, jeśli ktoś bardzo chce. Miałem w ogóle w planie dzisiaj zacząć się bawić, ale okazało się, że mam niedziałającą klawiaturę, i ciężko się wybiera instalację Proxmoxa z bootmenu bez niej :woozy_face:

1 Like

@cichy1173
Używanie Telegrama po wszystkim co wiadomo o braku moderacji i powiązaniach ze służbami rosyjskimi, oraz przy istnieniu Matrixa (choć nie jest bez skazy) i `signal-cli` to czerwona flaga.

1 Like

@dzwiedziu @cichy1173@forum.internet-czas-dzialac.pl

> to czerwona flaga.

Ale w tym przypadku dla kogo? Dla Ciebie czy dla mnie?

O nie! Rosyjskie służby dowiedzą się o alercie z (już publicznie dostępnego) rozkładu wywozu śmieci! Co my teraz zrobimy :sob:

1 Like

Ewentualnie że kuweta jest pełna i wymaga opróżnienia :stuck_out_tongue:

2 Likes

O swoim setupie zacząłem kiedyś pisać cykl na blogu (po angielsku): https://blog.mmakowski.com/technology/home-server/toc/ - może jeszcze będę kontynuował.

Aplikacje, w kolejności ważności dla mnie:

  • NextCloud - do plików, choć rozważam też przeniesienie tu kalendarza.
  • PhotoPrism - ma funkcje, które są dla mnie krytyczne, a których nie ma Immich.
  • Stalwart - archiwum email
  • Git - po SSH, bez żadnego forge typu Forgejo, tylko dla mnie. Używam CGit jako interfejsu webowego
  • FreshRSS - agregator feedów
  • CollaboraOnline - online docs dla NextCloud. Nie jestem zadowolony, pewnie będę też testował ONLYOFFICE
  • Grist - fajne wizualne narzędzie do baz danych, miałem nadzieję, że zastąpi mi w pewnej mierze Google Sheets/OpenOffice Calc, ale jednak to inny use case trochę.

Dodatkowa infrastruktura

  • Nginx - reverse proxy do wszystkich aplikacji + serwowanie statycznych website’ów (m. in. podlinkowanego bloga)
  • Prometheus + Grafana do monitoringu; powiadomienia przez Pushover
  • Authelia - tylko do autentykacji dla Grist, póki co

Stoi mi to w domu od dwóch lat i praktycznie bez przerw w dostępności - jedyne były spowodowane tym, że produkt wypuścił zepsutą wersję i np. Stalwart się nie podniósł po automatycznej aktualizacji.

moje.cert.pl (polecam!) oflagował mi publicznie dostępne logowanie do Grafany i admina FreshRSS, planuję więc postawić WireGuard żeby były dostępne tylko po VPN. Muszę też przetestować odtwarzanie backupów (używam Borg Backup i trzymam je na dysku lokalnym + rclone offsite na pCloud), ale od dawna nie mogę się do tego zabrać.

Moja główna bolączka to powolny dostęp do plików w NextCloud, przez rclone+WebDAV. Poprzednio używałem pCloud i oni mieli to świetnie rozwiązane, pracowało się prawie jak z dyskiem lokalnym, a tu czasem muszę kilkanaście sekund czekać aż mi przeskanuje folder albo zapisze plik.

3 Likes

Jakie to funkcje? Może warto rozważyć otwarcie Feature Requestów dla brakujących funkcji w Immich?