Εγκατάσταση με Dokploy
Πλήρης οδηγός deployment για τον διαχειριστή του server, χωρίς να απαιτεί γνώση Django ή React development.
Η ανάπτυξη Dokploy τρέχει έξι υπηρεσίες:
frontend: η μόνη δημόσια υπηρεσία· Dokploy διαδρομές HTTPS κυκλοφορία προς λιμένα8080·backend: το ιδιωτικό Bubllio API στη θύρα8000·postgres: η ιδιωτική βάση δεδομένων με συνεχή αποθήκευση?rabbitmq: ο ιδιωτικός broker εργασίας στο πλαίσιο·worker: διαδικασίες σε αναμονή emails και automationς.beat: επαναδημοσιεύει εκκρεμείς/ανακτήσιμες θέσεις εργασίας μία φορά το λεπτό.
Η βάση δεδομένων και backend δεν δημοσιεύονται σκόπιμα στις θύρες υποδοχής.
Πριν από την έναρξη
Ετοίμασε αυτά:
- έναν εξυπηρετητή Dokploy με δημόσια IP·
- όνομα DNS όπως
crm.example.comπου δείχνει την εν λόγω IP· - πρόσβαση στο αποθετήριο Bubllio Git·
- SMTP διαπιστευτήρια για προσκλήσεις και επαναρυθμίσεις κωδικού πρόσβασης, που εισάγονται κατά τη διάρκεια της εγκατάστασης?
- έναν S3-συμβατό προορισμό για εφεδρικά εκτός υπηρεσίας.
Δημιουργία δύο ανεξάρτητων μυστικών σε έναν αξιόπιστο υπολογιστή. Μην επικολλήσετε την παραγωγή τους σε chat, εισιτήρια, ή Git:
openssl rand -base64 48
uv run python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"Χρησιμοποιήστε την πρώτη τιμή για DJANGO_SECRET_KEY και τη δεύτερη για BUBLLIO_EMAIL_ENCRYPTION_KEYS. Δημιουργία ξεχωριστών ισχυρών βάσεων δεδομένων και κωδικών RabbitMQ. Χρησιμοποιήστε openssl rand -hex 32 για RabbitMQ έτσι η τιμή είναι URL-ασφαλής.
1. Δημιουργήστε την υπηρεσία σύνθεσης
- Στο Dokploy, δημιουργήστε ένα έργο και προσθέστε μια υπηρεσία Docker Composition.
- Επιλέξτε GitHub ή Git ως πάροχο.
- Επιλέξτε
apodimi/bubllio-crmκαι τον κλάδο ή την ετικέτα απελευθέρωσης που παρέχεται από Bubllio. - Ορισμός της διαδρομής σύνθεσης στο
./compose.dokploy.yaml. - Διατήρηση λειτουργίας σύνθεσης: μην επιλέξετε στοίβα Docker.
- Αποθήκευση χωρίς ανάπτυξη ακόμα.
Για ένα ιδιωτικό αποθετήριο, συνδέστε τον πάροχο Dokploy GitHub ή προσθέστε το δημόσιό κλειδί SSH του Dokploy ως κλειδί ανάπτυξης μόνο για ανάγνωση.
2. Προσθέστε το περιβάλλον
Ανοίξτε την καρτέλα *Περιβάλλον και προσθέστε τα παρακάτω. Αντικατάσταση όλων των τιμών του παραδείγματος; μην επαναχρησιμοποιείτε τους κωδικούς πρόσβασης μεταξύ των πεδίων.
POSTGRES_DB=bubllio
POSTGRES_USER=bubllio
POSTGRES_PASSWORD=replace-with-a-strong-database-password
DATABASE_URL=postgresql://bubllio:replace-with-the-url-encoded-database-password@postgres:5432/bubllio
RABBITMQ_PASSWORD=replace-with-the-url-safe-rabbitmq-password
DJANGO_SECRET_KEY=replace-with-the-generated-django-secret
DJANGO_ALLOWED_HOSTS=crm.example.com
DJANGO_CSRF_TRUSTED_ORIGINS=https://crm.example.com
DJANGO_SECURE_HSTS_SECONDS=3600
DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=false
DJANGO_SECURE_HSTS_PRELOAD=false
BUBLLIO_APP_URL=https://crm.example.com
BUBLLIO_SETUP_TOKEN=replace-with-a-random-one-time-token-at-least-32-characters
BUBLLIO_EMAIL_ENCRYPTION_KEYS=replace-with-the-generated-fernet-keyΕάν ο κωδικός πρόσβασης της βάσης δεδομένων περιέχει δεσμευμένους χαρακτήρες URL, URL-κωδικοποιήστε τον μόνο σε DATABASE_URL· κρατήστε την αρχική τιμή σε POSTGRES_PASSWORD.
Το Dokploy γράφει αυτές τις τιμές στο αρχείο σύνθεσης .env. Οι αναφορές αρχείων Bubllio συνθέτουν κάθε απαιτούμενη τιμή ρητά, οπότε τα μυστικά περνούν μόνο στις υπηρεσίες που τα χρειάζονται.
3. Configure του δημόσιου τομέα
- Ανοίξτε την καρτέλα της υπηρεσίας σύνθεσης ** Domains**.
- Προσθήκη
crm.example.com. - Επιλέξτε υπηρεσία
frontendκαι θύρα εμπορευματοκιβωτίων8080. - Ενεργοποίηση HTTPS και δημιουργίας πιστοποιητικού.
- Χρήση της ενέργειας του Dokploy **Προεπισκόπηση σύνθεση ** και επαλήθευση ότι μόνο οι στόχοι δρομολόγησης
frontend:8080, ποτέbackend,postgres, ήrabbitmq.
Χρησιμοποιήστε το Dokploy της μητρικής διαχείρισης τομέα. Μην προσθέσετε θύρες δημόσιας φιλοξενίας ή προσαρμοσμένες ετικέτες Traefik σε αυτό το αποθετήριο.
4. Αναπτύξτε και επαληθεύστε
Κάντε κλικ **Ανάπτυξη ** και ακολουθήστε τα αρχεία καταγραφής κατασκευής. Μια υγιής ανάπτυξη δείχνει και τις έξι υπηρεσίες να λειτουργούν. Η εκκίνηση backend εφαρμόζει αυτόματα τις migrations μία φορά και συλλέγει τα στατικά αρχεία Django πριν ξεκινήσει ο Gunicorn.
Επαλήθευση από ένα browser ή τερματικό:
curl --fail --show-error https://crm.example.com/health/Στη συνέχεια, ανοίξτε https://crm.example.com και ολοκληρώστε την πρώτη-run ρύθμιση. Εισάγετε τον λογαριασμό SMTP μία φορά στο βήμα Email; Bubllio κρυπτογραφεί τον κωδικό πρόσβασης του και χρησιμοποιεί αυτόν τον λογαριασμό για τις προσκλήσεις εγκατάστασης και την επαναφορά κωδικού πρόσβασης. Για το αναγνωρισμένο ρελέ του Google Workspace, χρησιμοποιήστε το smtp-relay.gmail.com, τη θύρα 587, το πλήρες γραμματοκιβώτιο ως όνομα χρήστη, τον κωδικό app του και το STARTTLS (αφήστε το SSL ανεξέλεγκτο).
Δοκιμή:
- σύνδεση διαχειριστή εγκατάστασης·
- δημιουργία workspace·
- Μήνυμα δοκιμής SMTP·
- παράδοση πρόσκλησης και αποδοχή·
- παράδοση επαναφοράς κωδικού πρόσβασης·
- μια λειτουργία αυτοματοποίησης που φθάνει
successή μια χρήσιμη κατάστασηfailed· - Αποσύνδεση και σύνδεση ξανά.
Μετά την επιτυχή εγκατάσταση, το πρώτο run endpoint κλειδώνει αυτόματα. Η αφαίρεση BUBLLIO_SETUP_TOKEN από Dokploy αργότερα είναι προαιρετική άμυνα σε βάθος· δεν απαιτείται για κανονική λειτουργία και δεν απαιτεί διακοπή της αρχικής ροής ανάπτυξης.
Ένα πράσινο δοχείο και μόνο δεν είναι απόδειξη αποδοχής. Η δημόσια υγεία URL και το ταξίδι χρήστη πρέπει να λειτουργούν τόσο.
5. Πίσω πριν από τα πραγματικά δεδομένα
Configure ενός S3-συμβατού προορισμού σε Dokploy. Δημιουργία ενός προγραμματισμένου αντιγράφου ασφαλείας PostgreSQL για τη βάση δεδομένων bubllio, εκτέλεση Test, και επιβεβαίωση ότι ένα αντικείμενο εμφανίζεται στον προορισμό. Επίσης προστατεύουν τον επίμονο όγκο εάν απαιτείται από την επιλεγμένη λειτουργία αντιγράφων ασφαλείας Dokploy.
Πριν από την αποδοχή πραγματικών χρηστών, επαναφέρετε ένα αντίγραφο ασφαλείας σε μια απομονωμένη ανάπτυξη δοκιμών και καταγράψτε τη χρονοσφραγίδα και τη διάρκεια. Ένα επιτυχημένο upload χωρίς μια δοκιμή επαναφοράς δεν είναι ένα επαληθευμένο backup.
Ενημέρωση
- Πάρτε και επαληθεύστε μια εφεδρική βάση δεδομένων.
- Επιλέξτε την ακριβή νέα ετικέτα απελευθέρωσης Bubllio ή δεσμεύστε.
- Ανάπτυξη από Dokploy.
- Επιβεβαίωση όλων των υπηρεσιών είναι υγιείς και καλέστε
/health/. - Εκτέλεση σύνδεσης, workspace πρόσβαση, πρόσκληση, και μια κρίσιμη ροή CRM.
Διατήρηση του προηγούμενου αναγνωριστικού κυκλοφορίας διαθέσιμου. Μετανάστες βάσεων δεδομένων μπορεί να απαιτούν μια διόρθωση προς τα εμπρός, έτσι ώστε μια εφαρμογή rollback δεν αντικαθιστά ένα αντίγραφο ασφαλείας βάσης δεδομένων.
Συνθήκες στάσης
Μην επιβιβάζετε χρήστες όταν κάποιο από αυτά είναι αληθές:
- HTTPS είναι άκυρη ή η εφαρμογή είναι εφικτή μόνο για HTTP;
- το backend, η βάση δεδομένων ή το RabbitMQ εκτίθεται απευθείας στο διαδίκτυο·
workerήbeatεπανεκκινεί επανειλημμένα, ή μηνύματα σε αναμονή δεν ολοκληρώνουν ποτέ.- αποδημίες ή βλάβη
/health/· - οι προσκλήσεις ή οι επαναρυθμίσεις κωδικού πρόσβασης δεν φθάνουν·
- τα αντίγραφα ασφαλείας δεν έχουν ολοκληρώσει την πρόβα αποκατάστασης·
- ένας χρήστης μπορεί να έχει πρόσβαση στα δεδομένα ενός άλλου workspace.
Μετά την ανάπτυξη, εκτελέστε τον έλεγχο παραγωγής-περιβάλλοντος κατά της πραγματικής υπηρεσίας και κρατήστε τα στοιχεία της με την έκδοση SHA.
