
Sprog 🇩🇰 Dansk
Baggrund
Kom godt i gang
Udrulning
Arkitektur
Installation og integration
Sikkerhedstips
Hosting af FastComments lokalt
FastComments tilbyder flere løsninger til udrulning. Det mest almindelige er, at vi hoster applikationen for dig.
Vi forstår dog, at nogle kunder ikke kan gemme deres oplysninger i skyen, og kræver, at alle deres data hostes på egne servere.
Denne dokumentation dækker dette brugsscenarie.
Hvad er inkluderet 
FastComments On Prem giver dig mulighed for at implementere vores live-kommentarløsning, inklusive alle moderations- og adminværktøjer, på din egen hardware.
Det betyder, at du har kontrol over dine data, og kommentarsystemet kan begrænses til dit lokale LAN eller virksomhedens netværk.
Hvor du skal starte 
For at komme i gang med at udrulle FastComments On Prem, kontakt os.
Når opsætningen er gennemført, kan du altid downloade det nyeste docker image fra licenssiden.
Instanser 
Nødvendige komponenter
For On-Prem består FastComments kun af en applikationsserver og en database. Vi har forenklet udrulningen, så applikationen kan håndtere al trafik direkte uden at tilføje andre komponenter.
Applikationsserveren leveres i et Docker-image og kan udrulles med enhver container management-løsning.
Databasen, MongoDB, kan køres selv eller hostes af en anden udbyder som AWS DocumentDB eller MongoDB Atlas.
FastComments er i øjeblikket testet med MongoDB 7, men vi sigter efter at være DocumentDB-kompatible for at lette udrulningen.
Instansstørrelser
Du vil opleve, at FastComments er ret veloptimeret og ikke kræver store maskiner for selve applikationen for at holde lave P99s.
Alle batch- og cron jobs bruger streaming for at begrænse det samlede hukommelsesforbrug.
Tabellerne nedenfor for applikationsserveren og databasen kan hjælpe med dimensionering.
Applikationsserverinstanser
| Concurrent Users | Total Cluster CPUs | Total Cluster Memory |
|---|---|---|
| 100 | 1 | 256mb |
| 1K | 2 | 512mb |
| 10K | 8 | 1gb |
| 100K | 32 | 8gb |
| 1M | 64 | 64gb |
For eksempel bruger en enkelt kerne, der håndterer omkring 100 kommentarsamtaler i sekundet, normalt aldrig mere end 250mb RSS.
Database-serverinstanser
Dimensionering af databasen afhænger af working set-størrelsen, hvilket er mængden af data, du tilgår på et givent tidspunkt, samt samtidige forespørgsler.
FastComments er ret venlig mod Mongo, idet den for de varme forespørgsler bruger index hints, streaming cursors og har concurrency-begrænsninger på forskellige områder for at forhindre overbelastning af downstream-systemer.
Nedenstående er en generel retningslinje for database-instansstørrelser. Bemærk, at dette er pr. instans, ikke de samlede ressourcer i clustret.
| Concurrent Users | Comments Stored | CPUs Per Instance | Memory Per Instance |
|---|---|---|---|
| 100 | 1k | 1 | 256mb |
| 1K | 5k | 2 | 512mb |
| 10K | 100k | 8 | 2gb |
| 100K | 500k | 16 | 8gb |
| 1M | 5M | 32 | 32gb |
Ovenstående tabeller er konservative estimater. Du kan opleve, at de faktiske krav varierer baseret på din specifikke konfiguration (side-størrelser, kommentarmængde osv).
Konfiguration 
FastComments bruger miljøvariabler til konfiguration. Følgende liste skitserer alle understøttede variabler, der er relevante for On-Prem.
| Variabel | Standard | Info | Påkrævet | Eksempler eller gyldige værdier |
|---|---|---|---|---|
| NODE_ENV | Miljøtype. | Ja | production, dev | |
| MONGO_URI | DB-forbindelses-URI. | Ja | ||
| MONGO_ENABLE_SSL | false | Aktiverer brug af SSL til at oprette forbindelse til databasen. | Nej | true, false |
| MONGO_ENABLE_SSL_VALIDATE | false | Aktiverer validering af certifikatet mod CA'en ved forbindelse til Mongo. | Nej | true, false |
| MONGO_SSL_CA | Mongo SSL CA pem-fil. | Nej | /path/to/some-cert.pem | |
| ADMIN_NOTIFICATIONS_EMAIL | E-mailadresse hvor vigtige systemrelaterede notifikationer sendes. | Nej | admin-group@bigcorp.com | |
| IP_HASH_SALT | Salt til hashing af IP-adresser. | Ja | ||
| SESSION_SECRET | Nøglen, der bruges til at signere sessioner. | Ja | ||
| SESSION_STORE_SECRET | Nøglen, der bruges til at signere/hash'e sessioner i storage. Skal være forskellig fra SESSION_SECRET. | Ja | ||
| HOSTNAME | Værtsnavnet hvor FastComments er deployeret (admin dashboard osv.). Skal IKKE inkludere port eller protokol. | Ja | example.com | |
| HOST_ADDR | En tilgængelig URI hvor FastComments er deployeret (admin dashboard osv.). | Ja | https://example.com | |
| EMAIL_CONFIG_PATH | En sti på det lokale filsystem hvor e-mailkonfigurationen (SMTP, domæne/udbyder-tilknytninger mv.) ligger. | Ja | /my/config.json | |
| EMAIL_DEFAULT_FROM_NAME | FastComments Robot | E-mailens "From Name"-header. | Nej | My Company Name |
| EMAIL_DEFAULT_FOOTER_LOGO | /images/logo-32-2020-01.png | Logo i e-mailens sidefod. | Nej | https://exmaple.com/footer.png |
| EMAIL_DEFAULT_TRANSPORT | Override for "defaultTransport" i EMAIL_CONFIG_PATH. Nyttigt til at deploye samme konfigurationsfil til forskellige miljøer. | Nej | myTransportName | |
| ON_PREM_TENANT_ID | ID'et for din konto på fastcomments.com. Bruges til at registrere din licensnøgle. | Nej | ||
| ON_PREM_LICENSE_KEY | En on-prem licensnøgle. | Nej | ||
| GIPHY_API_KEY | Giphy API-nøgle. Hvis ikke angivet, bør du oprette en konfigurationsregel som deaktiverer GIF-vælgeren. | Nej | ||
| GIPHY_DEFAULT_RATING | pg | Bruges til giphy-integration. Kan også overskrives med widget-tilpasningsregler. | Nej | g, pg, pg-13, r |
| OPENAI_SECRET_KEY | Bruges til openai-drevne funktioner som valgfri GPT-baseret spamdetektion. | Nej | ||
| CDN_HOST_ADDR | Værtsnavnet hvor assets hentes fra. Standard er værdien af HOSTNAME. | Nej | example.com | |
| LARGE_FILE_HOST_ADDR | Værtsnavnet hvor store filer (som eksporter) hentes fra. Standard er værdien af CDN_HOST_ADDR. | Nej | example.com | |
| LARGE_FILE_LOCATION_TYPE | local_disk | Hvor store filer, såsom eksporter, skal gemmes. | Nej | local_disk, s3 |
| FROM_EMAIL_HOST | Værtsnavnet, som e-mails skal sendes fra. | Nej | example.com | |
| COOKIE_ID | fastcomments.sid | Navnet på fastcomments-cookien. | Nej | |
| COOKIE_HOSTNAME | .fastcomments.com | Værdien af cookieens "hostname"-felt. Anbefales at præfikse med punktum. | Nej | .example.com |
| S3_ACCESS_KEY | Bruges til brugeres filuploads, avatarer osv. Standard er lokalt filsystem hvis udefineret. | Nej | ||
| S3_SECRET_KEY | Bruges til brugeres filuploads, avatarer osv. | Nej | ||
| S3_REGION | Bruges til brugeres filuploads, avatarer osv. | Nej | ||
| S3_BUCKET | Bruges til brugeres filuploads, avatarer osv. | Nej | ||
| S3_HOST | Bruges til brugeres filuploads, avatarer osv. | Nej | ||
| CACHE_DIR | Placering til at gemme en valgfri offline-cache, til når DB ikke er tilgængelig. Periodisk opdateret med top 100 kommentartråde. | Nej | ||
| BACKUP_DIR | Placering til at gemme data når DB ikke er tilgængelig. Hvis en kommentar indsendes når DB ikke er tilgængelig, går den herhen og behandles senere. | Nej |
Bemærk at alle domænerelaterede variabler bruger suffikset _HOST eller _ADDR. Forskellen er:
_HOST:example.com_ADDR:https://example.com
The EMAIL_CONFIG_PATH should contain a path to a JSON file with the following example format:

I ovenstående eksempel definerer vi en standard SMTP e-mailtransport kaldet mailgun. Vi definerer også en specialtransport, som vi bruger specifikt til @yahoo.com-e-mails. I nogle scenarier kan det være ønskeligt at bruge en specifik udbyder eller afsender-IP for et domæne for at finjustere levering. Dette er valgfrit.
DocumentDB
Når du opretter forbindelse til DocumentDB bør du angive MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem for at være kompatibel med standardindstillingerne.
Database-nedetid og vedligeholdelsestilstand 
FastComments understøtter en automatisk vedligeholdelsestilstand. Hvis databasen går ned, kan den fortsat levere populære kommentartråde.
Derudover gemmes i vedligeholdelsestilstand alle kommentarer i BACKUP_DIR. De vil blive behandlet (tjekket for spam osv.) og gemt, når systemet er online igen.
Dette gøres ved hver time at afgøre de 100 mest populære kommentartråde og cache deres indhold på disken. Afgørelsen af de 100 bedste tråde er allerede udført ud fra forudberegnet tilstand, så det er ikke et tungt periodisk job.
Dette er fuldstændig valgfrit og aktiveres kun, hvis CACHE_DIR og BACKUP_DIR er sat. Dette gør naturligvis applikationsnoderne tilstandsholdende, men det er en tilstand, der
kan gå tabt når som helst uden at få applikationen til at opføre sig forkert.
Bemærk, at korrekt autentificering af kommentartråde ikke kan foretages i vedligeholdelsestilstand, så kun tråde, der med sikkerhed anses for offentlige, bliver periodisk sikkerhedskopieret.
I vedligeholdelsestilstand er mange funktioner ikke tilgængelige.
Låse 
Som ethvert distribueret system har FastComments brug for en måde at låse ressourcer og procedurer på. Disse låse kan overvåges via /locks-in-progress-endepunktet.
For eksempel, her er endepunktet på vores US shard.
Dette kan være nyttigt for at se, hvorfor systemet går i stå eller er under belastning. Hvis en SRE for eksempel vil se, hvorfor systemet oplever høj CPU-belastning, kan de tjekke dette endepunkt for at få navnet på den cron, der opfører sig forkert.
Widget-kode 
Front end-kodeuddragene og bibliotekerne til On-Prem er de samme som SaaS-produktet. Du skal dog angive apiHost og den korrekte scriptsti:

Ovenstående er et meget simpelt eksempel. Vi kan også bruge førsteparts React-, Angular-, Vue-, Svelte- osv. biblioteker.
API 
API'et kan tilgås på samme måde som det almindelige SaaS-produkt, idet du logger ind på On-Prem dashboardet for at oprette API-nøgler og bruge disse nøgler til at få adgang til API'et. API'et endpoints er de samme on-prem som de er for SaaS-produktet.
Flere domæner 
Din On-Prem FastComments-installation kan levere kommentarer til flere interne domæner, for eksempel app.mycorp.org og hr.mycorp.org. Du kan konfigurere disse
separat, men hoste dem på én On-Prem-opsætning ved at oprette separate tilpasningsregler for at konfigurere deres individuelle adfærd.
Afslutning
Du er nået til slutningen af On Prem-dokumentationen. Fortæl os, hvilke yderligere kommentarer eller spørgsmål du har nedenfor - du kan også kontakte os via Support-siden.