Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR
Docker Port Güvenliği: 0.0.0.0 vs 127.0.0.1, Nginx Reverse Proxy ve SSL
Docker Güvenliği, Nginx, Reverse Proxy ve Ubuntu 24.04

Ubuntu 24.04 Docker Port Güvenliği: 0.0.0.0 vs 127.0.0.1, Nginx Reverse Proxy ve SSL

Bu rehber gerçek Ubuntu 24.04 self-hosted AI stack kurulumumuzdaki en önemli güvenlik desenlerinden birini ayrı olarak ele alıyor: Docker uygulama portlarını 0.0.0.0 üzerinde public yayınlamak yerine 127.0.0.1 üzerinde tutmak ve public erişimi Nginx + HTTPS üzerinden vermek. Portainer 9443, Ollama 11434, Open WebUI 3000 ve n8n 5678 portlarını bu mimariyle kontrol ettik.

Docker port security0.0.0.0127.0.0.1Docker localhost bindDocker publish portNginx reverse proxyDocker UFWPortainer securityOllama securityn8n securityOpen WebUI securityLet's EncryptUbuntu 24.04EKA Sunucu
Ollama / Qwen3 / Open WebUI / Ubuntu 24.04
Internet :443
   ↓
Nginx + TLS
   ├─ 127.0.0.1:9443  → Portainer
   ├─ 127.0.0.1:3000  → Open WebUI
   ├─ 127.0.0.1:5678  → n8n
   └─ Ollama 127.0.0.1:11434 + private Docker network
Ollama0.32.6Open WebUI0.11.0 test
13gerçek WebP ekranı
3TR · EN · DE içerik
443public HTTPS
127.0.0.1AI service loopback
010.0.0.0 vs 127.0.0.1
02localhost-only Docker ports
03Nginx reverse proxy + WebSocket
04HTTPS + renewal audit
00
İçindekiler

Docker port güvenliği ve Nginx reverse proxy adımları

  1. 01Docker'da 0.0.0.0 ile 127.0.0.1 port bind arasındaki fark nedir?
  2. 02Portainer, Ollama, Open WebUI ve n8n portlarını nasıl ayırdık?
  3. 03docker ps çıktısından public ve localhost-only bindleri ayırt edin
  4. 04ss ile gerçekten hangi adreslerin dinlediğini kontrol edin
  5. 05Uygulama portunu kapalı tutup Nginx reverse proxy üzerinden yayınlayın
  6. 06n8n ve Open WebUI için WebSocket Upgrade başlıklarını reverse proxy'de koruyun
  7. 07Domain + Let's Encrypt sonrasında Nginx'i gerçek HTTPS isteğiyle doğrulayın
  8. 08Docker published portları için yalnız UFW kuralına güvenmeyin
  9. 09Portainer, Open WebUI, n8n ve Ollama için hangi public/private modeli kullandık?
  10. 10Yanlışlıkla 0.0.0.0 üzerinde publish edilen Docker portu nasıl düzeltilir?
  11. 11Üretime almadan önce Docker port, Nginx, HTTPS ve renewal kontrollerini tek seferde çalıştırın
  12. 12Container güncellemelerinden sonra port publish ayarlarını yeniden doğrulayın
01
Temel güvenlik farkı

Docker'da 0.0.0.0 ile 127.0.0.1 port bind arasındaki fark nedir?

Docker'da -p 8080:80 gibi host IP belirtilmeden yapılan publish işlemi portu varsayılan olarak hostun tüm adreslerinde yayınlayabilir. Bu nedenle uygulamanın kendi yönetim veya API portunu farkında olmadan dış ağa açmak mümkündür.

Host IP'yi açıkça 127.0.0.1 olarak verdiğinizde published port yalnız Docker host üzerinden erişilebilir olur. Bizim self-hosted AI stack mimarimizin temel güvenlik kararı budur.

Komut 1
docker run -p 8080:80 nginx
Komut 2
docker run -p 127.0.0.1:8080:80 nginx
02
Gerçek test yapısı

Portainer, Ollama, Open WebUI ve n8n portlarını nasıl ayırdık?

Gerçek Ubuntu 24.04 yapımızda Portainer 9443, Ollama 11434, Open WebUI 3000 ve n8n 5678 host portları yalnız 127.0.0.1 üzerinde bind edildi. Dış dünyaya doğrudan bu portları yayınlamadık.

Public erişim gereken web uygulamalarını Nginx üzerinden 80/443 portlarına taşıdık. Ollama API ise public domain olmadan local host ve private Docker network üzerinde kaldı.

Komut 1
127.0.0.1:9443 → Portainer
Komut 2
127.0.0.1:11434 → Ollama
Komut 3
127.0.0.1:3000 → Open WebUI
Komut 4
127.0.0.1:5678 → n8n
Komut 5
0.0.0.0:80 / :443 → Nginx
03
İlk denetim

docker ps çıktısından public ve localhost-only bindleri ayırt edin

docker ps çıktısındaki Ports sütunu hızlı güvenlik kontrolüdür. 127.0.0.1:5678->5678/tcp gibi bir mapping yalnız loopback bindini gösterir. 0.0.0.0:5678->5678/tcp ise portun tüm IPv4 host interface'lerinde publish edildiğini gösterir.

Özellikle yönetim panelleri, veritabanları, local LLM API'leri ve otomasyon editörlerinde bu kontrolü deployment sonrası rutin hale getirin.

Komut 1
docker ps --format 'table {{.Names}}\t{{.Ports}}'
04
Linux socket doğrulaması

ss ile gerçekten hangi adreslerin dinlediğini kontrol edin

Docker çıktısına ek olarak Linux socket tablosunu da kontrol etmek savunma açısından faydalıdır. ss -lntp ile local uygulama portlarının 127.0.0.1, Nginx'in ise 80/443 üzerinde public interface'lerde dinlediğini doğruladık.

Bu iki kontrol birlikte Docker publish ayarı ile işletim sistemi socket görünümünün aynı mimariyi yansıttığını gösterir.

Komut 1
ss -lntp | grep -E ':80|:443|:9443|:11434|:3000|:5678'
05
Public erişim katmanı

Uygulama portunu kapalı tutup Nginx reverse proxy üzerinden yayınlayın

Uygulama localhost üzerinde dinlerken Nginx public 443 isteğini local upstream'e aktarabilir. n8n için gerçek mimarimizde proxy_pass http://127.0.0.1:5678 kullanıldı; Open WebUI için aynı yaklaşım 127.0.0.1:3000 üzerinde uygulandı.

Bu model TLS, domain, access log, rate limit veya ek authentication gibi kontrolleri tek public giriş katmanında toplamanızı sağlar.

Komut 1
location / {
    proxy_pass http://127.0.0.1:5678;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
06
WebSocket desteği

n8n ve Open WebUI için WebSocket Upgrade başlıklarını reverse proxy'de koruyun

WebSocket protokol yükseltmesinde Upgrade ve Connection başlıkları hop-by-hop oldukları için reverse proxy tarafında açıkça iletilmeleri gerekir. n8n ve Open WebUI gibi gerçek zamanlı web uygulamalarında bu ayar bağlantı sorunlarını önlemek için önemlidir.

Biz Nginx map kullanarak connection_upgrade değerini ürettik ve location içinde HTTP/1.1, Upgrade ve Connection headerlarını upstream'e geçirdik.

Komut 1
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
Komut 2
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
07
TLS katmanı

Domain + Let's Encrypt sonrasında Nginx'i gerçek HTTPS isteğiyle doğrulayın

Localhost-only port mimarisi tek başına public kullanıcı erişimi sağlamaz; domain katmanında Nginx ve TLS gerekir. Nginx config testi sonrası Certbot ile domain sertifikalarını kurduk ve HTTPS isteklerinin HTTP 200 döndüğünü doğruladık.

certbot renew --dry-run testi sertifika yenileme zincirini canlı sertifikayı değiştirmeden kontrol etmenin pratik yoludur.

Komut 1
nginx -t
Komut 2
curl -I https://n8n.ekasunucu.com
Komut 3
certbot renew --dry-run
08
Firewall detayı

Docker published portları için yalnız UFW kuralına güvenmeyin

Docker port publishing kendi firewall/NAT kurallarını yönetir. Resmî Docker dokümantasyonu, host IP belirtmeden publish edilen portların dışarıdan erişilebilir olabileceğini ve Docker'ın iptables kuralları nedeniyle yalnız UFW beklentisine güvenmenin yeterli olmayabileceğini açıkça belirtir.

Bu nedenle uygulama portunda temel kontrolü doğrudan publish ifadesinde yapın: -p 127.0.0.1:HOST:CONTAINER. Firewall ise bunun üzerine ek savunma katmanı olsun.

Komut 1
-p 5678:5678
Komut 2
-p 127.0.0.1:5678:5678
09
Servis bazlı desen

Portainer, Open WebUI, n8n ve Ollama için hangi public/private modeli kullandık?

Portainer, Open WebUI ve n8n tarayıcıdan erişilmesi gereken servisler olduğu için localhost uygulama portu + Nginx domain + HTTPS modeli kullandık. Böylece public kullanıcı yalnız TLS giriş noktasını görür.

Ollama ise backend API olarak kaldı. Hostta 127.0.0.1:11434 ve Docker içinde ollama:11434 adresleri kullanıldı; public bir 11434 socket açılmadı.

Komut 1
portainer.ekasunucu.com → Nginx → 127.0.0.1:9443
Komut 2
openwebui.ekasunucu.com → Nginx → 127.0.0.1:3000
Komut 3
n8n.ekasunucu.com → Nginx → 127.0.0.1:5678
Komut 4
Ollama → 127.0.0.1:11434 + eka-ai private network
10
Mevcut containerı düzeltme

Yanlışlıkla 0.0.0.0 üzerinde publish edilen Docker portu nasıl düzeltilir?

Docker containerın published port mapping'i çalışan container üzerinde normal docker network connect gibi değiştirilemez; güvenli bind için containerı aynı volume ve environment ile yeniden oluşturmanız gerekir. Önce mevcut inspect ve volume bilgilerini kaydedin.

Container recreate sırasında -p 127.0.0.1:... mapping kullanın. Named volume korunursa uygulama verileri container yaşam döngüsünden bağımsız kalabilir; yine de işlem öncesi yedek veya snapshot alın.

Komut 1
docker inspect n8n > /root/n8n-before-port-fix.json
Komut 2
docker rm -f n8n
Komut 3
docker run -d --name n8n --restart=always --env-file /root/n8n.env -p 127.0.0.1:5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n:latest
11
Final audit

Üretime almadan önce Docker port, Nginx, HTTPS ve renewal kontrollerini tek seferde çalıştırın

Final kontrolde önce docker ps ile port mappinglerini, ardından ss ile gerçek socketleri okuyun. Nginx config testini, public HTTPS isteğini ve Certbot renewal dry-run testini çalıştırın.

Beklenen sonuç: uygulama portları 127.0.0.1 üzerinde, public web girişi yalnız Nginx 80/443 üzerinde, HTTPS endpointleri başarılı ve sertifika yenileme testi hatasız olmalıdır.

Komut 1
docker ps --format 'table {{.Names}}\t{{.Ports}}'
Komut 2
ss -lntp | grep -E ':80|:443|:9443|:11434|:3000|:5678'
Komut 3
nginx -t
Komut 4
curl -I https://n8n.ekasunucu.com
Komut 5
certbot renew --dry-run
12
Sürekli güvenlik

Container güncellemelerinden sonra port publish ayarlarını yeniden doğrulayın

Container image güncellemesi sırasında eski docker run parametreleri unutulursa servis yeniden 0.0.0.0 üzerinde publish edilebilir. Bu nedenle update prosedürünüzde port mapping kontrolünü zorunlu adım haline getirin.

Port binding, Nginx upstream, HTTPS health ve Docker private network testlerinin birlikte doğrulanması self-hosted servislerde yanlışlıkla public exposure riskini ciddi biçimde azaltır.

Komut 1
docker ps --format 'table {{.Names}}\t{{.Ports}}'
Komut 2
ss -lntp
Komut 3
docker network inspect eka-ai
Komut 4
nginx -t
Production checklist

Docker port ve reverse proxy güvenlik kontrol listesi

Uygulama portlarını gerekmedikçe 0.0.0.0 üzerinde publish etmeyin.
Backend servisleri 127.0.0.1 veya private Docker network üzerinde tutun.
Public web servislerini Nginx gibi reverse proxy üzerinden HTTPS ile yayınlayın.
docker ps ve ss çıktılarıyla gerçek host bindlerini doğrulayın.
WebSocket kullanan uygulamalarda Upgrade/Connection proxy headerlarını ekleyin.
Docker published portlarında yalnız UFW kuralına güvenmeyin.
Container recreate öncesinde volumes, env, networks ve restart policy bilgilerini yedekleyin.
Certbot renewal dry-run testini düzenli çalıştırın.
Image update sonrası portların yanlışlıkla 0.0.0.0 üzerine dönmediğini kontrol edin.
Ollama gibi backend API'leri public domain/port gerekmiyorsa private tutun.
R
Resmî kaynaklar

Resmî Docker ve Nginx kaynakları

+
EKA Sunucu

İlgili EKA Sunucu Docker, Portainer, Ollama, Open WebUI ve n8n rehberleri

?
FAQ

Docker port güvenliği hakkında sık sorulan sorular

Docker -p 8080:80 ne yapar?

Host IP belirtilmediğinde Docker varsayılan olarak portu hostun tüm adreslerinde yayınlayabilir.

-p 127.0.0.1:8080:80 ne fark yaratır?

Published portu yalnız Docker hostun loopback adresi üzerinden erişilebilir yapar.

0.0.0.0 ne anlama gelir?

IPv4 tarafında servisin tüm uygun host interface'lerinde dinlediğini veya publish edildiğini ifade eder.

Docker portunun public olup olmadığını nasıl kontrol ederim?

docker ps Ports sütununu ve ss -lntp çıktısını birlikte kontrol edin.

n8n 5678 portunu public açmalı mıyım?

Bu mimaride hayır; 127.0.0.1:5678 üzerinde tutulup Nginx HTTPS üzerinden yayınlanır.

Open WebUI 3000 portu public olmalı mı?

Bu rehberde yalnız localhost'a bind edildi ve domain erişimi Nginx üzerinden sağlandı.

Ollama 11434 public açılmalı mı?

Bu mimaride hayır; hostta 127.0.0.1 ve containerlar arasında private Docker network kullanıldı.

Portainer 9443 nasıl korundu?

Host tarafında yalnız 127.0.0.1:9443 üzerinde tutulup domain Nginx üzerinden yayınlandı.

Nginx reverse proxy ne işe yarar?

Public domain ve TLS trafiğini localhost üzerinde çalışan backend uygulamaya iletir.

WebSocket için neden ekstra Nginx header gerekir?

Upgrade ve Connection başlıkları reverse proxy tarafından açıkça iletilmelidir.

UFW Docker published portu mutlaka engeller mi?

Docker kendi firewall/NAT kurallarını yönettiği için yalnız UFW beklentisine güvenmeyin; host bind adresini doğru seçin.

Yanlış port mapping çalışan containerda değiştirilebilir mi?

Normalde publish mapping için containerı doğru volume, env ve network ayarlarıyla yeniden oluşturmak gerekir.

SSL yenilemesini nasıl kontrol ederim?

certbot renew --dry-run ile yenileme sürecini simüle edebilirsiniz.

Update sonrası hangi güvenlik kontrolleri yapılmalı?

docker ps, ss, Nginx config, HTTPS health, private Docker network ve Certbot renewal tekrar kontrol edilmelidir.

EKA YAZILIM VE BİLİŞİM SİSTEMLERİ

Güvenli self-hosted Docker servisleri için Linux VPS mi arıyorsunuz?

Portainer, Ollama, Open WebUI, n8n ve diğer Docker servislerini kendi altyapınızda Nginx + HTTPS mimarisiyle çalıştırmak için EKA Sunucu Linux VPS paketlerini inceleyebilirsiniz.

Güncellendi: 10.08.2026
Linux VPS Paketlerini İnceleLinux ve VPS Rehberleri
Top