FastComments.com


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

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

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

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


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

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

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

Παραδείγματα Internal Link


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

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

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

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

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

Instance Sizes

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

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

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

Application Server Instances

Concurrent UsersTotal Cluster CPUsTotal Cluster Memory
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

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

Database Server Instances

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

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

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

Concurrent UsersComments StoredCPUs Per InstanceMemory Per Instance
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

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


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

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

ΜεταβλητήΠροεπιλογήΠληροφορίεςΑπαραίτητοΠαραδείγματα ή Έγκυρες Τιμές
NODE_ENVΤύπος περιβάλλοντος.Ναιproduction, dev
MONGO_URIDB Connection URI.Ναι
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Το κλειδί που χρησιμοποιείται για την υπογραφή των sessions.Ναι
SESSION_STORE_SECRETΤο κλειδί που χρησιμοποιείται για την υπογραφή/το hashing των sessions στην αποθήκευση. Πρέπει να είναι διαφορετικό από το SESSION_SECRET.Ναι
HOSTNAMEΤο hostname όπου έχει αναπτυχθεί το FastComments (π.χ. admin dashboard). Δεν πρέπει να περιλαμβάνει port ή πρωτόκολλο.Ναι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 RobotΚεφαλίδα "From Name" στα email.ΌχιΤο όνομα της εταιρείας μου
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.pngΛογότυπο στο υποσέλιδο του email.Όχιhttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTΑντικατάσταση για το "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 από όπου θα ανακτώνται μεγάλα αρχεία (όπως exports). Προεπιλογή στην τιμή του CDN_HOST_ADDR.Όχιexample.com
LARGE_FILE_LOCATION_TYPElocal_diskΠού πρέπει να αποθηκεύονται μεγάλα αρχεία, όπως exports.Όχιlocal_disk, s3
FROM_EMAIL_HOSTΤο hostname από όπου πρέπει να αποστέλλονται τα email.Όχιexample.com
COOKIE_IDfastcomments.sidΤο όνομα του cookie του fastcomments.Όχι
COOKIE_HOSTNAME.fastcomments.comΗ τιμή του πεδίου "hostname" του cookie. Συνιστάται η προεπιλογή με τελεία στην αρχή.Όχι.example.com
S3_ACCESS_KEYΧρησιμοποιείται για μεταφορτώσεις αρχείων χρηστών, avatar, κ.λπ. Προεπιλογή στο τοπικό FS αν δεν οριστεί.Όχι
S3_SECRET_KEYΧρησιμοποιείται για μεταφορτώσεις αρχείων χρηστών, avatar, κ.λπ.Όχι
S3_REGIONΧρησιμοποιείται για μεταφορτώσεις αρχείων χρηστών, avatar, κ.λπ.Όχι
S3_BUCKETΧρησιμοποιείται για μεταφορτώσεις αρχείων χρηστών, avatar, κ.λπ.Όχι
S3_HOSTΧρησιμοποιείται για μεταφορτώσεις αρχείων χρηστών, avatar, κ.λπ.Όχι
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

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

DocumentDB

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


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

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

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

Το κάνει αυτό με το να προσδιορίζει, κάθε ώρα, τα 100 πιο δημοφιλή νήματα σχολίων και να προσωρινεύει το περιεχόμενό τους στο δίσκο. Determining the top 100 threads is already done from pre-calculated state, so it is not a heavy periodic job.

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

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

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

Κώδικας widget Internal Link

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

Κώδικας σχολίων για 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 // ... μπορείτε επίσης να περάσετε payload SSO κ.λπ.
10 }];
11</script>
12

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

API Internal Link

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

Το API endpoints είναι τα ίδια on-prem όπως και για το προϊόν SaaS.

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

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

Ασφάλεια Internal Link

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


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

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