Skip to content

Easy Installation

github-actions[bot] edited this page Oct 5, 2026 · 13 revisions

Ελληνικά · English

Εύκολη εγκατάσταση, βήμα προς βήμα

Αυτός ο οδηγός είναι για όσους δεν είναι προγραμματιστές. Στο τέλος θα έχετε την Karta να τρέχει σε ένα μικρό μηχάνημα, με ασφαλή σύνδεση (HTTPS) στο δικό σας όνομα, π.χ. https://karta.tokatastimamou.gr, χωρίς να πειράξετε ρυθμίσεις στο router.

Θα χρειαστείτε περίπου μία ώρα την πρώτη φορά· τα περισσότερα τα κάνει ο οδηγός ρύθμισης (setup.sh). Αν κολλήσετε κάπου, δείτε τις Συχνές ερωτήσεις ή ρωτήστε στις Συζητήσεις.

Αν είστε πιο έμπειρος, η σύντομη έκδοση είναι στην Εγκατάσταση.


Βήμα 0: Τι θα χρειαστείτε

Τι Κόστος
1 Ένα όνομα (domain), π.χ. tokatastimamou.gr περίπου 10–20 € τον χρόνο (για δοκιμή υπάρχει και δωρεάν)
2 Ένα μηχάνημα που μένει ανοιχτό (δείτε παρακάτω) 0 € (παλιό PC ή δωρεάν server στο cloud) ή ~60–100 € για Raspberry Pi
3 Δωρεάν λογαριασμό Cloudflare 0 €
4 Χρήστη web services του ΕΡΓΑΝΗ (σας τον φτιάχνει ο λογιστής ή τον φτιάχνετε στο ΕΡΓΑΝΗ) 0 €

«Γίνεται χωρίς domain;»

Δυστυχώς όχι για κανονική χρήση, για δύο λόγους:

  • Η σελίδα διαχείρισης προστατεύεται από το Cloudflare Access, που λειτουργεί μόνο σε domain που έχετε εσείς στο Cloudflare.
  • Η κάμερα για τις κάρτες QR και το cookie της οθόνης καταστήματος δουλεύουν μόνο με HTTPS, που το δίνει δωρεάν το Cloudflare για το domain σας.

Το domain είναι το μόνο σίγουρο έξοδο. Όλα τα υπόλοιπα μπορούν να είναι δωρεάν. Για να δοκιμάσετε την Karta πριν πληρώσετε, υπάρχουν και δωρεάν domain: δείτε το βήμα 1.

Ποιο μηχάνημα;

Επιλογή Υπέρ Κατά
A. Raspberry Pi 4 ή 5 (2 GB RAM και πάνω), στο κατάστημα ή στο σπίτι Μικρό, αθόρυβο, ~5 W ρεύμα (λίγα ευρώ τον χρόνο). Τα δεδομένα μένουν σε εσάς. Κόστος αγοράς. Αν κοπεί ρεύμα ή internet εκεί, η Karta δεν είναι διαθέσιμη.
B. Παλιό laptop ή μικρό PC Δωρεάν αν το έχετε ήδη. Το laptop έχει μπαταρία για διακοπές ρεύματος. Περισσότερο ρεύμα· ίδιο θέμα με το internet.
C. Δωρεάν server στο cloud (VPS): Oracle Cloud «Always Free» Πάντα ανοιχτό, γρήγορο internet, 0 €. Θέλει κάρτα για επιβεβαίωση. Η εγγραφή μερικές φορές λέει «out of capacity». Το Oracle μπορεί να κλείσει μηχανήματα που δεν χρησιμοποιούνται σχεδόν καθόλου· κρατάτε αντίγραφα. Δεν είναι έτοιμη υπηρεσία: φτιάχνετε μόνοι σας έναν server με Ubuntu και συνδέεστε με SSH, όπως σε κάθε VPS.

Προσοχή στα προσωπικά δεδομένα (GDPR): η Karta κρατά στοιχεία του προσωπικού σας. Αν διαλέξετε cloud, διαλέξτε περιοχή μέσα στην Ευρωπαϊκή Ένωση (π.χ. Frankfurt, Amsterdam, Milan).

Πού να μπει; Αν το μηχάνημα είναι στο κατάστημα, η οθόνη του καταστήματος μιλά με την Karta μέσα από το internet του καταστήματος. Αν πέσει το internet, η οθόνη το λέει και οι εργαζόμενοι χτυπούν από την εφαρμογή του ΕΡΓΑΝΗ. Αυτό ισχύει όπου κι αν βρίσκεται η Karta.


Βήμα 1: Πάρτε domain και βάλτε το στο Cloudflare

  1. Φτιάξτε δωρεάν λογαριασμό στο cloudflare.com.
  2. Αγοράστε ένα domain:
    • .com / .eu κ.λπ.: απευθείας από το Cloudflare (Domain Registration → Register Domains), σε τιμή κόστους. Μπαίνει αυτόματα στο Cloudflare: πηγαίνετε στο βήμα 2.
    • .gr: από έναν Έλληνα καταχωρητή (registrar). Μετά, στο Cloudflare πατήστε Add a domain, διαλέξτε το Free πλάνο, και το Cloudflare σας δίνει δύο nameservers. Στη σελίδα του καταχωρητή, αλλάξτε τους nameservers του domain σε αυτούς τους δύο. Η αλλαγή θέλει από λίγα λεπτά έως 24 ώρες· το Cloudflare σας στέλνει email όταν είναι έτοιμο.

Αν έχετε ήδη domain για το site σας, μπορείτε να χρησιμοποιήσετε ένα υπο‑όνομα του, π.χ. karta.tokatastimamou.gr, χωρίς να επηρεαστεί το site.

Το domain είναι ενεργό στο Cloudflare

Όταν το domain είναι έτοιμο, η σελίδα του στο Cloudflare γράφει «Your domain is now protected by Cloudflare».

Δωρεάν domain για δοκιμή

Για να δοκιμάσετε την Karta χωρίς να αγοράσετε domain:

  • DigitalPlat FreeDomain: δωρεάν ονόματα όπως karta-tokatastimamou.dpdns.org, σε λίγα λεπτά. Διαλέξτε κατάληξη .dpdns.org (ή .xx.kg / .qd.je). Το .qzz.io θέλει πληρωμένη θέση, και σε άλλες καταλήξεις η εγγραφή μπορεί να είναι προσωρινά σταματημένη («This domain is paused register»). Πριν την εγγραφή πρέπει να ανοίξετε και να αποδεχτείτε τους όρους που δείχνει η σελίδα.
  • EU.org: δωρεάν και μόνιμο, αλλά η έγκριση γίνεται με το χέρι και μπορεί να πάρει μέρες ή εβδομάδες.

Μετά την εγγραφή: στο Cloudflare Add a domain → γράψτε ολόκληρο το όνομα (π.χ. karta-tokatastimamou.dpdns.org) → Free πλάνο. Το Cloudflare σας δίνει δύο nameservers (….ns.cloudflare.com): βάλτε τους στη σελίδα του domain στο DigitalPlat (Nameservers / NS) και περιμένετε το email «active». Σε αυτή την περίπτωση η διεύθυνση της Karta μπορεί να είναι το ίδιο το domain.

Για κανονική χρήση σε κατάστημα πάρτε πραγματικό domain. Οι δωρεάν υπηρεσίες μπορεί να αλλάξουν όρους ή να κλείσουν, και τότε σταματά και η οθόνη του καταστήματος. Η αλλαγή αργότερα είναι εύκολη: ξανατρέχετε το ./setup.sh με το νέο όνομα.


Βήμα 2: Ετοιμάστε το μηχάνημα

Διαλέξτε μία από τις τρεις επιλογές.

Επιλογή A: Raspberry Pi

  1. Χρειάζεστε: Raspberry Pi 4 ή 5, το τροφοδοτικό του, κάρτα microSD 32 GB καλής ποιότητας (ή, καλύτερα, δίσκο SSD με USB), και καλώδιο δικτύου (προτιμότερο από Wi‑Fi).
  2. Σε έναν υπολογιστή, κατεβάστε το Raspberry Pi Imager.
  3. Διαλέξτε: συσκευή → το μοντέλο σας· λειτουργικό → Raspberry Pi OS Lite (64‑bit)· αποθήκευση → την κάρτα σας.
  4. Στις ρυθμίσεις (Edit settings) ορίστε: όνομα μηχανήματος (π.χ. karta), όνομα χρήστη και κωδικό, και στην καρτέλα Services ενεργοποιήστε το SSH με κωδικό.
  5. Γράψτε την κάρτα, βάλτε τη στο Pi, συνδέστε καλώδιο δικτύου και ρεύμα. Περιμένετε 2 λεπτά.

Επιλογή B: Παλιό PC ή laptop

  1. Κατεβάστε το Ubuntu Server LTS και γράψτε το σε ένα USB με το balenaEtcher.
  2. Ξεκινήστε το PC από το USB και εγκαταστήστε το (οι προεπιλογές είναι εντάξει). Ορίστε όνομα χρήστη και κωδικό, και τσεκάρετε Install OpenSSH server.
  3. Σε laptop: ρυθμίστε να μην κοιμάται όταν κλείνει το καπάκι. Ρωτήστε μας αν χρειάζεστε βοήθεια· είναι μία ρύθμιση.

Επιλογή C: Oracle Cloud Always Free

Εδώ νοικιάζετε (δωρεάν) έναν δικό σας εικονικό server με Ubuntu. Από εκεί και πέρα είναι σαν το Raspberry Pi: συνδέεστε με ssh και κάνετε τα ίδια βήματα. Το ίδιο ισχύει για οποιοδήποτε άλλο VPS (Hetzner, DigitalOcean κ.λπ.), απλώς με πληρωμή.

  1. Εγγραφείτε στο oracle.com/cloud/free. Στην εγγραφή διαλέξτε Home Region μέσα στην ΕΕ (δεν αλλάζει αργότερα).
  2. Compute → Instances → Create instance:
    • Image: Ubuntu (22.04 ή νεότερο)·
    • Shape: Ampere (VM.Standard.A1.Flex), 1 OCPU και 6 GB μνήμη (μέσα στα δωρεάν όρια)·
    • κατεβάστε το SSH key που σας δίνει (θα το χρειαστείτε για να συνδεθείτε).
  3. Πατήστε Create. Σημειώστε τη Public IP του μηχανήματος.

Δεν χρειάζεται να ανοίξετε καμία θύρα στο firewall του Oracle: το tunnel του Cloudflare συνδέεται προς τα έξω.


Βήμα 3: Συνδεθείτε στο μηχάνημα και ξεκινήστε τον οδηγό ρύθμισης

Από τον υπολογιστή σας ανοίξτε ένα τερματικό (Windows: PowerShell· Mac: Terminal) και συνδεθείτε:

ssh ONOMA_XRISTI@karta.local          # Raspberry Pi στο ίδιο δίκτυο
ssh ONOMA_XRISTI@192.168.1.50         # ή με τη διεύθυνση IP του μηχανήματος
ssh -i kleidi.key ubuntu@PUBLIC_IP    # Oracle Cloud

Κατεβάστε τον οδηγό ρύθμισης της Karta και τρέξτε τον:

mkdir ~/karta && cd ~/karta
curl -fsSLO https://raw.githubusercontent.com/osergios/karta/main/setup.sh
chmod +x setup.sh
./setup.sh

Αν δεν υπάρχει το Docker, ο οδηγός προτείνει να το εγκαταστήσει (ζητά τον κωδικό σας). Μετά σας λέει να αποσυνδεθείτε (exit), να συνδεθείτε ξανά και να ξανατρέξετε cd ~/karta && ./setup.sh.


Βήμα 4: Φτιάξτε ένα κλειδί για το Cloudflare

Με αυτό το κλειδί ο οδηγός φτιάχνει μόνος του στο Cloudflare όλα όσα χρειάζεται η Karta: το tunnel, τη διεύθυνση https://karta.… και την προστασία της σελίδας διαχείρισης.

  1. Καθαρίστε το DNS: στο Cloudflare, στο domain σας, ανοίξτε DNS → Records. Αν υπάρχουν εγγραφές (A, AAAA ή CNAME) με το όνομα που θα έχει η Karta (π.χ. karta.tokatastimamou.gr, ή το ίδιο το domain αν η Karta θα είναι εκεί) και δεν τις φτιάξατε εσείς, διαγράψτε τες. Ο οδηγός φτιάχνει τη σωστή εγγραφή. Αν η λίστα είναι άδεια, όλα καλά.

  2. Ενεργοποιήστε μία φορά το Zero Trust: στο Cloudflare πατήστε Zero Trust (αριστερό μενού), διαλέξτε ένα team name (π.χ. tokatastimamou) και το Free πλάνο. Μπορεί να ζητήσει κάρτα, αλλά το Free πλάνο δεν χρεώνει. Αυτό χρειάζεται για την προστασία της σελίδας διαχείρισης.

  3. Πηγαίνετε στο My Profile → API Tokens → Create Token → Custom token → Get started (dash.cloudflare.com/profile/api-tokens).

  4. Όνομα: Karta setup. Στα Permissions προσθέστε αυτές τις πέντε γραμμές (πατήστε + Add more για κάθε νέα γραμμή· σε κάθε γραμμή διαλέγετε από τρεις λίστες):

    Account Cloudflare Tunnel Edit
    Account Access: Apps and Policies Edit
    Account Access: Organizations, Identity Providers, and Groups Read
    Zone DNS Edit
    Zone Zone Read
  5. Στο Zone Resources διαλέξτε Include → Specific zone → το domain σας. Τα υπόλοιπα (Client IP Address Filtering, TTL) αφήστε τα όπως είναι.

  6. Πατήστε Continue to summary → Create Token και αντιγράψτε το κλειδί (εμφανίζεται μία φορά). Κρατήστε το σε ένα σημειωματάριο μέχρι το βήμα 5, και μην το στείλετε σε κανέναν: όποιος το έχει μπορεί να αλλάξει το Cloudflare σας.

Ο οδηγός δεν αποθηκεύει το κλειδί. Όταν τελειώσετε, μπορείτε να το διαγράψετε από την ίδια σελίδα, ή να το κρατήσετε για να ξανατρέξετε τον οδηγό αργότερα.

Δεν θέλετε κλειδί; Απαντήστε «ο» στο «Να γίνει αυτόματα;». Ακολουθήστε μόνο τα «Φτιάξτε το Cloudflare Tunnel» και «Προστατέψτε τη σελίδα διαχείρισης» της χειροκίνητης εγκατάστασης. Ο οδηγός μετά σας ζητά το team domain, το AUD tag και το token του tunnel.


Βήμα 5: Απαντήστε στις ερωτήσεις του οδηγού

Ο οδηγός ρωτά μόνο όσα χρειάζονται για να ανοίξει η Karta με ασφάλεια, στα ελληνικά:

  1. Διεύθυνση και διαχειριστές: π.χ. karta.tokatastimamou.gr, και τα email που μπορούν να μπαίνουν στη σελίδα διαχείρισης (οποιοδήποτε email διαβάζετε· το Cloudflare στέλνει εκεί κωδικό σύνδεσης).
  2. Cloudflare: πρώτα πού τρέχει η Karta: «1» στο κατάστημα ή στο σπίτι (Raspberry Pi, παλιό PC/laptop, server στο τοπικό δίκτυο) ή «2» σε VPS / cloud server. Στο «1» το tunnel συνδέεται με HTTP/2, που δουλεύει σταθερά πίσω από router σπιτιού ή καταστήματος (με το QUIC/HTTP/3 πολλά router κάνουν τις σελίδες αργές)· στο «2» αυτόματα (QUIC/HTTP/3, με HTTP/2 αν χρειαστεί). Μετά επικολλάτε το κλειδί του βήματος 4 και ο οδηγός φτιάχνει tunnel, διεύθυνση και προστασία, δείχνοντας ✓ σε κάθε βήμα.

Μετά γράφει το αρχείο ρυθμίσεων (.env), ξεκινά την Karta, ρωτά αν θέλετε αυτόματο αντίγραφο ασφαλείας κάθε βράδυ στις 23:30 (απαντήστε «ν», συνιστάται· μαζί αντιγράφεται και το .env ως karta.env) και προτείνει αντίγραφο σε USB (το αντίγραφο στο cloud ρυθμίζεται στη σελίδα διαχείρισης· δείτε το βήμα 8).

ΑΦΜ, χρήστης ΕΡΓΑΝΗ, ειδοποιήσεις στο κινητό και λειτουργία ρυθμίζονται μετά, από τη σελίδα διαχείρισης (βήμα 7). Η Karta ξεκινά πάντα σε δοκιμαστική λειτουργία (dry_run): δεν στέλνεται τίποτα στο ΕΡΓΑΝΗ μέχρι να το αποφασίσετε.

Μπορείτε να ξανατρέξετε το ./setup.sh όποτε θέλετε για να αλλάξετε κάτι: οι τωρινές τιμές προτείνονται ως προεπιλογές, και το παλιό αρχείο κρατιέται ως αντίγραφο.


Βήμα 6: Ελέγξτε ότι όλα δουλεύουν

Περιμένετε ένα λεπτό και τρέξτε:

cd ~/karta && ./setup.sh check

Ελέγχει τις ρυθμίσεις, το Cloudflare, ότι η Karta απαντά στη διεύθυνσή σας, και ότι η σελίδα διαχείρισης είναι προστατευμένη. Για κάθε πρόβλημα λέει τι να κάνετε. Τη σύνδεση στο ΕΡΓΑΝΗ τη δοκιμάζει μόνο αν ο χρήστης ΕΡΓΑΝΗ είναι στο .env· αλλιώς δοκιμάστε την με τη «Δοκιμή σύνδεσης» στη σελίδα διαχείρισης (βήμα 7).

Μετά ανοίξτε στον browser το https://karta.tokatastimamou.gr/admin: το Cloudflare ζητά το email σας, σας στέλνει κωδικό, και βλέπετε τη σελίδα διαχείρισης.


Βήμα 7: Ακολουθήστε τα «Πρώτα βήματα»

Στην καρτέλα «Σήμερα» της διαχείρισης υπάρχει η λίστα «Πρώτα βήματα». Κάθε βήμα έχει κουμπί «Πάμε» που σας πηγαίνει στο σωστό σημείο, και τσεκάρεται μόνο του όταν γίνει:

  1. Σύνδεση με το ΕΡΓΑΝΗ: στις «Ρυθμίσεις» → «Επιχείρηση και σύνδεση με το ΕΡΓΑΝΗ» γράψτε το ΑΦΜ, τον αριθμό παραρτήματος (συνήθως 0) και τον χρήστη web services του ΕΡΓΑΝΗ (όνομα, κωδικός, τύπος). Πατήστε «Δοκιμή σύνδεσης» (μόνο ανάγνωση, δεν υποβάλλεται τίποτα) και «Αποθήκευση». Ο κωδικός φυλάσσεται κρυπτογραφημένος.
  2. Στοιχεία επιχείρησης (όνομα, χρώματα: έτοιμα θέματα ή δικά σας, λογότυπο· δείτε Ρυθμίσεις)
  3. Προσωπικό από το ΕΡΓΑΝΗ («Έλεγχος ΕΡΓΑΝΗ»)
  4. Ωράρια: το ΕΡΓΑΝΗ συνήθως δίνει μόνο πόσες ώρες την εβδομάδα δουλεύει ο καθένας, όχι τις ώρες κάθε ημέρας. Γράψτε το ωράριο κάθε ημέρας από το πρόγραμμα που σας δίνει ο λογιστής· η Karta δείχνει αν το σύνολο ταιριάζει με το ΕΡΓΑΝΗ.
  5. Αργίες της περιοχής
  6. Οθόνη καταστήματος (εγγραφή του laptop ή tablet: Οθόνη καταστήματος)
  7. Ειδοποιήσεις στο κινητό: στις «Ρυθμίσεις» → «Ειδοποιήσεις στο κινητό» (εφαρμογή ntfy), με κουμπί για δοκιμαστική ειδοποίηση
  8. Αντίγραφα ασφαλείας εκτός μηχανήματος (βήμα 8)
  9. Δοκιμή με το προσωπικό: όλοι χτυπούν κάρτα στη «Δοκιμαστική» λειτουργία (Δοκιμή με το προσωπικό)
  10. Έναρξη στο ΕΡΓΑΝΗ: «Ρυθμίσεις» → «Επιχείρηση και σύνδεση με το ΕΡΓΑΝΗ» → «Λειτουργία» (Έναρξη κανονικής λειτουργίας)

Βήμα 8: Αντίγραφα ασφαλείας (σημαντικό!)

Τα χτυπήματα πρέπει να φυλάσσονται για τουλάχιστον 5 χρόνια. Αν απαντήσατε «ν» στο αντίγραφο κάθε βράδυ (συνιστάται), ο οδηγός έχει ήδη βάλει αντίγραφο κάθε βράδυ στις 23:30 στον φάκελο ~/karta/backups (30 ημερήσια, 24 μηνιαία και ένα για κάθε έτος, μαζί με αντίγραφο του .env ως karta.env). Αν απαντήσατε «ο», ξανατρέξτε το ./setup.sh. Αν όμως χαλάσει η κάρτα του Raspberry Pi ή ο δίσκος, χάνονται μαζί. Γι' αυτό βάλτε και ένα αντίγραφο εκτός μηχανήματος, ένα ή και τα δύο:

  • Κρυπτογραφημένο στο cloud (Google Drive, Dropbox ή Backblaze B2): από τη σελίδα διαχείρισης, «Ρυθμίσεις» → «Αντίγραφα ασφαλείας». Η σελίδα σας δείχνει τα βήματα, και στο τέλος έναν κωδικό κρυπτογράφησης: γράψτε τον κάπου ασφαλές, εκτός καταστήματος. Χωρίς αυτόν τα αντίγραφα δεν ανοίγουν ποτέ, και δεν ανακτάται με κανέναν τρόπο (δείτε Αντίγραφα ασφαλείας). Σε VPS / cloud server (π.χ. Oracle Cloud) είναι ο μόνος τρόπος, γιατί δεν υπάρχει USB.
  • Σε USB stick στο μηχάνημα: cd ~/karta && ./setup.sh usb (μία φορά, από το τερματικό).

Στην ίδια σελίδα φαίνεται το αποτέλεσμα κάθε βραδιού, και υπάρχουν η λήψη αντιγράφου, το «Αρχείο χτυπημάτων» κάθε έτους σε Excel και η επαναφορά (από αρχείο ή από το cloud). Όλες οι λεπτομέρειες: Αντίγραφα ασφαλείας και επαναφορά.


Ενημέρωση σε νέα έκδοση

Όταν βγει νέα έκδοση, η σελίδα διαχείρισης το γράφει στις «Ρυθμίσεις» → «Έκδοση και ενημέρωση», με σύνδεσμο «Τι αλλάζει». Πατήστε «Ενημέρωση τώρα»: μέσα σε δύο λεπτά γίνεται αντίγραφο ασφαλείας, κατεβαίνει η νέα έκδοση και η Karta ξαναξεκινά (είναι εκτός για περίπου ένα λεπτό). Η σελίδα ξαναφορτώνει μόνη της, και η οθόνη του καταστήματος επίσης.

Αν η νέα έκδοση δεν ξεκινήσει σωστά μέσα σε δύο λεπτά, η Karta επιστρέφει μόνη της στην προηγούμενη και η σελίδα γράφει «απέτυχε — επέστρεψε στην …». Η έκδοση που τρέχει γράφεται στο .env (KARTA_VERSION).

Το κουμπί δουλεύει χάρη στο update.sh, που βάζει ο οδηγός ρύθμισης στο μηχάνημα: η ίδια η Karta δεν έχει ποτέ πρόσβαση στο Docker, για ασφάλεια. Χωρίς αυτό (ή από το τερματικό):

cd ~/karta && ./setup.sh update

Χειροκίνητη εγκατάσταση (χωρίς τον οδηγό)

Αν προτιμάτε να κάνετε τα πάντα με το χέρι, αυτά είναι τα βήματα που κάνει ο οδηγός.

Συνδεθείτε στο μηχάνημα και εγκαταστήστε το Docker

Από τον υπολογιστή σας ανοίξτε ένα τερματικό (Windows: PowerShell· Mac: Terminal) και συνδεθείτε:

ssh ONOMA_XRISTI@karta.local          # Raspberry Pi στο ίδιο δίκτυο
ssh ONOMA_XRISTI@192.168.1.50         # ή με τη διεύθυνση IP του μηχανήματος
ssh -i kleidi.key ubuntu@PUBLIC_IP    # Oracle Cloud

Μετά, αντιγράψτε και τρέξτε αυτές τις εντολές μία μία:

sudo apt update && sudo apt -y upgrade
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
exit

Συνδεθείτε ξανά με ssh (ώστε να ισχύσει η τελευταία εντολή) και ελέγξτε:

docker run --rm hello-world

Αν δείτε «Hello from Docker!», όλα είναι εντάξει.

Φτιάξτε το Cloudflare Tunnel

Το tunnel είναι μια ασφαλής «γραμμή» από το μηχάνημά σας προς το Cloudflare. Έτσι η Karta είναι προσβάσιμη στο https://karta.tokatastimamou.gr χωρίς ανοιχτές θύρες στο router.

  1. Στο Cloudflare, ανοίξτε το Zero Trust (από το αριστερό μενού). Την πρώτη φορά: διαλέξτε ένα team name (π.χ. tokatastimamou) και το Free πλάνο (έως 50 χρήστες). Μπορεί να ζητήσει κάρτα, αλλά το Free πλάνο δεν χρεώνει.
  2. Πηγαίνετε στο Networks → Tunnels → Create a tunnel → Cloudflared. Δώστε όνομα (π.χ. karta) και πατήστε Save.
  3. Στη σελίδα που ανοίγει υπάρχει μια εντολή με ένα μακρύ token (μετά το --token). Αντιγράψτε μόνο το token και φυλάξτε το· δεν χρειάζεται να τρέξετε την εντολή.
  4. Πατήστε Next. Στο Public hostname:
    • Subdomain: karta · Domain: το domain σας·
    • Service: Type HTTP, URL karta:8000.
  5. Πατήστε Save tunnel.

Τα ονόματα των μενού του Cloudflare αλλάζουν κάπου κάπου. Αν δεν βρίσκετε κάτι, ψάξτε «Tunnels» μέσα στο Zero Trust.

Προστατέψτε τη σελίδα διαχείρισης (Cloudflare Access)

  1. Στο Zero Trust: Access → Applications → Add an application → Self‑hosted.
  2. Όνομα: Karta admin. Στο Public hostname / Application domain: subdomain karta, domain το δικό σας, και στο Path γράψτε admin.
  3. Προσθέστε policy: Action Allow, κανόνας Emails → το δικό σας email (και όποιου άλλου θέλετε να έχει πρόσβαση).
  4. Αποθηκεύστε. Ως τρόπος σύνδεσης αρκεί ο προκαθορισμένος One‑time PIN (σας έρχεται κωδικός στο email).
  5. Ανοίξτε την εφαρμογή που φτιάξατε και αντιγράψτε το Application Audience (AUD) Tag. Θα το χρειαστείτε στο επόμενο βήμα.

Κατεβάστε και ρυθμίστε την Karta

Στο μηχάνημα (μέσω ssh):

mkdir ~/karta && cd ~/karta
curl -fsSLO https://raw.githubusercontent.com/osergios/karta/main/docker-compose.yml
curl -fsSL  https://raw.githubusercontent.com/osergios/karta/main/.env.example -o .env
python3 -c "import os,base64;print(base64.urlsafe_b64encode(os.urandom(32)).decode())"
nano .env

Η τρίτη εντολή τυπώνει ένα τυχαίο κλειδί: αντιγράψτε το για το PIN_KEY. Στο nano συμπληρώστε (μετακινηθείτε με τα βελάκια):

Γραμμή Τι βάζετε
ERGANI_MODE= dry_run (στην αρχή πάντα αυτό)
CF_ACCESS_TEAM_DOMAIN= tokatastimamou.cloudflareaccess.com (το team name σας + .cloudflareaccess.com)
CF_ACCESS_AUD= το AUD tag από την «Προστασία της σελίδας διαχείρισης»
ADMIN_EMAILS= το email σας (το ίδιο με την policy)
PUBLIC_ORIGIN= https://karta.tokatastimamou.gr
PIN_KEY= το κλειδί που τύπωσε η εντολή
COMPOSE_PROFILES= tunnel (ξεκινά το tunnel μαζί με την Karta)
TUNNEL_TOKEN= το token από το «Cloudflare Tunnel»
TUNNEL_PROTOCOL= http2 για μηχάνημα στο κατάστημα ή στο σπίτι, auto σε VPS

Αποθηκεύστε με Ctrl+O, Enter, και βγείτε με Ctrl+X. Το .env περιέχει κωδικούς: μην το στείλετε πουθενά.

ΑΦΜ, χρήστη ΕΡΓΑΝΗ και ειδοποιήσεις στο κινητό τα συμπληρώνετε μετά, στη σελίδα διαχείρισης («Ρυθμίσεις»). Αν προτιμάτε, μπαίνουν και εδώ (EMPLOYER_AFM, BRANCH_NUMBER, ERGANI_USERNAME, ERGANI_PASSWORD, NTFY_*)· δείτε Ρυθμίσεις server.

Ξεκινήστε την Karta

cd ~/karta
docker compose up -d
docker compose ps

Και οι δύο γραμμές (karta και cloudflared) πρέπει να γράφουν running ή Up. Μετά από ένα λεπτό, ανοίξτε στον browser:

  • https://karta.tokatastimamou.gr/healthz → πρέπει να δείτε {"ok":true,"mode":"dry_run"}.
  • https://karta.tokatastimamou.gr/admin → το Cloudflare ζητά το email σας, σας στέλνει κωδικό, και μετά βλέπετε τη σελίδα διαχείρισης.

Η Karta ξεκινά μόνη της κάθε φορά που ανοίγει το μηχάνημα.

Κάτι δεν πάει καλά; Δείτε τι λέει:

docker compose logs --tail 50 karta
docker compose logs --tail 50 cloudflared

Συνηθισμένα λάθη: λάθος ή κενή τιμή στο .env (η Karta γράφει ποια λείπει), λάθος token στο tunnel, ή λάθος PUBLIC_ORIGIN (πρέπει να είναι ακριβώς η διεύθυνση, με https:// και χωρίς / στο τέλος).

Στο τέλος, για το κουμπί «Ενημέρωση τώρα» και το αντίγραφο κάθε βράδυ, κατεβάστε τον οδηγό στον ίδιο φάκελο και τρέξτε τον:

cd ~/karta
curl -fsSLO https://raw.githubusercontent.com/osergios/karta/main/setup.sh
chmod +x setup.sh
./setup.sh update

Το ./setup.sh update βάζει το update.sh (κουμπί «Ενημέρωση τώρα») και το backup.sh. Για να γίνεται το αντίγραφο αυτόματα κάθε βράδυ, τρέξτε μία φορά το ./setup.sh: κρατά τις τιμές του .env σας ως προεπιλογές και ρωτά για το νυχτερινό αντίγραφο.

Clone this wiki locally