Historia pewnego błędu – czyli jak postawić własny serwer Gita

To jest zrzut ekranu z pewnego repozytorium GitHuba z danymi dostępowymi do serwera i dodatkowo to repozytorium było dostępne publicznie. Jak możecie się domyślić, wraz z userem xnamedx próbowaliśmy ich powiadomić wrzucając tam wszędzie pliki READTHIS z opisem, że ich serwer jest wystawiony na świat wraz z loginem i hasłem. Niestety mimo kilku dni nie było zmian z ich strony, a więc zrobiliśmy restart serwera aby zauważyli, że jest coś nie tak 🙂

Jaką lekcję chciałbym byście wynieśli z tego? Twórzcie repozytoria prywatne, albo własny serwer Gita 🙂 Dzisiaj właśnie pokażę Wam jak zdeployować prosty serwer Gita w oparciu o oprogramowanie którym jest Forgejo.

W poradniku tym wykorzystam serwer Mikrusa do postawienia Forgejo, ponieważ Mikrus oferuje darmowe subdomeny które są w stanie wystawić Wasze Forgejo bez edytowania konfiguracji serwera. Oczywiście w późniejszym etapie będzie trzeba zmienić port SSH na inny 🙂

Zaczynamy od utworzenia nowego użytkownika git, z którego zostanie uruchomione Forgejo:

Debian/Ubuntu:

adduser --system --shell /bin/bash --gecos 'Git Version Control' \
  --group --disabled-password --home /home/git  git

Fedora / RHEL / Rocky Linux:

groupadd --system git
adduser --system --shell /bin/bash --comment 'Git Version Control' \
   --gid git --home-dir /home/git --create-home git

Następnie pobieramy niezbędne paczki które powinny być wgrane

Debian/Ubuntu:

apt update && apt install git git-lfs wget -y

Fedora / RHEL / Rocky Linux:

dnf install git git-lfs wget -y

Teraz tworzymy podstawowe katalogi dla Forgejo:

mkdir /var/lib/forgejo
mkdir /etc/forgejo

i ustawiamy im odpowiednie uprawnienia:

chown git:git /var/lib/forgejo
chmod 750 /var/lib/forgejo
chown root:git /etc/forgejo
chmod 770 /etc/forgejo

Pobieramy plik binarny Forgejo i nadajemy mu uprawnienia do uruchomienia:

wget -O /usr/local/bin/forgejo https://codeberg.org/forgejo/forgejo/releases/download/v1.21.8-0/forgejo-1.21.8-0-linux-amd64
chmod +x /usr/local/bin/forgejo

oraz pobieramy serwis systemd:

wget -O /etc/systemd/system/forgejo.service https://codeberg.org/forgejo/forgejo/raw/branch/forgejo/contrib/systemd/forgejo.service

i uruchamiamy Forgejo:

systemctl enable --now forgejo

Jeżeli macie serwer w Mikrusie i ma dostępne polecenie domena to można wykonać komendę aby dodać nową subdomenę. Jeśli nie to należy wejść do panelu Mikrusa i utworzyć nową subdomenę

gdzie podajemy nazwę subdomeny, port Forgejo którym jest port 3000 i klikamy Dodaj subdomenę. Jeżeli mamy dostępne polecenie domena to wybieramy sobie jakąś subdomenę z dostępnych:

  • byst.re
  • bieda.it

i wykonujemy polecenie:

domena twojanazwa.subdomena 3000

przykład:

domena ferexio.bieda.it 3000

Teraz czekamy kilka minut na jej utworzenie. Po odczekaniu kilku minut pod wybranym przez nas adresem pojawi się instalator Forgejo

w którym warto ustawić sobie adres do bazy danych, oraz port SSH do naszego serwera, gdzie na Mikrusie jest to port 10XXX, gdzie ID to ID serwera VPS, np. 10300. Dane do bazy możemy sobie wyklikać w panelu Mikrusa, w menu, po lewej stronie

Oczywiście można sobie zainstalować własny serwer bazodanowy na serwerze Mikrus:

MySQL:

apt install mariadb-server mariadb-client -y
mysql -u root
CREATE USER 'forgejo'@'localhost' IDENTIFIED BY 'super_secret_password';
CREATE DATABASE forgejodb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
GRANT ALL PRIVILEGES ON forgejodb.* TO 'forgejo'@'localhost';
FLUSH PRIVILEGES;
quit;

gdzie zamiast super_secret_password wpisz hasło jakie ma zostać ustawione dla użytkownika forgejo w bazie danych MySQL.

PostgreSQL:

echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
apt update && apt install postgresql -y
sudo -u postgres psql
CREATE DATABASE forgejodb;
CREATE USER forgejo WITH ENCRYPTED PASSWORD 'super_secret_password';
GRANT ALL PRIVILEGES ON DATABASE forgejodb TO forgejo;
\c forgejodb;
GRANT ALL ON ALL TABLES IN SCHEMA public TO forgejo;
GRANT CREATE ON SCHEMA public TO forgejo;
quit;

gdzie zamiast super_secret_password wpisz hasło jakie ma zostać ustawione dla użytkownika forgejo w bazie danych PostgreSQL. Pamiętaj też, że jak wpiszesz polecenie \c forgejodb; to upewnij się, że klient PostgreSQL przełączył się na bazę danych forgejodb, bo inaczej uszkodzisz sobie bazę danych!

Teraz mając zainstalowany własny serwer bazodanowy możemy podać dane do bazy dla Forgejo:

Edytujemy takie dane jak nazwa Forgejo, katalog z repozytoriami (ja mam wykupiony storage więc wpisałem sobie katalog /storage/forgejo), port SSH serwera, oraz warto zaznaczyć Enable Update Checker.

Należy także pamiętać żeby ustawić odpowiedni adres serwera na którym stoi serwer Mikrusa, czyli np. srv16, oraz że jeżeli wskazujemy inny katalog niż domyślny dla Katalog repozytoriów to należy jeszcze go utworzyć i nadać do niego uprawnienia dla użytkownika git:

mkdir /storage/forgejo
chown -R git:git /storage/forgejo

Oczywiście nie zapominajmy o ustawieniu danych do konta pocztowego, gdzie skorzystamy sobie z możliwości Outsidera. Wchodzimy do panelu Mikrusa i szukamy po lewej stronie zakładki Outsider. Następnie klikamy Poproszę o dostęp! i czekamy na wygenerowanie się danych dostępowych.

Dane te znajdziemy w zakładce Parametry i logi na samym dole

Teraz logujemy się do Outsidera (dane w [log]), przechodzimy do zakładki Konta E-mail i tworzymy nowe konto e-mail

Następnie w Forgejo wpisujemy dane serwera SMTP

oraz ustawiamy dane dla konta administratora

i klikamy Zainstaluj Forgejo

i czekamy aż Forgejo się zainstaluje 🙂

Teraz tylko wystarczy w Forgejo w ustawieniach użytkownika dodać publiczny klucz SSH

i na własnym komputerze, w katalogu domowym, stworzyć katalog .ssh i utworzyć (lub zedytować jeśli istnieje) plik config z poniższą zawartością:

Host srv16.mikr.us
    HostName srv16.mikr.us
    User git
    Port 10300
    IdentityFile /c/Users/PC_USER_NAME/.ssh/id_rsa

gdzie:

  • srv16.mikr.us – adres głównego serwera na którym działa nasz serwer Mikrus
  • 10300 – port SSH naszego serwera Mikrus
  • /c/Users/PC_USER_NAME/.ssh/id_rsa – ścieżka do klucza prywatnego SSH

Od tej pory możemy w pełni korzystać z możliwości Forgejo i tworzyć nasze własne prywatne repozytoria Git bez limitów 🙂

Subscribe
Powiadom o
guest

0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x