FastComments.com

Φιλοξενία του FastComments επιτόπου

Το FastComments παρέχει διάφορες λύσεις για ανάπτυξη. Η πιο συνηθισμένη περίπτωση είναι εκεί που εμείς φιλοξενούμε την εφαρμογή για εσάς.

Ωστόσο, κατανοούμε ότι κάποιοι πελάτες δεν μπορούν να αποθηκεύουν τις πληροφορίες τους στο cloud, και απαιτούν τη φιλοξενία όλων των δεδομένων τους τοπικά.

Αυτή η τεκμηρίωση καλύπτει αυτή την περίπτωση χρήσης.


Τι περιλαμβάνεται Internal Link


FastComments On Prem σας επιτρέπει να αναπτύξετε τη λύση σχολιασμού σε πραγματικό χρόνο μας, συμπεριλαμβανομένων όλων των εργαλείων εποπτείας και διαχείρισης, στο δικό σας υλικό.

Αυτό σημαίνει ότι έχετε τον έλεγχο των δεδομένων σας, και το σύστημα σχολιασμού μπορεί να περιοριστεί στο τοπικό σας LAN ή στο εταιρικό δίκτυο.


Κόμβοι Internal Link

Απαιτούμενα Συστατικά

Για επιτόπια (On-Prem), το FastComments αποτελείται απλώς από έναν διακομιστή εφαρμογής και μια βάση δεδομένων. Έχουμε απλοποιήσει την ανάπτυξη έτσι ώστε η εφαρμογή να μπορεί να εξυπηρετεί όλη την κίνηση απευθείας χωρίς την προσθήκη άλλων στοιχείων.

Ο διακομιστής εφαρμογής παρέχεται σε εικόνα Docker και μπορεί να αναπτυχθεί με οποιαδήποτε λύση διαχείρισης κοντέινερ.

Η βάση δεδομένων, MongoDB, μπορεί να τρέξει τοπικά ή να φιλοξενηθεί από άλλον πάροχο όπως AWS DocumentDB ή MongoDB Atlas.

Το FastComments αυτή τη στιγμή δοκιμάζεται με MongoDB 7, ωστόσο στοχεύουμε σε συμβατότητα με DocumentDB για να διευκολύνουμε την ανάπτυξη.

Μεγέθη Περιπτώσεων

Θα διαπιστώσετε ότι το FastComments είναι αρκετά βελτιστοποιημένο και δεν απαιτεί μεγάλες μηχανές για την ίδια την εφαρμογή ώστε να διατηρεί χαμηλά P99s.

Όλες οι εργασίες batch και cron χρησιμοποιούν streaming για να περιορίσουν τη συνολική χρήση μνήμης.

Οι παρακάτω πίνακες για τον διακομιστή εφαρμογής και τη βάση δεδομένων μπορούν να βοηθήσουν στον καθορισμό μεγέθους.

Παραδείγματα Διακομιστή Εφαρμογής

Ταυτόχρονοι ΧρήστεςΣυνολικοί CPU του ClusterΣυνολική Μνήμη του Cluster
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

Για παράδειγμα, ένας μόνος πυρήνας που εξυπηρετεί περίπου 100 νήματα σχολίων το δευτερόλεπτο συνήθως δεν χρησιμοποιεί ποτέ περισσότερα από 250mb RSS.

Παραδείγματα Διακομιστή Βάσης Δεδομένων

Το μέγεθος της βάσης δεδομένων εξαρτάται από το μέγεθος του working set (το ποσό δεδομένων που προσπελάζετε σε μια δεδομένη χρονική στιγμή), καθώς και από τις ταυτόχρονες αιτήσεις.

Το FastComments είναι σχετικά φιλικό προς το Mongo, καθώς για τα "hot" ερωτήματα χρησιμοποιεί index hints, streaming cursors, και έχει όρια ταυτόχρονης εκτέλεσης σε διάφορες περιοχές για να αποτρέψει την υπερφόρτωση των downstream συστημάτων.

Παρακάτω είναι ένας γενικός οδηγός για τα μεγέθη των περιπτώσεων βάσης δεδομένων. Σημειώστε ότι αυτό ισχύει ανά περίπτωση, όχι για τους συνολικούς πόρους στο cluster.

Ταυτόχρονοι ΧρήστεςΑποθηκευμένα ΣχόλιαCPUs ανά περίπτωσηΜνήμη ανά περίπτωση
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

Οι παραπάνω πίνακες είναι συντηρητικές εκτιμήσεις. Μπορεί να διαπιστώσετε ότι οι πραγματικές απαιτήσεις διαφέρουν ανάλογα με τη συγκεκριμένη διαμόρφωσή σας (μεγέθη σελίδων, όγκος σχολίων, κ.λπ).


Διαμόρφωση Internal Link

Το FastComments χρησιμοποιεί μεταβλητές περιβάλλοντος για διαμόρφωση. Η παρακάτω λίστα περιγράφει όλες τις υποστηριζόμενες μεταβλητές που σχετίζονται με την On-Prem.

ΜεταβλητήΠροεπιλογήΠληροφορίεςΑπαραίτητοΠαραδείγματα ή Έγκυρες Τιμές
NODE_ENVΤύπος περιβάλλοντος.Ναιproduction, dev
MONGO_URIURI σύνδεσης βάσης δεδομένων.Ναι
MONGO_ENABLE_SSLfalseΕνεργοποιεί τη χρήση SSL για σύνδεση στη βάση δεδομένων.Όχιtrue, false
MONGO_ENABLE_SSL_VALIDATEfalseΕνεργοποιεί την επαλήθευση του πιστοποιητικού έναντι της CA κατά τη σύνδεση στο Mongo.Όχιtrue, false
MONGO_SSL_CAMongo SSL CA pem αρχείο.Όχι/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAILEmail στο οποίο θα αποστέλλονται σημαντικές ειδοποιήσεις σχετικές με το σύστημα.Όχιadmin-group@bigcorp.com
IP_HASH_SALTSalt για hashing διευθύνσεων IP.Ναι
SESSION_SECRETΤο κλειδί που χρησιμοποιείται για την υπογραφή των συνεδριών.Ναι
SESSION_STORE_SECRETΤο κλειδί που χρησιμοποιείται για την υπογραφή/κατακερματισμό των συνεδριών στο storage. Πρέπει να είναι διαφορετικό από SESSION_SECRET.Ναι
HOSTNAMEΤο hostname όπου έχει αναπτυχθεί το FastComments (π.χ. admin dashboard). Δεν πρέπει να περιλαμβάνει θύρα ή πρωτόκολλο.Ναιexample.com
HOST_ADDRΜια προσβάσιμη URI όπου έχει αναπτυχθεί το FastComments (π.χ. admin dashboard).Ναιhttps://example.com
EMAIL_CONFIG_PATHΜια διαδρομή στο τοπικό σύστημα αρχείων όπου βρίσκεται η διαμόρφωση email (SMTP, αντιστοιχίσεις domain/provider, κ.λπ.).Ναι/my/config.json
EMAIL_DEFAULT_FROM_NAMEFastComments RobotEmail "From Name" header.ΌχιMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngEmail footer logo.Όχιhttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTOverride για το "defaultTransport" στο EMAIL_CONFIG_PATH. Χρήσιμο για ανάπτυξη του ίδιου αρχείου ρύθμισης σε διαφορετικά περιβάλλοντα.ΌχιmyTransportName
ON_PREM_TENANT_IDΤο ID του λογαριασμού σας στο fastcomments.com. Χρησιμοποιείται για την εγγραφή του license key.Όχι
ON_PREM_LICENSE_KEYΈνα on-prem license key.Όχι
GIPHY_API_KEYGiphy API Key. Αν δεν καθοριστεί, πρέπει να δημιουργήσετε κανόνα ρύθμισης που να απενεργοποιεί τον επιλογέα gif.Όχι
GIPHY_DEFAULT_RATINGpgΧρησιμοποιείται για ενσωμάτωση με το Giphy. Μπορεί επίσης να παρακαμφθεί με κανόνες εξατομίκευσης του widget.Όχιg, pg, pg-13, r
OPENAI_SECRET_KEYΧρησιμοποιείται για λειτουργίες με OpenAI, όπως προαιρετικός εντοπισμός spam βασισμένος σε GPT.Όχι
CDN_HOST_ADDRΤο hostname από όπου θα ανακτώνται τα assets. Προεπιλογή στην τιμή του HOSTNAME.Όχιexample.com
LARGE_FILE_HOST_ADDRΤο hostname από όπου ανακτώνται μεγάλα αρχεία (π.χ. εξαγωγές). Προεπιλογή στην τιμή του CDN_HOST_ADDR.Όχιexample.com
LARGE_FILE_LOCATION_TYPElocal_diskΠού θα αποθηκεύονται μεγάλα αρχεία, όπως εξαγωγές.Όχιlocal_disk, s3
FROM_EMAIL_HOSTΤο hostname από το οποίο θα αποστέλλονται τα emails.Όχιexample.com
COOKIE_IDfastcomments.sidΤο όνομα του cookie του fastcomments.Όχι
COOKIE_HOSTNAME.fastcomments.comΗ τιμή του πεδίου "hostname" του cookie. Συνιστάται να προστεθεί προθέμα τελείας.Όχι.example.com
S3_ACCESS_KEYΧρησιμοποιείται για ανέβασμα αρχείων από χρήστες, avatars, κ.λπ. Προεπιλογή στο τοπικό FS αν δεν οριστεί.Όχι
S3_SECRET_KEYΧρησιμοποιείται για ανέβασμα αρχείων από χρήστες, avatars, κ.λπ.Όχι
S3_REGIONΧρησιμοποιείται για ανέβασμα αρχείων από χρήστες, avatars, κ.λπ.Όχι
S3_BUCKETΧρησιμοποιείται για ανέβασμα αρχείων από χρήστες, avatars, κ.λπ.Όχι
S3_HOSTΧρησιμοποιείται για ανέβασμα αρχείων από χρήστες, avatars, κ.λπ.Όχι
CACHE_DIRΤοποθεσία για αποθήκευση προαιρετικού offline cache, για όταν η DB δεν είναι διαθέσιμη. Ενημερώνεται περιοδικά με τα 100 κορυφαία νήματα σχολίων.Όχι
BACKUP_DIRΤοποθεσία για αποθήκευση δεδομένων όταν η DB δεν είναι διαθέσιμη. Αν ένα σχόλιο υποβληθεί όταν η DB δεν είναι διαθέσιμη, αποθηκεύεται εδώ και επεξεργάζεται αργότερα.Όχι

Σημειώστε ότι όλες οι μεταβλητές που σχετίζονται με domain χρησιμοποιούν την κατάληξη _HOST ή _ADDR. Η διαφορά είναι:

  • _HOST: example.com
  • _ADDR: https://example.com

Το EMAIL_CONFIG_PATH πρέπει να περιέχει μια διαδρομή προς ένα αρχείο JSON με το ακόλουθο παράδειγμα μορφής:

Ρυθμίσεις Email
Copy Copy
1
2{
3 "defaultDKIM": {
4 "domainName": "mycompany.org",
5 "keySelector": "2024",
6 "privateKey": "-----BEGIN PRIVATE KEY-----\nABCDEFG\n-----END PRIVATE KEY-----"
7 },
8 "providerTransports": {
9 "yahoo.com": "specialTransport"
10 },
11 "defaultTransport": "mailgun",
12 "transports": {
13 "mailgun": {
14 "host": "smtp.mailgun.org",
15 "port": 587,
16 "secure": false,
17 "auth": {
18 "user": "admin@somewhere.com",
19 "pass": "password"
20 },
21 "tls": {
22 "ciphers": "SSLv3"
23 }
24 },
25 "specialTransport": {
26 "host": "smtp.someplace.org",
27 "port": 587,
28 "secure": false,
29 "auth": {
30 "user": "admin@example.com",
31 "pass": "password"
32 },
33 "tls": {
34 "ciphers": "SSLv3"
35 }
36 }
37 }
38}
39

Στο παραπάνω παράδειγμα ορίζουμε έναν προεπιλεγμένο μεταφορέα email SMTP με όνομα mailgun. Επίσης ορίζουμε έναν ειδικό μεταφορέα που χρησιμοποιείται ειδικά για emails @yahoo.com. Σε ορισμένα σενάρια είναι επιθυμητό να χρησιμοποιηθεί συγκεκριμένος πάροχος ή διεύθυνση IP αποστολής για ένα domain προκειμένου να βελτιωθεί η παράδοση. Αυτό είναι προαιρετικό.

DocumentDB

Όταν συνδέεστε στο DocumentDB θα θέλετε να ορίσετε MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem για να είστε συμβατοί με τις προεπιλεγμένες ρυθμίσεις.


Διακοπή λειτουργίας της βάσης δεδομένων και λειτουργία συντήρησης Internal Link


Το FastComments υποστηρίζει αυτόματη λειτουργία συντήρησης. Αν η βάση δεδομένων παραμείνει εκτός λειτουργίας, μπορεί να συνεχίσει να εξυπηρετεί δημοφιλή νήματα σχολίων.

Επιπλέον, σε λειτουργία συντήρησης, όλα τα σχόλια αποθηκεύονται στο BACKUP_DIR. Θα υποβληθούν σε επεξεργασία (ελεγχθούν για spam, κ.λπ.) και θα αποθηκευτούν μόλις το σύστημα επιστρέψει σε λειτουργία.

Το κάνει αυτό προσδιορίζοντας, κάθε ώρα, τα 100 πιο δημοφιλή νήματα σχολίων και αποθηκεύοντας προσωρινά το περιεχόμενό τους στον δίσκο. Ο προσδιορισμός των κορυφαίων 100 νημάτων γίνεται ήδη από προ-υπολογισμένη κατάσταση, οπότε δεν αποτελεί βαριά περιοδική εργασία.

Αυτό είναι εντελώς προαιρετικό και ενεργοποιείται μόνο αν έχουν οριστεί τα CACHE_DIR και BACKUP_DIR. Αυτό, φυσικά, καθιστά τους κόμβους της εφαρμογής καταστάσιμους, ωστόσο πρόκειται για κατάσταση που μπορεί να χαθεί ανά πάσα στιγμή χωρίς να προκαλέσει δυσλειτουργία στην εφαρμογή.

Σημειώστε ότι σε λειτουργία συντήρησης δεν είναι δυνατή η σωστή αυθεντικοποίηση των νημάτων σχολίων, οπότε μόνο νήματα που θεωρούνται με ασφάλεια δημόσια γίνονται περιοδικά αντίγραφα ασφαλείας.

Σε λειτουργία συντήρησης πολλές λειτουργίες δεν είναι διαθέσιμες.


Κώδικας widget Internal Link

Τα αποσπάσματα κώδικα του frontend και οι βιβλιοθήκες για On-Prem είναι τα ίδια με το προϊόν SaaS. Ωστόσο, πρέπει να καθορίσετε apiHost και τη σωστή διαδρομή του script:

Κώδικας σχολίων για On Prem
Copy Copy
1
2<script async src="https://my.host.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.fcConfigs = [{
6 target: '#fastcomments-widget',
7 tenantId: "demo",
8 apiHost: "https://my.host.com"
9 // ... μπορείτε επίσης να περάσετε SSO payload κ.λπ.
10 }];
11</script>
12

Το παραπάνω είναι ένα πολύ απλό παράδειγμα. Μπορούμε επίσης να χρησιμοποιήσουμε τις επίσημες (1st-party) βιβλιοθήκες για React, Angular, Vue, Svelte κ.λπ.


Διεπαφή προγραμματισμού εφαρμογών (API) Internal Link

Το API μπορεί να προσπελαστεί όπως και το κανονικό προϊόν SaaS, δηλαδή θα συνδεθείτε στον πίνακα ελέγχου On-Prem για να δημιουργήσετε API keys και να χρησιμοποιήσετε αυτά τα keys για να αποκτήσετε πρόσβαση στο API. Το API endpoints είναι τα ίδια on-prem όπως και για το προϊόν SaaS.

Πολλαπλοί τομείς Internal Link

Η On-Prem εγκατάσταση του FastComments μπορεί να εξυπηρετεί σχόλια σε πολλούς εσωτερικούς τομείς, για παράδειγμα app.mycorp.org και hr.mycorp.org. Μπορείτε να τα διαμορφώσετε ξεχωριστά αλλά να τα φιλοξενήσετε σε μία εγκατάσταση On-Prem δημιουργώντας ξεχωριστούς Customization Rules για να ρυθμίσετε τις ατομικές τους συμπεριφορές.

Ασφάλεια Internal Link

Κατ' προεπιλογή, το FastComments υποθέτει ότι τα νήματα σχολίων είναι δημόσια. Για να προσθέσετε ένα επίπεδο ασφάλειας, συνιστάται να δημιουργήσετε έναν Κανόνα Προσαρμογής με την Requires SSO επιλογή επιλεγμένη. Αυτό θα κάνει όλα τα endpoints που σχετίζονται με σχόλια να απαιτούν πιστοποίηση SSO.

Συμπερασματικά

Έχετε φτάσει στο τέλος της τεκμηρίωσης On Prem. Ενημερώστε μας για τυχόν επιπλέον σχόλια ή ερωτήσεις που έχετε παρακάτω - μπορείτε επίσης να επικοινωνήσετε μαζί μας μέσω της Σελίδα Υποστήριξης.