hovarda

Üstün
Katılım
15 Ocak 2024
Mesajlar
872
Beğeniler
315
Yer
Samsun
Arkadaşlar VDS sunucum var ve VMware'de Ubuntu server kurup VDS sunucusunun açık portlarından faydalanıp local serverı dış dünya ile iletişim kurmasını istiyorum bunu nasıl yaparım? Google'e arattım ama biraz kaşırık geldi.
 
Arkadaşlar VDS sunucum var ve VMware'de Ubuntu server kurup VDS sunucusunun açık portlarından faydalanıp local serverı dış dünya ile iletişim kurmasını istiyorum bunu nasıl yaparım? Google'e arattım ama biraz kaşırık geldi.

Yerelden açmaya çalıştığın bağlantın statik ip mi?
 
CGNAT havuz İP ile modemine bağlı aygıtları doğrudan port ile açamazsın. Bu durumda port açamadığın için DDNS de sağlıklı bir yöntem olmayacaktır. İşine yarayacak en sağlıklı çözüm statik ip almaktır.

Yerel ağın için Statik İP aldığını varsayarak şöyle bir yöntem önerebillirim:

Birinci Adım:
Önce VDS sunucunda SSH ile bağlanıp Docker kur. (docker içerisindeki conteinerları yalıtarak ubuntu server üzerinde kullanacağın için olası hatalarında sistem bütünlüğünü etkilemeyecektir.) Birden çok servisi bir birini etkilemeden kullanabilirsin.

Sistemin Docker kurulumu için hazırlanması:

Bash:
# Docker'ın resmi GPG anahtarını ekle:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Depoyu Apt kaynaklarına ekle:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Docker kurulumu:
Bash:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Kurulumu doğrula:

Bash:
sudo docker run hello-world
Bu komut bir test imajı indirip bir conteiner içerisinde çalıştıuracak ve başarı mesajı vermeli.

Docker kurduğuna göre senin için önerilerimin ikinci adımına geçelim.

İkinci Adım:
İkinci adımda sistemini etkilemeden docker üzerinde bir kap içerisinde çalışan Nginx ters prox kuracağız.

Bu konuda letsencrypt destekli ve GUI (kullanıcı arayüzü) bulunan Nginxproxymanager önereceğim. Hem yeni başlayanlar için kullanımı kolay hem de oldukça hafiftir.

nginxproxymanager Docker compose ile Kurulumu:
Önce SSH ile VDS sunucuna bağlan ve bulunduğun dizin veya istediğin bir dizinde nano editörü ile docker-compose.yml adında bir dosya aç. (veya aşina olduğun Vİ vb. editör kullan) ben nano ilei ilerleyeceğim.

Bash:
nano docker-compose.yml

İçerisine şu docker compose kodlarını ekle:

Bash:
version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # Aşağıdaki bağlantı noktaları biçimi <host-port>:<container-port> şeklindedir.
      - '80:80' # Genel HTTP Port
      - '443:443' # Genel HTTPS Port
      - '81:81' # Admin Kısmı için Port
      # Ayrıca port eklemek istersen aşağıdaki yorum satırını kaldırıp yapabilirsin.
      # - '21:21' # FTP
      environment:
      DB_SQLITE_FILE: "/data/database.sqlite" # mysql de kullanabilirsin ama önce bir conteiner içinde ayağa kaldırıp bağlantı sağlaman gerekir.

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

CTRL + O ile docker compose.yml dosyanı kaydet. CTRL + X ile nano editörden çık.

Docker Compose dosyamız hazır olduğuna göre nginx-proxy-manager uygulamamızı ayağa kaldırabiliriz.

docker compose.yml bulunduğu dizinde şu komutu yürüterek uygulamayı ayağa kaldır.

Bash:
docker compose up -d

Bu komutla birlikte docker docker compose yml. dosyamızdaki servisleri bizim için ayağa kaldırıp nginix proxy managerin ilgili portları dinlemesini sağlayacak.

Bundan sonrası için Nginx-proxy-manager GUI ile iki sunucun arasında ters proxy yaparak sunucu-ip:port gelen isteği local-server:port yönlendirecektir. Domainin varsa local serveri burdan domaine yönlendireceksin.

Olası bağlantı sorunlarında güvenlik duvarı ayarlarını kontrol edip ilgili portları güvenlik duvarından açmayı unutma..

Ek olarak şunu söyleyeyim:
Statik İP aldığında zaten yerel server'ı doğrudan internete açabileceksin. Bu durumda yerel sunuc statik ip adresini kullanacaksan yukarıdaki yönteme ihtiyacın yok. Ama Statik ip adresin yerel konumunu gösterecektir.

Nginx-proxy manager'a bağlanmak için sunucip:81 portunu tarayıcıda çağır.

Varsayılan nginix-proxy-manager erişim bilgileri:
Kod:
Email:    [email protected]
Password: changeme

Bu server üzerinden bütün ters proxy işlerini bu uygulama ile GUI kısmından istediğin gibi yapabilirsin artık.
 
Son düzenleyen: Moderatör:
CGNAT havuz IP ile modemine bağlı aygıtları doğrudan port ile açamazsın. Bu durumda port açamadığın için DDNS de sağlıklı bir yöntem olmayacaktır. İşine yarayacak en sağlıklı çözüm statik IP almaktır.

Yerel ağın için statik IP aldığını varsayarak şöyle bir yöntem önerebillirim:

birinci adım:
Önce VDS sunucunda SSH ile bağlanıp docker kur. (docker içerisindeki conteinerları yalıtarak Ubuntu server üzerinde kullanacağın için olası hatalarında sistem bütünlüğünü etkilemeyecektir.) Birden çok servisi bir birini etkilemeden kullanabilirsin.

sistemin docker kurulumu için hazırlanması:

Bash:
# Docker'ın resmi GPG anahtarını ekle:
sudo apt-get update.
sudo apt-get install ca-certificates curl.
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Depoyu Apt kaynaklarına ekle:
echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
 $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
 sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

docker kurulumu:
Bash:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Kurulumu doğrula:

Bash:
sudo docker run hello-world
Bu komut bir test imajı indirip bir conteiner içerisinde çalıştıuracak ve başarı mesajı vermeli.

Docker kurduğuna göre senin için önerilerimin ikinci adımına geçelim.

ikinci adım:
İkinci adımda sistemini etkilemeden docker üzerinde bir kap içerisinde çalışan nginx ters prox kuracağız.

Bu konuda letsencrypt destekli ve GUI (kullanıcı arayüzü) bulunan nginxproxymanager önereceğim. Hem yeni başlayanlar için kullanımı kolay hem de oldukça hafiftir.

nginxproxymanager docker compose ile kurulumu:
Önce SSH ile VDS sunucuna bağlan ve bulunduğun dizin veya istediğin bir dizinde nano editörü ile docker-compose.yml adında bir dosya aç. (veya aşina olduğun VI vb. editör kullan) ben nano ilei ilerleyeceğim.

Bash:
nano docker-compose.yml

İçerisine şu docker compose kodlarını ekle:

Bash:
version: '3.8'
services:
 app:
 image: 'jc21/nginx-proxy-manager:latest'
 restart: unless-stopped
 ports:
 # Aşağıdaki bağlantı noktaları biçimi <host-port>:<container-port> şeklindedir.
 - '80:80' # Genel HTTP Port.
 - '443:443' # Genel HTTPS Port.
 - '81:81' # Admin Kısmı için Port.
 # Ayrıca port eklemek istersen aşağıdaki yorum satırını kaldırıp yapabilirsin.
 # - '21:21' # FTP.
 environment:
 DB_SQLITE_FILE: "/data/database.sqlite" # mysql de kullanabilirsin ama önce bir conteiner içinde ayağa kaldırıp bağlantı sağlaman gerekir.

 volumes:
 - ./data:/data
 - ./letsencrypt:/etc/letsencrypt

CTRL + o ile docker compose. Yml dosyanı kaydet. CTRL + X ile nano editörden çık.

Docker compose dosyamız hazır olduğuna göre nginx-proxy-Manager uygulamamızı ayağa kaldırabiliriz.

Docker compose. Yml bulunduğu dizinde şu komutu yürüterek uygulamayı ayağa kaldır.

Bash:
docker compose up -d

Bu komutla birlikte docker docker compose yml. Dosyamızdaki servisleri bizim için ayağa kaldırıp nginix proxy Manager'in ilgili portları dinlemesini sağlayacak.

Bundan sonrası için nginx-proxy-Manager GUI ile iki sunucun arasında ters proxy yaparak sunucu-ip:port gelen isteği local-server:port yönlendirecektir. Domainin varsa local serveri buradan domaine yönlendireceksin.

Olası bağlantı sorunlarında güvenlik duvarı ayarlarını kontrol edip ilgili portları güvenlik duvarından açmayı unutma.

ek olarak şunu söyleyeyim:
Statik IP aldığında zaten yerel Server'ı doğrudan internete açabileceksin. Bu durumda yerel sunuc statik IP adresini kullanacaksan yukarıdaki yönteme ihtiyacın yok. Ama statik IP adresin yerel konumunu gösterecektir.

Nginx-proxy Manager'a bağlanmak için sunucip: 81 portunu tarayıcıda çağır.

Varsayılan nginix-proxy-Manager erişim bilgileri:
Kod:
Email: [email protected]
Password: changeme

Bu server üzerinden bütün ters proxy işlerini bu uygulama ile GUI kısmından istediğin gibi yapabilirsin artık.

Hocam öncelikle teşekkürler Telekom statik IP adresine 149TL istiyor neyse zaman sonraya kaldı.