Dokku Deploy
👉 Docusaurus ist ein statischer Website-Generator, der auf React basiert. Standardmässig wird die generierte Seite über kostenlose CDNs gehosted (Github Pages, Netlify, Cloudflare...). Der Nachteil ist, dass die Inhalte öffentlich zugänglich sind und somit nur lizensierte oder freie Inhalte publiziert werden dürfen. Dies erfordert einen Zusatzaufwand und ist im Schulkontext nicht immer möglich.
Durch das Hosten auf einem eigenen Server kann mit bspw. http-auth
der Zugriff auf die Seite eingeschränkt werden.
Installation​
-
Eine neue App auf dem Server erstellen
Alternativ: direkt ĂĽber
-
Auf dem Laptop
Die statische Webseite wird nun automatisch erzeugt und veröffentlicht.
HintergrĂĽnde
Die Webseite verwendet zwei Buildpacks - die URLs und Versionen sind in der
.buildpacks
-Datei definiert.Im
app.json
ist spezifiziert, wie die App gebuildet wird (yarn install && yarn run build
). Zusätzliche Schritte könnten dort definiert werden.Die Datei
.static
ist fĂĽr das zweite Buildpackbuildpack-nginx
notwendig - ohne diese (leere) Datei wird die Seite nicht veröffentlicht. -
SSL-Zertifikat erstellen Sobald die Seite erstmalig veröffentlicht wurde, muss einmalig ein SSL-Zertifikat erstellt werden. Dies geschieht mit dem Befehl
-
👉 http-auth aktivieren Um die Seite zu schützen, kann HTTP-Auth aktiviert werden. Dies geschieht mit dem Befehl
Es lassen sich auch weitere Zugänge anlegen:
Und wieder entfernen:
-
(Optional) eine 👉 Github-Action erstellen, welche die Seite automatisch veröffentlicht, sobald ein Commit auf
main
gepusht wird..github/workflows/deploy.yml---
name: 'dokku-deploy'
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-24.04
steps:
# third-party action that cancels previous runs
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
- name: Cloning repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Push to dokku
uses: dokku/github-action@master
with:
branch: 'main'
git_push_flags: '--force'
ssh_host_key: ${{ secrets.DOKKU_SSH_HOST_KEY }}
git_remote_url: ${{ secrets.DOKKU_GIT_REMOTE_URL }}
ssh_private_key: ${{ secrets.DOKKU_SSH_PRIVATE_KEY }}DOKKU_SSH_HOST_KEY
- Der Fingerprint des Dokku-Servers (optional, wenn nicht vorhanden, wird der Host-Key durch ein Keyscan validiert.)
DOKKU_GIT_REMOTE_URL
DOKKU_SSH_PRIVATE_KEY
- Der private SSH-Key, welcher fĂĽr den Zugriff auf den Dokku-Server verwendet wird
- Erstelle ein neues SSH-Key-Paar mit
ssh-keygen
(nicht auschecken!). Der private Key wird auf Github als Secret hinterlegt, der öffentliche Key muss auf dem Dokku-Server hinterlegt werden. - Erstelle ein neues SSH-Key-Paar mit