Δημιουργία server
Προαιρετικός. Προσθέτει διαδρομή μέσω διαδικτύου όταν υπάρχει, χωρίς να αγγίζει τη λειτουργία χωρίς δίκτυο.
Τι κάνει
Ο rendezvous server είναι το σημείο συνάντησης δύο συσκευών IRIS 3 μέσω διαδικτύου. Με αυτόν κάνεις ζεύξη συσκευών με κωδικό QR και στέλνεις μηνύματα και δεδομένα με το Κανάλι Γ, σε μία συγκεκριμένη συσκευή ή ομάδα. Κρατά μόνο έναν μικρό κατάλογο με το ποια συσκευή βρίσκεται πού και προωθεί κρυπτογραφημένα πακέτα.
Πότε τον χρειάζεσαι
Δεν τον χρειάζεσαι για τίποτα από τα υπόλοιπα. Ο χάρτης, οι καταχωρήσεις πεδίου και η επικοινωνία μέσω της γέφυρας δουλεύουν χωρίς server. Ο server προσθέτει μια δεύτερη διαδρομή όταν υπάρχει διαδίκτυο, και μπορείς να έχεις ενεργές και τις δύο ταυτόχρονα.
| Κανάλι Β (γέφυρα) | Κανάλι Γ (server) | |
|---|---|---|
| Μέσο | Ασύρματος, χωρίς δίκτυο | Διαδίκτυο |
| Παραλήπτης | Όλες οι συνδεδεμένες συσκευές | Μία συσκευή ή μία ομάδα |
| Προαπαιτούμενο | Συνδεδεμένη γέφυρα | Διεύθυνση server και ζεύξη QR |
Πριν ξεκινήσεις
Η εφαρμογή χρειάζεται μία διεύθυνση της μορφής https://host:port, χωρίς τελικό /, προσβάσιμη μέσω HTTPS από όλες τις συσκευές. Ο οδηγός δεν προϋποθέτει γνώσεις πληροφορικής: κάθε βήμα λέει τι κάνεις και γιατί. Χρειάζεσαι περίπου μία ώρα, έναν υπολογιστή Windows, ένα email και τον φάκελο του project IRIS 3, από όπου χτίζεται ο server.
Επιλογή Α: Oracle Cloud
Προτεινόμενη. Δωρεάν για πάντα στο πρόγραμμα Always Free. Σταθερή διεύθυνση, καμία εξάρτηση από το ρεύμα ή το internet του σπιτιού σου.
Επιλογή Β: Raspberry Pi
Δικό σου μηχάνημα στο σπίτι (περίπου 60 έως 90 €). Καμία εξάρτηση από τρίτους, αλλά θες πρόσβαση στο router.
Επιλογή Γ: Πληρωμένο cloud VPS
Οποιοσδήποτε πάροχος (DigitalOcean, Hetzner κ.ά.), περίπου 4 έως 6 € τον μήνα. Χρήσιμο αν δεν θες την εγγραφή της Oracle.
Επιλογή Δ: Server σε Windows
Τρέχεις τον server σε μηχάνημα με Windows (PC στο σπίτι ή Windows VPS), χωρίς SSH και Linux.
Επιλογή Α: Oracle Cloud
Άνοιξε λογαριασμό Oracle Cloud
Πήγαινε στο
oracle.com/cloud/freeκαι πάτα «Start for free». Θα ζητηθούν email, χώρα και στοιχεία κάρτας για επιβεβαίωση ταυτότητας. Στο πρόγραμμα Always Free δεν χρεώνεσαι. Διάλεξε περιοχή δεδομένων κοντά σου, π.χ. στην Ευρώπη.Δημιούργησε το virtual machine
- Στο μενού: Compute, Instances, Create Instance.
- Όνομα:
iris3-server. - Image: Ubuntu, τελευταία LTS.
- Shape: Ampere (Always Free) ή VM.Standard.E2.1.Micro. Και τα δύο είναι δωρεάν.
- Στο «Add SSH keys» διάλεξε «Save private key» και κράτα το αρχείο
.key. Αν το χάσεις, δεν μπαίνεις στον server. - Πάτα Create και περίμενε να γίνει Running. Σημείωσε το Public IP Address.
Άνοιξε τη θύρα 443
Στη σελίδα του instance πάτα στο Subnet, μετά στο Security List, Add Ingress Rules. Source CIDR
0.0.0.0/0, πρωτόκολλοTCP, θύρα προορισμού443.Μην ανοίξεις τη θύρα 8443. Ο server ακούει σε αυτήν μόνο εσωτερικά. Κάθε αίτημα κουβαλά ένα bearer token, και αν η 8443 ήταν ανοιχτή προς τα έξω θα ταξίδευε χωρίς κρυπτογράφηση.
Συνδέσου με SSH από τα Windows
Άνοιξε το PowerShell. Άλλαξε το μονοπάτι και την IP με τα δικά σου.
icacls "C:\Users\you\Downloads\ssh-key-xxxx.key" /inheritance:r /grant:r "${env:USERNAME}:R" ssh -i "C:\Users\you\Downloads\ssh-key-xxxx.key" ubuntu@132.145.x.xΣτο «yes/no» γράψε
yes. Όταν το prompt γίνειubuntu@iris3-server:~$, μπήκες.Εγκατάστησε Java
Ο server είναι γραμμένος σε Kotlin/Java. Μέσα στο SSH:
sudo apt-get update sudo apt-get install -y openjdk-17-jreΠάρε το πακέτο και στείλ' το στον server
Κατέβασε το έτοιμο πακέτο του server στον δικό σου υπολογιστή και αποσυμπίεσέ το. Μέσα θα βρεις έναν φάκελο
rendezvous-server.Αν προτιμάς να το χτίσεις μόνος σου, και έχεις το project IRIS 3, τρέξε μέσα στον φάκελό του, σε δεύτερο παράθυρο PowerShell:
.\gradlew.bat :rendezvous-server:installDistΤο build δημιουργεί τον φάκελο
rendezvous-server\build\install\rendezvous-server\. Όποια επιλογή κι αν διάλεξες, στείλε τον φάκελοrendezvous-serverμε το WinSCP (δωρεάν,winscp.net): πρωτόκολλο SFTP, host η IP του server, userubuntu, και στο Advanced, SSH, Authentication το ίδιο αρχείο.key(αν ζητήσει μετατροπή σε.ppk, πάτα OK). Φτιάξε τον φάκελο/opt/iris3και σύρε μέσα τονrendezvous-server.Αν το WinSCP δεν σε αφήνει να γράψεις στο
/opt, τρέξε πρώτα στο SSH:sudo mkdir -p /opt/iris3 && sudo chown ubuntu /opt/iris3Φτιάξε το κλειδί διαχειριστή (admin token)
Πριν στήσεις τον server ως μόνιμη υπηρεσία, φτιάξε ένα δεύτερο, ξεχωριστό μυστικό. Δεν είναι το κλειδί SSH και δεν σε βάζει στο μηχάνημα. Επιτρέπει μόνο στο εργαλείο διαχείρισης να δει και να διαχειριστεί τη λίστα συσκευών. Μέσα στο SSH:
openssl rand -hex 32Θα τυπωθεί μια μακριά σειρά από γράμματα και αριθμούς. Αντίγραψέ την και κράτησέ την κάπου ασφαλές. Θα τη χρειαστείς στο επόμενο βήμα και ξανά στο εργαλείο διαχείρισης. Όποιος την έχει μπορεί να δει και να σβήσει συσκευές, οπότε μην τη μοιράζεσαι.
Κάν' τον να τρέχει μόνιμα
Ο server θα ξεκινά μόνος του μετά από κάθε επανεκκίνηση. Μέσα στο SSH άνοιξε το αρχείο:
sudo nano /etc/systemd/system/iris3-rendezvous.serviceΕπικόλλησε αυτό, βάζοντας στη θέση του
ΤΟ-TOKEN-ΣΟΥτη σειρά που αντέγραψες στο προηγούμενο βήμα. Αποθήκευσε μεCtrl+Oκαι Enter, και βγες μεCtrl+X:[Unit] Description=IRIS3 Rendezvous Server After=network.target [Service] Environment=RENDEZVOUS_DB_URL=jdbc:sqlite:/opt/iris3/rendezvous.db Environment=RENDEZVOUS_PORT=8443 Environment=RENDEZVOUS_ADMIN_TOKEN=ΤΟ-TOKEN-ΣΟΥ ExecStart=/opt/iris3/rendezvous-server/bin/rendezvous-server Restart=always User=ubuntu [Install] WantedBy=multi-user.targetsudo systemctl enable --now iris3-rendezvous curl http://127.0.0.1:8443/healthΑν απαντήσει
OK, ο server δουλεύει.Αν ξέχασες το προηγούμενο βήμα: χωρίς τη γραμμή
RENDEZVOUS_ADMIN_TOKENο server δουλεύει κανονικά για την εφαρμογή, αλλά οι διαδρομές διαχείρισης είναι κλειστές και το εργαλείο διαχείρισης δεν θα συνδεθεί. Μπορείς να την προσθέσεις οποτεδήποτε: άνοιξε ξανά το αρχείο, πρόσθεσε τη γραμμή, αποθήκευσε και τρέξεsudo systemctl daemon-reload && sudo systemctl restart iris3-rendezvous.Πάρε ένα όνομα (domain)
Η εφαρμογή χρειάζεται HTTPS, και το HTTPS θέλει όνομα και όχι γυμνή IP. Η εύκολη δωρεάν λύση είναι το DuckDNS: μπες στο
duckdns.orgμε λογαριασμό Google ή GitHub, διάλεξε υπο-domain (π.χ.iris3δίνειiris3.duckdns.org), βάλε στο «current ip» την Public IP του server και πάτα «update ip». Αν έχεις δικό σου domain, φτιάξε εκεί μια εγγραφή A προς την ίδια IP.Βάλε HTTPS με nginx
Το nginx στέκεται μπροστά από τον server, μιλά HTTPS προς τα έξω και περνά τα αιτήματα εσωτερικά στη θύρα 8443.
sudo apt-get install -y nginx certbot python3-certbot-nginx sudo nano /etc/nginx/sites-available/defaultΣβήσε ό,τι υπάρχει και βάλε το παρακάτω, με το δικό σου όνομα στη θέση του
iris3.example.org:server { listen 80; server_name iris3.example.org; location / { proxy_pass http://127.0.0.1:8443; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_read_timeout 300s; } }sudo nginx -t sudo systemctl reload nginx sudo certbot --nginx -d iris3.example.orgΤο certbot ζητά ένα email για ειδοποιήσεις λήξης και στήνει δωρεάν πιστοποιητικό, που ανανεώνεται μόνο του κάθε 90 μέρες.
Γιατί οι τρεις γραμμές proxy_set_header: η εφαρμογή κρατά μόνιμη σύνδεση WebSocket για να παίρνει μηνύματα αμέσως. Χωρίς αυτές το nginx την κλείνει και η εφαρμογή πέφτει σιωπηλά σε πιο αργή λειτουργία, χωρίς ορατό σφάλμα.
Έλεγξε από έξω
Σε browser στον υπολογιστή σου άνοιξε:
https://iris3.example.org/healthΑν δείξει
OK, δουλεύει όλη η αλυσίδα: εφαρμογή, διαδίκτυο, nginx, server. Μετά πήγαινε στην ενότητα «Ρύθμιση στην εφαρμογή».
Επιλογή Β: Raspberry Pi
Η λογική είναι ίδια με την επιλογή Α (SSH, Java, υπηρεσία, nginx). Αλλάζουν τρία πράγματα: δεν νοικιάζεις μηχάνημα, η θύρα ανοίγει στο router, και χρειάζεται ένα κόλπο για να «θυμάται» το όνομα τη μεταβαλλόμενη IP του σπιτιού.
Ετοίμασε το Raspberry Pi
Κατέβασε το Raspberry Pi Imager (
raspberrypi.com/software). Διάλεξε το μοντέλο σου και Raspberry Pi OS Lite (64-bit). Πριν γράψεις την κάρτα (microSD, τουλάχιστον 8 GB) πάτα το γρανάζι: ενεργοποίησε SSH, όρισε χρήστη και κωδικό, και βάλε το Wi-Fi σου. Βάλε την κάρτα στο Pi, δώσε ρεύμα και περίμενε περίπου ένα λεπτό. Βρες την τοπική IP του από τη λίστα συσκευών του router.SSH, Java και αντιγραφή του server
Όπως στα βήματα 4, 5 και 6 της επιλογής Α, με δύο διαφορές: συνδέεσαι με το τοπικό όνομα και IP (όχι με κλειδί Oracle), και βάζεις Java 21, γιατί οι νεότερες εκδόσεις του Pi OS δεν έχουν το πακέτο 17.
ssh your-user@192.168.1.xx sudo apt-get update sudo apt-get install -y openjdk-21-jre-headlessΈλεγξε ότι η θύρα είναι ελεύθερη
Αν το Pi τρέχει άλλη υπηρεσία, μπορεί να έχει πιάσει ήδη την 8443.
sudo ss -tlnpΑν δεις κάτι στο
:8443, χρησιμοποίησε την9443. Τα παρακάτω την υποθέτουν.Κάν' τον να τρέχει μόνιμα
Το ίδιο αρχείο υπηρεσίας με το βήμα 8 της επιλογής Α. Άλλαξε το
RENDEZVOUS_PORTστο9443αν διάλεξες άλλη θύρα, και τοUserστον δικό σου χρήστη. Φτιάξε και το admin token όπως στο βήμα 7 (openssl rand -hex 32) και βάλε το στη γραμμήRENDEZVOUS_ADMIN_TOKEN.sudo systemctl enable --now iris3-rendezvous curl http://127.0.0.1:9443/healthΌνομα που «θυμάται» το σπίτι σου
Το σπίτι σου δεν έχει σταθερή δημόσια IP. Φτιάξε το domain στο DuckDNS όπως στο βήμα 9 της επιλογής Α και βάλε ένα μικρό script να το ανανεώνει κάθε 5 λεπτά.
mkdir ~/duckdns && cd ~/duckdns nano duck.shΜέσα στο αρχείο βάλε (με το δικό σου token και domain από τη σελίδα του DuckDNS):
echo url="https://www.duckdns.org/update?domains=iris3&token=YOUR_TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -chmod 700 duck.sh crontab -eΠρόσθεσε στο τέλος του αρχείου που ανοίγει:
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1Port forwarding στο router
Εδώ αντικαθιστάς το Security List του cloud. Μπες στη διαχείριση του router (συχνά
192.168.1.1), βρες το Port Forwarding ή Virtual Server και φτιάξε κανόνα: εξωτερική θύρα443, εσωτερική IP η τοπική IP του Pi, εσωτερική θύρα443.HTTPS με nginx
Ακολούθησε το βήμα 10 της επιλογής Α, με μία αλλαγή: στο
proxy_passβάλε τη θύρα που διάλεξες.proxy_pass http://127.0.0.1:9443;Μετά τρέξε
certbotκαι κάνε τον έλεγχο του βήματος 11. Αν μεταφέρεσαι από τον Oracle server και θες να κρατήσεις τις συσκευές, αντίγραψε με το WinSCP τοrendezvous.dbστο/opt/iris3/του Pi πριν ξεκινήσεις την υπηρεσία. Αλλιώς ξεκίνα με άδεια βάση και οι συσκευές ξαναγράφονται μόνες τους.
Επιλογή Γ: Πληρωμένο cloud VPS
Αν δεν θες να περάσεις από την εγγραφή της Oracle, ή θες πιο προβλέψιμο μηχάνημα χωρίς τα όρια του Always Free, μπορείς να χρησιμοποιήσεις οποιονδήποτε πάροχο VPS, π.χ. DigitalOcean, Hetzner ή Linode. Η λογική είναι ίδια με την επιλογή Α. Αλλάζουν η εγγραφή, το κόστος (συνήθως 4 έως 6 € τον μήνα για το μικρότερο μηχάνημα) και μερικά ονόματα στη διεπαφή.
Εγγραφή και δημιουργία του μηχανήματος
Κάνε εγγραφή στον πάροχο (
digitalocean.com,hetzner.com/cloudήlinode.com). Χρειάζεται κάρτα και θα χρεώνεσαι κανονικά κάθε μήνα, δεν υπάρχει δωρεάν πλάνο. Μετά δημιούργησε νέο μηχάνημα («Droplet» στο DigitalOcean, «Server» στο Hetzner):- Λειτουργικό: Ubuntu 22.04 ή 24.04 LTS.
- Μέγεθος: αρκεί το μικρότερο και φθηνότερο πλάνο (1 vCPU, 1 GB RAM).
- Πιστοποίηση: διάλεξε SSH key αντί για κωδικό. Αν δεν έχεις ζευγάρι κλειδιών, φτιάξε ένα στο PowerShell:
Επικόλλησε το περιεχόμενο του αρχείουssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\iris3_vps"iris3_vps.pubστο πεδίο «SSH Key» του παρόχου. - Πάτα δημιουργία. Σε 1 με 2 λεπτά θα δεις μια δημόσια IP (π.χ.
167.99.x.x). Σημείωσέ την.
Άνοιξε τη θύρα 443 στο firewall του παρόχου
Όπως στο βήμα 3 της επιλογής Α. Το firewall λέγεται «Firewalls» στο DigitalOcean και «Firewall» στο Hetzner Cloud. Φτιάξε κανόνα εισερχόμενης κίνησης: TCP, θύρα
443, πηγή0.0.0.0/0, και εφάρμοσέ τον στο μηχάνημα. Μην ανοίξεις την 8443, για τον ίδιο λόγο.Μερικοί πάροχοι (π.χ. Hetzner) αφήνουν όλες τις θύρες ανοιχτές αν δεν φτιάξεις firewall. Τότε το βήμα είναι προαιρετικό, αλλά συστήνεται να προσθέσεις ένα έτσι κι αλλιώς.
Συνέχισε από το βήμα 4 της επιλογής Α
Ακολούθησε τα βήματα 4 έως 11 της επιλογής Α όπως είναι, γράφοντας στο SSH τη νέα IP και το δικό σου κλειδί αντί για της Oracle. Μετά πήγαινε στην ενότητα «Ρύθμιση στην εφαρμογή».
ssh -i "$env:USERPROFILE\.ssh\iris3_vps" root@167.99.x.xΆλλο όνομα χρήστη. Οι περισσότεροι πάροχοι VPS σε συνδέουν ως
rootκαι όχι ωςubuntu. Ωςrootδεν χρειάζεταιsudo(δουλεύει όμως και με αυτό). Στο αρχείο υπηρεσίας του βήματος 8 άλλαξε τοUser=ubuntuσεUser=root, και στο WinSCP βάλε userroot.
Επιλογή Δ: Server σε Windows
Αν έχεις ήδη μηχάνημα με Windows που μπορεί να μένει πάντα ανοιχτό (PC στο σπίτι ή Windows VPS), μπορείς να τρέξεις τον server εκεί, χωρίς SSH, Linux και WinSCP. Αντί για systemd χρησιμοποιούμε το δωρεάν εργαλείο NSSM, που «τυλίγει» τον server σε κανονική υπηρεσία Windows. Αντί για nginx και certbot χρησιμοποιούμε το Caddy, ένα ενιαίο πρόγραμμα που αποκτά μόνο του δωρεάν πιστοποιητικό HTTPS.
Εγκατάστησε Java
Κατέβασε το δωρεάν Eclipse Temurin JDK 17 (έκδοση
.msiγια Windows) απόadoptium.netκαι εγκατάστησέ το, αφήνοντας επιλεγμένα τα «Set JAVA_HOME» και «Add to PATH». Έλεγξε σε νέο παράθυρο PowerShell:java -versionΑντίγραψε το πρόγραμμα
Χρησιμοποίησε το πακέτο του server (βήμα 6 της επιλογής Α). Περιέχει και launcher για Windows, το
bin\rendezvous-server.bat. Αντίγραψε τον φάκελοrendezvous-serverστο μηχάνημα-στόχο, π.χ. στοC:\iris3\rendezvous-server. Σε PC αρκεί αντιγραφή και επικόλληση. Σε Windows VPS χρησιμοποίησε Remote Desktop (σύρε τον φάκελο μέσα στο παράθυρο) ή ένα cloud drive.Φτιάξε το admin token
Τα Windows δεν έχουν το
openssl, αλλά το PowerShell φτιάχνει το ίδιο αποτέλεσμα με ασφαλή γεννήτρια τυχαίων αριθμών:$b = New-Object byte[] 32; [Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($b); ($b | ForEach-Object { $_.ToString('x2') }) -join ''Αντίγραψε τη σειρά που θα τυπωθεί και κράτησέ την κάπου ασφαλές. Θα τη χρειαστείς στο επόμενο βήμα και ξανά στο εργαλείο διαχείρισης.
Κάν' τον να τρέχει μόνιμα
Κατέβασε το NSSM (δωρεάν,
nssm.cc/download), αποσυμπίεσε και βάλε τοnssm.exeστοC:\iris3\nssm.exe. Φτιάξε το αρχείοC:\iris3\start.bat(δεξί κλικ στον φάκελο, New, Text Document, μετονόμασέ το, άνοιξέ το με Notepad) με αυτό το περιεχόμενο, βάζοντας το δικό σου token:@echo off set RENDEZVOUS_DB_URL=jdbc:sqlite:C:\iris3\rendezvous.db set RENDEZVOUS_PORT=8443 set RENDEZVOUS_ADMIN_TOKEN=ΤΟ-TOKEN-ΣΟΥ C:\iris3\rendezvous-server\bin\rendezvous-server.batΜετά, σε PowerShell ως διαχειριστής (δεξί κλικ στο εικονίδιο, «Run as administrator»):
C:\iris3\nssm.exe install IRIS3Rendezvous "C:\iris3\start.bat" C:\iris3\nssm.exe set IRIS3Rendezvous AppDirectory C:\iris3 C:\iris3\nssm.exe start IRIS3RendezvousΗ υπηρεσία
IRIS3Rendezvousθα ξεκινά αυτόματα σε κάθε επανεκκίνηση και το NSSM θα την ξαναστήνει αν «πεθάνει», όπως τοRestart=alwaysτου βήματος 8 της επιλογής Α. Έλεγχος:curl http://127.0.0.1:8443/healthΆνοιξε τη θύρα 443 στο firewall των Windows
Σε PowerShell ως διαχειριστής:
New-NetFirewallRule -DisplayName "IRIS3 HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow- Αν είναι PC στο σπίτι, πρόσθεσε και port forwarding στο router, όπως στο βήμα «Port forwarding στο router» της επιλογής Β (εξωτερική 443, εσωτερική IP του PC, εσωτερική 443).
- Αν είναι Windows VPS, άνοιξε τη 443 και στο firewall του παρόχου, όπως στο βήμα 2 της επιλογής Γ.
HTTPS με Caddy
Το nginx και το certbot είναι φτιαγμένα για Linux. Στα Windows το πιο απλό ισοδύναμο είναι το Caddy: κάνει reverse proxy και αποκτά και ανανεώνει μόνο του πιστοποιητικό HTTPS. Κατέβασε το
caddy_windows_amd64.exeαπόcaddyserver.com/download, μετονόμασέ το σεcaddy.exeκαι βάλε το στοC:\iris3\caddy\. Φτιάξε εκεί ένα αρχείοCaddyfile(χωρίς επέκταση), με το δικό σου domain στη θέση τουiris3.example.org:iris3.example.org { reverse_proxy 127.0.0.1:8443 }Εγκατάστησέ το κι αυτό ως υπηρεσία με το NSSM (PowerShell ως διαχειριστής):
C:\iris3\nssm.exe install IRIS3Caddy "C:\iris3\caddy\caddy.exe" "run --config C:\iris3\caddy\Caddyfile" C:\iris3\nssm.exe set IRIS3Caddy AppDirectory C:\iris3\caddy C:\iris3\nssm.exe start IRIS3CaddyΤο Caddy παίρνει πιστοποιητικό από το Let's Encrypt την πρώτη φορά που θα δεχτεί κίνηση στη 443. Για να γίνει αυτό, το domain πρέπει να δείχνει ήδη στη σωστή IP (επόμενο βήμα).
Όνομα (domain)
Φτιάξε το domain στο DuckDNS όπως στο βήμα 9 της επιλογής Α. Αν είναι Windows VPS με σταθερή IP, το ενημερώνεις μία φορά και τελείωσες.
Αν είναι PC στο σπίτι (η IP αλλάζει), φτιάξε προγραμματισμένη εργασία που ανανεώνει το DuckDNS κάθε 5 λεπτά, αντί για το
cronτης επιλογής Β:- Άνοιξε το Task Scheduler και πάτα Create Task.
- Trigger: Repeat task every 5 minutes, για διάρκεια Indefinitely.
- Action: Start a program, Program
powershell.exe, Arguments (με το δικό σου token και domain):-Command "Invoke-WebRequest 'https://www.duckdns.org/update?domains=iris3&token=YOUR_TOKEN&ip='"
Έλεγξε από έξω
Όπως στο βήμα 11 της επιλογής Α, από browser:
https://iris3.example.org/healthΑν δείξει
OK, συνέχισε με τις ενότητες «Ρύθμιση στην εφαρμογή» και «Εργαλείο διαχείρισης». Είναι ίδιες, όπου κι αν τρέχει ο server.
Ρύθμιση στην εφαρμογή
Δώσε τη διεύθυνση
Άνοιξε το μενού (☰) και μετά Ρύθμιση Επικοινωνιών. Στο πεδίο της διεύθυνσης server γράψε, π.χ.,
https://iris3.example.orgχωρίς κάθετο στο τέλος, και αποθήκευσε. Κάν' το σε κάθε συσκευή που θα χρησιμοποιεί τον server. Χωρίς διεύθυνση, η οθόνη Ζεύγος Rendezvous γράφει «Δεν έχει ρυθμιστεί διεύθυνση rendezvous server.»Όρισε το Κλειδί Δικτύου
Το πάνελ Server ανοίγει μόνο όταν υπάρχει Κλειδί Δικτύου.
Κάνε ζεύξη συσκευών
Δες την επόμενη ενότητα.
Ζεύξη με QR
Άνοιξε Ζεύγος Rendezvous από το συρτάρι πλοήγησης. Η μία συσκευή δείχνει κωδικό, η άλλη τον σαρώνει.
Συσκευή Α: Δημιουργία Κωδικού
Εμφανίζεται QR και κείμενο, με αντίστροφη μέτρηση. Ο κωδικός λήγει.
Συσκευή Β: Σάρωση Κωδικού
Χρειάζεται άδεια Κάμερας. Αν η συσκευή είναι νέα, δώσε της όνομα. Αν είναι ήδη γνωστή, εμφανίζεται «Pairing επιτυχές».
Συσκευή Α: Ανανέωση και Αποθήκευση
Η πλευρά που έφτιαξε τον κωδικό δεν βλέπει μόνη της ότι σαρώθηκε. Πάτα Ανανέωση στις Γνωστές Συσκευές, δώσε όνομα και Αποθήκευση.
Στείλε με Κανάλι Γ
Σε κάθε «Αποστολή» διάλεξε Κανάλι Γ και μετά έναν παραλήπτη: μία Γνωστή Συσκευή ή μία Ομάδα.
Οι Ομάδες φτιάχνονται από το πάνελ Server, με μέλη από τις Γνωστές Συσκευές σου. Μόνο ο δημιουργός μιας ομάδας μπορεί να την επεξεργαστεί ή να τη διαγράψει.
Εργαλείο διαχείρισης για Windows
Το Rendezvous Admin Tool είναι μια εφαρμογή Windows για όποιον διαχειρίζεται τον server. Δείχνει ποιες συσκευές είναι καταχωρημένες, καθαρίζει εκκρεμή μηνύματα και ελέγχει ότι η διαδρομή του δικτύου δουλεύει, χωρίς SSH και χωρίς χειροκίνητο SQL. Δεν βλέπει ποτέ το περιεχόμενο των μηνυμάτων.
Windows 10 ή 11, 64-bit. Δεν χρειάζεται εγκατάσταση ούτε .NET: κατέβασε και τρέξε το RendezvousAdminTool.exe (περίπου 116 MB). Τα Windows ίσως δείξουν «Windows protected your PC», γιατί το πρόγραμμα δεν είναι ψηφιακά υπογεγραμμένο. Πάτα «More info» και μετά «Run anyway».
Τι κάνει
- Λίστα συσκευών: device id, endpoint, πότε εμφανίστηκε τελευταία φορά, πόσα μηνύματα έστειλε και πόσα δεν έχουν παραδοθεί ακόμα.
- Διαγραφή μίας, πολλών ή όλων των συσκευών.
- Εκκαθάριση όλων των εκκρεμών μηνυμάτων του server.
- Χρόνος κράτησης: πόσο κρατά ο server ένα μη παραδομένο μήνυμα πριν το πετάξει (προεπιλογή 3 ημέρες).
- Διάγνωση: έλεγχος βάσης, δρομολόγησης μηνύματος και πραγματικής σύνδεσης WebSocket στο
/mailbox, από τον υπολογιστή σου μέχρι τον server. - Επανεκκίνηση του server από απόσταση.
- Αυτόματη ανανέωση κάθε 5 δευτερόλεπτα.
Ρύθμιση
Όρισε το admin token στον server
Αν έφτιαξες τον server με τον οδηγό παραπάνω, το token έχει ήδη οριστεί. Αν όχι, φτιάξε ένα τυχαίο μυστικό, π.χ. με
openssl rand -hex 32, και πρόσθεσέ το στο αρχείο υπηρεσίας, κάτω από το[Service]:Environment=RENDEZVOUS_ADMIN_TOKEN=το-μυστικό-σουsudo systemctl daemon-reload sudo systemctl restart iris3-rendezvousΧωρίς ορισμένο token, ο server απαντά
404σε όλες τις διαδρομές διαχείρισης. Είναι κλειστός για διαχείριση από προεπιλογή.Άνοιξε το εργαλείο
Στο Server URL γράψε την ίδια διεύθυνση με την εφαρμογή Android, χωρίς κάθετο στο τέλος, π.χ.
https://iris3.example.org. Στο Admin Token γράψε το μυστικό του βήματος 1 και πάτα Connect/Refresh.Οι τιμές αποθηκεύονται
Μετά την πρώτη επιτυχή σύνδεση, το εργαλείο τις κρατά στο
%APPDATA%\IrisRendezvousAdmin\config.jsonκαι συνδέεται μόνο του στην επόμενη εκκίνηση.
Το token είναι κλειδί διαχείρισης. Όποιος το έχει μπορεί να διαγράψει συσκευές και να επανεκκινήσει τον server. Το config.json το κρατά ως απλό κείμενο, οπότε μην το μοιράζεσαι και μην το αφήνεις σε κοινόχρηστο υπολογιστή.
Τι κάνει κάθε στοιχείο
| Στοιχείο | Λειτουργία |
|---|---|
| Πίνακας συσκευών | Device Id, Endpoint, Last Seen (τοπική ώρα), Sent, Undelivered. Πρώτες οι συσκευές που φάνηκαν πιο παλιά. |
| Delete selected | Ενεργό όταν επιλέξεις γραμμές. Ζητά επιβεβαίωση και διαγράφει μία μία. Αν κάποια αποτύχει, οι υπόλοιπες συνεχίζουν και βλέπεις σύνοψη. Η διαγραφή δεν αναιρείται, αλλά μια συσκευή ξαναγράφεται μόνη της στη λίστα αν ξανασυνδεθεί. |
| Delete all | Διαγράφει όλες τις καταχωρημένες συσκευές, με δεύτερη, πιο έντονη επιβεβαίωση. |
| Run diagnostics | Λίστα OK/FAIL ανά έλεγχο, με χρόνο απόκρισης. |
| Clear all pending | Σβήνει τα εκκρεμή μηνύματα όλων των συσκευών. Δεν αναιρείται. |
| Undelivered timeout + Save | Διαβάζει και αλλάζει τον χρόνο κράτησης των μη παραδομένων μηνυμάτων. |
| Restart server | Ζητά επανεκκίνηση. Το systemd (Restart=always) τον ξανασηκώνει σε λίγα δευτερόλεπτα και κάθε σύνδεση /mailbox ξανασυνδέεται. |
| Total undelivered | Συνολικός αριθμός εκκρεμών μηνυμάτων σε όλον τον server. |
Αν κάτι δεν δουλεύει
| Τι βλέπεις | Τι κάνεις |
|---|---|
| 401 | Λάθος ή άδειο Admin Token. Πρέπει να ταιριάζει με το RENDEZVOUS_ADMIN_TOKEN του server. |
| 404 σε όλα | Ο server δεν έχει ορισμένο token. Ρύθμισέ το (βήμα 1) και κάνε επανεκκίνηση. |
| Σφάλμα δικτύου | Έλεγξε το Server URL (https://...), ότι το nginx και το HTTPS δουλεύουν και ότι φτάνεις τη θύρα 443. Όχι απευθείας την εσωτερική θύρα του server. |
| Αποτυγχάνει μόνο ο έλεγχος WebSocket | Το nginx μάλλον δεν περνά το WebSocket προς το /mailbox. Έλεγξε τις γραμμές proxy_set_header Upgrade και Connection στη ρύθμιση του. |
Δεν διαχειρίζεται ομάδες, ζεύξεις ή περιεχόμενο μηνυμάτων, δεν έχει πολλούς διαχειριστές ούτε αρχείο καταγραφής ενεργειών. Όταν διαγράφεις μια συσκευή, οι ζεύξεις της μένουν αδρανείς και δεν σβήνονται.
Ασφάλεια
- Κράτα την 8443 κλειστή προς τα έξω. Μόνο η 443, με HTTPS, πρέπει να φαίνεται.
- Ο κωδικός ζεύξης λήγει, και μη έγκυρος ή ληγμένος κωδικός απορρίπτεται. Δεν γίνεται ζεύξη με τη δική σου συσκευή.
- Το Κανάλι Γ στέλνει πάντα σε συγκεκριμένο παραλήπτη, ποτέ σε όλο το δίκτυο.
- Το Κλειδί Δικτύου κρυπτογραφεί την επικοινωνία μέσω της γέφυρας. Άλλαξέ το όταν αλλάζει η σύνθεση της ομάδας.
- Κράτα το αρχείο κλειδιού SSH ασφαλές και μην δίνεις τη διεύθυνση του server σε ανθρώπους εκτός ομάδας.
Αν κάτι δεν δουλεύει
| Τι βλέπεις | Τι κάνεις |
|---|---|
curl http://127.0.0.1:8443/health δεν απαντά | Τρέξε sudo systemctl status iris3-rendezvous για να δεις το σφάλμα. |
| Η διεύθυνση HTTPS δεν ανοίγει απ' έξω | Έλεγξε ότι η 443 είναι ανοιχτή (βήμα 3 ή port forwarding) και ότι η IP στο DuckDNS είναι σωστή. |
| Η IP του server άλλαξε | Μπες στο DuckDNS και πάτα «update ip» ξανά. |
| Έκανες reboot τον server | Τίποτα. Το systemctl enable τον ξεκινά μόνο του. |
| Raspberry Pi: σταμάτησε μετά από διακοπή ρεύματος ή επανεκκίνηση router | Περίμενε έως 5 λεπτά να ανανεωθεί το DuckDNS, ή τρέξε ~/duckdns/duck.sh με το χέρι. |
BindException: Address already in use | Άλλη υπηρεσία έχει τη θύρα. Έλεγξε με sudo ss -tlnp, διάλεξε άλλη και άλλαξε και το RENDEZVOUS_PORT και το proxy_pass. |
| Το εργαλείο διαχείρισης δείχνει «Refresh failed» ή Unauthorized | Το token που έγραψες δεν ταιριάζει με το RENDEZVOUS_ADMIN_TOKEN του αρχείου υπηρεσίας, ή η γραμμή λείπει. Σύγκρινέ τα χαρακτήρα προς χαρακτήρα. Αν τα διόρθωσες, τρέξε sudo systemctl daemon-reload && sudo systemctl restart iris3-rendezvous και πάτα ξανά Connect/Refresh. |
| Τα Windows εμποδίζουν το άνοιγμα του εργαλείου διαχείρισης | Στο παράθυρο SmartScreen πάτα «More info» και μετά «Run anyway». Το πρόγραμμα δεν είναι ψηφιακά υπογεγραμμένο, γι' αυτό τα Windows το θεωρούν άγνωστο. |
| (Cloud VPS) Δεν μπορείς να συνδεθείς με SSH | Έλεγξε ότι χρησιμοποιείς το σωστό όνομα χρήστη (root σε DigitalOcean, Hetzner και Linode, όχι ubuntu) και το σωστό ιδιωτικό κλειδί. |
| (Windows) Η υπηρεσία δεν ξεκινά | Τρέξε C:\iris3\nssm.exe status IRIS3Rendezvous, ή άνοιξε τα Windows Services (services.msc) και ψάξε το IRIS3Rendezvous ή το IRIS3Caddy για το σφάλμα. |
| (Windows) Το Caddy δεν παίρνει πιστοποιητικό HTTPS | Συνήθως το domain δεν δείχνει ακόμα στη σωστή δημόσια IP, ή η 443 δεν είναι πραγματικά ανοιχτή από έξω. Το Let's Encrypt πρέπει να φτάσει στη 443 από το διαδίκτυο για να επιβεβαιώσει το domain. |