Εγκατάσταση του Caddy reverse proxy σε LXC container στο Proxmox.

Παρακάτω θα σου δείξω αναλυτικά βήμα προς βήμα πώς να εγκαταστήσεις το Caddy reverse proxy σε LXC container στο Proxmox, καθώς και πώς να προσθέτεις domains με παραδείγματα.

🚀 Λήψη και εκτέλεση σε μία γραμμή

apt update && apt install -y curl && clear && curl -s https://docs.greenhome.stream/attachments/39 | bash

OR

apt update && apt install -y wget && clear && wget -q https://docs.greenhome.stream/attachments/39 && bash caddy-install.sh && rm -f caddy-install.sh


✅ ΠΡΟΫΠΟΘΕΣΕΙΣ

  1. Έχεις ένα Proxmox server σε λειτουργία.
  2. Έχεις (ή θα δημιουργήσεις) ένα LXC container με Debian 11 ή 12 (ή Ubuntu).
  3. Έχεις κατοχυρωμένο domain name και δυνατότητα να προσθέτεις/αλλάζεις A records.
  4. Έχεις εξωτερική IP ή κάνεις port forwarding σε router.
  5. Ο LXC container έχει δικαιώματα internet και δυνατότητα να κάνει bind σε ports 80/443.

🔧 ΜΕΡΟΣ 1: Δημιουργία LXC Container για Caddy

Βήμα 1: Δημιουργία LXC Container από GUI

🧰 ΜΕΡΟΣ 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 θα:


Βήμα 2: Επανεκκίνηση Caddy
systemctl restart caddy

Έλεγξε αν τρέχει σωστά:

systemctl status caddy

🌐 ΡΥΘΜΙΣΕΙΣ DNS

Για να δουλέψει το παραπάνω:

Αν έχεις το Caddy πίσω από router, σιγουρέψου ότι έχεις κάνει port forwarding για:


➕ ΠΩΣ ΠΡΟΣΘΕΤΩ ΝΕΟ 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

Ins0mniA


Revision #6
Created 2025-08-22 13:30:50 EEST by Green
Updated 2025-09-10 19:45:09 EEST by Green