FastComments.com

Τοπική εγκατάσταση

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

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

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

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

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

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

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

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

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

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

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

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

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

Μεγέθη Instances

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

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

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

Instances Διακομιστή Εφαρμογής

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

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

Instances Διακομιστή Βάσης Δεδομένων

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

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

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

Ταυτόχρονοι ΧρήστεςΑποθηκευμένα ΣχόλιαCPUs Ανά InstanceΜνήμη Ανά 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 πιο δημοφιλή νήματα σχολίων και αποθηκεύοντας το περιεχόμενό τους στην cache στον δίσκο. Ο προσδιορισμός των 100 κορυφαίων νημάτων γίνεται ήδη από προϋπολογισμένη κατάσταση, οπότε δεν πρόκειται για μια βαριά περιοδική εργασία.

Αυτό είναι εντελώς προαιρετικό και ενεργοποιείται μόνο αν έχουν οριστεί τα 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. Ενημερώστε μας για τυχόν επιπλέον σχόλια ή ερωτήματα που έχετε παρακάτω - μπορείτε επίσης να επικοινωνήσετε μαζί μας μέσω της Σελίδας Υποστήριξης.