4GEEK Article Image - Twój domowy i prywatny GitHub dzięki Gogs na Raspberry Pi

Twój domowy i prywatny GitHub dzięki Gogs na Raspberry Pi

Przez Leszek Pomian | 2 stycznia 2020

6 minut czytania
_> 4GEEKPLProgramowanie › Twój domowy i prywatny GitHub…

GitHub, BitBucket i szereg serwisów oferujących zarządzanie repozytorami są wspaniałym rozwiązaniem do udostępniania swoich programów o otwartym źródle. Jeśli jednak tworzymy prywatne projekty, którymi nie chcemy się dzielić, musimy zapłacić odpowiednią kwotę (w przypadku konta Zespołu). Musimy też ufać, że dostawca zapewni bezpieczeństwo naszego kodu.

Odpowiednik GitHuba na własnym serwerze

Odpowiedzią na problemy z pierwszego akapitu jest Gogs. Czyli otwartoźródłowy serwis Git, który możemy zainstalować na czymkolwiek co ma więcej niż pół giga ramu i dwa rdzenie.

Wygląd Gogs bardzo przypomina GitHuba. Mamy użytkowników, organizacje, stronę główną z ostatnimi commitami, stylizowane pliki readme, podgląd zmian, wrzucanie po ssh i http, pull requesty, forki… Wszystko co niezbędne, a nawet więcej niż byśmy potrzebowali do prywatnego zastosowania.

Ten poradnik został przygotowany w oparciu o Raspberry Pi 4B, ale pomyślnie uruchomiłem Gogs na NanoPi Neo 2, jak i Windowsie 10 z Dockerem na włączonym WSL. Jak mówiłem, jeśli chcesz odpalisz go na wszystkim.

Niezbędnik:

  1. Raspberry Pi 4B / Raspberry Pi 3 / Raspberry Pi Zero + Ethernet/WiFi
  2. Komputer/Telefon z klawiaturą i dostępem do SSH
  3. Zainstalowana dystrybucja Linuxa, np. Raspbian/Armbian
  4. Dostęp do internetu (lol)

Wstępna instalacja

Zacznijmy od podstaw. Najnowszą dystrubucję Raspbiana pobierzesz z oficjalnej strony projektu. Raspbian Lite Buster w zupełności wystarczy, nie potrzebujemy wielu pakietów ani interfejsu graficznego.

Do zainstalowania systemu na karcie SD niezbędne jest utworzenie odpowiednich partycji systemowych oraz wgranie plików. Jednym z prostszych rozwiązań, które zrobi to za nas, z ładnym interfejsem graficznym jest belenaEtcher.

Belena Etcher w wersji 1.5.70 – Archiwum 4GEEK.CO


Teraz wystarczy wsadzić kartę SD do Raspberry, podpiąć zasilanie i poczekać chwilę, aż wszystko się doinstaluje, a malinka podłączy się do sieci. Niedługo później powinniśmy już widzieć jej IP w naszym routerze.

Lista klientów routera Asus – Archiwum 4GEEK.CO

Konfiguracja po SSH

Aby dokonać zmian musimy połączyć się z pomocą protokołu SSH. Jeśli masz do dyspozycji tylko telefon, świetną aplikacją jest Juicy SSH. W przypadku Windowsa wystarczy PowerShell.

Wpisujemy komendę do łączenia się z urządzeniem z wykorzystaniem ssh w formacie ssh [email protected]_ip
(Ty wpisz IP, które widać w Twoim routerze)
Domyślnym użytkownikiem w systemie Raspbian jest pi.

>_ ssh [email protected]

Od razu wyskoczy komunikat o akceptacji klucza, po czym zostaniemy poproszeni o wpisanie hasła. Domyślnym w Raspbianie jest raspberry.

Gotowe! Teraz możemy sterować naszym urządzeniem zdalnie.

Połączenie SSH z Raspberry przez Microsoft Terminal – Archiwum 4GEEK.CO

Instalacja pakietów

Czas na instalację niezbędnych pakietów. Zaczniemy od pobrania listy oraz aktualizacji już obecnych, aby to zrobić wpisujemy:

>_ sudo apt-get update
>_ sudo apt-get upgrade

Jeśli z jakiegoś powodu aktualizacja trwa zbyt długo, bądź listy się nie pobierają, możesz spróbować:

>_ sudo apt-get --fix-missing update

Do działania Gogs, niezbędny jest serwer baz danych oraz środowisko GIT. Paczkę dla Raspberry pobierzemy ze strony projektu, dlatego konieczne będzie narzędzie do otwierania zipów. Instalujemy je wszystkie jedną komendą:

>_ sudo apt-get install unzip git mariadb-server

Po pobraniu i zainstalowaniu możemy uruchomić bezpieczną instalację serwera baz danych MariaDB:

>_ sudo mysql_secure_installation

Przechodzimy przez instalację. Najpierw podajemy obecne hasło użytkownika root. Potem trzeba wybrać, czy to hasło zmienić. Możesz wybrać opcję [n]. Usunięcie domyślnych użytkowników jest wskazane, więc w następnej opcji wybieramy [Y]. Kolejna opcja (zdalny dostęp root) jest ważna z punktu widzenia bezpieczeństwa i w niej również wybieramy [Y] (nie pozwalaj na zdalne połączenie). Testowa baza też nam nie będzie potrzebna, wybieramy [Y]. Zostaje na koniec przeładowanie uprawnień, wybieramy [Y].

Gotowe! Serwer MariaDB został skonfigurowany. Przechodzimy do dalszej części przygody.

Tworzenie bazy danych

Logujemy się teraz do konsoli SQL z poziomu konta root:

>_ sudo mysql -u root -p

Tworzymy tabelę o nazwie gogs:

>_ CREATE DATABASE gogs;

Dodajemy użytkownika o nazwie gogsadmin i wybranym haśle, np. lubieplacki, który będzie miał wszystkie uprawnienia do tabeli gogs:

>_ GRANT ALL PRIVILEGES ON gogs.* TO 'gogsadmin'@'localhost' IDENTIFIED BY 'lubieplacki';

Odświeżamy teraz tablicę uprawnień, ponieważ dokonaliśmy w niej zmian:

>_ FLUSH PRIVILEGES;

I na tym kończymy operacje na bazie danych, aby wyjść z konsoli SQL wpisujemy:

>_ EXIT

Instalacja Gogs

Pakiety zainstalowane, baza gotowa. Więc możemy przejść do Gogs. Zaczynamy od stworzenia użytkownika gogs, na którego koncie będzie działała usługa.
Argument –disabled-login sprawia, że konto jest wyłącznie systemowe i nie można się do niego zalogować.

>_ sudo adduser --disabled-login gogs

Dajemy użytkownikowi gogs pełne uprawnienia do jego katalogu domowego.

>_ sudo chown -R gogs:gogs /home/gogs

Teraz przechodzimy do katalogu domowego użytkownika.

>_ cd /home/gogs

Pobieramy paczkę z Gogs. Najnowsza kompilacja jest dostępna na oficjalnej stronie projektu. Wybieramy tę, dla Raspberry Pi w formacie ZIP. Dodanie argumentu -O gogs.zip zmieni nazwę na bardziej czytelną. Od razu po pobraniu rozpakowujemy paczkę, i usuwamy zbędne archiwum.

>_ sudo wget https://dl.gogs.io/0.11.91/gogs_0.11.91_raspi_armv7.zip -O gogs.zip
>_ sudo unzip gogs.zip
>_ sudo sudo rm gogs.zip

To tyle, Gogs jest gotowy do działania, dodajemy jego usługę za pomocą komendy systemctl. A potem uruchamiamy. Żeby upewnić się, że usługa działa, możemy użyć komendy z argumentem status.

>_ sudo systemctl enable /home/gogs/gogs/scripts/systemd/gogs.service
>_ sudo systemctl start gogs
>_ sudo systemctl status gogs

Teraz w przeglądarce na naszym komputerze lub telefonie przechodzimy pod adres IP Raspberry podając przy tym port 3000, na którym domyślnie działa Gogs.
Adres podajemy w formacie http://ADRES_IP_RASPBERRY:3000/

http://192.168.1.33:3000/

Konfiguracja

Jeśli nic nie skopaliśmy po drodze, naszym oczom ukaże się strona konfiguracji.

W sekcji Database settings, zmieniamy User na gogsadmin, a w polu Password podajemy te, które ustalaliśmy chwilę temu. W moim przypadku lubieplacki. W polu Database Name wklepujemy gogs.

W sekcji Application General Settings zmieniamy Domain na adres malinki, np. 192.168.1.33. Podobnie w Application URL wpisujemy http://192.168.1.33:3000/.

Na koniec, w rozwijanym formularzu Admin Account Settings podajemy dane administratora.

Finito! Adie! Gotowe! Postawiliśmy własnego GitHuba i kosztowało to nas zaledwie parędziesiąt złotych za malinkę i 20 minut wolnego czasu.

Gogs on lan raspberry repository 4GEEK.CO
Gogs z czarnym motywem – Archiwum 4GEEK.CO

Dla fanatyków ciemności

Jeśli podobnie jak ja, jesteś fanką lub fanem ciemności, polecam Ci zainstalowanie czarnego motywu, dzięki czemu nasz mini GitHub nabierze mroczniejszej atmosfery.

Fantastyczną pracę w tym kierunku wykonał użytkownik Kos-M. Najnowszą wersję jego motywów znajdziesz na GitHub.

Żeby je zainstalować, musimy przejść do katalogu z Gogs:

>_ cd /home/gogs/gogs/

A potem pobrać repozytorium i zainstalować motyw:

>_ git clone https://github.com/Kos-M/GogsThemes.git
>_ echo '<link rel="stylesheet" href="/css/themes/dark_theme.css">' >> templates/inject/head.tmpl
>_ mv ./GogsThemes/img/grad1.png public/img
>_ mv ./GogsThemes/themes/dark_theme.css public/css/themes
>_ rm -r ./GogsThemes

Domowy GitHub niesie ze sobą wiele korzyści. Nie tylko mamy pełną kontrolę nad tym, gdzie i kiedy są nasze projekty, ale też w razie apokalipsy zombie i odcięcia internetu możemy dalej commitować zmiany.

Wyłączna dystrybucja od Leszek Pomian dla 4GEEK.CO | Copyright © RapidDev 2020

Daj nam znać, co myślisz o tym artykule
1
0
0
0
0
Przeczytaj więcej artykułów w kategorii Programowanie
4GEEK.CO

Polityka Prywatności

4GEEK.CO

Kontakt


No więc tak, ale właściwie to nie

Brakuje JS...

Ta strona nie działa bez JavaScript.
I don't know how to help you with that, maybe try to figure out how to turn it on

Jak włączyć JavaScript w mojej przeglądarce