פריסת 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: הפעילו את ה-kill switch לחסימת כל התעבורה אם ה-VPN מתנתק:
freeguard config set kill-switch true.
צעדים הבאים
- FreeGuard CLI — מדריך פקודות מלא
- מדריך תהליך עבודה למפתחים — שלבו VPN בכלי הפיתוח שלכם
- תמחור — פריסות שרת עובדות עם כל תוכנית
עדכון אחרון: מרץ 2026