Ευρετήριο ημερολογίουDockup / σημείωση πεδίου
Note / self-host-vikunja

Πώς να κάνετε self-host το Vikunja το 2026: δημόσιο URL, βάση δεδομένων και αποθήκευση αρχείων

Κάντε self-host το Vikunja με σωστές θύρες, persistent storage, HTTPS, secrets, backups και ελέγχους αναβάθμισης. Μάθετε πώς να διορθώσετε την περίπτωση όπου το public URL του API είναι λάθος.

Αν έχετε ήδη δοκιμάσει να κάνετε self-host το Vikunja, πιθανότατα γνωρίζετε την απογοητευτική κατάσταση: το UI εμφανίζεται, αλλά το public URL του API είναι λάθος ή τα αρχεία που ανεβαίνουν δεν βρίσκονται σε volume. Η αναδημιουργία του container σπάνια διορθώνει μια ασυμφωνία ανάμεσα στα URLs, την κατάσταση και τα dependencies.

Αυτός ο οδηγός χρησιμοποιεί ένα συγκεκριμένο κριτήριο ολοκλήρωσης — δημιουργία project, task, attachment και reminder, μετακίνηση του task σε board και επαλήθευση του αντίστοιχου calendar event και notification. Κάθε επιλογή διαμόρφωσης αξιολογείται με βάση αυτό το κριτήριο και όχι με βάση ένα πράσινο badge του container.

Από τι εξαρτάται το Vikunja

Χωρίστε το Vikunja σε τρία όρια: ingress προς τη θύρα 3456, durable state και υποστηρικτικές απαιτήσεις. Το container μπορεί να αντικατασταθεί, αλλά τα άλλα δύο χρειάζονται σαφείς owners. Το network contract για το Vikunja είναι Postgres ή MySQL και SMTP για production teams. Διατηρήστε τα private endpoints σε internal DNS, επιτρέψτε μόνο τις απαιτούμενες outbound κλήσεις και δώστε στο Vikunja ένα scoped service credential.

Το διάγραμμα είναι ολοκληρωμένο όταν ένας clean client μπορεί να δημιουργήσει project, task, attachment και reminder, να μετακινήσει το task σε board και να επαληθεύσει το calendar event και το notification. Καταγράψτε δεδομένα χρόνου και πόρων για το attachment traffic, τα database queries, τα background jobs και το outbound email, αντί να παρακολουθείτε μόνο τη μικρή διεργασία του API. Αν η συναλλαγή αποτύχει, το πρώτο όριο που δεν συμπεριφέρεται όπως τεκμηριώνεται δείχνει αν πρέπει να διερευνήσετε το routing, την τοπική χωρητικότητα ή μια supporting service.

Τα volumes είναι μόνο το πρώτο επίπεδο recovery

Καταγράψτε την κατάσταση πριν δημιουργηθεί το πρώτο πραγματικό record: database, uploaded files και configuration. Κάντε mount το /app/vikunja/files πριν από το bootstrap, γράψτε harmless sample data και αντικαταστήστε το container για να αποδείξετε ότι αυτή η διαδρομή είναι πράγματι persistent. Επιβεβαιώστε το mount γράφοντας harmless data, αντικαθιστώντας το Vikunja και διαβάζοντάς το ξανά.

Τα snapshots είναι πολύτιμα για γρήγορο rollback, αλλά χρειάζεται ανεξάρτητο backup όταν ο host ή το volume χαθεί. Κάντε restore σε ένα empty environment με το pinned image και επαληθεύστε ότι επιστρέφουν τα projects, το task history, τα attachments, τα reminders και οι users και ότι ένα scheduled notification εξακολουθεί να ενεργοποιείται. Χρησιμοποιήστε τα persistent volumes και snapshots για να διατηρείτε ξεχωριστούς αυτούς τους δύο recovery mechanisms.

Προστατέψτε το πολύτιμο μέρος του Vikunja

Μετά το πρώτο login, ελέγξτε τι μπορεί να κάνει ένας anonymous visitor, ένας ordinary user και ένας administrator. Το πρόβλημα του Vikunja που πρέπει να αποφύγετε είναι η χρήση ενός unchanged JWT secret ή το να παραμείνει κατά λάθος ανοιχτό το registration. Η επιθυμητή πολιτική είναι να χρησιμοποιείτε ένα stable JWT secret, να κλείνετε το registration όταν ολοκληρωθεί το enrollment και να διαχωρίζετε τα ordinary members από τους project administrators.

Δημιουργήστε το VIKUNJA_SERVICE_JWTSECRET ως μια μεγάλη, τυχαία τιμή· η αλλαγή του συνήθως ακυρώνει sessions ή tokens, επομένως σχεδιάστε τον αντίκτυπο στους users αντί να το αντιμετωπίζετε ως encryption migration. Διατηρήστε ξεχωριστούς τους dependency accounts από τους human accounts, απαγορεύστε το αχρησιμοποίητο egress όπου είναι πρακτικό και θέστε όρια στην εργασία που επηρεάζεται από το attachment traffic, τα database queries, τα background jobs και το outbound email, αντί να περιορίζεστε μόνο στη μικρή διεργασία του API.

Μετατρέψτε το smoke test του Vikunja σε release check

Ένα release candidate για το Vikunja κερδίζει traffic ολοκληρώνοντας ένα fixed scenario: δημιουργία project, task, attachment και reminder, μετακίνηση του task σε board και επαλήθευση του calendar event και του notification. Καταγράψτε το image digest, το effective non-secret configuration, το public origin και τα timestamps για αυτό το scenario. Τα test data πρέπει να είναι disposable, αλλά αρκετά ρεαλιστικά ώστε να ασκούν την ίδια διαδρομή με τους users.

Εκτελέστε το μετά την αντικατάσταση του runtime και, στη συνέχεια, κάντε rebuild το service από τη database, τα uploaded files και το configuration. Το recovery περνά όταν επιστρέφουν τα projects, το task history, τα attachments, τα reminders και οι users και όταν ένα scheduled notification εξακολουθεί να ενεργοποιείται. Συγκρίνετε τις μετρήσεις πόρων για το attachment traffic, τα database queries, τα background jobs και το outbound email, αντί να συγκρίνετε μόνο τη μικρή διεργασία του API, με την προηγούμενη release και διερευνήστε οποιοδήποτε σημαντικό drift πριν από την προώθηση.

Τέλος, εκτελέστε αυτήν την controlled failure: απαγορεύστε προσωρινά στην test identity την πρόσβαση σε Postgres ή MySQL και SMTP για production teams. Επαληθεύστε ότι το Vikunja εξηγεί την αποτυχία, δεν καταστρέφει την υπάρχουσα κατάσταση και συνεχίζει μετά την επαναφορά της έγκυρης συνθήκης. Αποθηκεύστε ένα redacted log excerpt και τον χρόνο recovery. Μαζί, αυτοί οι έλεγχοι καλύπτουν τη συμπεριφορά, το durability και το operability, όχι απλώς το uptime της διεργασίας.

Δημιουργήστε ένα replaceable container του Vikunja

Η παρακάτω εντολή κάνει ορατό το boundary του container χωρίς να προσποιείται ότι κάνει provision κάθε external service.

docker run -d \
  --name vikunja \
  --restart unless-stopped \
  -p 127.0.0.1:3456:3456 \
  -v vikunja-data:/app/vikunja/files \
  -e VIKUNJA_SERVICE_JWTSECRET=replace-with-a-long-random-value \
  vikunja/vikunja:latest

Πριν ανοίξετε το ingress, ελέγξτε το resolved environment, τα mounts και τον listener. Προσθέστε τις reviewed connection settings για Postgres ή MySQL και SMTP για production teams· χρησιμοποιήστε private names για τις private services. Ένα επιτυχημένο launch ολοκληρώνεται όταν μπορείτε να δημιουργήσετε project, task, attachment και reminder, να μετακινήσετε το task σε board και να επαληθεύσετε το calendar event και το notification, όχι όταν το docker ps εμφανίζει Up.

Κάντε route το Vikunja χωρίς να παραποιείτε το HTTPS

Αποφύγετε τα temporary και permanent public origins για το Vikunja. Αντί γι’ αυτό, ορίστε το VIKUNJA_SERVICE_PUBLICURL στο ακριβές HTTPS origin, δείξτε το επιλεγμένο DNS name στο platform route και κάντε proxy μόνο προς τη θύρα 3456.

Εκτελέστε αυτή την ενέργεια εκτός του host: δημιουργήστε project, task, attachment και reminder, μετακινήστε το task σε board και επαληθεύστε το calendar event και το notification. Αν το ingress αποτύχει, ο οδηγός αντιμετώπισης προβλημάτων 502 καλύπτει τα λάθη στη θύρα και στον listener. Αν το Vikunja λάβει το request αλλά το public URL του API είναι λάθος ή τα uploaded files δεν βρίσκονται σε volume, τα στοιχεία πλέον δείχνουν πέρα από το proxy.

Διαγνώστε ένα Vikunja που φαίνεται υγιές

Για το Vikunja, παρακολουθήστε μια συναλλαγή αντί για μια διεργασία: δημιουργήστε project, task, attachment και reminder, μετακινήστε το task σε board και επαληθεύστε το calendar event και το notification. Συνδυάστε το latency και το error rate του με το attachment traffic, τα database queries, τα background jobs και το outbound email, αντί να παρακολουθείτε μόνο τη μικρή διεργασία του API, ώστε ένα alert να εντοπίζει το component που περιορίζει το σύστημα.

Η upgrade rehearsal πρέπει να καλύπτει το γεγονός ότι τα database migrations και η frontend/API compatibility πρέπει να ελέγχονται πριν αλλάξετε versions του Vikunja. Κάντε restore, migrate και εκτελέστε τη συναλλαγή πριν από την αντικατάσταση σε production. Αν το public URL του API είναι λάθος ή τα uploaded files δεν βρίσκονται σε volume, μην διαγράψετε δεδομένα για να κάνετε το startup να εμφανιστεί ως επιτυχές· συγκρίνετε με αυτή τη σειρά το version, τις variables, τα mounts και τη δυνατότητα επικοινωνίας με τα dependencies.

Κάντε deploy το Vikunja στο Dockup χωρίς να χάσετε τα όριά του

Το Dockup μπορεί να αναλάβει τα replaceable platform pieces: να κάνει route το traffic προς τη θύρα 3456, να εκδώσει το domain και το certificate, να inject secrets, να προσαρτήσει persistent storage και να συνδέσει το Vikunja με managed ή privately attached services. Αυτό μπορεί να γίνει στην υποδομή του Dockup ή σε server που έχετε συνδέσει.

Το acceptance work για το Vikunja παραμένει explicit. Μετά το one-click deployment, ορίστε το VIKUNJA_SERVICE_PUBLICURL στο ακριβές HTTPS origin, συνδέστε και ελέγξτε το Postgres ή MySQL και το SMTP για production teams και εκτελέστε αυτό το scenario: δημιουργήστε project, task, attachment και reminder, μετακινήστε το task σε board και επαληθεύστε το calendar event και το notification. Αυτός ο διαχωρισμός είναι σκόπιμος: το Dockup αφαιρεί το επαναλαμβανόμενο infrastructure setup χωρίς να προσποιείται ότι οι application roles, τα provider credentials ή η restore policy επιλέγονται αυτόματα.

Συχνές ερωτήσεις

Τι χρειάζεται το Vikunja για deployment σε production;

Κάντε route το container του Vikunja στη θύρα 3456 μέσω ενός HTTPS origin. Η supporting network requirement είναι Postgres ή MySQL και SMTP για production teams. Μην θεωρήσετε το Vikunja έτοιμο μέχρι να μπορείτε να δημιουργήσετε project, task, attachment και reminder, να μετακινήσετε το task σε board και να επαληθεύσετε το calendar event και το notification.

Ποια δεδομένα του Vikunja πρέπει να περιλαμβάνονται σε backup;

Κάντε persist το /app/vikunja/files και συμπεριλάβετε τη database, τα uploaded files και το configuration στο ίδιο recovery manifest. Ένα clean restore του Vikunja περνά μόνο όταν επιστρέφουν τα projects, το task history, τα attachments, τα reminders και οι users και όταν ένα scheduled notification εξακολουθεί να ενεργοποιείται.

Απαιτεί το Vikunja HTTPS πίσω από reverse proxy;

Χρησιμοποιήστε HTTPS για το public origin του Vikunja και διατηρήστε τη θύρα 3456 στο internal route. Εφαρμόστε σωστά τη ρύθμιση του Vikunja: ορίστε το VIKUNJA_SERVICE_PUBLICURL στο ακριβές HTTPS origin. Για το Vikunja, το HTTPS προστατεύει τα credentials ή το user content κατά τη μεταφορά και διατηρεί συνεπή τη client behavior που εξαρτάται από το origin.

Πώς πρέπει να ελεγχθεί μια αναβάθμιση του Vikunja;

Κάντε restore την τρέχουσα κατάσταση του Vikunja σε ένα isolated deployment, εφαρμόστε την candidate version και επαναλάβετε το acceptance transaction. Δώστε ιδιαίτερη προσοχή, επειδή τα database migrations και η frontend/API compatibility πρέπει να ελέγχονται πριν αλλάξετε versions του Vikunja. Διατηρήστε το προηγούμενο Vikunja image μέχρι να κατανοήσετε τα όρια του data migration και του rollback.