Nový produkční server u klienta

Následující návod řeší situaci, kdy nasazujeme aplikaci u klienta na jeho serverech, ne u nás. Pro instalaci systému na našich serverech, je jiný návod🔒.


Předpoklady

Předpokládáme, že instalujeme aplikaci, která je dockerizovaná, tedy existuje docker-compose.yml soubor s definicí stacku.

Předpokládáme, že aplikace byla v minulosti otestovaná a běžela v testovacím prostředí také v dockeru.

Předpokládáme, že aplikace poběží na samostatné doméně. Kterou registrujeme my a nebo klient.

Předpokládáme, že bude třeba pořešit https.


Zřízení serveru a nastavení přístupu

Koupit server, vybrat vhodnou variantu. K serveru potřebujeme přístup na roota, přístup přes ssh. To potřebujeme pro prvotní instalaci, pro automatické nasazování a pro následnou správu.

Nastavit na IP adresu serveru doménu v DNS. K serveru budeme dále přistupovat přes hostname a ne přes IP adresu.

Na serveru vytvořit SSH jeho vlastní klíče (ssh-keygen)

Přidat vlastní klíče do .ssh/authorized_keys , abysme se tam jako admini dostali.


Firewall

Doplníme později


Certifikáty pro HTTPS a CertBot

Na serveru nainstalovat a spustit certbot, vytvořit certifikáty.

Pokud je server čistý a nic na něm neběží, nabízí se varianta, kdy si certbot spustí svůj lokální web server a přes ten dojde k ověření.

Certbot nezná název domény, je třeba mu ho zadat.

Certbot uloží certifikáty do /etc/letsencrypt


Docker komponenta web

Pokud se jedná o první nasazení do produkce, je možné, že neexistuje komponenta pro web.

Web zajišťuje zakončení https, automatické obnovování certifikátů, reverzní proxy do backendu a dalších komponent.

V některých případech běží v komponentě webu adminer.

Web se kopíruje z jiných projektů, je třeba změnit hostname, aktualizovat endpointy reverzní proxy.



Instalace dockeru a aplikace

Na serveru nainstalovat docker

Aplikaci instalujeme do složky v home adresáři roota. Je to proto, aby ji neznalý admin snadno našel.

Vytvořit produkční verzi docker-compose.yml

Vytvořit účet produkčního serveru v docker repozitáři - přes htpasswd. Protože každý server má svůj. (V tuto chvíli ještě neřešíme omezení serveru jen k images daného projektu, je to bezpečnostní riziko)

Přihlásit se na serveru do repozitáře s novým přístupem, ručně zkusit stáhnout docker image

Dát na server README a do něj napsat přístupové klíče. Aktualizovat README.

Ověřit, že projde "docker compose pull"

Vytvořit skript deploy.sh

Do .ssh/authorized_keys přidat public klíč repozitáře / pipeline. Kromě klíče samotného přidáme i omezení na jeden jediný příkaz, který smí pipeline spustit.

Upravit Bitbucket pipeline - změnit, kde se volá deploy