Zum Hauptinhalt springen

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​

  1. Eine neue App auf dem Server erstellen

    Alternativ: direkt ĂĽber

  2. 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 Buildpack buildpack-nginx notwendig - ohne diese (leere) Datei wird die Seite nicht veröffentlicht.

  3. SSL-Zertifikat erstellen Sobald die Seite erstmalig veröffentlicht wurde, muss einmalig ein SSL-Zertifikat erstellt werden. Dies geschieht mit dem Befehl

  4. 👉 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:

  5. (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.