Előzmények
Nagyon rég megfogalmazódott bennem, hogy megtanulom a git alapvető használatát.
A napi munkámhoz nem kell, így ezt a témát folyton tologattam magam előtt, majd történt egy változás a munkahelyi infránkban, aminek köszönhetően már nem tudtam fájlokat másolni az itthoni gépemről egyik céges szerverre sem. Ez elég volt ahhoz, hogy ráguglizzak. Egy barátom ajánlott egy YT videót, amit végignézve nem is tűnt bonyolultnak a feladat 🙂 A videóban a srác a Gitlab telepítéséről beszélt.
Uccu neki, elővettem az egyik kedvenc weboldalam, és rákerestem a gitlabra. Pár perc múlva már be is másoltam a gépemre a docker-compose.yml-t. Indítás, kis várakozás, böngésző elővétele, localhost:8080, admin user beállítása. Az egész nem volt több 1-2 percnél, hála a dockernek (erről később írok).
Fedezzük fel a saját gitlabomat! Ha valaha jártál a gitlab.com-on, akkor ezt is ismerni fogod, mert pont úgy néz ki, gyakorlatilag az ingyenes magját töltöttem le. Végül úgy döntöttem, hogy keresek helyette mást, mert ez a szoftver egy halálcsillag, sok memória (~4 GB) és háttértár (3 GB) igénye van, és még lassan is indul el.
Bennem volt a lendület, gyors google keresés, a 12 legjobb git szerver. Első a gitea. Elolvastam a tudnivalókat, majd rákerestem a docker hubon, pár perc múlva már az admin usernek adtam jelszót 😉
Miket kell tudni a gitea-ról?
- az aktuális docker image 270 MB
- egy hét futás után is csak 136 MB memóriát eszik
- villámgyors
- magyarul is beszél (nem 100%-os a fordítás, de ez nem okozott gondot)
- könnyen átlátható felület
- támogatja a kétfaktoros azonosítást
- nyílt forráskódú
- Go-ban írták, így kábé minden platformon fut
- nagyon egyszerűen telepíthető és konfigurálható
Jöjjön a lényeg, hogyan lehet saját gitea szervered?
Nálam egy CentOS 7 szerverre lett telepítve, de az itt leírt módszerrel bármire felteheted, amire a dockert is fel lehet telepíteni (a dockerről egy másik cikkben fogok írni).
A giteának kell egy adatbázis, én a MySQL-t használom, abból is az 5.7-es verziót. Ha nem lenne a NAS-omon egy SQL szerver, akkor azt is futtathatjuk konténerben.
Mentsd le az alábbi sorokat egy docker-compose.yml fájlba:
version: "2"
volumes:
APP:
services:
gitea:
container_name: gitea
image: gitea/gitea
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- APP:/data
ports:
- 3000:3000
#- 2222:22 # opcionális
restart: always
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=192.168.5.250:3357 # az SQL szerver IP címe és portja
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=titkosjelszo
- GITEA__mailer__ENABLED=true
- GITEA__mailer__FROM=gitea@example.hu
- GITEA__mailer__MAILER_TYPE=smtp
- GITEA__mailer__HOST=192.168.5.250 # SMTP szerver
- GITEA__mailer__SMTP_PORT=25
- GITEA__mailer__PROTOCOL=smtp
- GITEA__mailer__IS_TLS_ENABLED=false
#- GITEA__mailer__USER=gitea@example.hu # opcionális
#- GITEA__mailer__PASSWD=emailjelszo # opcionális
#- GITEA__DISABLE_SSH=true # opcionális
mem_limit: 256m # opcionális
Ne feledd, hogy a yaml fájlban minden bekezdés két szóközt jelent! Sok magyarázatra nincs szükség, beleírtam a megjegyzéseket.
Azok számára, akiknek nincs kéznél működő MySQL/MariaDB szerver, használják ezt a docker-compose.yml fájlt:
version: "2"
volumes:
APP:
DB:
networks:
gitea:
external: false
services:
server:
image: gitea/gitea
container_name: gitea
mem_limit: 256m # opcionális
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=titkosjelszo
- GITEA__mailer__ENABLED=true
- GITEA__mailer__FROM=gitea@example.hu
- GITEA__mailer__MAILER_TYPE=smtp
- GITEA__mailer__HOST=192.168.5.250 # SMTP szerver
- GITEA__mailer__SMTP_PORT=25
- GITEA__mailer__IS_TLS_ENABLED=false
#- GITEA__mailer__USER=gitea@msandor.hu # opcionális
#- GITEA__mailer__PASSWD=RM4Vr39BZQ8X # opcionális
#- GITEA__DISABLE_SSH=true # opcionális
restart: always
networks:
- gitea
volumes:
- APP:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
#- "222:22" # opcionális
depends_on:
- db
db:
image: mariadb:10.6
container_name: gitea-db
mem_limit: 256m
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea # opcionális
- MYSQL_USER=gitea
- MYSQL_PASSWORD=titkosjelszo
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- DB:/var/lib/mysql
Indítsuk el:
# docker compose up -d
Vegyük elő a böngészőnket, és írjuk be a címsorba a szerverünk host nevét/IP címét és a megfelelő portot, az én esetemben ezt: http://192.168.5.227:3000/
Ha a kezdeti konfigurációt látjuk, akkor jól dolgoztunk 🙂
Az adatbázis beállítások ki vannak töltve, mivel azokat a docker-compose.yml fájlból veszi, ahogyan az általános beállítások jó részét is. Átírhatjuk a webhely címét, ha akarjuk. Én kipipáltam az „enable update checker” négyzetet.
A további beállítások következnek, abból is e-mail beállítások rész. Ennek a nagyja is a docker-compose.yml fájlból érkezik. Én kipipáltam az alsó két négyzetet.
A következő a „szerver és egyéb szolgáltatások beállítása” rész, ezt mindenki saját szájíze szerint töltse ki.
És végül a legfontosabb rész, a „rendszergazda fiók beállításai” következik. Ehhez nincs mit hozzáfűznöm 🙂
Jut eszembe, kapunk egy helyérzékeny súgót, ha az egérrel megállunk egy paraméter felett, akkor pár szóban elmeséli, mire is való. Zárásként kattintsuk a „Gitea telepítése” feliratú kék gombra.
A jobb felső sarokban találjuk a beállításokat, és a rendszergazdai felületet. Nyomkodjuk végig, szerintem érthető minden menüpontja.
Hozzuk létre az első git repónkat
A jobb felső sarokban, a profilképünk mellett van egy + gomb, kattintsunk az „új tároló” almenüjére. Adjunk neki egy nevet, döntsük el, hogy publikus legyen-e (regisztráció nélkül is látják), vagy privát (csak bejelentkezés után látszik). Adjuk meg a leírást. Most még nem tudunk sablont választani, hiszen még nem hoztunk létre egyet sem. Viszont választhatunk hibajegy címkéket (opcionális), .gitignore sablonokat (opcionális), licencet (opcionális), és a legfontosabb, pipáljuk ki a „tároló inicializálása” négyzetet. Szintén opcionális a legalsó lehetőség, ebből csinálhatunk sablont. Ha minden kész, kattintsunk a zöld „tároló létrehozása” gombra.
Nálam így néz ki az első repóm:
Senki se lepődjön meg, hogy localhost látszik a címsorban. A fentebb említett 192.168.5.227-es IP címen az éles, már belakott giteám van, amit egy hónapja telepítettem, viszont a cikket most írom, és könnyebb egy szűz példánnyal bemutatni a dolgokat. A dockernek hála ennek a példánynak a létrehozása sem került többe 1-2 percnél. Szóval, a továbbiakban a localhost fog szerepelni a példákban.
Megvan az első git repó, hogyan kerül a gépünkre?
Az egyetlen kritérium, legyen telepítve a git, nálam:
$ sudo dnf install git -y
Nyissunk egy konzolt (biztos van rengeteg grafikus szoftver is a git kezeléséhez, én jobb szeretem a parancssort), másoljuk ki a gitea felületén látható URL-t (a fenti képen középtájon egy kék HTTP jobbján találod), és adjuk ki az alábbi parancsot:
$ git clone http://localhost:3000/msandor/playground.git
Ha publikus a repód, akkor már le is töltötte, ha zárt, akkor bekéri a felhasználó neved és jelszavad. Ezt fogod látni a konzolodban (én zártra állítottam):
$ git clone http://localhost:3000/msandor/playground.git
Cloning into 'playground'...
Username for 'http://localhost:3000': msandor
Password for 'http://msandor@localhost:3000':
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Lépjünk be a mappába:
$ cd playground
Most már a gépen van az első git repónk tartalma:
$ ls -l
összesen 4
-rw-r--r-- 1 msandor msandor 41 jún 25 16.10 README.md
Végszó
Nem szeretnék jobban belemélyedni a git használatába, ugyanis a cikkem a gitea szerverről szólt. A gitről is szeretnék egy cikket írni, persze csak olyan mélységig, ahogy én ismerem, egy programozó biztos nem fog benne újat találni, de én nem is vagyok fejlesztő, csak üzemeltetem a mások által írt programokat 🙂