Standardporte til websted og forum (8081 og 8082)
Some checks are pending
CI / Integration (mcr.microsoft.com/mssql/server:2017-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2019-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2022-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2025-latest) (push) Blocked by required conditions
CI / Build og unit tests (push) Successful in 54s
deploy community / deploy (push) Successful in 1s
CI / MSI-installer (push) Successful in 35s
Some checks are pending
CI / Integration (mcr.microsoft.com/mssql/server:2017-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2019-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2022-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2025-latest) (push) Blocked by required conditions
CI / Build og unit tests (push) Successful in 54s
deploy community / deploy (push) Successful in 1s
CI / MSI-installer (push) Successful in 35s
COMMUNITY_PORT og FORUM_PORT er nu valgfrie secrets. Webstedets deploy springes over, indtil COMMUNITY_CONTACT er sat. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E3EExwndy8Z22EK2Qpt6BK
This commit is contained in:
parent
85d3674d53
commit
64ccaedf1f
5 changed files with 19 additions and 16 deletions
|
|
@ -4,7 +4,8 @@
|
||||||
# Samme mønster som deploy-hub.yml: runneren er host-mode, så .env og compose-filen skrives til INSTALL_DIR
|
# Samme mønster som deploy-hub.yml: runneren er host-mode, så .env og compose-filen skrives til INSTALL_DIR
|
||||||
# via en kortlivet helper-container, og 'docker compose up' køres i docker:cli.
|
# via en kortlivet helper-container, og 'docker compose up' køres i docker:cli.
|
||||||
#
|
#
|
||||||
# Påkrævede secrets: HOST_BIND COMMUNITY_PORT COMMUNITY_CONTACT
|
# Påkrævede secrets: HOST_BIND COMMUNITY_CONTACT
|
||||||
|
# Valgfri: COMMUNITY_PORT (8081)
|
||||||
# Valgfri: TRUSTED_KEY_ID + TRUSTED_KEY (offentlig nøgle, som feedet er signeret med, hvis den ikke er indbygget)
|
# Valgfri: TRUSTED_KEY_ID + TRUSTED_KEY (offentlig nøgle, som feedet er signeret med, hvis den ikke er indbygget)
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
name: deploy community
|
name: deploy community
|
||||||
|
|
@ -40,13 +41,13 @@ jobs:
|
||||||
- name: Configured?
|
- name: Configured?
|
||||||
id: check
|
id: check
|
||||||
env:
|
env:
|
||||||
COMMUNITY_PORT: ${{ secrets.COMMUNITY_PORT }}
|
COMMUNITY_CONTACT: ${{ secrets.COMMUNITY_CONTACT }}
|
||||||
run: |
|
run: |
|
||||||
# Indtil secrets er sat, springes deploy over i stedet for at fejle hvert push.
|
# Indtil secrets er sat, springes deploy over i stedet for at fejle hvert push.
|
||||||
if [ -n "${COMMUNITY_PORT:-}" ]; then
|
if [ -n "${COMMUNITY_CONTACT:-}" ]; then
|
||||||
echo "configured=true" >> "$GITHUB_OUTPUT"
|
echo "configured=true" >> "$GITHUB_OUTPUT"
|
||||||
else
|
else
|
||||||
echo "::warning::COMMUNITY_PORT er ikke sat; webstedet deployes ikke (se docs/community.md)"
|
echo "::warning::COMMUNITY_CONTACT er ikke sat; webstedet deployes ikke (se docs/community.md)"
|
||||||
echo "configured=false" >> "$GITHUB_OUTPUT"
|
echo "configured=false" >> "$GITHUB_OUTPUT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -70,6 +71,7 @@ jobs:
|
||||||
TRUSTED_KEY: ${{ secrets.TRUSTED_KEY }}
|
TRUSTED_KEY: ${{ secrets.TRUSTED_KEY }}
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
|
COMMUNITY_PORT="${COMMUNITY_PORT:-8081}"
|
||||||
required="HOST_BIND COMMUNITY_PORT COMMUNITY_CONTACT"
|
required="HOST_BIND COMMUNITY_PORT COMMUNITY_CONTACT"
|
||||||
missing=0
|
missing=0
|
||||||
for v in $required; do
|
for v in $required; do
|
||||||
|
|
@ -121,7 +123,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
for i in $(seq 1 30); do
|
for i in $(seq 1 30); do
|
||||||
if docker run --rm alpine:3 wget -qO- -T 3 "http://${HOST_BIND}:${COMMUNITY_PORT}/health" 2>/dev/null | grep -q '"ok"'; then
|
if docker run --rm alpine:3 wget -qO- -T 3 "http://${HOST_BIND}:${COMMUNITY_PORT:-8081}/health" 2>/dev/null | grep -q '"ok"'; then
|
||||||
echo "${CONTAINER} is healthy"
|
echo "${CONTAINER} is healthy"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
# Runneren er host-mode, så launcheren køres i en helper-container med /var/discourse og docker.sock fra værten.
|
# 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.
|
# app.yml udfyldes fra secrets af render.py; intet hemmeligt ligger i repoet.
|
||||||
#
|
#
|
||||||
# Påkrævede secrets: HOST_BIND FORUM_PORT KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD
|
# Påkrævede secrets: HOST_BIND KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD
|
||||||
# Valgfri: FORUM_SMTP_PORT (587) FORUM_NOTIFICATION_EMAIL (= FORUM_SMTP_USER) FORUM_WORKERS (4) FORUM_DB_SHARED_BUFFERS (512MB)
|
# 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
|
name: deploy forum
|
||||||
|
|
||||||
|
|
@ -47,7 +47,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
missing=""
|
missing=""
|
||||||
for v in FORUM_BIND FORUM_PORT KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD; do
|
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"
|
[ -n "$(printenv "$v" || true)" ] || missing="$missing $v"
|
||||||
done
|
done
|
||||||
if [ -n "$missing" ]; then
|
if [ -n "$missing" ]; then
|
||||||
|
|
@ -70,7 +70,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
set -eu
|
set -eu
|
||||||
for i in $(seq 1 60); do
|
for i in $(seq 1 60); do
|
||||||
if docker run --rm alpine:3 wget -qO- -T 3 "http://${HOST_BIND}:${FORUM_PORT}/srv/status" 2>/dev/null | grep -q ok; then
|
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"
|
echo "forum is up"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,8 @@ cd "$TARGET"
|
||||||
host="${FORUM_HOSTNAME:-forum.sqlinsight.seosoft.dk}"
|
host="${FORUM_HOSTNAME:-forum.sqlinsight.seosoft.dk}"
|
||||||
cat <<NEXT
|
cat <<NEXT
|
||||||
|
|
||||||
Discourse kører på ${FORUM_BIND}:${FORUM_PORT}. Første gang:
|
Discourse kører på ${FORUM_BIND}:${FORUM_PORT:-8082}. Første gang:
|
||||||
1. Peg reverse proxyen for $host på http://${FORUM_BIND}:${FORUM_PORT} (med X-Forwarded-Proto: https og WebSockets).
|
1. Peg reverse proxyen for $host på http://${FORUM_BIND}:${FORUM_PORT:-8082} (med X-Forwarded-Proto: https og WebSockets).
|
||||||
2. Åbn https://$host og opret administratoren med adressen i FORUM_ADMIN_EMAIL.
|
2. Åbn https://$host og opret administratoren med adressen i FORUM_ADMIN_EMAIL.
|
||||||
3. Lav en API-nøgle til opsætningen:
|
3. Lav en API-nøgle til opsætningen:
|
||||||
docker exec app su discourse -c 'cd /var/www/discourse && RAILS_ENV=production bundle exec rake api_key:create_master[forum-setup]'
|
docker exec app su discourse -c 'cd /var/www/discourse && RAILS_ENV=production bundle exec rake api_key:create_master[forum-setup]'
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
render.py <template> <output>
|
render.py <template> <output>
|
||||||
|
|
||||||
Required: FORUM_BIND FORUM_PORT KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD
|
Required: FORUM_BIND KNOWN_PROXY FORUM_ADMIN_EMAIL FORUM_SMTP_ADDRESS FORUM_SMTP_USER FORUM_SMTP_PASSWORD
|
||||||
Optional: FORUM_HOSTNAME (forum.sqlinsight.seosoft.dk), FORUM_SMTP_PORT (587), FORUM_NOTIFICATION_EMAIL (FORUM_SMTP_USER),
|
Optional: FORUM_HOSTNAME (forum.sqlinsight.seosoft.dk), FORUM_PORT (8082), FORUM_SMTP_PORT (587), FORUM_NOTIFICATION_EMAIL (FORUM_SMTP_USER),
|
||||||
FORUM_WORKERS (4), FORUM_DB_SHARED_BUFFERS (512MB)
|
FORUM_WORKERS (4), FORUM_DB_SHARED_BUFFERS (512MB)
|
||||||
"""
|
"""
|
||||||
import ipaddress
|
import ipaddress
|
||||||
|
|
@ -14,6 +14,7 @@ import sys
|
||||||
|
|
||||||
DEFAULTS = {
|
DEFAULTS = {
|
||||||
"FORUM_HOSTNAME": "forum.sqlinsight.seosoft.dk",
|
"FORUM_HOSTNAME": "forum.sqlinsight.seosoft.dk",
|
||||||
|
"FORUM_PORT": "8082",
|
||||||
"FORUM_SMTP_PORT": "587",
|
"FORUM_SMTP_PORT": "587",
|
||||||
"FORUM_WORKERS": "4",
|
"FORUM_WORKERS": "4",
|
||||||
"FORUM_DB_SHARED_BUFFERS": "512MB",
|
"FORUM_DB_SHARED_BUFFERS": "512MB",
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ Discourse installeres med den officielle `discourse_docker`-launcher, som er den
|
||||||
| Secret | Eksempel | |
|
| Secret | Eksempel | |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `HOST_BIND`, `KNOWN_PROXY` | (findes allerede til hubben) | DMZ-adresse og reverse proxyens adresse |
|
| `HOST_BIND`, `KNOWN_PROXY` | (findes allerede til hubben) | DMZ-adresse og reverse proxyens adresse |
|
||||||
| `FORUM_PORT` | `8082` | Port på DMZ-adressen |
|
| `FORUM_PORT` | `8082` | Valgfri. Porten på appserverens DMZ-adresse, som reverse proxyen sender forummet til |
|
||||||
| `FORUM_ADMIN_EMAIL` | din adresse | Bliver administrator ved tilmelding |
|
| `FORUM_ADMIN_EMAIL` | din adresse | Bliver administrator ved tilmelding |
|
||||||
| `FORUM_SMTP_ADDRESS`, `FORUM_SMTP_USER`, `FORUM_SMTP_PASSWORD` | | Mailserver (STARTTLS) |
|
| `FORUM_SMTP_ADDRESS`, `FORUM_SMTP_USER`, `FORUM_SMTP_PASSWORD` | | Mailserver (STARTTLS) |
|
||||||
| `FORUM_SMTP_PORT` | `587` | Valgfri |
|
| `FORUM_SMTP_PORT` | `587` | Valgfri |
|
||||||
|
|
@ -80,9 +80,9 @@ Webstedet er en lille ASP.NET Core-applikation uden database. Det viser:
|
||||||
- **Dokumentation:** Filerne i `docs/`, bygget ind i programmet. Links mellem dokumenterne bliver til sider, og links til andre filer i repositoriet går til Forgejo. HTML i Markdown vises ikke.
|
- **Dokumentation:** Filerne i `docs/`, bygget ind i programmet. Links mellem dokumenterne bliver til sider, og links til andre filer i repositoriet går til Forgejo. HTML i Markdown vises ikke.
|
||||||
- **Forum:** De seneste emner fra forummets offentlige `/latest.json`. Hvis forummet er nede, virker webstedet stadig.
|
- **Forum:** De seneste emner fra forummets offentlige `/latest.json`. Hvis forummet er nede, virker webstedet stadig.
|
||||||
|
|
||||||
`deploy-community.yml` bygger og starter webstedet ved hvert push til `main`, der ændrer kode, dokumentation eller regler. Det kræver tre secrets:
|
`deploy-community.yml` bygger og starter webstedet ved hvert push til `main`, der ændrer kode, dokumentation eller regler. Det bruger disse secrets:
|
||||||
- `HOST_BIND` (findes allerede);
|
- `HOST_BIND` (findes allerede);
|
||||||
- `COMMUNITY_PORT`, fx `8081`;
|
- `COMMUNITY_PORT`: valgfri, standard `8081`;
|
||||||
- `COMMUNITY_CONTACT`: adressen til henvendelser om supportaftaler.
|
- `COMMUNITY_CONTACT`: adressen til henvendelser om supportaftaler.
|
||||||
|
|
||||||
Peg `sqlinsight.seosoft.dk` på `http://HOST_BIND:COMMUNITY_PORT` i reverse proxyen.
|
Peg `sqlinsight.seosoft.dk` på `http://HOST_BIND:COMMUNITY_PORT` i reverse proxyen.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue