Jak zbudować domowy serwer deweloperski do obsługi repozytoriów Git, obrazów Dockera, baz danych i aplikacji demonstracyjnych

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Zbuduj jedną stabilną płaszczyznę usług, oddziel trwałe dane od artefaktów możliwych do odtworzenia i zadbaj o możliwość odzyskania każdej usługi deweloperskiej bez konieczności zachowywania samego hosta.

W przypadku jednego lub dwóch deweloperów w domu pojedynczy serwer z systemem Linux może obsługiwać Git, rejestr obrazów, bazy danych i aplikacje podglądowe. Projekt pozostaje łatwy w zarządzaniu tylko wtedy, gdy tożsamość, role pamięci masowej, dostęp sieciowy, kopie zapasowe i przywracanie zostaną zaplanowane, zanim usługi zaczną na sobie polegać.

Przypisz role usług przed wyborem sprzętu

Traktuj Git, rejestr kontenerów, silniki baz danych i aplikacje podglądowe jako osobne role usług, nawet jeśli współdzielą jeden host. Git zachowuje historię kodu źródłowego; rejestr przechowuje artefakty możliwe do odtworzenia; bazy danych zawierają zmienny stan aplikacji; aplikacje podglądowe to nietrwałe środowiska uruchomieniowe.

Oszacuj zapotrzebowanie na CPU i pamięć na podstawie liczby równoczesnych kompilacji, zestawów roboczych baz danych i aktywnych podglądów. Oszacuj przestrzeń dyskową na podstawie repozytoriów, retencji rejestru, rozrostu baz danych, logów i obszaru przeznaczonego na kopie zapasowe. Dzięki temu unikniesz zakupu dużego dysku przy jednoczesnym pozostawieniu pamięci jako pierwszego wąskiego gardła.

Na początku używaj jednego węzła obliczeniowego, jeśli jego awaria jest akceptowalna w środowisku deweloperskim. Później rozdziel zadania kompilacji, jeśli skokowe obciążenia kompilacją zaczną ograniczać zasoby baz danych lub interaktywnych podglądów.

Oddziel dane trwałe, możliwe do odtworzenia i odzyskiwania

Rola danych Przykłady Ochrona
Stan trwały Repozytoria Git, woluminy baz danych Migawki oraz niezależna kopia zapasowa
Artefakty możliwe do odtworzenia Obrazy kontenerów, pamięć podręczna kompilacji Polityka retencji; opcjonalna kopia zapasowa
Sekrety i konfiguracja Klucze wdrożeniowe, pliki środowiskowe Szyfrowany eksport i kopia odzyskiwania przechowywana offline
Nośniki odzyskiwania Instalator systemu operacyjnego, instrukcje przywracania Przechowywane poza serwerem

Nie twórz kopii zapasowej każdego bajtu w ten sam sposób. Rejestr zwykle można odtworzyć z kodu źródłowego i instrukcji kompilacji; bazy danych nie. Przechowuj zrzuty baz danych lub spójne migawki oddzielnie od aktywnego woluminu bazy danych.

Praktyczny plan kopii zapasowych dla serwera domowego pokazuje, jak ważne jest automatyzowanie zadań związanych z Gitem i kopiami poza lokalizacją jako odrębnych procesów, zamiast zakładania, że sam NAS jest kopią zapasową.

Utwórz jedną prywatną ścieżkę dostępu

Przypisz serwerowi stabilny adres LAN i lokalną nazwę DNS. Udostępniaj Git, rejestr, bazę danych i trasy podglądów wyłącznie sieciom, które ich potrzebują. Dostęp zdalny powinien odbywać się przez prywatną sieć VPN lub uwierzytelnioną ścieżkę odwrotnego proxy, a nie przez zestaw przekierowanych portów usług.

Używaj oddzielnych kont usług i kluczy wdrożeniowych. Deweloperzy nie powinni współdzielić hasła administratora, a aplikacje podglądowe nie powinny otrzymywać danych uwierzytelniających umożliwiających modyfikowanie repozytoriów Git lub rejestru.

Wybieraj SMB lub NFS tylko w przypadku przepływów plików, które rzeczywiście wymagają współdzielonego montowania. Przewodnik dotyczący doboru klienta SMB i NFS pomaga oddzielić wybór protokołu od dostępu do usług aplikacyjnych.

-15% OFF

Dopasuj kolejność wdrażania do grafu zależności

Uruchamiaj kolejno montowania pamięci masowej, tożsamość, bazy danych, rejestr, Git, a następnie aplikacje podglądowe. Kontrole stanu powinny sprawdzać rzeczywiste zależności, bez restartowania wolno uruchamiającej się bazy danych tylko dlatego, że aplikacja nadal się rozgrzewa.

Przechowuj definicje wdrożeń, migracje schematów i trasy odwrotnego proxy w systemie kontroli wersji. Sekrety przechowuj poza repozytorium i jasno określ miejsce ich przywracania. Host zastępczy powinien móc odtworzyć usługi na podstawie definicji oraz chronionego stanu.

Przeprowadź walidację, odbudowując jedną aplikację podglądową z czystego klonowania, pobierając jej obraz, stosując testowe przywrócenie bazy danych i uzyskując do niej dostęp z docelowej ścieżki klienta.

Twórz kopie zapasowe z myślą o przywracaniu, nie o gromadzeniu

Twórz kopie repozytoriów, natywne zrzuty baz danych, konfigurację usług i zaszyfrowane sekrety w miejscu docelowym, które nie jest zamontowane z prawem zapisu dla każdej usługi. Zachowaj co najmniej jedną kopię poza zasięgiem zasilania serwera i uprawnień jego administratora.

Co kwartał wykonuj przywracanie w odizolowanej przestrzeni nazw. Sprawdź użytkowników, rozszerzenia, zadania zaplanowane, uprawnienia repozytoriów, uwierzytelnianie rejestru i trasy DNS - nie tylko obecność plików.

Rozbuduj rozwiązanie, gdy kolejki kompilacji opóźniają pracę interaktywną, opóźnienia baz danych rosną podczas przesyłania obrazów lub okna tworzenia kopii zapasowych nakładają się na czas pracy. Przestań dodawać role do tego samego hosta, gdy jedna eksperymentalna usługa może wyczerpać zasoby lub dane uwierzytelniające potrzebne stabilnej płaszczyźnie usług.

Końcowa zasada konfiguracji

Konfiguracja spełnia wymagania, gdy każda usługa ma określoną rolę, chroniony stan, kontrolowaną ścieżkę dostępu, przetestowane przywracanie i mierzalny sygnał wskazujący, kiedy należy podzielić lub rozbudować topologię.

Konfiguracja NAS i serwera

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.