Cum se instaleaza Dokku pe Debian 11, 12, 13?

Configurare noua (How To)

Situatie

Dokku transforma un singur server Debian intr-o platforma mica de aplicatii condusa de Git, dar calea de instalare conteaza deoarece Dokku detine Docker, rutarea Nginx, accesul SSH pentru deploy si datele aplicatiilor pe host. Pentru a instala Dokku pe Debian, folositi scriptul oficial de bootstrap pentru un server nou sau metoda manuala DEB822 APT doar cand Docker Engine, Buildx si Compose sunt deja gestionate separat.

Pachetele curente Dokku suporta Debian 13 (Trixie), Debian 12 (Bookworm) si Debian 11 (Bullseye) pe amd64 si arm64.

Confirmarea versiunii Debian, arhitecturii si hostname-ului
Verificati codename-ul Debian, arhitectura si hostname-ul complet calificat inainte de a adauga pachete. Scriptul de bootstrap Dokku necesita un hostname functional, iar sursa de pachete trebuie sa corespunda versiunii Debian:

. /etc/os-release
printf '%s %s\n' "$PRETTY_NAME" "$VERSION_CODENAME"
dpkg --print-architecture
hostname -f

Codename-urile Debian suportate sunt trixie, bookworm si bullseye. Arhitecturile suportate sunt amd64 si arm64.

NOTA: Daca hostname -f esueaza, setati un hostname corespunzator si o intrare /etc/hosts corespunzatoare inainte de a rula instalatorul.

Planificarea DNS, memoriei si accesului la retea
Dokku functioneaza cel mai bine cu cel putin 1 GB de memorie pentru build-urile bazate pe Docker. Un domeniu real sau o inregistrare DNS wildcard este de asemenea puternic recomandata deoarece Dokku foloseste numele aplicatiei si domeniul global pentru a genera rute precum app.example.com.

Cerinta Stare recomandata De ce conteaza
Versiune Debian Debian 13, 12 sau 11 Scriptul curent de pachete Dokku si sursa packagecloud suporta aceste versiuni
Arhitectura CPU amd64 sau arm64 Dokku publica indexe curente de pachete Debian pentru aceste arhitecturi
Memorie 1 GB sau mai mult Build-urile buildpack si imaginile Docker pot esua sau folosi swap intens pe servere mai mici
DNS Wildcard *.example.com sau un singur domeniu de aplicatie DNS wildcard permite fiecarei aplicatii sa primeasca un subdomeniu predictibil
Porturi SSH, HTTP si HTTPS accesibile dupa necesitate SSH primeste push-uri Git, iar HTTP si HTTPS servesc aplicatiile deployate

NOTA: Pentru un setup wildcard, pointati *.apps.example.com si apps.example.com catre serverul Debian. Pentru un host de laborator fara DNS, o adresa precum 203.0.113.10.sslip.io poate furniza testare in stil subdomeniu prin serviciul public sslip.io.

Alegerea metodei de instalare Dokku

Metoda Sursa sau canalul Comportament actualizari Potrivit pentru Compromisuri
Script oficial bootstrap Instalator Dokku plus repository packagecloud Dokku Actualizari Dokku gestionate APT dupa instalare Servere Debian noi si majority prime instalari Ruleaza un instalator root care bootstrappeaza de asemenea Docker si scrie propriile fisiere de sursa APT
Setup manual DEB822 APT Acelasi repository packagecloud Dokku cu un keyring cu scope Actualizari Dokku gestionate APT Gestiunea configuratiei, imagini golden si servere unde Docker este deja instalat

Solutie

Pasi de urmat

Metoda 1: Instalarea Dokku cu scriptul oficial de bootstrap

Instalati instrumentele mici necesare pentru a rezolva cel mai recent tag de release si a descarca scriptul prin HTTPS:

sudo apt update

sudo apt install ca-certificates curl jq

Rezolvati cel mai recent release stabil Dokku de pe GitHub Releases, apoi descarcati scriptul de bootstrap corespunzator. Mentineti aceeasi sesiune de terminal deschisa deoarece comanda de instalare reutilizeaza DOKKU_VERSION:

bash

DOKKU_VERSION="$(curl -fsSL https://api.github.com/repos/dokku/dokku/releases/latest | jq -r '.tag_name')"

case "$DOKKU_VERSION" in
  v[0-9]*)
    curl -fsSLo bootstrap.sh "https://dokku.com/install/${DOKKU_VERSION}/bootstrap.sh"
    ;;
  *)
    printf 'Could not resolve the latest Dokku release tag.\n' >&2
    false
    ;;
esac

Daca Docker este deja instalat, confirmati plugin-urile Buildx si Compose inainte de a rula scriptul de bootstrap:

bash
if command -v docker >/dev/null 2>&1; then
  docker --version
  docker buildx version
  docker compose version
fi

Inspectati scriptul inainte de a-l rula ca root:

less bootstrap.sh

Rulati instalatorul bootstrap cu acelasi tag Dokku. Scriptul instaleaza Docker cand comanda docker lipseste, adauga sursa packagecloud Dokku, instaleaza pachetul dokku si ruleaza configurarea dependentelor de plugin core:

sudo DOKKU_TAG="$DOKKU_VERSION" bash bootstrap.sh

Metoda 2: Instalarea Dokku cu o sursa APT manuala DEB822

Folositi metoda manuala cand Docker Engine, Buildx si Compose sunt deja instalate. Verificati mai intai Docker:

docker --version

docker buildx version
docker compose version

Instalati pachetele helper pentru download-uri HTTPS si inspectarea cheilor:

sudo apt update

sudo apt install ca-certificates curl gpg

Descarcati cheia de semnare packagecloud a Dokku, inspectati amprenta, apoi instalati cheia ca keyring APT cu scope:

curl -fsSLo dokku.asc https://packagecloud.io/dokku/dokku/gpgkey

gpg --quiet --show-keys --with-fingerprint dokku.asc
sudo install -m 0644 dokku.asc /usr/share/keyrings/dokku-archive-keyring.asc
rm -f dokku.asc

Cheia curenta identifica repository-ul packagecloud Dokku si foloseste aceasta amprenta:

pub rsa4096 2018-10-08 [SCEA]

      0027 A6FC E4DE B304 104D  2D13 F1FF 6851 288B 3315
uid                      https://packagecloud.io/dokku/dokku (...)

Adaugati sursa APT a Dokku in format DEB822. Comanda scrie sursa doar pentru combinatiile de versiune si arhitectura Debian suportate:

bash

. /etc/os-release
codename="${VERSION_CODENAME:-}"
arch="$(dpkg --print-architecture)"

case "${codename}:${arch}" in
    trixie:amd64|trixie:arm64|bookworm:amd64|bookworm:arm64|bullseye:amd64|bullseye:arm64)
        printf '%s\n' \
        'Types: deb' \
        'URIs: https://packagecloud.io/dokku/dokku/debian/' \
        "Suites: ${codename}" \
        'Components: main' \
        "Architectures: ${arch}" \
        'Signed-By: /usr/share/keyrings/dokku-archive-keyring.asc' \
        | sudo tee /etc/apt/sources.list.d/dokku.sources > /dev/null
        ;;
    *)
        printf 'Dokku packages in this workflow are documented for Debian 13, 12, or 11 on amd64 or arm64. Detected %s on %s.\n' "$codename" "$arch" >&2
        ;;
esac

Opriti-va daca apare mesajul de versiune nesuportata. Altfel, reimprospatati metadatele APT si confirmati ca dokku provine din sursa packagecloud pentru codename-ul Debian vostru:

sudo apt update

apt-cache policy dokku

Un candidat valid afiseaza URL-ul packagecloud Dokku, codename-ul Debian si componenta main:

dokku:

  Installed: (none)
  Candidate: 0.38.5
  Version table:
     0.38.5 500
        500 https://packagecloud.io/dokku/dokku/debian trixie/main amd64 Packages

Pentru build-uri nesupraveghate, preseedati valorile debconf inainte de a instala Dokku. Inlocuiti hostname-ul cu domeniul sau baza wildcard pe care planificati sa o folositi:

sudo debconf-set-selections <<'EOF'

dokku dokku/vhost_enable boolean true
dokku dokku/hostname string apps.example.com
dokku dokku/nginx_enable boolean true
EOF

Instalati Dokku, apoi rulati instalatorul de dependente de plugin core:

sudo apt install dokku
sudo

dokku plugin:install-dependencies --core

Verificarea Dokku pe Debian

Verificati comanda Dokku instalata, plugin-urile core, accesul Docker si serviciul Nginx pe care Dokku il foloseste pentru rutarea HTTP:

dokku version

dokku plugin:list
docker --version
docker compose version
sudo systemctl is-active nginx

Comanda version trebuie sa afiseze release-ul Dokku instalat, plugin:list trebuie sa listeze plugin-urile core, Docker trebuie sa raporteze o versiune Engine si Compose, iar Nginx trebuie sa raporteze active.

Daca Nginx este inactiv, verificati statusul sau inainte de a deploya aplicatii:

sudo systemctl status nginx --no-pager

Configurarea Dokku dupa instalare

Adaugarea unei chei SSH de deploy in Dokku

Dokku primeste push-uri Git prin utilizatorul SSH dokku. Adaugati o cheie publica pentru contul de administrator care va deploya aplicatii. Numele admin este conventional si acorda acelei chei permisiunea de a gestiona alte chei Dokku:

sudo dokku ssh-keys:add admin < ~/.ssh/id_rsa.pub

Listati cheile configurate dupa adaugarea uneia:

dokku ssh-keys:list

Setarea domeniului global Dokku

Setati domeniul global cand majoritatea aplicatiilor trebuie sa foloseasca subdomenii sub aceeasi baza. Folositi un domeniu care pointeaza deja catre serverul Debian, sau folositi un hostname sslip.io pentru testare temporara:

dokku domains:set-global apps.example.com

Pentru un domeniu de laborator temporar bazat pe IP, inlocuiti adresa de exemplu cu IP-ul public al serverului:

dokku domains:set-global 203.0.113.10.sslip.io

Verificati configuratia curenta a domeniului global:

dokku domains:report --global

Deschiderea porturilor web prin UFW cand este activat

Dokku serveste traficul HTTP si HTTPS prin Nginx. Verificati starea UFW inainte de a schimba regulile, apoi permiteti SSH inainte de a deschide porturile web cand UFW este activ:

sudo ufw status verbose

Daca statusul raporteaza active, adaugati regulile SSH, HTTP si HTTPS:

sudo ufw allow 22/tcp

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status numbered

Deployarea primei aplicatii Dokku pe Debian

Un deployment de baza are doua parti: creati aplicatia pe hostul Dokku, apoi faceti push la un repository Git de pe workstation-ul sau alt shell de dezvoltare.

Crearea aplicatiei pe hostul Dokku

Creati o aplicatie si atribuiti un domeniu inainte de primul push. Inlocuiti sample-app si domeniul cu numele real al aplicatiei si intrarea DNS:

dokku apps:create sample-app

dokku domains:set sample-app sample-app.apps.example.com
dokku apps:list

Push-ul codului catre Dokku cu Git

Din repository-ul local al aplicatiei, adaugati remote-ul Git Dokku si faceti push la ramura pe care doriti ca Dokku sa o compileze. Inlocuiti apps.example.com cu hostul care rezolva catre serverul Debian:

git remote add dokku dokku@apps.example.com:sample-app
git push dokku main:master

Verificarea statusului si jurnalelor aplicatiei

Dupa primul push, folositi comenzile Dokku pentru a confirma starea procesului si a inspecta erorile de pornire:

dokku ps:report sample-app
dokku logs sample-app --tail

Gestionarea Dokku pe Debian

Dokku este un framework de comenzi, nu un daemon Dokku cu rulare lunga. Docker si Nginx furnizeaza principalele servicii runtime, in timp ce comenzile Dokku gestioneaza aplicatiile, domeniile, plugin-urile si configuratia de deployment.

Comanda Utilizare
dokku apps:list Listeaza aplicatiile pe host
dokku apps:create APP Creeaza o aplicatie inainte de deployment
dokku domains:report APP Afiseaza rutarea domeniului pentru o aplicatie
dokku ps:report APP Inspecteaza starea procesului pentru o aplicatie
dokku logs APP –tail Streameaza jurnalele recente ale aplicatiei
dokku plugin:list Listeaza plugin-urile Dokku instalate
sudo systemctl status docker Verifica daemonul Docker care ruleaza containerele aplicatiilor
sudo systemctl status nginx Verifica serviciul Nginx care ruteaza traficul aplicatiilor

Actualizarea Dokku pe Debian

Dokku instalat din scriptul bootstrap sau sursa APT manuala se actualizeaza prin APT. Cititi notele oficiale de upgrade Dokku inainte de upgrade-uri majore, mai ales cand actualizarea schimba si Docker, Herokuish sau comportamentul buildpack.

Pentru o reimprospatare normala a pachetelor, actualizati metadatele APT si instalati setul de pachete Dokku:

sudo apt-get update

sudo apt-get --no-install-recommends install dokku herokuish sshcommand plugn gliderlabs-sigil dokku-update dokku-event-listener

Cand Docker sau Herokuish se schimba in aceeasi fereastra de mentenanta, opriti mai intai aplicatiile si recompilati dupa upgrade astfel incat containerele sa foloseasca imaginea de baza si instrumentele de build reimprospatate:

dokku ps:stop --all

sudo apt-get update
sudo apt-get --no-install-recommends install dokku herokuish sshcommand plugn gliderlabs-sigil dokku-update dokku-event-listener
dokku ps:rebuild --all

Eliminarea Dokku din Debian

Faceti backup la aplicatii, baze de date, volume, variabile de mediu si fisiere incarcate inainte de a elimina Dokku.

Oprirea aplicatiilor si curatarea containerelor Dokku

Opriti aplicatiile gestionate de Dokku si lasati Dokku sa curete containerele si imaginile neutilizate inainte de eliminarea pachetelor:

dokku ps:stop --all

dokku cleanup

Purificarea pachetelor Dokku

Purificati pachetele Dokku si Herokuish, apoi eliminati dependentele pe care niciun pachet ramas nu le mai necesita. Revizuiti tranzactia autoremove inainte de a confirma pe un server partajat:

sudo apt-get purge dokku herokuish

sudo apt-get autoremove

Confirmati ca inregistrarile de pachete au disparut:

dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' dokku herokuish 2>/dev/null || true

Eliminarea fisierelor de sursa APT Dokku

Eliminati fisierele de sursa si incredere create de oricare metoda de instalare, apoi reimprospatati metadatele pachetelor:

sudo rm -f /etc/apt/sources.list.d/dokku.list

sudo rm -f /etc/apt/sources.list.d/dokku.sources
sudo rm -f /etc/apt/trusted.gpg.d/dokku.asc
sudo rm -f /usr/share/keyrings/dokku-archive-keyring.asc
sudo apt update

Verificati ca niciun fisier sursa Dokku nu ramane sub /etc/apt/sources.list.d/:

sudo find /etc/apt/sources.list.d -maxdepth 1 \( -name 'dokku.list' -o -name 'dokku.sources' \) -print

Confirmati ca sursa packagecloud nu mai furnizeaza un candidat:

apt-cache policy dokku

Stergerea datelor Dokku doar cand sunteti gata

sudo find /home/dokku /var/lib/dokku /var/log/dokku -maxdepth 0 -print 2>/dev/null
sudo rm -rf /home/dokku /var/lib/dokku /var/log/dokku

Depanare probleme Dokku pe Debian

Scriptul de bootstrap raporteaza o distributie Linux nesuportata

Scriptul de bootstrap verifica /etc/os-release si suporta Debian 11, 12 si 13. Confirmati identitatea hostului si evitati rularea scriptului din containere sau derivative care raporteaza un ID de versiune diferit:

cat /etc/os-release

APT nu poate instala dependentele Dokku

Erorile de dependente inseamna de obicei ca sursele de pachete activate nu furnizeaza un set complet Docker, Buildx si Compose pentru lantul de dependente Dokku. Verificati candidatul Dokku si alternativele pachetelor Docker inainte de a reincerca instalarea:

apt-cache policy dokku docker-buildx-plugin docker-buildx docker-compose-plugin docker-compose

Push-urile SSH esueaza cu Permission Denied

Deploy-urile Git Dokku folosesc utilizatorul SSH dokku si cheile stocate de plugin-ul de chei SSH al Dokku. Verificati ca cheia intentionata este prezenta, apoi adaugati cheia publica corecta daca lipseste:

dokku ssh-keys:list

sudo dokku ssh-keys:add admin < ~/.ssh/id_rsa.pub

De pe masina de deployment, testati ruta SSH cu acelasi hostname folosit in remote-ul Git:

ssh dokku@apps.example.com

Domeniul aplicatiei nu se rezolva sau nu se incarca

Esuarile de domeniu se afla de obicei in DNS, configuratia domeniului Dokku, rutarea Nginx sau firewall-ul hostului. Verificati raportul domeniului aplicatiei si serviciul Nginx inainte de a modifica codul aplicatiei:

dokku domains:report sample-app

sudo systemctl is-active nginx
sudo ss -tulpn | grep -E ':(80|443)\b'

Daca raportul domeniului este corect si Nginx este activ, confirmati ca DNS pointeaza catre server si ca firewall-ul permite porturile 80/tcp si 443/tcp.

Tip solutie

Permanent

Voteaza

(0 din 0 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?