# ============================================================================= # Installér eller genopbyg forummet (Discourse, forum.sqlinsight.seosoft.dk) på appserveren. # # Kun manuelt (Actions → deploy forum → Run workflow): en rebuild tager 10-15 minutter, og forummet er nede imens. # Discourse opdateres ellers fra /admin/upgrade. # # Runneren er host-mode, så launcheren køres i en helper-container med /var/discourse og docker.sock fra værten. # app.yml udfyldes fra secrets af render.py; intet hemmeligt ligger i repoet. # # Påkrævede secrets: HOST_BIND KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD # Valgfri: FORUM_PORT (8082) FORUM_SMTP_PORT (587) FORUM_NOTIFICATION_EMAIL (= FORUM_SMTP_USER) FORUM_WORKERS (4) FORUM_DB_SHARED_BUFFERS (512MB) # ============================================================================= name: deploy forum on: workflow_dispatch: concurrency: group: deploy-sqlinsight-forum cancel-in-progress: false jobs: deploy: runs-on: [self-hosted, appserver] timeout-minutes: 60 steps: - name: Checkout uses: actions/checkout@v4 - name: Build launcher helper run: docker build -t sqlinsight-forum-launcher deploy/forum - name: Rebuild Discourse env: FORUM_BIND: ${{ secrets.HOST_BIND }} FORUM_PORT: ${{ secrets.FORUM_PORT }} KNOWN_PROXY: ${{ secrets.KNOWN_PROXY }} FORUM_ADMIN_EMAIL: ${{ secrets.FORUM_ADMIN_EMAIL }} FORUM_SMTP_ADDRESS: ${{ secrets.FORUM_SMTP_ADDRESS }} FORUM_SMTP_PORT: ${{ secrets.FORUM_SMTP_PORT }} FORUM_SMTP_USER: ${{ secrets.FORUM_SMTP_USER }} FORUM_SMTP_PASSWORD: ${{ secrets.FORUM_SMTP_PASSWORD }} FORUM_NOTIFICATION_EMAIL: ${{ secrets.FORUM_NOTIFICATION_EMAIL }} FORUM_WORKERS: ${{ secrets.FORUM_WORKERS }} FORUM_DB_SHARED_BUFFERS: ${{ secrets.FORUM_DB_SHARED_BUFFERS }} run: | set -eu missing="" for v in FORUM_BIND KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD; do [ -n "$(printenv "$v" || true)" ] || missing="$missing $v" done if [ -n "$missing" ]; then echo "ERROR: disse secrets mangler i repo-indstillingerne:$missing (FORUM_BIND er secret HOST_BIND). Se docs/community.md." exit 1 fi # Samme sti inde og ude, så launcherens bind mounts (/var/discourse/shared/...) peger på værtens mapper. docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/discourse:/var/discourse \ -e FORUM_BIND -e FORUM_PORT -e KNOWN_PROXY -e FORUM_ADMIN_EMAIL \ -e FORUM_SMTP_ADDRESS -e FORUM_SMTP_PORT -e FORUM_SMTP_USER -e FORUM_SMTP_PASSWORD \ -e FORUM_NOTIFICATION_EMAIL -e FORUM_WORKERS -e FORUM_DB_SHARED_BUFFERS \ sqlinsight-forum-launcher - name: Wait for the forum env: HOST_BIND: ${{ secrets.HOST_BIND }} FORUM_PORT: ${{ secrets.FORUM_PORT }} run: | set -eu for i in $(seq 1 60); do if docker run --rm alpine:3 wget -qO- -T 3 "http://${HOST_BIND}:${FORUM_PORT:-8082}/srv/status" 2>/dev/null | grep -q ok; then echo "forum is up" exit 0 fi echo "attempt $i: not ready" sleep 5 done docker logs --tail 100 app || true exit 1