websocket proxy kurulumu: Revizyonlar arasındaki fark

VMTools Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla
Değişiklik özeti yok
Değişiklik özeti yok
1. satır: 1. satır:
{{DISPLAYTITLE:Websocket Proxy Kurulumu}}
{{DISPLAYTITLE:Websocket Proxy Kurulumu}}


3 Adımda kolayca Nginx Websocket Proxy Sunucu kurulumu gerçekleştirebilirsiniz.
Mevcut Nginx Websocket Proxy kurulumunu bozmadan aynı proxy sunucusu üzerinde ISO aktarım desteğini de aktif edebilirsiniz.




'''Hazırlık:''' Nginx websocket proxy kurulumu için tavsiye ettiğimiz işletim sistemi ve donanım gereksinimleri;
{| class="wikitable"
|Ubuntu 22.04 LTS (Minimal server)


4 Core İşlemci
Bu kurulum ile:


4 GB Ram
* 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.


40 GB Disk
|}




Hazırlık;


1. Proxy sunucusunda kullanmak üzere alan adınız dns yönetimi bölümünden "proxy.siteadresiniz.com" şeklinde "A" kaydı oluşturun ve aşağıdaki komutta işaretlenmiş ilgili kısımda a kaydını düzenleyerek çalıştırın.
Nginx websocket proxy + ISO aktarım desteği için tavsiye edilen sistem gereksinimleri:
{| class="wikitable"
|apt-get update -y && apt-get upgrade -y && shutdown -r now
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
|}


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




2. Aşağıdaki komutu işaretlenmiş ilgili kısımda a kaydını düzenleyerek çalıştırın.
==== 1. Alan adı ve SSL kurulumu; ====
{| class="wikitable"
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.
|DOMAIN="'''proxy.siteadresiniz.com'''<nowiki>" && 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" | tee /etc/nginx/sites-available/default > /dev/null' && systemctl restart nginx</nowiki>
|}


<blockquote>apt-get update -y && apt-get upgrade -y && shutdown -r now</blockquote>2 Komut ayrı ayrı çalıştırılmalıdır.<blockquote>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</blockquote>




3. '''VMTools Module > Genel Ayarlar''' menüsü Web Konsol Ayarları "Websocket Proxy Hostname/IP Adresi" bölümüne proxy için oluşturduğunuz alan adını başında '''"http://"''' ve '''"www."''' ön eki <u>olmadan</u> tanımlayıp kaydediniz.
==== 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: <nowiki>https://panel.siteadresiniz.com</nowiki>
 
Ö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:<blockquote>DOMAIN="proxy.siteadresiniz.com" PANEL_ORIGIN="<nowiki>https://panel.siteadresiniz.com</nowiki>" && 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 <nowiki>https://$ng_hostname:$ng_port$ng_ticket;\n</nowiki> 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 <nowiki>http://localhost:9480/;\n</nowiki> 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</blockquote>
 
 
==== 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: <nowiki>https://proxy.siteadresiniz.com/iso-agent</nowiki>
* '''Proxy Erişim Anahtarı'''  3. adımda oluşturulan değeri girin.
 
 
<blockquote><u>Önemli Not:</u>
 
* 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.
</blockquote>
 
 
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.

04.34, 8 Nisan 2026 tarihindeki hâli


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.