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. Fluxul de instalare urmeaza documentatia oficiala Dokku getting started, adauga verificari specifice Debian pentru sursa pachetelor si include primele sarcini de configurare necesare inainte de un deployment real.
Instalarea Dokku pe Debian
Incepeti pe un server Debian nou sau dedicat cand este posibil. Dokku configureaza containere Docker, virtual host-uri Nginx, deploy-uri Git bazate pe SSH si directoare de aplicatii sub utilizatorul dokku, deci serverele partajate necesita planificare suplimentara inainte de instalare.
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-releaseprintf '%s %s\n' "$PRETTY_NAME" "$VERSION_CODENAME"
dpkg --print-architecture
hostname -f
Codename-urile Debian suportate pentru acest flux de lucru sunt trixie, bookworm si bullseye. Arhitecturile suportate sunt amd64 si arm64. 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; domeniile individuale pot functiona cu domenii explicite per aplicatie |
| Porturi | SSH, HTTP si HTTPS accesibile dupa necesitate | SSH primeste push-uri Git, iar HTTP si HTTPS servesc aplicatiile deployate |
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
Scriptul oficial de bootstrap este optiunea practica implicita pentru un server Debian nou deoarece instaleaza Docker mai intai, adauga repository-ul de pachete Dokku, instaleaza Dokku si ruleaza instalatorul de dependente pentru plugin-urile core. Metoda manuala DEB822 APT este mai potrivita pentru automatizare sau build-uri de imagini care provisioneaza deja Docker, Buildx si Compose printr-un flux de lucru separat si auditat.
| 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 updatesudo 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:
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. Instalatorul Dokku bootstrappeaza Docker cand comanda docker lipseste, dar o instalare partiala mai veche poate lasa in continuare pachete de plugin-uri necesare nerezolvate:
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.shRulati 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.shMetoda 2: Instalarea Dokku cu o sursa APT manuala DEB822
Folositi metoda manuala cand Docker Engine, Buildx si Compose sunt deja instalate din pachetele oficiale Debian Docker sau un alt set de pachete compatibil. Pe Debian 12 si Debian 11, o sursa packagecloud exclusiv Dokku nu furnizeaza un candidat Buildx, deci verificati Docker mai intai sau instalati Docker pe Debian inainte de a continua:
docker --versiondocker buildx version
docker compose version
Daca vreo comanda lipseste, instalati setul oficial de pachete Docker cu Install Docker on Debian, apoi reveniti la configurarea sursei Dokku.
Instalati pachetele helper pentru download-uri HTTPS si inspectarea cheilor:
sudo apt updatesudo 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/gpgkeygpg --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 (https://packagecloud.io/docs#gpg_signing) <support@packagecloud.io>
Adaugati sursa APT a Dokku in format DEB822. Comanda scrie sursa doar pentru combinatiile de versiune si arhitectura Debian suportate:
. /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 updateapt-cache policy dokku
Un candidat valid arata 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 nesupraveghete, 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 dokkusudo dokku plugin:install-dependencies --core
Verificarea Dokku pe Debian
Verificati comanda Dokku instalata, plugin-urile core, accesul Docker si serviciul Nginx:
dokku versiondokku plugin:list
docker --version
docker compose version
sudo systemctl is-active nginx
Daca Nginx este inactiv, verificati statusul sau inainte de a deploya aplicatii:
sudo systemctl status nginx --no-pagerConfigurarea Dokku dupa instalare
O instalare Dokku noua mai necesita o cheie SSH de deploy, un plan de domeniu global sau per-aplicatie si cai de retea deschise pentru serviciile pe care doriti sa le expuneti.
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.pubListati cheile configurate dupa adaugarea uneia:
dokku ssh-keys:listSetarea domeniului global Dokku
Setati domeniul global cand majoritatea aplicatiilor trebuie sa foloseasca subdomenii sub aceeasi baza:
dokku domains:set-global apps.example.comPentru 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.ioVerificati configuratia curenta a domeniului global:
dokku domains:report --globalDeschiderea porturilor web prin UFW cand este activat
sudo ufw status verboseDaca statusul raporteaza active:
sudo ufw allow 22/tcpsudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status numbered
Deployarea primei aplicatii Dokku pe Debian
Crearea aplicatiei pe hostul Dokku
dokku apps:create sample-appdokku domains:set sample-app sample-app.apps.example.com
dokku apps:list
Push-ul codului catre Dokku cu Git
git remote add dokku dokku@apps.example.com:sample-appgit push dokku main:master
Verificarea statusului si jurnalelor
dokku ps:report sample-appdokku logs sample-app --tail
Gestionarea Dokku pe Debian
Dokku este un framework de comenzi, nu un daemon 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:
sudo apt-get updatesudo 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:
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 --allEliminarea 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
dokku ps:stop --alldokku cleanup
Purificarea pachetelor Dokku
sudo apt-get purge dokku herokuishsudo 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 || trueEliminarea fisierelor de sursa APT Dokku
sudo rm -f /etc/apt/sources.list.d/dokku.listsudo 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:
sudo find /etc/apt/sources.list.d -maxdepth 1 \( -name 'dokku.list' -o -name 'dokku.sources' \) -printapt-cache policy dokku
Stergerea datelor Dokku doar cand sunteti gata
ATENTIE: Comanda de eliminare a datelor sterge permanent starea aplicatiilor Dokku, jurnalele si directorul home al utilizatorului Dokku. Nu exporta in siguranta bazele de date ale aplicatiilor, stocarea de obiecte, montarile bind sau volumele Docker. Inspectati mai intai caile candidate:
sudo find /home/dokku /var/lib/dokku /var/log/dokku -maxdepth 0 -print 2>/dev/nullsudo rm -rf /home/dokku /var/lib/dokku /var/log/dokku
NOTA: Eliminati Docker separat doar cand serverul nu mai ruleaza niciun workload Docker.
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-releaseAPT 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:
apt-cache policy dokku docker-buildx-plugin docker-buildx docker-compose-plugin docker-composeNOTA: Pe Debian 13, pachetele docker-buildx si docker-compose ale Debian pot satisface alternativele. Pe Debian 12 si Debian 11, un candidat Buildx lipsa inseamna de obicei ca repository-ul oficial Debian Docker nu a fost adaugat; adaugati Docker, apoi reexecutati sudo apt update si sudo apt install dokku.
Push-urile SSH esueaza cu Permission Denied
dokku ssh-keys:listsudo dokku ssh-keys:add admin < ~/.ssh/id_rsa.pub
Testati ruta SSH de pe masina de deployment:
ssh dokku@apps.example.comDomeniul 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:
dokku domains:report sample-appsudo 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.
Leave A Comment?