# 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:///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:` | (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.