במדריך הזה מוסבר איך להשתמש ב-Caddy, שרת אינטרנט חזק ונוח למשתמש, כדי לשפר את ההגדרה של שרת Outline. יכולות ה-HTTPS האוטומטי והתצורה הגמישה של Caddy הופכות אותו לאפשרות מצוינת להצגת שרת Outline, במיוחד כשמשתמשים בתעבורת WebSocket.
מהו Caddy?
Caddy הוא שרת אינטרנט בקוד פתוח שנודע בקלות השימוש בו, ב-HTTPS אוטומטי ובתמיכה בפרוטוקולים שונים. הוא מפשט את הגדרת שרת האינטרנט ומציע תכונות כמו:
- HTTPS אוטומטי: Caddy מקבל ומחדש באופן אוטומטי אישורי TLS, כדי להבטיח חיבורים מאובטחים.
- תמיכה ב-HTTP/3: Caddy תומך בפרוטוקול HTTP/3 העדכני ביותר, שמאפשר תנועה מהירה ויעילה יותר באינטרנט.
- ניתן להרחיב באמצעות פלאגינים: אפשר להרחיב את Caddy באמצעות פלאגינים כדי לתמוך בפונקציות שונות, כולל שרת proxy הפוך ואיזון עומסים.
שלב 1: דרישות מוקדמות
- מורידים ומתקינים את
xcaddy
שלב 2: מגדירים את הדומיין
לפני שמפעילים את Caddy, צריך לוודא ששם הדומיין מוגדר בצורה נכונה כך שיצביע על כתובת ה-IP של השרת.
- הגדרת רשומות A/AAAA: נכנסים לחשבון אצל ספק ה-DNS ומגדירים את רשומות ה-A ו-AAAA של הדומיין כך שיצביעו על כתובות ה-IPv4 ו-IPv6 של השרת, בהתאמה.
אימות רשומות ה-DNS: מוודאים שרשומות ה-DNS מוגדרות בצורה נכונה באמצעות חיפוש מוסמך:
curl "https://cloudflare-dns.com/dns-query?name=DOMAIN_NAME&type=A" \ -H "accept: application/dns-json"
שלב 3: פיתוח והרצה של build מותאם אישית של Caddy
באמצעות xcaddy
, אפשר ליצור קובץ caddy
בינארי מותאם אישית שכולל את מודול הליבה של שרת Outline ומודולים אחרים של תוספים לשרת שנדרשים.
xcaddy build \
# The example uses a YAML config, so include a YAML config adapter module.
--with github.com/iamd3vil/caddy_yaml_adapter \
# The Outline core server module.
--with github.com/Jigsaw-Code/outline-ss-server/outlinecaddy
שלב 4: הגדרה והפעלה של שרת Caddy עם Outline
יוצרים קובץ config.yaml
חדש עם התצורה הבאה:
apps:
http:
servers:
server1:
listen:
- ":443"
routes:
- match:
- host:
- 'DOMAIN_NAME'
- path:
- "/TCP_PATH"
handle:
- handler: websocket2layer4
type: stream
connection_handler: ss1
- match:
- host:
- 'DOMAIN_NAME'
- path:
- "/UDP_PATH"
handle:
- handler: websocket2layer4
type: packet
connection_handler: ss1
outline:
shadowsocks:
replay_history: 10000
connection_handlers:
- name: ss1
handle:
handler: shadowsocks
keys:
- id: user-1
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
ההגדרה הזו מייצגת אסטרטגיה של Shadowsocks-over-WebSockets עם שרת אינטרנט שמאזין ביציאה 443
, ומקבל תנועה עטופה של TCP ו-UDP ב-Shadowsocks בנתיבים TCP_PATH ו-UDP_PATH, בהתאמה.
מריצים את שרת Caddy עם התוסף Outline באמצעות ההגדרות שנוצרו:
caddy run --config config.yaml --adapter yaml --watch
דוגמאות נוספות להגדרות זמינות במאגר GitHub של outline-ss-server/outlinecaddy.
שלב 5: יוצרים מפתח גישה דינמי
יוצרים קובץ YAML של מפתח גישה ללקוח עבור המשתמשים באמצעות הפורמט advanced configuration, ומצרפים את נקודות הקצה של WebSocket שהוגדרו מראש בצד השרת:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN_NAME/TCP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN_NAME/UDP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
אחרי שיוצרים את קובץ ה-YAML של מפתח הגישה הדינמי, צריך להעביר אותו למשתמשים. אפשר לארח את הקובץ בשירות אירוח סטטי באינטרנט או ליצור אותו באופן דינמי. מידע נוסף על שימוש במפתחות גישה דינמיים
שלב 6: התחברות ללקוח Outline
משתמשים באחת מהאפליקציות הרשמיות של Outline Client (גרסאות 1.15.0 ואילך) ומוסיפים את מפתח הגישה הדינמי החדש שנוצר כרשומה של שרת. לוחצים על Connect כדי להתחיל את תהליך הניתוב לשרת באמצעות ההגדרה של Shadowsocks-over-Websocket.
אפשר להשתמש בכלי כמו IPInfo כדי לוודא שאתם גולשים באינטרנט דרך שרת Outline.