
Γλώσσα 🇬🇷 Ελληνικά
Υπόβαθρο
Εισαγωγή
Ανάπτυξη
Αρχιτεκτονική
Εγκατάσταση & Ενσωμάτωση
Συμβουλές ασφάλειας
Φιλοξενία του FastComments επιτόπου
Το FastComments παρέχει αρκετές λύσεις για την ανάπτυξη. Η πιο συνηθισμένη περίπτωση είναι όπου φιλοξενούμε την εφαρμογή για εσάς.
Ωστόσο, κατανοούμε ότι ορισμένοι πελάτες δεν μπορούν να αποθηκεύσουν τις πληροφορίες τους στο cloud, και απαιτούν τη φιλοξενία όλων των δεδομένων τους επιτόπου.
Αυτή η τεκμηρίωση καλύπτει αυτή την περίπτωση χρήσης.
Τι περιλαμβάνεται 
FastComments On Prem σας επιτρέπει να αναπτύξετε τη λύση σχολιασμού σε πραγματικό χρόνο, συμπεριλαμβανομένων όλων των εργαλείων εποπτείας και διαχείρισης, στο δικό σας υλικό.
Αυτό σημαίνει ότι έχετε έλεγχο των δεδομένων σας, και το σύστημα σχολιασμού μπορεί να περιοριστεί στο τοπικό σας LAN ή στο εταιρικό δίκτυο.
Από πού να ξεκινήσετε 
Για να ξεκινήσετε την εγκατάσταση του FastComments On Prem, επικοινωνήστε μαζί μας.
Μόλις ολοκληρωθεί η ρύθμιση, μπορείτε πάντα να κατεβάσετε την πιο πρόσφατη εικόνα docker από τη σελίδα αδειοδότησης.
Παραδείγματα 
Απαιτούμενα Συστατικά
Για 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 |
Οι παραπάνω πίνακες είναι συντηρητικές εκτιμήσεις. Μπορεί να διαπιστώσετε ότι οι πραγματικές απαιτήσεις διαφέρουν ανάλογα με τη συγκεκριμένη διαμόρφωσή σας (μέγεθος σελίδων, όγκος σχολίων, κ.λπ).
Διαμόρφωση 
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 με το ακόλουθο παράδειγμα μορφής:

Στο παραπάνω παράδειγμα ορίζουμε ένα προεπιλεγμένο SMTP email transport που ονομάζεται mailgun. Επίσης ορίζουμε ένα ειδικό transport που το χρησιμοποιούμε συγκεκριμένα για emails @yahoo.com. Σε ορισμένα σενάρια είναι επιθυμητό να χρησιμοποιηθεί συγκεκριμένος πάροχος ή IP αποστολής για ένα domain προκειμένου να βελτιστοποιηθεί η παράδοση. Αυτό είναι προαιρετικό.
DocumentDB
Κατά τη σύνδεση με DocumentDB θα θελήσετε να ορίσετε MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem για συμβατότητα με τις προεπιλεγμένες ρυθμίσεις.
Χρόνος μη διαθεσιμότητας βάσης δεδομένων και λειτουργία συντήρησης 
Το 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, ωστόσο είναι κατάσταση που μπορεί να χαθεί οποιαδήποτε στιγμή χωρίς να προκαλέσει δυσλειτουργία στην εφαρμογή.
Σημειώστε ότι σε λειτουργία συντήρησης δεν μπορεί να γίνει σωστή αυθεντικοποίηση των νημάτων σχολίων, οπότε μόνο τα νήματα που θεωρούνται με ασφάλεια δημόσια υποστηρίζονται περιοδικά σε αντίγραφα ασφαλείας.
Σε λειτουργία συντήρησης πολλές λειτουργίες δεν είναι διαθέσιμες.
Κλειδώματα 
Όπως κάθε κατανεμημένο σύστημα, το FastComments χρειάζεται κάποιο τρόπο για να κλειδώνει πόρους και διαδικασίες. Αυτά τα κλειδώματα μπορούν να παρακολουθηθούν μέσω του /locks-in-progress endpoint.
Για παράδειγμα, εδώ είναι το endpoint στο shard μας στις ΗΠΑ.
Αυτό μπορεί να είναι χρήσιμο για να δει κανείς γιατί το σύστημα έχει «κολλήσει» ή βρίσκεται υπό φόρτο. Αν, για παράδειγμα, κάποιος SRE θέλει να δει γιατί το σύστημα έχει υψηλό φορτίο CPU, θα μπορούσε να ελέγξει αυτό το endpoint για να βρει το όνομα του cron που προκαλεί προβλήματα.
Κώδικας widget 
Τα αποσπάσματα κώδικα του front end και οι βιβλιοθήκες για On-Prem είναι τα ίδια με το προϊόν SaaS. Ωστόσο, πρέπει να ορίσετε το apiHost και τη σωστή διαδρομή του script:

Το παραπάνω είναι ένα πολύ απλό παράδειγμα. Μπορούμε επίσης να χρησιμοποιήσουμε τις επίσημες βιβλιοθήκες React, Angular, Vue, Svelte κ.ά.
API 
Το API μπορεί να προσπελαστεί όπως ακριβώς και το συνηθισμένο προϊόν SaaS, καθώς θα συνδεθείτε στον πίνακα ελέγχου On-Prem για να δημιουργήσετε κλειδιά API και να χρησιμοποιήσετε αυτά τα κλειδιά για να αποκτήσετε πρόσβαση στο API.
Το API endpoints είναι τα ίδια on-prem όπως και για το προϊόν SaaS.
Πολλαπλοί τομείς 
Η εγκατάσταση FastComments On-Prem σας μπορεί να εξυπηρετεί σχόλια σε πολλούς εσωτερικούς τομείς, για παράδειγμα app.mycorp.org και hr.mycorp.org. Μπορείτε να τα διαμορφώσετε
ξεχωριστά αλλά να τα φιλοξενήσετε σε μία εγκατάσταση On-Prem δημιουργώντας ξεχωριστούς Customization Rules για να ρυθμίσετε τις ατομικές τους συμπεριφορές.
Ασφάλεια 
Εξ ορισμού, το FastComments υποθέτει ότι τα νήματα σχολίων είναι δημόσια. Για να προσθέσετε ένα επίπεδο ασφάλειας, συνιστάται να δημιουργήσετε έναν κανόνα προσαρμογής με την
Requires SSO επιλογή επιλεγμένη. Αυτό θα κάνει όλα τα endpoints που σχετίζονται με τα σχόλια να απαιτούν έλεγχο ταυτότητας SSO.
Συμπερασματικά
Έχετε φτάσει στο τέλος της τεκμηρίωσης On Prem. Ενημερώστε μας για τυχόν επιπλέον σχόλια ή ερωτήματα που έχετε παρακάτω - μπορείτε επίσης να επικοινωνήσετε μαζί μας μέσω της Σελίδας Υποστήριξης.