sqlinsight-pro/docs/community.md
Claude be35e50335
Some checks are pending
CI / Integration (mcr.microsoft.com/mssql/server:2025-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:2017-latest) (push) Blocked by required conditions
CI / Build og unit tests (push) Successful in 1m1s
deploy hub / deploy (push) Successful in 19s
CI / MSI-installer (push) Successful in 36s
Community-websted og Discourse-forum
- src/SQLInsight.Community: offentligt websted med forside, funktioner, download
  af signerede udgivelser (med SHA-256), dokumentation fra docs/, SQL Server-
  versioner fra den nyeste signerede regelpakke, regler og supportaftaler.
  Viser de seneste forumemner. Streng CSP, ingen login, ingen database.
- deploy/forum: Discourse-opsætning (app.yml til discourse_docker, dansk
  sprog og søgning), install.sh og configure.py, der idempotent opsætter
  kategorier, løste svar, velkomstemne og indstillinger via API'et.
- deploy/community: Dockerfile og docker compose med Caddy til TLS.
- Webbrugerfladen linker til forum, dokumentation og support på webstedet
  (SQLInsight:Web:ForumUrl og CommunityUrl).
- Udgivelsesfiler hedder sqlinsight-<version>-<platform>.<ext>.
- Tests: sider, 404, signerede og manipulerede feeds, forum (også nede),
  dokumentationslinks og regler.
- docs/community.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E3EExwndy8Z22EK2Qpt6BK
2026-09-29 13:45:06 +00:00

5.2 KiB

Community-websted og forum

SQLInsight Pro har to offentlige websteder. Begge drives af SEOSoft:

Websted Adresse (eksempel) Hvad
Community-webstedet https://sqlinsight.seosoft.dk Forside, funktioner, download af signerede udgivelser, dokumentation, SQL Server-versioner og supportdatoer, regler og supportaftaler. Projektet src/SQLInsight.Community.
Forummet https://forum.sqlinsight.seosoft.dk Discourse på dansk: spørgsmål og svar (med løste svar), installation og drift, performance, regler, idéer og annonceringer.

Adresserne er eksempler. Ret dem i deploy/forum/app.yml, deploy/community/docker-compose.yml og i webbrugerfladens SQLInsight:Web:CommunityUrl og SQLInsight:Web:ForumUrl.

Kør de to på hver sin server (eller VM). Discourse vil selv eje port 80 og 443 og er svær at dele en server med.

Forummet (Discourse)

Discourse installeres med den officielle discourse_docker-launcher. Det er den eneste måde, Discourse understøtter.

  1. Server: Ubuntu LTS eller Debian, 2 GB RAM (4 GB anbefales), 2 CPU'er og 20 GB disk.

  2. DNS: Opret en A-post (og evt. AAAA) for forummets navn, der peger på serveren.

  3. Mail: Discourse kan ikke fungere uden SMTP. Tilmelding, notifikationer og nulstilling af adgangskode sker på mail. Brug en rigtig mailudbyder med SPF og DKIM for afsenderdomænet.

  4. Konfiguration: Udfyld værdierne markeret CHANGE i deploy/forum/app.yml: værtsnavn, administratoradresse, SMTP og Let's Encrypt-adresse.

  5. Installation: Kør sudo deploy/forum/install.sh. Scriptet:

    • stopper, hvis der stadig står eksempelværdier;
    • installerer Docker, hvis det mangler;
    • kloner discourse_docker til /var/discourse og kopierer app.yml på plads;
    • kører ./launcher rebuild app. Det tager 10-15 minutter.
  6. Administrator: Åbn forummet, og opret en bruger med en af adresserne i DISCOURSE_DEVELOPER_EMAILS. Den bliver administrator.

  7. Opsætning som kode: Lav en midlertidig API-nøgle (scriptet skriver kommandoen), og kør:

    DISCOURSE_URL=https://forum.sqlinsight.seosoft.dk DISCOURSE_API_KEY=... \
    COMMUNITY_URL=https://sqlinsight.seosoft.dk CONTACT_EMAIL=support@... \
    python3 deploy/forum/configure.py
    

    configure.py gør følgende:

    • sætter titel, beskrivelser, dansk sprog, tags og løste svar (pluginnet solved følger med Discourse);
    • opretter kategorierne med beskrivelser. Kun medarbejdere kan skrive i Annonceringer;
    • opretter og fastgør et velkomstemne;
    • skjuler Discourses engelske standardemne.

    Scriptet kan køres igen. Det ændrer kun det, der afviger. Slet API-nøglen bagefter under Admin → API.

Drift:

  • Opdatering: cd /var/discourse && git pull && ./launcher rebuild app, eller via /admin/upgrade.
  • Backup: Discourse tager dagligt backup til /var/discourse/shared/standalone/backups. Slå upload til S3 eller kopiering væk fra serveren til under Admin → Backups.
  • Logge: ./launcher logs app.

Forslag til moderation:

  • Lad SEOSoft-medarbejdere have rollen moderator.
  • Markér det bedste svar som løsning, så svaret kan findes igen.
  • Kunder med supportaftale skal bruge mail- eller telefonsupport til sager med kundedata. Forummet er offentligt.

Community-webstedet

Webstedet er en lille ASP.NET Core-applikation uden database. Det viser:

  • Udgivelser: Kun udgivelser fra det signerede opdateringsfeed med en gyldig SEOSoft-signatur vises. Webstedet viser altså præcis det, agenterne ville installere, med SHA-256 for hver fil.
  • SQL Server-versioner: Seneste CU'er og supportstatus, fra den nyeste signerede regelpakke i feedet.
  • 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.

Kør det med Docker på sin egen server. Caddy henter og fornyr selv TLS-certifikatet:

cd deploy/community
COMMUNITY_HOST=sqlinsight.seosoft.dk COMMUNITY_CONTACT=salg@... docker compose up -d
Indstilling (SQLInsight:Community:…) Standard Betydning
Feed (ingen) Det signerede opdateringsfeed. Normalt hubbens https://<hub>/updates/, eller en mappe. Uden feed vises ingen udgivelser, og versionssiden bruger den indbyggede regelpakke.
ForumUrl (ingen) Forummets adresse. Bruges til links, /forum og de seneste emner.
SourceUrl Forgejo-repositoriet Link til kildekoden og til filer, som dokumentationen henviser til.
ContactEmail salg@example.com Adressen på supportsiden. Skal sættes.
TrustedKeys:<id> (ingen) Offentlige nøgler ud over de indbyggede. Brug samme værdi som for agenterne.
CacheFor 00:10:00 Hvor længe feed og forumemner caches.

Webstedet sender strenge sikkerhedsheadere (CSP uden inline-scripts og -styles, X-Frame-Options: DENY). Det har ingen login og gemmer ingen data om besøgende.

Uden Docker: dotnet publish src/SQLInsight.Community -c Release. Kør det derefter som en Windows-tjeneste eller en systemd-tjeneste bag IIS, nginx eller Caddy.