
Γλώσσα 🇬🇷 Ελληνικά
Υπόβαθρο
Εισαγωγή
Ανάπτυξη
Αρχιτεκτονική
Εγκατάσταση & Ενσωμάτωση
Συμβουλές ασφάλειας
Τοπική εγκατάσταση
Φιλοξενία του FastComments επιτόπου
Το FastComments παρέχει αρκετές λύσεις για την ανάπτυξη. Η πιο συνηθισμένη περίπτωση είναι όπου φιλοξενούμε την εφαρμογή για εσάς.
Ωστόσο, κατανοούμε ότι ορισμένοι πελάτες δεν μπορούν να αποθηκεύσουν τις πληροφορίες τους στο cloud, και απαιτούν τη φιλοξενία όλων των δεδομένων τους επιτόπου.
Αυτή η τεκμηρίωση καλύπτει αυτή την περίπτωση χρήσης.
Τι περιλαμβάνεται 
FastComments On Prem σας επιτρέπει να αναπτύξετε τη λύση σχολιασμού σε πραγματικό χρόνο, συμπεριλαμβανομένων όλων των εργαλείων εποπτείας και διαχείρισης, στο δικό σας υλικό.
Αυτό σημαίνει ότι έχετε έλεγχο των δεδομένων σας, και το σύστημα σχολιασμού μπορεί να περιοριστεί στο τοπικό σας LAN ή στο εταιρικό δίκτυο.
Από πού να ξεκινήσετε 
Για να ξεκινήσετε την εγκατάσταση του FastComments On Prem, επικοινωνήστε μαζί μας.
Μόλις ολοκληρωθεί η ρύθμιση, μπορείτε πάντα να κατεβάσετε την πιο πρόσφατη εικόνα docker από τη σελίδα αδειοδότησης.
Παραδείγματα 
Απαιτούμενα Συστατικά
Για το On-Prem, το FastComments αποτελείται απλώς από έναν διακομιστή εφαρμογής και μια βάση δεδομένων. Έχουμε απλοποιήσει την ανάπτυξη ώστε η εφαρμογή να μπορεί να εξυπηρετεί όλη την κίνηση απευθείας χωρίς την προσθήκη άλλων συστατικών.
Ο διακομιστής εφαρμογής παρέχεται σε εικόνα Docker και μπορεί να αναπτυχθεί με οποιαδήποτε λύση διαχείρισης containers.
Η βάση δεδομένων, MongoDB, μπορεί να εκτελείται τοπικά ή να φιλοξενείται από άλλον πάροχο όπως το AWS DocumentDB ή το MongoDB Atlas.
Το FastComments έχει δοκιμαστεί επί του παρόντος με MongoDB 7, ωστόσο στοχεύουμε στη συμβατότητα με DocumentDB για να διευκολύνουμε την ανάπτυξη.
Μεγέθη Instances
Θα διαπιστώσετε ότι το FastComments είναι αρκετά βελτιστοποιημένο και δεν απαιτεί μεγάλες μηχανές για την ίδια την εφαρμογή ώστε να διατηρούνται χαμηλά τα P99s.
Όλες οι εργασίες batch και cron χρησιμοποιούν streaming για να περιορίσουν τη συνολική χρήση μνήμης.
Οι παρακάτω πίνακες για τον διακομιστή εφαρμογής και τη βάση δεδομένων μπορούν να βοηθήσουν στον προσδιορισμό μεγέθους.
Instances Διακομιστή Εφαρμογής
| Ταυτόχρονοι Χρήστες | Συνολικές CPUs Cluster | Συνολική Μνήμη Cluster |
|---|---|---|
| 100 | 1 | 256mb |
| 1K | 2 | 512mb |
| 10K | 8 | 1gb |
| 100K | 32 | 8gb |
| 1M | 64 | 64gb |
Για παράδειγμα, ένας πυρήνας που εξυπηρετεί περίπου 100 νήματα σχολίων το δευτερόλεπτο συνήθως δεν χρησιμοποιεί ποτέ περισσότερα από 250mb RSS.
Instances Διακομιστή Βάσης Δεδομένων
Ο προσδιορισμός μεγέθους της βάσης δεδομένων εξαρτάται από το μέγεθος του working set, δηλαδή την ποσότητα δεδομένων που προσπελαύνετε σε ένα δεδομένο χρονικό σημείο, καθώς και από τα ταυτόχρονα αιτήματα.
Το FastComments είναι αρκετά «ευγενικό» με το Mongo, καθώς για τα hot queries χρησιμοποιεί index hints, streaming cursors, και έχει όρια συγχρονισμού σε διάφορα σημεία για την αποφυγή υπερφόρτωσης των downstream συστημάτων.
Τα παρακάτω αποτελούν γενική κατευθυντήρια γραμμή για τα μεγέθη των instances της βάσης δεδομένων. Σημειώστε ότι αυτό ισχύει ανά instance, όχι για τους συνολικούς πόρους στο cluster.
| Ταυτόχρονοι Χρήστες | Αποθηκευμένα Σχόλια | CPUs Ανά Instance | Μνήμη Ανά 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 πιο δημοφιλή νήματα σχολίων και αποθηκεύοντας το περιεχόμενό τους στην cache στον δίσκο. Ο προσδιορισμός των 100 κορυφαίων νημάτων γίνεται ήδη από προϋπολογισμένη κατάσταση, οπότε δεν πρόκειται για μια βαριά περιοδική εργασία.
Αυτό είναι εντελώς προαιρετικό και ενεργοποιείται μόνο αν έχουν οριστεί τα CACHE_DIR και BACKUP_DIR. Αυτό φυσικά κάνει τους κόμβους της εφαρμογής να διατηρούν κατάσταση (stateful), ωστόσο πρόκειται για κατάσταση
που μπορεί να χαθεί οποιαδήποτε στιγμή χωρίς να προκαλέσει δυσλειτουργία της εφαρμογής.
Σημειώστε ότι στη λειτουργία συντήρησης δεν είναι δυνατή η σωστή πιστοποίηση των νημάτων σχολίων, επομένως δημιουργούνται περιοδικά αντίγραφα ασφαλείας μόνο για νήματα που θεωρούνται με ασφάλεια δημόσια.
Στη λειτουργία συντήρησης πολλές λειτουργίες δεν είναι διαθέσιμες.
Κλειδώματα 
Όπως κάθε κατανεμημένο σύστημα, το FastComments χρειάζεται κάποιο τρόπο για να κλειδώνει πόρους και διαδικασίες. Αυτά τα κλειδώματα μπορούν να παρακολουθηθούν μέσω του /locks-in-progress endpoint.
Για παράδειγμα, εδώ είναι το endpoint στο shard μας στις ΗΠΑ.
Αυτό μπορεί να είναι χρήσιμο για να δει κανείς γιατί το σύστημα έχει «κολλήσει» ή βρίσκεται υπό φόρτο. Αν, για παράδειγμα, κάποιος SRE θέλει να δει γιατί το σύστημα έχει υψηλό φορτίο CPU, θα μπορούσε να ελέγξει αυτό το endpoint για να βρει το όνομα του cron που προκαλεί προβλήματα.
Κώδικας widget 
Τα αποσπάσματα κώδικα του front end και οι βιβλιοθήκες για On-Prem είναι τα ίδια με το προϊόν SaaS. Ωστόσο, πρέπει να ορίσετε apiHost και το σωστό script path:

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