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
- 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
81 lines
5.2 KiB
Markdown
81 lines
5.2 KiB
Markdown
# 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.
|