हेडलेस सर्वर पर VPN तैनात करें
FreeGuard CLI हेडलेस Linux सर्वर पर बिना किसी डेस्कटॉप वातावरण के मूल रूप से चलता है। चाहे आप क्लाउड इंस्टेंस सुरक्षित कर रहे हों, होम लैब की सुरक्षा कर रहे हों, या कंटेनर ट्रैफ़िक को VPN के माध्यम से रूट कर रहे हों, यह गाइड प्रोडक्शन सर्वर डिप्लॉयमेंट के लिए इंस्टॉलेशन, ऑथेंटिकेशन, सर्विस कॉन्फ़िगरेशन और मॉनिटरिंग को कवर करती है।

हेडलेस सर्वर पर VPN तैनात करें

FreeGuard CLI हेडलेस Linux सर्वर पर बिना किसी डेस्कटॉप वातावरण के मूल रूप से चलता है। चाहे आप क्लाउड इंस्टेंस सुरक्षित कर रहे हों, होम लैब की सुरक्षा कर रहे हों, या कंटेनर ट्रैफ़िक को VPN के माध्यम से रूट कर रहे हों, यह गाइड प्रोडक्शन सर्वर डिप्लॉयमेंट के लिए इंस्टॉलेशन, ऑथेंटिकेशन, सर्विस कॉन्फ़िगरेशन और मॉनिटरिंग को कवर करती है।

सर्वर पर VPN क्यों चलाएं?

सर्वर संवेदनशील ट्रैफ़िक संभालते हैं: डेटाबेस कनेक्शन, API कॉल, बैकअप ट्रांसफर और इंटर-सर्विस कम्युनिकेशन। सर्वर पर ही VPN चलाने से यह सुनिश्चित होता है कि व्यक्तिगत एप्लिकेशन कॉन्फ़िगर किए बिना सभी आउटबाउंड ट्रैफ़िक एन्क्रिप्ट किया जाता है।

सामान्य उपयोग के मामले:

  • क्लाउड इंस्टेंस जो भौगोलिक रूप से प्रतिबंधित API एक्सेस करते हैं
  • CI/CD रनर जिन्हें सुसंगत नेटवर्क पहचान की आवश्यकता होती है
  • सेल्फ-होस्टेड सर्विसेज जो IP मास्किंग से लाभान्वित होती हैं
  • डेवलपमेंट सर्वर जिनका उपयोग वितरित टीमों द्वारा किया जाता है

इंस्टॉलेशन

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

हेडलेस ऑथेंटिकेशन

ब्राउज़र के बिना सर्वर पर, आप डिफ़ॉल्ट OAuth लॉगिन फ़्लो का उपयोग नहीं कर सकते। FreeGuard CLI हेडलेस वातावरण के लिए ईमेल-आधारित ऑथेंटिकेशन प्रदान करता है।

ईमेल लॉगिन

freeguard login --method email

CLI आपसे अपना अकाउंट ईमेल दर्ज करने के लिए कहता है। उस पते पर एक सत्यापन कोड भेजा जाता है। ऑथेंटिकेशन पूरा करने के लिए टर्मिनल में कोड दर्ज करें।

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

टोकन-आधारित लॉगिन

स्वचालित डिप्लॉयमेंट के लिए, सर्विस टोकन का उपयोग करें:

freeguard login --method token --token YOUR_SERVICE_TOKEN

अपने अकाउंट डैशबोर्ड से सर्विस टोकन जेनरेट करें। टोकन को विशिष्ट सर्वर तक सीमित किया जा सकता है और कॉन्फ़िगर करने योग्य समाप्ति अवधि होती है।

ऑथेंटिकेशन सत्यापित करें

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

–json और --no-color के साथ स्क्रिप्टिंग

प्रोडक्शन स्क्रिप्ट को मानव-पठनीय टेक्स्ट के बजाय संरचित आउटपुट पार्स करना चाहिए।

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

स्क्रिप्टिंग उदाहरण

एक हेल्थ-चेक स्क्रिप्ट जो विफलता पर पुनः कनेक्ट करती है:

#!/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 के रूप में चलती है।
  • टोकन स्टोरेज: सर्विस टोकन ~/.config/freeguard/ में संग्रहीत होते हैं। उचित फ़ाइल अनुमतियां सुनिश्चित करें (chmod 600)।
  • फ़ायरवॉल नियम: यदि आप UFW या iptables का उपयोग करते हैं, तो सुनिश्चित करें कि VPN टनल इंटरफ़ेस की अनुमति है।
  • Kill switch: VPN डिस्कनेक्ट होने पर सभी ट्रैफ़िक ब्लॉक करने के लिए kill switch सक्षम करें: freeguard config set kill-switch true

अगले कदम

अंतिम अपडेट: मार्च 2026