Ανάπτυξη VPN σε Headless Servers
Το FreeGuard CLI εκτελείται εγγενώς σε headless Linux servers χωρίς να απαιτείται γραφικό περιβάλλον. Είτε ασφαλίζετε ένα cloud instance, προστατεύετε ένα home lab ή δρομολογείτε container traffic μέσω VPN, αυτός ο οδηγός καλύπτει την εγκατάσταση, τον έλεγχο ταυτότητας, τη διαμόρφωση υπηρεσιών και την παρακολούθηση για παραγωγικές αναπτύξεις σε servers.

Ανάπτυξη VPN σε Headless Servers

Το FreeGuard CLI εκτελείται εγγενώς σε headless Linux servers χωρίς να απαιτείται γραφικό περιβάλλον. Είτε ασφαλίζετε ένα cloud instance, προστατεύετε ένα home lab ή δρομολογείτε container traffic μέσω VPN, αυτός ο οδηγός καλύπτει την εγκατάσταση, τον έλεγχο ταυτότητας, τη διαμόρφωση υπηρεσιών και την παρακολούθηση για παραγωγικές αναπτύξεις σε servers.

Γιατί να εκτελέσετε VPN σε server;

Οι servers χειρίζονται ευαίσθητη κίνηση: συνδέσεις βάσεων δεδομένων, κλήσεις API, μεταφορές αντιγράφων ασφαλείας και επικοινωνία μεταξύ υπηρεσιών. Η εκτέλεση VPN στον ίδιο τον server εξασφαλίζει ότι όλη η εξερχόμενη κίνηση είναι κρυπτογραφημένη χωρίς να ρυθμίζετε μεμονωμένες εφαρμογές.

Συνηθισμένες περιπτώσεις χρήσης:

  • Cloud instances που έχουν πρόσβαση σε γεωγραφικά περιορισμένα API
  • CI/CD runners που χρειάζονται σταθερή ταυτότητα δικτύου
  • Self-hosted υπηρεσίες που ωφελούνται από την απόκρυψη IP
  • Servers ανάπτυξης που χρησιμοποιούνται από κατανεμημένες ομάδες

Εγκατάσταση

Ubuntu / Debian

curl -fsSL https://cli.freeguard.com/install.sh | bash

Ή εγκαταστήστε από το αποθετήριο APT:

curl -fsSL https://cli.freeguard.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/freeguard.gpg
echo "deb [signed-by=/usr/share/keyrings/freeguard.gpg] https://apt.freeguard.com stable main" | sudo tee /etc/apt/sources.list.d/freeguard.list
sudo apt update
sudo apt install freeguard-cli

CentOS / RHEL / Fedora

curl -fsSL https://cli.freeguard.com/install.sh | bash

Ή χρησιμοποιήστε το αποθετήριο RPM:

sudo rpm --import https://cli.freeguard.com/gpg.key
sudo tee /etc/yum.repos.d/freeguard.repo <<EOF
[freeguard]
name=FreeGuard CLI
baseurl=https://rpm.freeguard.com/stable
gpgcheck=1
gpgkey=https://cli.freeguard.com/gpg.key
EOF
sudo yum install freeguard-cli

Alpine Linux

curl -fsSL https://cli.freeguard.com/install.sh | bash

Οι χρήστες Alpine μπορεί να χρειαστεί να εγκαταστήσουν πρώτα το libc6-compat:

apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash

Επαλήθευση εγκατάστασης

freeguard --version

Έλεγχος ταυτότητας χωρίς γραφικό περιβάλλον

Σε servers χωρίς πρόγραμμα περιήγησης, δεν μπορείτε να χρησιμοποιήσετε την προεπιλεγμένη ροή σύνδεσης OAuth. Το FreeGuard CLI παρέχει έλεγχο ταυτότητας μέσω email για headless περιβάλλοντα.

Σύνδεση μέσω email

freeguard login --method email

Το CLI σας ζητά να εισαγάγετε το email του λογαριασμού σας. Ένας κωδικός επαλήθευσης αποστέλλεται σε αυτή τη διεύθυνση. Εισαγάγετε τον κωδικό στο τερματικό για να ολοκληρώσετε τον έλεγχο ταυτότητας.

$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.

Σύνδεση με token

Για αυτοματοποιημένες αναπτύξεις, χρησιμοποιήστε ένα service token:

freeguard login --method token --token YOUR_SERVICE_TOKEN

Δημιουργήστε service tokens από τον πίνακα ελέγχου του λογαριασμού σας. Τα tokens μπορούν να περιοριστούν σε συγκεκριμένους servers και να έχουν ρυθμιζόμενη λήξη.

Επαλήθευση ελέγχου ταυτότητας

freeguard status --json | jq '.authenticated'

Εκτέλεση ως υπηρεσία systemd

Για παραγωγικές αναπτύξεις, εκτελέστε το FreeGuard CLI ως υπηρεσία systemd ώστε να ξεκινά κατά την εκκίνηση και να επανεκκινεί σε περίπτωση αποτυχίας.

Δημιουργία αρχείου υπηρεσίας

sudo tee /etc/systemd/system/freeguard.service <<EOF
[Unit]
Description=FreeGuard VPN
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/freeguard connect --server us-east --no-color
ExecStop=/usr/local/bin/freeguard disconnect
Restart=on-failure
RestartSec=10
User=root

[Install]
WantedBy=multi-user.target
EOF

Ενεργοποίηση και εκκίνηση

sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard

Έλεγχος κατάστασης υπηρεσίας

sudo systemctl status freeguard

Προβολή αρχείων καταγραφής

sudo journalctl -u freeguard -f

Scripting με --json και --no-color

Τα scripts παραγωγής πρέπει να αναλύουν δομημένη έξοδο αντί για κείμενο αναγνώσιμο από ανθρώπους.

Έξοδος JSON

Κάθε εντολή υποστηρίζει --json:

# Connection status
freeguard status --json

Έξοδος:

{
  "connected": true,
  "server": "us-east-1",
  "server_name": "New York",
  "protocol": "hysteria2",
  "uptime": 86400,
  "bytes_sent": 1048576,
  "bytes_received": 5242880
}

Λειτουργία χωρίς χρώματα

Αφαίρεση κωδικών χρωμάτων ANSI για καθαρά αρχεία καταγραφής:

freeguard status --no-color >> /var/log/freeguard-status.log

Παράδειγμα scripting

Ένα script ελέγχου υγείας που επανασυνδέεται σε περίπτωση αποτυχίας:

#!/bin/bash
STATUS=$(freeguard status --json 2>/dev/null)
CONNECTED=$(echo "$STATUS" | jq -r '.connected')

if [ "$CONNECTED" != "true" ]; then
  echo "$(date): VPN disconnected, reconnecting..." >> /var/log/freeguard-health.log
  freeguard connect --server us-east --json >> /var/log/freeguard-health.log 2>&1
fi

Προσθέστε το στο cron για τακτικούς ελέγχους:

# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh

Παρακολούθηση και έλεγχοι υγείας

Βασικός έλεγχος υγείας

freeguard status --json | jq -r '.connected'

Επιστρέφει true ή false. Αρκετά απλό για οποιοδήποτε σύστημα παρακολούθησης.

Ενσωμάτωση με εργαλεία παρακολούθησης

Εξαγωγή κατάστασης σε Prometheus, Datadog ή οποιοδήποτε σύστημα παρακολούθησης που μπορεί να εκτελεί εντολές shell:

#!/bin/bash
# prometheus-exporter.sh
STATUS=$(freeguard status --json)
CONNECTED=$(echo "$STATUS" | jq -r '.connected')
UPTIME=$(echo "$STATUS" | jq -r '.uptime')

if [ "$CONNECTED" = "true" ]; then
  echo "freeguard_connected 1"
  echo "freeguard_uptime_seconds $UPTIME"
else
  echo "freeguard_connected 0"
  echo "freeguard_uptime_seconds 0"
fi

Ειδοποιήσεις

Συνδυάστε τον έλεγχο υγείας με το σύστημα ειδοποιήσεών σας. Παράδειγμα με ένα απλό webhook:

#!/bin/bash
CONNECTED=$(freeguard status --json | jq -r '.connected')
if [ "$CONNECTED" != "true" ]; then
  curl -X POST https://hooks.example.com/alert \
    -H "Content-Type: application/json" \
    -d '{"text": "FreeGuard VPN disconnected on '"$(hostname)"'"}'
fi

Ζητήματα ασφαλείας

  • Εκτέλεση ως root: Η σήραγγα VPN απαιτεί δικαιώματα root για τροποποίηση δρομολογήσεων δικτύου. Η υπηρεσία systemd εκτελείται ως root από προεπιλογή.
  • Αποθήκευση tokens: Τα service tokens αποθηκεύονται στο ~/.config/freeguard/. Βεβαιωθείτε ότι τα δικαιώματα αρχείων είναι κατάλληλα (chmod 600).
  • Κανόνες firewall: Αν χρησιμοποιείτε UFW ή iptables, βεβαιωθείτε ότι η διεπαφή της σήραγγας VPN επιτρέπεται.
  • Kill switch: Ενεργοποιήστε το kill switch για αποκλεισμό όλης της κίνησης αν αποσυνδεθεί το VPN: freeguard config set kill-switch true.

Επόμενα βήματα

Τελευταία ενημέρωση: Μάρτιος 2026