Websocket Proxy Kurulumu

VMTools Wiki sitesinden
04.34, 8 Nisan 2026 tarihinde Vmtools (mesaj | katkılar) tarafından oluşturulmuş 938 numaralı sürüm
Gezinti kısmına atla Arama kısmına atla


Mevcut Nginx Websocket Proxy kurulumunu bozmadan aynı proxy sunucusu üzerinde ISO aktarım desteğini de aktif edebilirsiniz.


Bu kurulum ile:

  • Mevcut /ticket websocket bağlantısı aynen çalışmaya devam eder.
  • Aynı proxy sunucusu üzerinden ISO aktarımı için ek destek hazırlanır.
  • ISO dosyaları hosting sunucusuna uğramadan doğrudan proxy sunucusuna gönderilir.
  • Websocket proxy ve ISO aktarım desteği aynı güvenlik yapısını kullanır.


Hazırlık;

Nginx websocket proxy + ISO aktarım desteği için tavsiye edilen sistem gereksinimleri:

  • Ubuntu 22.04 LTS (Minimal server)
  • 4 Core İşlemci
  • 8 GB RAM
  • 250 GB Disk Alanı (Önerilen: SSD, NVMe)


1. Alan adı ve SSL kurulumu;

Proxy sunucusunda kullanmak üzere alan adınızın DNS yönetimi bölümünden proxy.siteadresiniz.com şeklinde bir A kaydı oluşturun ve aşağıdaki komutta geçen alan adını kendinize göre düzenleyerek çalıştırın.

apt-get update -y && apt-get upgrade -y && shutdown -r now

2 Komut ayrı ayrı çalıştırılmalıdır.

apt-get install nginx -y && apt install certbot python3-certbot-nginx -y && sudo certbot --nginx -d proxy.siteadresiniz.com --non-interactive --agree-tos --register-unsafely-without-email --redirect


2. Nginx yapılandırması;

Aşağıdaki komutu çalıştırmadan önce iki alanı kendinize göre düzenleyin:

  • DOMAIN = Proxy sunucusunun alan adı olmalıdır. Örnek: proxy.siteadresiniz.com (https:// ön eki koymayınız!)
  • PANEL_ORIGIN = İsteklerin gönderileceği alan adı olmalıdır. Buraya Hosting Otomasyon Yazılımınızın kurulu olduğu alan adı veya kurulum alt alan adına yapılmışsa o yazılmalıdır. (https:// ile başlamak zorundadır) Örnek: https://panel.siteadresiniz.com

Önemli Not:

  • DOMAIN ile PANEL_ORIGIN aynı şey değildir.
  • DOMAIN proxy sunucusunun alan adıdır.
  • PANEL_ORIGIN ise yalnızca sizin hosting otomasyon panelinizden gelen isteklerin kabul edilmesi için kullanılır.
  • Yani başka bir alan adından aynı istekler gönderilirse kabul edilmeyecektir.

Aşağıdaki komutta geçen alanları kendinize göre düzenleyip çalıştırın:

DOMAIN="proxy.siteadresiniz.com" PANEL_ORIGIN="https://panel.siteadresiniz.com" && sudo bash -c 'printf "map $arg_hostname $ng_hostname {\n default $arg_hostname;\n}\n\nmap $arg_port $ng_port {\n default $arg_port;\n}\n\nmap $arg_ticket $ng_ticket {\n default $arg_ticket;\n}\n\nserver {\n listen 443 ssl;\n server_name '"$DOMAIN"';\n\n ssl_certificate /etc/letsencrypt/live/'"$DOMAIN"'/fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live/'"$DOMAIN"'/privkey.pem;\n\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_prefer_server_ciphers on;\n\n location /ticket {\n if ($ng_hostname = "") { return 400; }\n if ($ng_port = "") { return 400; }\n if ($ng_ticket = "") { return 400; }\n\n proxy_pass https://$ng_hostname:$ng_port$ng_ticket;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "upgrade";\n proxy_set_header Host $host;\n proxy_set_header X-Forwarded-For $remote_addr;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_read_timeout 86400;\n proxy_ssl_verify off;\n proxy_ssl_verify_depth 0;\n proxy_ssl_server_name on;\n }\n\n location /iso-agent/ {\n if ($request_method = OPTIONS) {\n add_header Access-Control-Allow-Origin '"$PANEL_ORIGIN"' always;\n add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" always;\n add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Chunk-Index, X-Chunk-Size, X-Chunk-Checksum, X-Upload-Length" always;\n add_header Access-Control-Max-Age 86400 always;\n add_header Content-Length 0;\n add_header Content-Type text/plain;\n return 204;\n }\n\n add_header Access-Control-Allow-Origin '"$PANEL_ORIGIN"' always;\n add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" always;\n add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Chunk-Index, X-Chunk-Size, X-Chunk-Checksum, X-Upload-Length" always;\n\n proxy_pass http://localhost:9480/;\n proxy_http_version 1.1;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $remote_addr;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_read_timeout 86400;\n proxy_send_timeout 86400;\n proxy_request_buffering off;\n proxy_buffering off;\n client_max_body_size 64m;\n }\n}\n" | tee /etc/nginx/sites-available/default > /dev/null' && nginx -t && systemctl restart nginx


3. ISO aktarım desteği için klasörleri ve güvenlik anahtarını oluşturma;

Aynı proxy sunucusunda ISO aktarımı için gerekli klasörleri oluşturun ve modül ile proxy arasında kullanılacak Gizli Güvenlik Anahtarı değerini üretin.

PROXY_SHARED_SECRET="$(openssl rand -hex 32)" && sudo mkdir -p /opt/vmtools-transfer-agent/{data,tmp,logs} && echo "PROXY_SHARED_SECRET=$PROXY_SHARED_SECRET" | sudo tee /opt/vmtools-transfer-agent/agent.env > /dev/null && echo "$PROXY_SHARED_SECRET"

Not:

  • Komut çıktısında görünen değer VMTools Admin modülü sayfasında genel ayarlar menüsünden Proxy Erişim Anahtarı alanına girilecektir.
  • Bu değeri kaybetmeyiniz ve 3. şahıslarla paylaşmayınız!

Ne işe yarar?

  • Bu gizli anahtar, modül ile proxy sunucusunun birbirini tanıması için kullanılır.
  • Böylece sadece sizin sitenizden gelen istekler proxy sunucusu tarafından kabul edilir.
  • Websocket proxy ve ISO aktarım desteği aynı güvenlik yapısını kullanır.


4. Modül ayarları

VMTools Module > Genel Ayarlar bölümünde aşağıdaki alanları doldurup kaydedin:

  • Websocket Proxy Hostname/IP Adresi Proxy için oluşturduğunuz alan adını başında http:// ve www. olmadan girin. Örnek: proxy.siteadresiniz.com
  • Proxy ISO Transfer URL Aynı proxy alan adı üzerinden aşağıdaki şekilde, başında https:// olacak şekilde girin. Örnek: https://proxy.siteadresiniz.com/iso-agent
  • Proxy Erişim Anahtarı 3. adımda oluşturulan değeri girin.


Önemli Not:

  • Proxy sunucusu hali hazırda vcenter'ınıza ve esxi sunucularınıza erişebiliyor olmalıdır!
  • Websocket proxy ve ISO aktarım desteği aynı proxy sunucusunda ve aynı alan adı üzerinde çalışır.
  • Bu kurulumda yeni bir proxy sunucusu gerekmez.
  • Bu kurulumda ikinci bir proxy alan adı gerekmez.


Kurulum tamamlandıktan sonra aşağıdaki kontrolleri yapabilirsiniz:

  • Web konsol bağlantısı açılabiliyor olmalıdır.
  • Proxy alan adınız tarayıcıdan düzgün açılıyor olmalıdır ve ssl tanımlandığını görmelisiniz.