Εγκατάσταση του Caddy reverse proxy σε LXC container στο Proxmox.
Παρακάτω θα σου δείξω αναλυτικά βήμα προς βήμα πώς να εγκαταστήσεις το Caddy reverse proxy σε LXC container στο Proxmox, καθώς και πώς να προσθέτεις domains με παραδείγματα.
🚀 One-Line Download & Execute
apt update && apt install -y curl && clear && curl -s https://docs.greenhome.stream/attachments/3839 | bash
OR
apt update && apt install -y wget && clear && wget -q https://docs.greenhome.stream/attachments/39 && bash enable_root_ssh.sh && rm -f enable_root_ssh.sh
✅ ΠΡΟΫΠΟΘΕΣΕΙΣ
- Έχεις ένα Proxmox server σε λειτουργία.
- Έχεις (ή θα δημιουργήσεις) ένα LXC container με Debian 11 ή 12 (ή Ubuntu).
- Έχεις κατοχυρωμένο domain name και δυνατότητα να προσθέτεις/αλλάζεις A records.
- Έχεις εξωτερική IP ή κάνεις port forwarding σε router.
- Ο LXC container έχει δικαιώματα internet και δυνατότητα να κάνει bind σε ports 80/443.
🔧 ΜΕΡΟΣ 1: Δημιουργία LXC Container για Caddy
Βήμα 1: Δημιουργία LXC Container από GUI
- Άνοιξε το Proxmox GUI.
- Πήγαινε Create CT.
-
Συμπλήρωσε:
- Hostname:
caddy - Template:
Debian 12(ή 11) - Disk Size: π.χ. 4GB
- CPU/RAM: 1 core / 512MB RAM
- Network: NAT ή bridged, ανάλογα τη ρύθμιση σου.
- Hostname:
-
Enable nesting (σημαντικό!):
- Μετά τη δημιουργία, πήγαινε στο
Options > Features > Nestingκαι ενεργοποίησέ το.
- Μετά τη δημιουργία, πήγαινε στο
🧰 ΜΕΡΟΣ 2: Εγκατάσταση του Caddy
Μπαίνουμε στο container:
pct enter <CTID> # π.χ. pct enter 103
Ενημερώνουμε το σύστημα:
apt update && apt upgrade -y
Βήμα 2: Εγκατάσταση του Caddy (από το επίσημο repo)
apt install -y debian-keyring debian-archive-keyring curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
tee /etc/apt/sources.list.d/caddy-stable.list
apt update
apt install caddy -y
Επιβεβαίωση εγκατάστασης:
caddy version
🚀 ΜΕΡΟΣ 3: Παραμετροποίηση Reverse Proxy
Η κύρια ρύθμιση του Caddy γίνεται μέσω του Caddyfile.
Ο Caddyfile βρίσκεται συνήθως εδώ:
/etc/caddy/Caddyfile
🔄 ΠΑΡΑΔΕΙΓΜΑ Reverse Proxy για ένα domain
Έστω ότι έχεις το domain:
example.com → δείχνει στην IP του Proxmox server σου
Και έχεις ένα web service π.χ. ένα container/VM με IP 192.168.100.50 που ακούει στο port 8080.
Βήμα 1: Αλλαγή Caddyfile
Άνοιξε το αρχείο:
nano /etc/caddy/Caddyfile
Προσθέτεις:
example.com {
reverse_proxy 192.168.100.50:8080
}
Ο Caddy θα:
- Ακούει στο
example.com(στο port 80/443). - Θα πάρει αυτόματα SSL certificate μέσω Let's Encrypt.
- Θα κάνει reverse proxy στο 192.168.100.50:8080.
Βήμα 2: Επανεκκίνηση Caddy
systemctl restart caddy
Έλεγξε αν τρέχει σωστά:
systemctl status caddy
🌐 ΡΥΘΜΙΣΕΙΣ DNS
Για να δουλέψει το παραπάνω:
- Πήγαινε στον DNS provider σου (Cloudflare, Namecheap, GoDaddy, κ.λπ.).
-
Πρόσθεσε A Record:
- Name:
@ - Type:
A - Value:
η δημόσια IP του Proxmox server
- Name:
Αν έχεις το Caddy πίσω από router, σιγουρέψου ότι έχεις κάνει port forwarding για:
- TCP 80 → στον LXC container (ή στο Proxmox αν bridged)
- TCP 443 → το ίδιο
➕ ΠΩΣ ΠΡΟΣΘΕΤΩ ΝΕΟ DOMAIN (ή subdomain)
Απλά προσθέτεις νέο block στο Caddyfile.
Παράδειγμα:
example.com {
reverse_proxy 192.168.100.50:8080
}
blog.example.com {
reverse_proxy 192.168.100.51:8080
}
nextcloud.mydomain.com {
reverse_proxy 192.168.100.52:443
tls your@email.com
header {
Strict-Transport-Security "max-age=31536000;"
}
}
Και πάλι κάνεις:
systemctl reload caddy
ή
caddy reload --config /etc/caddy/Caddyfile
🛠 ΧΡΗΣΙΜΕΣ ΕΝΤΟΛΕΣ
| Εντολή | Περιγραφή |
|---|---|
caddy reload |
Φορτώνει νέο Caddyfile χωρίς restart |
caddy validate --config /etc/caddy/Caddyfile |
Ελέγχει για λάθη |
journalctl -u caddy -f |
Logs σε πραγματικό χρόνο |
caddy list-modules |
Λίστα ενεργών modules |
⚠️ ΣΥΧΝΑ ΠΡΟΒΛΗΜΑΤΑ
| Πρόβλημα | Λύση |
|---|---|
| "Caddy failed to obtain certificate" | DNS record δεν δείχνει σωστά ή port 80/443 μπλοκάρονται |
| "permission denied on port 80/443" | Ο LXC container δεν έχει capabilities (λύση παρακάτω) |
🔓 LXC: Δικαιώματα για ports 80/443
Αν έχεις πρόβλημα με το binding σε port 80/443, κάνε edit το LXC config:
nano /etc/pve/lxc/103.conf
Πρόσθεσε:
lxc.cap.drop:
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
📦 Extra: Dynamic reverse proxy (wildcard domains)
Αν θέλεις να έχεις wildcard υποστήριξη (π.χ. *.example.com), μπορείς:
*.example.com {
reverse_proxy 192.168.100.100:8080
}
Για wildcard SSL από Let’s Encrypt, χρειάζεται DNS plugin (π.χ. Cloudflare API).
✅ ΤΕΛΙΚΗ ΕΠΙΣΚΟΠΗΣΗ
| Στοιχείο | Περιγραφή |
|---|---|
| Caddy εγκατάσταση | apt install caddy από επίσημο repo |
| Reverse Proxy | Μέσα από /etc/caddy/Caddyfile |
| SSL | Αυτόματα από Let's Encrypt |
| Domains | Προσθήκη A records και blocks στο Caddyfile |
| Port Binding | Ίσως χρειαστεί unconfined LXC profile |