Vítejte u pokračování z původního článku: Jak nainstalovat GitLab. Tentokrát se zaměříme na klíčovou část – nastavení automatického deploye na testovací a produkční server.
Pokud ještě GitLab nemáte nainstalovaný, můžete si vyzkoušet náš server na týden zdarma. Doporučujeme minimální konfiguraci VPS Basic.
Co dnes probereme
- Základní nastavení
- Instalaci GitLab Runneru
- Nastavení SSH klíče
- Konfiguraci .gitlab-ci.yml
- Řešení chyb při deployi
Freelo - Nástroj na řízení úkolů a projektů
Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.
Základní nastavení
Než se pustíme do deploye, je potřeba vytvořit projekt. Můžete začít:
- Novým projektem (v našem případě)
- Klonováním existujícího projektu
- Importem z jiného systému
V novém projektu vytvoříme tři důležité soubory:
- .gitlab-ci.yml → definuje deployment skript
- .deploy_ignore → seznam složek, které se při deployi nekopírují
- .gitignore → ignorované soubory v Gitu
VPS Centrum
Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.
Instalace GitLab Runneru
Aby GitLab mohl automaticky provádět deploy, je nutné na server nainstalovat GitLab Runner.
Instalaci provedeme příkazem:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | bash apt install gitlab-runner -y
Nyní se přesuneme zpět na webové rozhraní gitlabu a vstoupíme do CI/CD -> Runners -> New instance runner:

V okně nastavíme:
- Tags: deploy
A stisknutím „Create runner“ runner začneme vytvářet:

Zkopírujeme celý příkaz, který vložíme do příkazového řádku našeho serveru. A poté postupujeme, jak nám říká konzole.
- V první řadě by se měla zobrazit ve hranatých závorkách naše URL, pokud je správně, tak stiskneme enter.
- Následující krok je pouze o tom, jak si pojmenujeme náš runner interně, jedná se o lokální informaci. Protože chceme pořádek napíšeme například „runner_01“.
- V dalším kroku vybereme shell (další možnosti lze porovnat zde: https://docs.gitlab.com/runner/executors/
- Nyní máme hotovo, runner byl úspěšně zaregistrován a my už vidíme na webovém rozhraní úspěšnou informaci.

Proklikem na Runners na webovém rozhraní i vidíme, že je spuštěn:

V posledním kroku je potřeba vytvořit uživatele deploy, kterého využijeme v pozdější fázi návodu.
useradd -m -s /bin/bash deploy
Nastavení SSH klíče
Poslední část je nejzáludnější a týká se vygenerování a správného nastavení SSH klíčů.
Pro vygenerování nového SSH klíče používáme metodu ed25519, která je modernější a bezpečnější.
Jako první se musíme přihlásit z rootu pod uživatele gitlab-runner, který byl při instalaci GitLabu automaticky vytvořen.
su gitlab-runner
Vygenerujeme SSH klíč:
ssh-keygen -t ed25519 -C "gitlab-runner@vas-server.cz"
Po vygenerování se vás zeptá, jestli chcete nechat defaultní cestu. Stiskněte Enter. Poté se vás zeptá na heslo pro klíč, které nechceme použít, proto stiskněte Enter dvakrát.
Poté se zobrazí vygenerovaný klíč, který si uložíme do poznámkového bloku.
Mezitím se STÁLE pod uživatelem gitlab-runner přihlásíme na SSH pod uživatele deploy:
ssh deploy@xxx11.vas-server.cz
Zeptá se vás, zda chcete serveru důvěřovat, odpovězte yes.
Můžeme si otevřít další terminál nebo se přihlásit zpět na roota a poté na uživatele deploy:
su deploy
Zkontrolujeme, zda uživatel deploy má složku .ssh:
cd ~
ls -a
Pokud složka .ssh neexistuje, vytvoříme ji:
mkdir .ssh
cd .ssh
touch authorized_keys
Pod rootem pak vložíme SSH klíč do souboru authorized_keys (upravíme IP, subdoménu/doménu, hostname serveru (například ika01) a hlavně i klíč):
echo "from="IP_ADRESA_SERVERU,subdomena.vasedomena.cz",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <VÁŠ_KLÍČ> gitlab-runner@oznaceni_serveru.vas-server.cz ~deploy/.ssh/authorized_keys
Pokud vše proběhlo úspěšně, přihlaste se zpět pod uživatele deploy a ověřte, zda byl klíč správně vložen:
cat ~/.ssh/authorized_keys
Dále je třeba, aby uživatel deploy mohl spouštět sudo bez nutnosti zadávat heslo. To nastavíme pod rootem dvěma příkazy:
echo "deploy ALL=(root) NOPASSWD:/usr/bin/rsync,/usr/sbin/nginx
deploy ALL=(www-data) NOPASSWD:ALL" > /etc/sudoers.d/deploy
chmod 0440 /etc/sudoers.d/deploy
Po těchto krocích by měla konfigurace fungovat!
Nyní můžete provést změnu v souboru a po kliknutí na Commit changes se spustí nasazení změn.
V sekci Buid -> Pipelines sledujte stav nasazení. Zelená fajfka znamená, že vše proběhlo v pořádku.

Doporučujeme ověřit přes FTP, že soubory byly nahrány do správných složek, jak je definováno v .gitlab-ci.yml, a že GitLab správně ignoroval soubory určené v .deploy_ignore.
Pokud se vám podařilo GitLab správně nastavit, gratulujeme! Nebyla to žádná procházka růžovou zahradou. 🙂