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 Users Total Cluster CPUs Total Cluster Memory
100 1 256mb
1K 2 512mb
10K 8 1gb
100K 32 8gb
1M 64 64gb

Για παράδειγμα, ένας μεμονωμένος πυρήνας που εξυπηρετεί περίπου 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 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

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


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

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

Μεταβλητή Προεπιλογή Πληροφορίες Απαραίτητο Παραδείγματα ή Έγκυρες Τιμές
NODE_ENV Τύπος περιβάλλοντος. Ναι production, dev
MONGO_URI DB Connection URI. Ναι
MONGO_ENABLE_SSL false Ενεργοποιεί τη χρήση SSL για σύνδεση με τη βάση δεδομένων. Όχι true, false
MONGO_ENABLE_SSL_VALIDATE false Ενεργοποιεί την επαλήθευση του πιστοποιητικού έναντι του CA κατά τη σύνδεση με το Mongo. Όχι true, false
MONGO_SSL_CA Mongo SSL CA αρχείο pem. Όχι /path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL Email όπου πρέπει να αποστέλλονται σημαντικές ειδοποιήσεις συστήματος. Όχι admin-group@bigcorp.com
IP_HASH_SALT Salt για το 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_NAME FastComments 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_KEY Giphy API Key. Αν δεν καθοριστεί, θα πρέπει να δημιουργήσετε έναν κανόνα ρύθμισης που να απενεργοποιεί τον επιλογέα gif. Όχι
GIPHY_DEFAULT_RATING pg Χρησιμοποιείται για την ενσωμάτωση 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_TYPE local_disk Πού πρέπει να αποθηκεύονται μεγάλα αρχεία, όπως exports. Όχι local_disk, s3
FROM_EMAIL_HOST Το hostname από όπου πρέπει να αποστέλλονται τα email. Όχι example.com
COOKIE_ID fastcomments.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:

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

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