Gitea beüzemelés (Raspberry Pi)

Bevezetés

A munkafolyamataim hatékonyabbá és elegánsabbá tétele gyanánt azt tűztem ki célul, hogy a Git szerveremen beüzemelek egy webes felületet, amivel

  • tudom browse-olni a repókat a history-juk bármely pontján
  • és egyszerűen tudom kezelni a hozzáféréseket.

Mindezt a Raspberry Pi-men akarom kikísérletezni először, mielőtt az éles szerveren beállítom. A Pi-t azért tettem zárójelbe a bejegyzés címében, mert habár a málna PC-n tesztelek, az eredményre vezető lépéssorozat igazából hardver-, platform- és rendszerfüggetlen.

Git-hez való, saját szerveren hosztolható webes felületről szerintem sokaknak a GitLab ugrik be, ahogy nekem is. Azonban őszentsége nagyon erőforrásigényes. Ugyan találtam ARM-re való Docker image-et, de a Pi nem bírta, úgyhogy a GitLab számomra felejtős egyelőre.

Értelmes alternatívának a Gitea-t találtam, ami a Gogs forkja, picivel több funkcióval és nyitottabb open-source felfogással. Eleve úgy van tervezve és fejlesztve, hogy gyengébb gépeken, ARM architektúrán és pl. Raspberry Pi-n is használható legyen.

Telepítés

Meglepő módon nincs hozzá Debian csomag, a Docker image pedig nem fut ARM-en.

Szerencsére a Gitea-t fejlesztő csapat egy csomó féle rendszerre elkészíti a binárisokat, melyek a honlapjukról és GitHub-ról is letölthetőek. És van köztük ARM-re fordított bináris, több is, nekem Raspberry Pi 3B+-ra a gitea-1.5.3-linux-arm-7 verzió kellett. Ezekben a fájlokban minden szükséges dolog megvan, csak futtatni kell őket.

Érdemes neki létrehozni egy júzert és az alól futtatni a programot:

sudo adduser gitea
sudo su - gitea
wget https://dl.gitea.io/gitea/1.5.3/gitea-1.5.3-linux-arm-7 -O gitea
chmod u+x ./gitea
./gitea web --port 3000

A Gitea-nek kelleni fog egy adatbázis. Tud SQLite-ot is használni (1 db adatfájlt jelent), de ha pl. MySQL-be vagy Postgres-be szeretnéd tárolni az adatokat, akkor érdemes előbb előkészíteni azt, mielőtt a gitea binárist elindítod. Én a teszthez maradtam az SQLite-nál.

Kezdeti beállítások

Ha a fenti paranccsal elindítjuk a Gitea-t, elindul a szerver és a böngészőnkben a http://localhost:3000/ URL-en elérjük a főoldalt. Ha bármelyik linkre rákattintunk, a telepítő képernyő fog bejönni, ahol néhány kezdeti beállítást megadhatunk, pl:

  • app neve (címsorban megjelenő szöveg)
  • adatbázis kapcsolódási adatok
  • útvonalak

A fentiek ellenőrzésén/módosításán kívül amit fontosnak tartok, az a mentés gomb feletti egyik lenyitható szekcióban megbúvó admin account beállítás. Érdemes itt megadni az adminisztrátor felhasználó adatait, pláne, ha letiltod a regisztrációt. Egyébként az első regisztrált júzer lesz az adminisztrátor.

Amikor ezt az űrlapot leokézzuk, a Gitea 1-2 percig (legalábbis Pi-n) elmolyol a mappák, konfigfájlok és adatbázistáblák létrehozásával, utána bejön a login képernyő és kezdhetünk vele játszani.

A megadott beállítások és még rengeteg paraméter később is módosítható a konfigfájlban (custom/conf/app.ini). Mielőtt komolyabban elkezdenénk használni a Gitea-t, érdemes végigolvasni az összes beállítási lehetőséget.

Tapasztalatok (gyors kipróbálás)

A HTTP clone/push gyönyörűen működik a webes felület user+pass kombójával. Az SSH módszernél a clone URL generálás nem az igazi, a Git repók mappáját lehagyja az URL-ből, viszont a saját beépített SSH szerverével frankón megy ez is. A webes felületen a profil beállításainál fel lehet tölteni SSH/RSA publikus kulcsot.

Meglévő repók importálása is pofon egyszerű, ez nekem nagyon fontos volt. Persze órákig kísérleteztem vele, mire rájöttem a nyitjára - erről külön posztban írok.

A webes felületet és funkciókat tekintve gyakorlatilag egy GitHub klónt kapunk. (Issues, PR, issue/pr templates, organizations, teams, etc.)

Konfig

Én az alábbiakat adtam hozzá kézzel a telepítő által kiköpött konfig fájlhoz. Ez nyilván nem lesz mindenkinek megfelelő, ízelítőként, illetve saját feljegyzésként (note to self) teszem ide.

[repository]
DEFAULT_PRIVATE = true
FORCE_PRIVATE = true

[security]
DISABLE_GIT_HOOKS = true
IMPORT_LOCAL_PATHS = true

[server]
DISABLE_ROUTER_LOG = true
START_SSH_SERVER = true
SSH_PORT = 2222

[service]
DISABLE_REGISTRATION = true
REQUIRE_SIGNIN_VIEW = true

Telepítés service-ként (systemd)

Miután megbizonyosodtam róla, hogy jó lesz ez a cucc, beállítottam service-ként, hogy induljon a géppel automatikusan. Létrehoztam egy gitea.service fájlt az alábbi tartalommal:

[Unit]
Description=Gitea
After=network.target

[Service]
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/home/gitea
ExecStart=/home/gitea/gitea web --port 3000
Restart=always

[Install]
WantedBy=multi-user.target

Majd az alábbi parancsokkal telepítettem és elindítottam:

systemctl enable /home/gitea/gitea.service
service gitea start
Zsolt vagyok, full-stack fejlesztő.
Crawlereket, webalkalmazásokat, statikus honlapokat és interaktív vizualizációkat készítek.
Copyright © 2019 Zsolt Jurányi | All rights reserved.