Gitlab CE nebo Community Edition je aplikace s otevřeným zdrojovým kódem, která se používá k hostování vašich úložišť Git. Vlastní hostování vašich repozitářů Git vám poskytuje úplnou kontrolu nad vašimi daty a zároveň poskytuje snadno použitelné rozhraní pro vás a členy vašeho týmu.
V této příručce se budeme zabývat tím, jak nainstalovat úložiště Git pomocí bezplatné nabídky Gitlabu, Community Edition. Pokud chcete pokročilé funkce, jako je schvalování sloučení, plány, správa portfolia, obnova po havárii, skenování kontejnerů atd., můžete se rozhodnout upgradovat na verzi Enterprise.
Předpoklady
- Server založený na Ubuntu 18.04 s uživatelem sudo, který není root.
- Potřebujete VPS s minimálně 2 CPU jádry a 8GB RAM podle specifikovaných hardwarových požadavků pro Gitlab CE, který bude podporovat 100 uživatelů. I když můžete za RAM nahradit odkládací prostor, nedoporučuje se to, protože aplikace poběží pomaleji.
Krok 1 – Instalace závislostí
Než nainstalujeme Gitlab, musíme se ujistit, že náš server má určitý software, který bude Gitlab potřebovat, aby fungoval správně. Spuštěním následujících příkazů nainstalujte závislosti.
$ sudo apt update
$ sudo apt install ca-certificates curl openssh-server ufw apt-transport-https -y
Některý z výše uvedeného softwaru pro vás může být předinstalován.
Krok 2 – Změňte port SSH vašeho systému
Gitlab bude používat port 22 pro push repozitáře přes SSH. Také na něm běží SSH vašeho serveru, což způsobí konflikt. Existují dva způsoby, jak toho dosáhnout. Buď můžete změnit port SSH, který používáte pro připojení k vašemu systému, nebo můžete změnit port, který Gitlab použije pro SSH. V tomto tutoriálu změníme port SSH pro samotný server.
K tomu musíme upravit soubor /etc/ssh/sshd_config. Otevřete soubor v textovém editoru nano.
$ sudo nano /etc/ssh/sshd_config
Najděte následující řádek a změňte 22 na 6622 a odstraňte # před ním. Můžete si vybrat libovolný port.
# Port 22
Stiskněte Ctrl + X pro zavření souboru a stiskněte Y pro uložení změn.
Restartujte službu SSH.
$ sudo systemctl restart sshd
Zavřete aktuální relaci SSH a vytvořte novou s portem 6622 a znovu se připojte k serveru.
$ ssh [email protected] -p 6622
Krok 3 – Konfigurace brány firewall
V našem předchozím kroku jsme nainstalovali ufw (Uncomplicated Firewall). Než budeme moci přistoupit k instalaci Gitlabu, musíme jej nakonfigurovat.
Povolte SSH a port, který jsme právě vytvořili, abyste nebyli zablokováni.
$ sudo ufw allow OpenSSH
$ sudo ufw allow 6622
Povolte ufw firewall.
$ sudo ufw enable
Musíme také povolit http a https, aby Gitlab fungoval.
$ sudo ufw allow http
$ sudo ufw allow https
Zkontrolujte stav brány firewall.
$ sudo ufw status
Měli byste vidět výstup podobný následujícímu.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
6622 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
6622 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Krok 4 – Instalace Dockeru
Přidejte do svého systému klíč GPG společnosti Docker.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Ověřte otisk staženého klíče.
$ sudo apt-key fingerprint 0EBFCD88
Měli byste vidět výstup podobný následujícímu.
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <[email protected]>
sub rsa4096 2017-02-22 [S]
Přidejte úložiště Docker.
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Aktualizujte databázi balíčků.
$ sudo apt update
Nainstalujte Docker-CE. CE je komunitní vydání Dockeru.
$ sudo apt install docker-ce -y
Docker by měl být nyní nainstalován. Zkontrolujte, zda běží.
$ sudo systemctl status docker
Výstup by měl být podobný následujícímu.
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-10-11 21:10:31 UTC; 32s ago
Docs: https://docs.docker.com
Main PID: 19128 (dockerd)
Tasks: 12
CGroup: /system.slice/docker.service
??19128 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Stisknutím q ukončíte.
Přidejte svůj omezený uživatelský účet systému Linux do skupiny docker, abyste mohli spouštět docker bez sudo.
sudo usermod -aG docker $USER
$USER proměnná vybere a přidá aktuálně přihlášeného uživatele do skupiny dockerů. Nahraďte $USER se skutečným uživatelským jménem, pokud s tímto uživatelem aktuálně nejste přihlášeni.
Přepněte na uživatele, kterého jsme právě přidali. I když jste již byli přihlášeni, budete se na něj muset znovu přepnout, abyste znovu načetli oprávnění.
$ su - ${USER}
Zkontrolujte, zda vše běží správně spuštěním vestavěného programu „Hello World“.
$ docker run hello-world
Měli byste vidět následující výstup, který řekne, že Docker je nainstalován a funguje správně.
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Krok 5 – Instalace Docker Compose
Tento krok je možné přeskočit a pokračovat, ale s nainstalovaným Docker Compose bude běh Gitlabu mnohem snazší, zvláště pokud jej chcete provádět na více než jednom serveru.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
V době psaní tohoto návodu je 1.24.1 aktuální stabilní vydání Docker Compose. Nejnovější verzi vydání můžete zkontrolovat na jejich stránce Github.
Použijte spustitelná oprávnění pro binární soubor pro vytvoření ukotvitelného panelu.
$ sudo chmod +x /usr/local/bin/docker-compose
Přidejte Dokončení příkazu do Docker Compose.
$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
Ověřte, zda byla vaše instalace úspěšná.
$ docker-compose --version
Vytiskne následující výstup.
docker-compose version 1.24.1, build 4667896b
Krok 6 – Instalace Gitlabu
Stáhněte si obrázek Docker od Gitlabu z Dockerhubu. Tento obrázek obsahuje vše, co potřebujete ke spuštění Dockeru – nginx, PostgreSQL, Redis atd. Spusťte následující příkaz ke stažení obrázku.
$ docker pull gitlab/gitlab-ee:latest
I když je tento tutoriál o instalaci Community Edition, přesto si vezmeme image Enterprise Edition Gitlabu. Je to proto, že edice Enterprise se chová přesně jako edice Community, pokud na ni neupgradujete zadáním licence. Upgrade instalace Community Edition na Enterprise Edition přináší další komplikace.
Stažení kompletního obrázku bude chvíli trvat. Po dokončení úlohy můžete spustit následující příkaz a zkontrolovat všechny obrázky aktuálně ve vašem systému.
$ docker images
Výstup by měl vypadat podobně jako následující.
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ee latest 4bacb2356d28 4 days ago 1.87GB
hello-world latest fce289e99eb9 9 months ago 1.84kB
Krok 7 – Spusťte Gitlab
V tomto okamžiku můžeme okamžitě spustit kontejner Gitlab poskytnutím všech možností v jediném příkazu, ale to by znamenalo pokaždé, když potřebujete spustit kontejner, musíte zadat tyto proměnné. Docker Compose tento proces usnadňuje, protože vám umožní uložit konfiguraci do souboru .yml, který bude poté použit ke spuštění a spuštění kontejneru.
Vytvořte soubor docker-compose.yml.
$ nano docker-compose.yml
Vložte následující kód.
web:
image: 'gitlab/gitlab-ee:latest'
container_name: 'gitlab-howtoforge-tutorial'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "app-password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '22:22'
- '587:587'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
Podívejme se, co každá z výše uvedených možností znamená.
- obrázek odkazuje na umístění Docker obrazu Gitlabu na Dockerhubu.
- název_kontejneru umožňuje použít štítek na váš kontejner dockeru, který se použije při odkazování na kontejner v síti Docker.
- název hostitele definuje interní název hostitele kontejneru nebo v našem případě adresu URL, na kterou bude váš Gitlab nainstalován.
- restartovat určuje zásadu restartování pro kontejner. Nastavili jsme to na vždy což znamená, že kontejner, pokud je opuštěn, bude automaticky restartován.
- životní prostředí dodává proměnnou GITLAB_OMNIBUS_CONFIG což vám umožní zadat jakékoli konfigurační nastavení Gitlabu. V tomto případě jsme dodali externí URL, kterou má Gitlab používat.
- objem definuje adresáře připojené k serveru pro ukládání trvalých dat. Tyto tři svazky/adresáře ukládají data aplikací, soubory protokolu a konfigurační soubory. Hodnota nalevo od středníku je místní adresář na serveru a hodnota napravo je adresář uvnitř kontejneru.
- publikovat říká kontejneru, aby publikoval porty nebo rozsah portů na hostitele. Protože Gitlab potřebuje porty 22 (SSH), 80 (HTTP), 443 (HTTPS) a 587 (SMPT - MSA), specifikovali jsme je zde. Pokud chcete, aby Gitlab používal na vašem serveru nestandardní port (pravděpodobně proto, že není k dispozici), nejprve byste poskytli hostitelský port a poté kontejnerový port. Například, protože váš server již používá port SSH(22), můžete Gitlabu sdělit, aby používal SSH přes jiný port, řekněme 3333. Pak byste změnili 22:22 ve výše uvedeném souboru na 3333:22 . Budete také muset přidat řádek gitlab_rails['gitlab_shell_ssh_port'] =3333 pod GITLAB_OMNIBUS_CONFIG výše.
- external_url odkazuje na doménu, kde bude váš Gitlab nainstalován. Vybrali jsme https, který za nás automaticky nainstaluje certifikát Let's Encrypt SSL.
- Také jsme přidali další konfiguraci pro konfiguraci Gitlabu tak, aby používal Gmail k odesílání e-mailů. Můžete použít jakoukoli poštovní službu SMTP třetí strany. Dokumenty Gitlab udržují podrobného průvodce, jak s ním nakonfigurovat různé služby SMTP.
Ujistěte se, že jste ve stejném adresáři jako docker-compose.yml. Spusťte následující příkaz pro spuštění Gitlabu.
$ docker-compose up -d
Uvidíte něco jako následující.
Creating gitlab-howtoforge-tutorial ... done
Než budete mít přístup ke Gitlabu přes prohlížeč, potrvá ještě několik minut. Další informace o procesu spouštění můžete zjistit pomocí následujícího příkazu.
$ docker logs -f gitlab-howtoforge-tutorial
Chcete-li ukončit proces monitorování protokolu, stiskněte Ctrl + C.
Načtěte stránku Gitlab ve svém prohlížeči. Pokud se jej pokusíte načíst příliš krátce po spuštění kontejneru, zobrazí se chyba 502. Pokud k tomu dojde, počkejte ještě několik minut a zkuste to znovu.
Pokud je vše v pořádku, zobrazí se ve vašem prohlížeči následující stránka.
Krok 8 – Konfigurace Gitlab
Zadejte heslo pro heslo administrátora Gitlabu. Dále budete přesměrováni na přihlašovací obrazovku. Použijte root jako uživatelské jméno a heslo, které jste si právě zvolili pro přihlášení.
Konfigurovat SMTP
Než
budeme muset povolit nastavení SMTPKonfigurovat profil Gitlab
Kliknutím na ikonu uživatele v pravém horním rohu vyvolejte rozevírací nabídku a vyberte nastavení.
Budete přesměrováni na stránku nastavení profilu. Zde přidejte své jméno a e-mail. Pro její aktualizaci budete muset potvrdit svou e-mailovou adresu. Pokud chcete, můžete sem také přidat další informace o sobě.
Klikněte na Aktualizovat nastavení profilu až budete hotovi.
Změnit uživatelské jméno
Dále musíme změnit naše uživatelské jméno z root na něco jiného, jako root je docela běžné uhodnutelné uživatelské jméno. Klikněte na Účet na levém postranním panelu.
Změňte uživatele na jakékoli uživatelské jméno, které si chcete ponechat. Klikněte na Aktualizovat uživatelské jméno dokončit. Pro větší bezpečnost byste zde měli povolit dvoufaktorové ověřování.
Omezit veřejné registrace
Ve výchozím nastavení umožňují instalace Gitlabu komukoli se zaregistrovat. Pokud to nechcete, měli byste to vypnout. Kliknutím na ikonu klíče v horní liště otevřete oblast správy.
Chcete-li upravit nastavení, klikněte na Nastavení na levém postranním panelu.
Zde přejděte dolů na Omezení registrace a klikněte na Rozbalit knoflík. Zrušte zaškrtnutí políčka Registrace povolena a klikněte na Uložit změny až skončí.
Stále budete moci přidávat nové uživatele prostřednictvím rozhraní správce.
Přidat klíč SSH
Posledním krokem je přidání našeho klíče SSH. Pokud máte klíč SSH, můžete následující příkaz přeskočit. Pokud žádný nemáte, můžete si jej vytvořit pomocí následujícího příkazu.
$ ssh-keygen
Tento příkaz je společný pro Mac OS, Linux a Git Bash/WSL ve Windows. Přijměte výchozí nastavení a ponechte pole přístupové fráze prázdné.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/gitlab
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gitlab.
Your public key has been saved in gitlab.pub.
The key fingerprint is:
SHA256:6dNGAPyd8JAkHAikYOW2PsFjGlzBBpwy4XQ9RQgVwK8 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+*OB=*O=.. |
|B+o+o+oo+ |
|oo.+. ...= . |
|. + .. .o+ |
| o *. S . |
| =Eo . o |
| . o o o |
| . o |
| |
+----[SHA256]-----+
Svůj veřejný klíč můžete zobrazit pomocí následujícího příkazu
$ cat ~/.ssh/gitlab.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUf64YH7uJimFWVJSy/mgYiLRqBxVB6JJMTxZZ96DwExoINhWVRhQAgMgExBWGpUCpWXhLcNuIM+EfFRtCq+YYyLC+GlHsNdnLgecGgop72p8BEi8UckgCiCSuMrWCMAOFh5NKs2YHpF7bOUjXQRVvGujLuV1UBof7SXQ/za7e3aybNiH3KpA6oWSSmpqnOt8rZT54IjLnVFUSLx7ZxWDVW1bO29mI8NjWwzZGLAtNIkJQEOqVo8nhVkroFHvBTrZnUsmr5oFOWG++LPqED9EUSPTpO8PNnogYT3xsVncBMMAEt0pPE7ATmstQc161SEtqAUa98Qb0RRKqCKcKStOp [email protected]
Vraťte se do oblasti Nastavení svého profilu a z postranního panelu otevřete klíče SSH.
Vložte klíč SSH do poskytnutého pole a klikněte na Přidat klíč pokračovat.
Nyní můžete vytvářet a odevzdávat svá úložiště, aniž byste museli poskytovat své přihlašovací údaje Gitlab.
Krok 9 – Vytvořte svůj první projekt
Každé úložiště v Gitlabu patří k projektu. Projekt zahrnuje úložiště, sledování problémů, požadavky na sloučení, wiki, kanály průběžné integrace a průběžného doručování (CI/CD) a spoustu dalších funkcí.
Chcete-li vytvořit první úložiště, klikněte na Vytvořit projekt .
Budete přesměrováni na stránku Nový projekt. Zadejte název projektu. Projektový slimák můžete změnit na něco jiného. Pokud chcete, zadejte popis projektu a změňte viditelnost projektu, jak si přejete. Své úložiště můžete inicializovat pomocí souboru README. Až budete hotovi, klikněte na Vytvořit projekt .
Budete přesměrováni na stránku svého úložiště pouze s jedním prázdným souborem README.md.
Nyní, když je náš repozitář aktivní, zkusme přidat changelog z příkazového řádku.
Zadáním následujících příkazů v počítači vytvořte soubor CHANGELOG a vložte jej zpět do svého úložiště. Ujistěte se, že máte v počítači nainstalovaný Git.
Klonujte úložiště. Můžete klonovat pomocí SSH nebo HTTPS.
Klonujte pomocí SSH.
$ git clone [email protected]:user/howtoforge-test.git
nebo Klonovat pomocí HTTPS.
$ git clone https://gitlab.example.com/user/howtoforge-test.git
Zadejte zbývající příkazy k vytvoření a stiskněte CHANGELOG.
$ cd howtoforge-test
$ touch CHANGELOG # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
$ git push -u origin master
Krok 10 – Správa kontejneru Gitlab
Chcete-li zobrazit všechny spuštěné kontejnery, spusťte následující příkaz.
$ docker-ps
Chcete-li zastavit svůj kontejner Gitlab, spusťte následující příkaz.
$ docker stop gitlab-howtoforge-tutorial
Chcete-li znovu spustit kontejner, použijte následující příkaz.
$ docker start gitlab-howtoforge-tutorial
V případě, že chcete kontejner odstranit, můžete tak učinit následujícím příkazem.
$ docker container rm gitlab-howtoforge-tutorial
Krok 11 – Upgrade Gitlabu
Pokud chcete upgradovat Gitlab na nejnovější verzi, musíte zastavit a odstranit stávající kontejner, stáhnout nejnovější image a poté kontejner znovu vytvořit.
$ docker stop gitlab-howtoforge-tutorial
$ docker rm gitlab-howtoforge-tutorial
$ docker pull gitlab/gitlab-ee:latest
$ docker-compose up -d
A než se zeptáte, vaše data budou v bezpečí, i když kontejner odstraníte.
Tímto končí náš tutoriál o nastavení Gitlabu na serveru Ubuntu 18.04 pomocí Dockeru. Pokud máte nějaké dotazy, napište je do komentářů níže.