{"id":34648,"date":"2025-11-20T06:40:51","date_gmt":"2025-11-20T03:40:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34648"},"modified":"2025-11-20T06:40:51","modified_gmt":"2025-11-20T03:40:51","slug":"traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/","title":{"rendered":"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<h2>Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn modern uygulama mimarilerinde, \u00f6zellikle mikroservis tabanl\u0131 sistemlerde, servislerin y\u00f6netimi ve d\u0131\u015f d\u00fcnyaya g\u00fcvenli bir \u015fekilde sunulmas\u0131 kritik \u00f6neme sahiptir. Docker konteynerleri, uygulamalar\u0131 izole ve ta\u015f\u0131nabilir birimler halinde paketleyerek bu s\u00fcreci kolayla\u015ft\u0131r\u0131rken, Traefik gibi bir ters proxy, bu konteynerlere gelen istekleri y\u00f6nlendirme, y\u00fck dengeleme ve SSL\/TLS sertifikalar\u0131n\u0131 otomatik olarak y\u00f6netme gibi g\u00f6revleri \u00fcstlenir. Bu makalede, Debian 9 i\u015fletim sistemi \u00fczerinde Docker konteynerleri i\u00e7in Traefik&#8217;i nas\u0131l bir ters proxy olarak kuraca\u011f\u0131m\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<p>Traefik, dinamik bir ters proxy ve y\u00fck dengeleyicidir. Konteynerle\u015ftirilmi\u015f uygulamalarla (Docker, Kubernetes, Swarm, Mesos vb.) sorunsuz bir \u015fekilde entegre olabilir ve yap\u0131land\u0131rmalar\u0131n\u0131 otomatik olarak ke\u015ffedebilir. Bu \u00f6zelli\u011fi sayesinde, her yeni konteyner ba\u015flatt\u0131\u011f\u0131n\u0131zda veya durdurdu\u011funuzda manuel yap\u0131land\u0131rma yapman\u0131za gerek kalmaz. Ayr\u0131ca, Let&#8217;s Encrypt ile otomatik SSL sertifikas\u0131 temini ve yenileme yetene\u011fi, g\u00fcvenlik y\u00f6netimini \u00f6nemli \u00f6l\u00e7\u00fcde basitle\u015ftirir. Debian 9, kararl\u0131l\u0131\u011f\u0131 ve yayg\u0131n kullan\u0131m\u0131 nedeniyle bu t\u00fcr sunucu uygulamalar\u0131 i\u00e7in ideal bir platform sunar.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce, a\u015fa\u011f\u0131daki \u00f6n gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olman\u0131z gerekmektedir:<\/p>\n<h4>Debian 9 Sunucu<\/h4>\n<p>SSH eri\u015fimi olan ve <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131 hesab\u0131 bulunan bir Debian 9 (Stretch) sunucuya ihtiyac\u0131n\u0131z olacakt\u0131r. Sunucunuzun g\u00fcncel oldu\u011fundan emin olmak i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h4>Docker ve Docker Compose Kurulumu<\/h4>\n<p>Traefik ve di\u011fer uygulamalar\u0131m\u0131z\u0131 Docker konteynerleri olarak \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z i\u00e7in Docker Engine ve Docker Compose&#8217;un kurulu olmas\u0131 gerekmektedir. E\u011fer kurulu de\u011filse, a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyerek kurabilirsiniz:<\/p>\n<p><strong>Docker Engine Kurulumu:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y\ncurl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | sudo apt-key add -\nsudo add-apt-repository \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/debian $(lsb_release -cs) stable\"\nsudo apt update\nsudo apt install docker-ce docker-ce-cli containerd.io -y\nsudo usermod -aG docker $USER # Kullan\u0131c\u0131n\u0131z\u0131 docker grubuna ekleyin\nnewgrp docker # Grubun hemen etkinle\u015fmesi i\u00e7in<\/code><\/pre>\n<p>Kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker run hello-world<\/code><\/pre>\n<p><strong>Docker Compose Kurulumu:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo curl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.29.2\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose\nsudo chmod +x \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n<p>Kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker-compose --version<\/code><\/pre>\n<h4>Alan Ad\u0131 (Domain Name) ve DNS Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Traefik&#8217;in otomatik SSL sertifikalar\u0131n\u0131 alabilmesi ve gelen istekleri do\u011fru bir \u015fekilde y\u00f6nlendirebilmesi i\u00e7in bir alan ad\u0131na ihtiyac\u0131n\u0131z olacak. Alan ad\u0131n\u0131z\u0131n A kayd\u0131n\u0131, Debian 9 sunucunuzun genel IP adresine y\u00f6nlendirdi\u011finizden emin olun. \u00d6rne\u011fin, <code>example.com<\/code> ve <code>www.example.com<\/code> i\u00e7in.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 (Firewall) Ayarlar\u0131 (UFW)<\/h4>\n<p>Sunucunuzun g\u00fcvenli\u011fi i\u00e7in bir g\u00fcvenlik duvar\u0131 kullanmak \u00f6nemlidir. UFW (Uncomplicated Firewall) Debian \u00fczerinde yayg\u0131n olarak kullan\u0131lan bir ara\u00e7t\u0131r. Traefik&#8217;in d\u00fczg\u00fcn \u00e7al\u0131\u015fabilmesi i\u00e7in 80 (HTTP) ve 443 (HTTPS) portlar\u0131n\u0131n d\u0131\u015far\u0131dan eri\u015filebilir olmas\u0131 gerekmektedir. Ayr\u0131ca, Traefik Dashboard&#8217;a eri\u015fmek isterseniz 8080 portunu da a\u00e7man\u0131z gerekebilir, ancak bu portu sadece belirli IP&#8217;lerden eri\u015fime a\u00e7man\u0131z g\u00fcvenlik a\u00e7\u0131s\u0131ndan daha iyidir.<\/p>\n<pre><code class=\"language-bash\">sudo apt install ufw -y\nsudo ufw allow 22\/tcp # SSH\nsudo ufw allow 80\/tcp # HTTP\nsudo ufw allow 443\/tcp # HTTPS\n<h2>\u0130ste\u011fe ba\u011fl\u0131 olarak Traefik Dashboard i\u00e7in:<\/h2>\n<h2>sudo ufw allow 8080\/tcp # Traefik Dashboard (Sadece belirli IP'lerden eri\u015fime a\u00e7\u0131lmas\u0131 \u00f6nerilir)<\/h2>\nsudo ufw enable\nsudo ufw status<\/code><\/pre>\n<h3>Traefik Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h3>\n<p>Traefik, modern bir ters proxy ve y\u00fck dengeleyicidir. Geleneksel ters proxylerden farkl\u0131 olarak, Traefik dinamik bir yap\u0131ya sahiptir ve konteyner orkestrasyon platformlar\u0131 (Docker, Kubernetes vb.) ile do\u011frudan entegre olabilir. Bu entegrasyon, Traefik&#8217;in yeni servisleri otomatik olarak ke\u015ffetmesini ve yap\u0131land\u0131rmas\u0131n\u0131 sa\u011flamakla kalmaz, ayn\u0131 zamanda servisler kald\u0131r\u0131ld\u0131\u011f\u0131nda veya g\u00fcncellendi\u011finde de yap\u0131land\u0131rmas\u0131n\u0131 an\u0131nda uyarlamas\u0131na olanak tan\u0131r.<\/p>\n<h4>Dinamik Yap\u0131land\u0131rma<\/h4>\n<p>Traefik&#8217;in en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri dinamik yap\u0131land\u0131rma yetene\u011fidir. Bir Docker konteynerini ba\u015flatt\u0131\u011f\u0131n\u0131zda veya durdurdu\u011funuzda, Traefik bunu otomatik olarak alg\u0131lar ve yap\u0131land\u0131rmas\u0131n\u0131 g\u00fcnceller. Bu, \u00f6zellikle mikroservis mimarilerinde veya s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) s\u00fcre\u00e7lerinde b\u00fcy\u00fck bir zaman ve emek tasarrufu sa\u011flar. Manuel olarak yap\u0131land\u0131rma dosyalar\u0131n\u0131 d\u00fczenleme veya proxy&#8217;yi yeniden ba\u015flatma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<h4>Otomatik SSL (Let&#8217;s Encrypt)<\/h4>\n<p>Web siteleri ve uygulamalar i\u00e7in SSL\/TLS sertifikalar\u0131 art\u0131k bir standartt\u0131r. Traefik, Let&#8217;s Encrypt ile sorunsuz bir entegrasyon sunar. Belirtti\u011finiz alan adlar\u0131 i\u00e7in otomatik olarak sertifikalar\u0131 al\u0131r, kurar ve s\u00fcresi doldu\u011funda yeniler. Bu \u00f6zellik, sertifika y\u00f6netimiyle ilgili karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131r\u0131r ve web uygulamalar\u0131n\u0131z\u0131n her zaman g\u00fcvenli bir HTTPS ba\u011flant\u0131s\u0131 \u00fczerinden sunulmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Basit Entegrasyon<\/h4>\n<p>Traefik, Docker konteynerleriyle entegrasyonu son derece kolayd\u0131r. Docker Compose dosyalar\u0131n\u0131za ekleyece\u011finiz birka\u00e7 etiket (labels) ile Traefik&#8217;in bir konteyneri nas\u0131l y\u00f6nlendirece\u011fini, hangi alan ad\u0131n\u0131 kullanaca\u011f\u0131n\u0131 ve hangi porttan hizmet verece\u011fini belirleyebilirsiniz. Bu, geli\u015ftiricilerin ve DevOps ekiplerinin Traefik&#8217;i projelerine h\u0131zl\u0131ca dahil etmelerini sa\u011flar.<\/p>\n<h4>Y\u00fck Dengeleme<\/h4>\n<p>Birden fazla ayn\u0131 uygulaman\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 durumlarda, Traefik gelen istekleri bu uygulamalar aras\u0131nda dengeleyebilir. Bu, uygulaman\u0131z\u0131n daha y\u00fcksek trafik hacimlerini kald\u0131rabilmesine ve y\u00fcksek eri\u015filebilirlik sa\u011flamas\u0131na yard\u0131mc\u0131 olur. Traefik, farkl\u0131 y\u00fck dengeleme stratejilerini destekleyebilir.<\/p>\n<h4>Mikroservis Mimarileri i\u00e7in \u0130deal<\/h4>\n<p>Yukar\u0131da bahsedilen t\u00fcm \u00f6zellikler, Traefik&#8217;i mikroservis tabanl\u0131 uygulamalar i\u00e7in m\u00fckemmel bir se\u00e7im haline getirir. Her mikroservis kendi Docker konteynerinde \u00e7al\u0131\u015f\u0131rken, Traefik bu servisler aras\u0131nda bir k\u00f6pr\u00fc g\u00f6revi g\u00f6r\u00fcr, d\u0131\u015far\u0131dan gelen istekleri do\u011fru servislere y\u00f6nlendirir ve g\u00fcvenli bir ileti\u015fim katman\u0131 sa\u011flar.<\/p>\n<h3>Traefik Yap\u0131land\u0131rmas\u0131na Ba\u015flang\u0131\u00e7<\/h3>\n<p>Traefik&#8217;i kurmak ve yap\u0131land\u0131rmak i\u00e7in bir dizin yap\u0131s\u0131 olu\u015fturarak ba\u015flayaca\u011f\u0131z. Bu dizin i\u00e7inde Traefik&#8217;in <code>docker-compose.yml<\/code> dosyas\u0131, statik yap\u0131land\u0131rma dosyas\u0131 ve Let&#8217;s Encrypt sertifikalar\u0131n\u0131 depolayaca\u011f\u0131 dosya bulunacak.<\/p>\n<h4>Dizin Yap\u0131s\u0131 Olu\u015fturma<\/h4>\n<p>Sunucunuzda Traefik i\u00e7in bir \u00e7al\u0131\u015fma dizini olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir traefik\ncd traefik<\/code><\/pre>\n<h4><code>docker-compose.yml<\/code> Olu\u015fturma<\/h4>\n<p>Bu dosya, Traefik servisini ve di\u011fer Docker konteynerlerini tan\u0131mlayaca\u011f\u0131m\u0131z ana dosyad\u0131r.<\/p>\n<pre><code class=\"language-bash\">nano docker-compose.yml<\/code><\/pre>\n<h4><code>traefik.yml<\/code> (Statik Yap\u0131land\u0131rma) Olu\u015fturma<\/h4>\n<p>Traefik&#8217;in temel ayarlar\u0131n\u0131 (portlar, sa\u011flay\u0131c\u0131lar, Let&#8217;s Encrypt ayarlar\u0131 gibi) bu dosyada tan\u0131mlayaca\u011f\u0131z. Bu dosya, Traefik servisi ba\u015flat\u0131ld\u0131\u011f\u0131nda bir kez okunur.<\/p>\n<pre><code class=\"language-bash\">nano traefik.yml<\/code><\/pre>\n<h4><code>acme.json<\/code> Olu\u015fturma<\/h4>\n<p>Let&#8217;s Encrypt sertifikalar\u0131 bu dosyada saklanacakt\u0131r. Traefik&#8217;in bu dosyaya yazma izinlerinin olmas\u0131 gerekmektedir. G\u00fcvenlik nedeniyle, bu dosyan\u0131n izinlerini k\u0131s\u0131tlamam\u0131z \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">touch acme.json\nchmod 600 acme.json<\/code><\/pre>\n<h3>Traefik Servisinin Olu\u015fturulmas\u0131<\/h3>\n<p>\u015eimdi <code>docker-compose.yml<\/code> dosyam\u0131z\u0131 Traefik servisini i\u00e7erecek \u015fekilde d\u00fczenleyelim.<\/p>\n<pre><code class=\"language-yaml\"># traefik\/docker-compose.yml\nversion: '3.8'\n\nservices:\n  traefik:\n    image: traefik:v2.9 # Traefik'in kararl\u0131 bir s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131n\n    container_name: traefik\n    restart: unless-stopped\n    security_opt:\n      - no-new-privileges:true\n    ports:\n      - \"80:80\"   # HTTP istekleri i\u00e7in\n      - \"443:443\" # HTTPS istekleri i\u00e7in\n      # - \"8080:8080\" # Traefik Dashboard i\u00e7in, sadece geli\u015ftirme ortamlar\u0131nda veya g\u00fcvenli eri\u015fimle kullan\u0131n\n    volumes:\n      - \/etc\/localtime:\/etc\/localtime:ro\n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock:ro # Traefik'in Docker'\u0131 dinlemesi i\u00e7in\n      - .\/traefik.yml:\/etc\/traefik\/traefik.yml:ro    # Statik yap\u0131land\u0131rma dosyas\u0131\n      - .\/acme.json:\/etc\/traefik\/acme.json          # Let's Encrypt sertifikalar\u0131 i\u00e7in\n    networks:\n      - web\n    labels:\n      # Traefik Dashboard'\u0131 etkinle\u015ftirme (iste\u011fe ba\u011fl\u0131)\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.traefik-dashboard.entrypoints=websecure\"\n      - \"traefik.http.routers.traefik-dashboard.rule=Host(<code>traefik.example.com<\/code>)\" # Kendi alan ad\u0131n\u0131z\u0131 kullan\u0131n\n      - \"traefik.http.routers.traefik-dashboard.tls=true\"\n      - \"traefik.http.routers.traefik-dashboard.tls.certresolver=letsencrypt\"\n      - \"traefik.http.routers.traefik-dashboard.service=api@internal\"\n      # Dashboard'a eri\u015fimi g\u00fcvenli hale getirme (\u00f6nerilir)\n      - \"traefik.http.routers.traefik-dashboard.middlewares=traefik-auth\"\n      # Kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile basic auth middleware\n      # 'htpasswd -nb user password' komutu ile olu\u015fturulur.\n      # \u00d6rne\u011fin: echo $(htpasswd -nb admin your_strong_password)\n      - \"traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$XQ.W7J.J$$wY72z\/pQ\/K2d.dF2o3m01\" # Kendi hash'inizi kullan\u0131n!\n      # HTTP'den HTTPS'ye y\u00f6nlendirme (middleware)\n      - \"traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https\"\n      - \"traefik.http.routers.redirection.rule=HostRegexp(<code>{host:.+}<\/code>)\"\n      - \"traefik.http.routers.redirection.entrypoints=web\"\n      - \"traefik.http.routers.redirection.middlewares=redirect-to-https\"\n      - \"traefik.http.routers.redirection.service=noop@internal\" # noop@internal, herhangi bir servise y\u00f6nlendirmeyen \u00f6zel bir servistir.\n\nnetworks:\n  web:\n    external: true # Traefik ve uygulamalar\u0131n ayn\u0131 a\u011fda olmas\u0131 i\u00e7in<\/code><\/pre>\n<p><strong><code>docker-compose.yml<\/code> A\u00e7\u0131klamalar\u0131:<\/strong><br \/>\n*   <strong><code>image: traefik:v2.9<\/code><\/strong>: Traefik&#8217;in belirtilen s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131r. Her zaman en g\u00fcncel kararl\u0131 s\u00fcr\u00fcm\u00fc kullanmaya \u00f6zen g\u00f6sterin.<br \/>\n*   <strong><code>container_name: traefik<\/code><\/strong>: Konteynerin ad\u0131n\u0131 belirler.<br \/>\n*   <strong><code>restart: unless-stopped<\/code><\/strong>: Konteynerin bir hata durumunda veya sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak yeniden ba\u015flamas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong><code>ports<\/code><\/strong>: 80 ve 443 portlar\u0131n\u0131 host makineye y\u00f6nlendirir. Bu, HTTP ve HTTPS trafi\u011finin Traefik&#8217;e ula\u015fmas\u0131n\u0131 sa\u011flar. 8080 portu Traefik Dashboard i\u00e7in iste\u011fe ba\u011fl\u0131d\u0131r ve genellikle i\u00e7 a\u011flardan eri\u015fim i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <strong><code>volumes<\/code><\/strong>:<br \/>\n    *   <code>\/var\/run\/docker.sock:\/var\/run\/docker.sock:ro<\/code>: Traefik&#8217;in Docker API&#8217;sine salt okunur eri\u015fimini sa\u011flar. Bu, Traefik&#8217;in Docker konteynerlerini ke\u015ffetmesini ve yap\u0131land\u0131rmas\u0131n\u0131 dinamik olarak g\u00fcncellemesini sa\u011flar.<br \/>\n    *   <code>.\/traefik.yml:\/etc\/traefik\/traefik.yml:ro<\/code>: Olu\u015fturdu\u011fumuz statik yap\u0131land\u0131rma dosyas\u0131n\u0131 Traefik konteynerine ba\u011flar. <code>ro<\/code> (read-only) ile salt okunur olarak ba\u011flan\u0131r.<br \/>\n    *   <code>.\/acme.json:\/etc\/traefik\/acme.json<\/code>: Let&#8217;s Encrypt sertifikalar\u0131n\u0131n depolanaca\u011f\u0131 dosyay\u0131 ba\u011flar.<br \/>\n*   <strong><code>networks<\/code><\/strong>: Traefik&#8217;in ve di\u011fer uygulamalar\u0131n ileti\u015fim kurabilmesi i\u00e7in bir Docker a\u011f\u0131 tan\u0131mlar\u0131z. <code>web<\/code> ad\u0131nda bir a\u011f olu\u015fturaca\u011f\u0131z.<br \/>\n*   <strong><code>labels<\/code><\/strong>: Traefik&#8217;in kendisini yap\u0131land\u0131rmas\u0131 i\u00e7in kullan\u0131lan dinamik yap\u0131land\u0131rma etiketleridir.<br \/>\n    *   <code>traefik.enable=true<\/code>: Bu konteynerin Traefik taraf\u0131ndan y\u00f6netilece\u011fini belirtir.<br \/>\n    <em>   <code>traefik.http.routers.traefik-dashboard.<\/em><\/code>: Traefik Dashboard i\u00e7in bir y\u00f6nlendirici (router) tan\u0131mlar. Belirtti\u011finiz alan ad\u0131 (<code>traefik.example.com<\/code>) \u00fczerinden HTTPS ile eri\u015filebilir olmas\u0131n\u0131 sa\u011flar ve Let&#8217;s Encrypt kullanarak otomatik SSL sertifikas\u0131 al\u0131r.<br \/>\n    *   <code>traefik.http.routers.traefik-dashboard.middlewares=traefik-auth<\/code>: Dashboard&#8217;a eri\u015fimi temel kimlik do\u011frulama (Basic Auth) ile korumak i\u00e7in bir middleware kullan\u0131r.<br \/>\n    *   <code>traefik.http.middlewares.traefik-auth.basicauth.users<\/code>: Basic Auth i\u00e7in kullan\u0131c\u0131 ad\u0131 ve \u015fifre hash&#8217;ini i\u00e7erir. \u015eifre hash&#8217;ini <code>htpasswd -nb admin your_strong_password<\/code> komutu ile olu\u015fturmal\u0131s\u0131n\u0131z. \u00d6rne\u011fin, <code>admin<\/code> kullan\u0131c\u0131s\u0131 ve <code>your_strong_password<\/code> \u015fifresi i\u00e7in <code>admin:$apr1$XQ.W7J.J$wY72z\/pQ\/K2d.dF2o3m01<\/code> gibi bir \u00e7\u0131kt\u0131 al\u0131rs\u0131n\u0131z. Bu \u00e7\u0131kt\u0131y\u0131 <code>users<\/code> de\u011ferine yap\u0131\u015ft\u0131rmal\u0131s\u0131n\u0131z. <strong>Kendi g\u00fcvenli \u015fifrenizi kullanmay\u0131 unutmay\u0131n!<\/strong><br \/>\n    <em>   <code>traefik.http.middlewares.redirect-to-https.<\/em><\/code>: HTTP \u00fczerinden gelen t\u00fcm istekleri otomatik olarak HTTPS&#8217;ye y\u00f6nlendiren bir middleware tan\u0131mlar. Bu, web sitelerinizin her zaman g\u00fcvenli bir ba\u011flant\u0131 \u00fczerinden eri\u015filmesini sa\u011flar.<\/p>\n<p>\u015eimdi <code>traefik.yml<\/code> statik yap\u0131land\u0131rma dosyam\u0131z\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-yaml\"># traefik\/traefik.yml\nglobal:\n  checkNewVersion: true\n  sendAnonymousUsage: false\n\nlog:\n  level: INFO # DEBUG, INFO, WARN, ERROR, FATAL, PANIC\n  format: common # json, common\n  filePath: \"\/var\/log\/traefik.log\" # \u0130ste\u011fe ba\u011fl\u0131, loglar\u0131 dosyaya yazar\n\napi:\n  dashboard: true # Traefik Dashboard'\u0131 etkinle\u015ftirir\n  insecure: true # Dashboard'a HTTP \u00fczerinden eri\u015fimi etkinle\u015ftirir (Sadece test i\u00e7in, \u00fcretimde \u00f6nerilmez!)\n\nentryPoints:\n  web:\n    address: \":80\"\n    http:\n      redirections:\n        entryPoint:\n          to: websecure\n          scheme: https\n          permanent: true\n  websecure:\n    address: \":443\"\n    http:\n      tls:\n        certResolver: letsencrypt\n        domains:\n          - main: example.com # Ana alan ad\u0131n\u0131z\n            sans:\n              - www.example.com # Alt alan adlar\u0131n\u0131z (varsa)\n\nproviders:\n  docker:\n    endpoint: \"unix:\/\/\/var\/run\/docker.sock\"\n    exposedByDefault: false # Sadece 'traefik.enable=true' etiketine sahip konteynerleri i\u015fler\n    network: web # Traefik'in dinleyece\u011fi Docker a\u011f\u0131\n    swarmMode: false # Docker Swarm kullanm\u0131yorsan\u0131z false b\u0131rak\u0131n\n\ncertificatesResolvers:\n  letsencrypt:\n    acme:\n      email: your_email@example.com # Let's Encrypt bildirimleri i\u00e7in e-posta adresiniz\n      storage: acme.json # Sertifikalar\u0131n depolanaca\u011f\u0131 dosya\n      httpChallenge:\n        entryPoint: web # HTTP-01 challenge i\u00e7in kullan\u0131lacak entrypoint<\/code><\/pre>\n<p><strong><code>traefik.yml<\/code> A\u00e7\u0131klamalar\u0131:<\/strong><br \/>\n*   <strong><code>global<\/code><\/strong>: Traefik&#8217;in genel ayarlar\u0131n\u0131 i\u00e7erir.<br \/>\n*   <strong><code>log<\/code><\/strong>: Log seviyesini ve format\u0131n\u0131 ayarlar. Sorun giderme i\u00e7in <code>DEBUG<\/code> seviyesini kullanabilirsiniz.<br \/>\n*   <strong><code>api<\/code><\/strong>: Traefik API ve Dashboard ayarlar\u0131n\u0131 i\u00e7erir. <code>dashboard: true<\/code> ile Dashboard&#8217;\u0131 etkinle\u015ftiririz. <code>insecure: true<\/code> ile Dashboard&#8217;a HTTP \u00fczerinden eri\u015fimi etkinle\u015ftiririz, ancak bu \u00fcretim ortamlar\u0131nda \u00f6nerilmez. Genellikle <code>insecure: false<\/code> yap\u0131l\u0131r ve Dashboard&#8217;a sadece HTTPS \u00fczerinden ve Basic Auth ile eri\u015filir (yukar\u0131daki <code>docker-compose.yml<\/code>&#8216;deki gibi).<br \/>\n*   <strong><code>entryPoints<\/code><\/strong>: Traefik&#8217;in dinleyece\u011fi portlar\u0131 ve protokolleri tan\u0131mlar.<br \/>\n    *   <code>web<\/code>: 80 numaral\u0131 portu dinler (HTTP). Gelen t\u00fcm HTTP isteklerini otomatik olarak <code>websecure<\/code> (HTTPS) entrypoint&#8217;ine y\u00f6nlendirir.<br \/>\n    *   <code>websecure<\/code>: 443 numaral\u0131 portu dinler (HTTPS). TLS yap\u0131land\u0131rmas\u0131n\u0131 i\u00e7erir ve Let&#8217;s Encrypt sertifika \u00e7\u00f6z\u00fcmleyiciyi kullan\u0131r.<br \/>\n*   <strong><code>providers<\/code><\/strong>: Traefik&#8217;in yap\u0131land\u0131rmalar\u0131 nereden alaca\u011f\u0131n\u0131 belirler.<br \/>\n    *   <code>docker<\/code>: Docker sa\u011flay\u0131c\u0131s\u0131n\u0131 etkinle\u015ftirir. <code>endpoint<\/code> Docker soketini g\u00f6sterir. <code>exposedByDefault: false<\/code> ile sadece a\u00e7\u0131k\u00e7a Traefik etiketi verilen konteynerleri i\u015fler, bu da g\u00fcvenlik i\u00e7in iyi bir uygulamad\u0131r. <code>network: web<\/code> ile Traefik&#8217;in hangi Docker a\u011f\u0131n\u0131 dinlemesi gerekti\u011fini belirtiriz.<br \/>\n*   <strong><code>certificatesResolvers<\/code><\/strong>: Sertifika \u00e7\u00f6z\u00fcmleyicilerini tan\u0131mlar.<br \/>\n    *   <code>letsencrypt<\/code>: Let&#8217;s Encrypt \u00e7\u00f6z\u00fcmleyicisini yap\u0131land\u0131r\u0131r. <code>email<\/code> adresinizi ve <code>storage<\/code> dosyas\u0131n\u0131 belirtirsiniz. <code>httpChallenge.entryPoint: web<\/code> ile Let&#8217;s Encrypt&#8217;in HTTP-01 do\u011frulama y\u00f6ntemini kullanarak sertifika almas\u0131n\u0131 sa\u011flar\u0131z.<\/p>\n<p><strong><code>acme.json<\/code> Dosyas\u0131n\u0131n \u0130zinleri:<\/strong><br \/>\nDaha \u00f6nce olu\u015fturdu\u011fumuz <code>acme.json<\/code> dosyas\u0131n\u0131n izinlerinin <code>600<\/code> oldu\u011fundan emin olun. Bu, sadece dosyan\u0131n sahibi olan kullan\u0131c\u0131n\u0131n bu dosyay\u0131 okuyup yazabilece\u011fi anlam\u0131na gelir ve sertifikalar\u0131n g\u00fcvenli\u011fini sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">chmod 600 acme.json<\/code><\/pre>\n<p><strong>Docker A\u011f\u0131 Olu\u015fturma:<\/strong><br \/>\n<code>docker-compose.yml<\/code> dosyas\u0131nda <code>web<\/code> ad\u0131nda bir a\u011f tan\u0131mlad\u0131k. Traefik&#8217;i ba\u015flatmadan \u00f6nce bu a\u011f\u0131 olu\u015fturmam\u0131z gerekiyor:<\/p>\n<pre><code class=\"language-bash\">docker network create web<\/code><\/pre>\n<p>\u015eimdi Traefik servisini ba\u015flatabiliriz:<\/p>\n<pre><code class=\"language-bash\">docker-compose up -d<\/code><\/pre>\n<p>Traefik konteynerinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker ps<\/code><\/pre>\n<p>Ve loglar\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker logs traefik<\/code><\/pre>\n<p>E\u011fer her \u015fey yolundaysa, <code>traefik.example.com<\/code> adresine HTTPS \u00fczerinden eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda Traefik Dashboard&#8217;\u0131 g\u00f6rmelisiniz (tabii ki kendi alan ad\u0131n\u0131zla). Basic Auth ile giri\u015f yapman\u0131z istenecektir.<\/p>\n<h3>\u00d6rnek Docker Uygulamas\u0131 Ekleme<\/h3>\n<p>Traefik&#8217;in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6stermek i\u00e7in basit bir Nginx web sunucusu konteyneri ekleyelim. Bu Nginx konteyneri, Traefik arac\u0131l\u0131\u011f\u0131yla d\u0131\u015f d\u00fcnyaya a\u00e7\u0131lacak ve kendi alan ad\u0131na sahip olacakt\u0131r.<\/p>\n<p><code>traefik<\/code> dizininizde yeni bir <code>app<\/code> dizini olu\u015ftural\u0131m ve i\u00e7ine bir <code>docker-compose.yml<\/code> dosyas\u0131 koyal\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir app\ncd app\nnano docker-compose.yml<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi <code>app\/docker-compose.yml<\/code> dosyas\u0131na yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-yaml\"># app\/docker-compose.yml\nversion: '3.8'\n\nservices:\n  nginx-app:\n    image: nginx:latest\n    container_name: my-nginx-app\n    restart: unless-stopped\n    volumes:\n      - .\/nginx\/html:\/usr\/share\/nginx\/html:ro # Kendi web i\u00e7eri\u011finizi buraya koyun\n    networks:\n      - web\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.nginx-app.rule=Host(<code>app.example.com<\/code>)\" # Kendi alan ad\u0131n\u0131z\u0131 kullan\u0131n\n      - \"traefik.http.routers.nginx-app.entrypoints=websecure\"\n      - \"traefik.http.routers.nginx-app.tls.certresolver=letsencrypt\"\n      - \"traefik.http.services.nginx-app.loadbalancer.server.port=80\" # Nginx'in dinledi\u011fi port\n\nnetworks:\n  web:\n    external: true<\/code><\/pre>\n<p><strong><code>app\/docker-compose.yml<\/code> A\u00e7\u0131klamalar\u0131:<\/strong><br \/>\n*   <strong><code>nginx-app<\/code><\/strong>: Nginx servisini tan\u0131mlar.<br \/>\n*   <strong><code>image: nginx:latest<\/code><\/strong>: En son Nginx imaj\u0131n\u0131 kullan\u0131r.<br \/>\n*   <strong><code>volumes<\/code><\/strong>: Nginx&#8217;in statik dosyalar\u0131n\u0131 sunmas\u0131 i\u00e7in <code>.\/nginx\/html<\/code> dizinini konteyner i\u00e7indeki <code>\/usr\/share\/nginx\/html<\/code> dizinine ba\u011flar\u0131z.<br \/>\n*   <strong><code>networks<\/code><\/strong>: Bu uygulama konteynerinin de Traefik ile ayn\u0131 <code>web<\/code> a\u011f\u0131na ba\u011fl\u0131 olmas\u0131 gerekti\u011fini belirtiriz.<br \/>\n*   <strong><code>labels<\/code><\/strong>: Traefik&#8217;in bu Nginx servisini nas\u0131l y\u00f6nlendirece\u011fini belirtir.<br \/>\n    *   <code>traefik.enable=true<\/code>: Traefik&#8217;in bu servisi y\u00f6netmesini sa\u011flar.<br \/>\n    *   <code>traefik.http.routers.nginx-app.rule=Host(<\/code>app.example.com<code>)<\/code>: Gelen isteklerden <code>app.example.com<\/code> alan ad\u0131na sahip olanlar\u0131 bu servise y\u00f6nlendirir. Kendi alan ad\u0131n\u0131z\u0131 kullanmay\u0131 unutmay\u0131n!<br \/>\n    *   <code>traefik.http.routers.nginx-app.entrypoints=websecure<\/code>: Bu servise sadece HTTPS (websecure) \u00fczerinden eri\u015filebilece\u011fini belirtir.<br \/>\n    *   <code>traefik.http.routers.nginx-app.tls.certresolver=letsencrypt<\/code>: Bu alan ad\u0131 i\u00e7in Let&#8217;s Encrypt arac\u0131l\u0131\u011f\u0131yla otomatik SSL sertifikas\u0131 almas\u0131n\u0131 sa\u011flar.<br \/>\n    *   <code>traefik.http.services.nginx-app.loadbalancer.server.port=80<\/code>: Nginx konteynerinin i\u00e7indeki 80 numaral\u0131 porttan hizmet verdi\u011fini Traefik&#8217;e bildirir.<\/p>\n<p>Nginx i\u00e7in basit bir HTML sayfas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir -p nginx\/html\nnano nginx\/html\/index.html<\/code><\/pre>\n<p>\u0130\u00e7ine a\u015fa\u011f\u0131daki HTML kodunu yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-html\"><!DOCTYPE html>\n<html>\n<head>\n    <title>Merhaba Traefik!<\/title>\n<\/head>\n<body>\n    \n    <p>Bu sayfa Traefik arac\u0131l\u0131\u011f\u0131yla g\u00fcvenli bir \u015fekilde sunulmaktad\u0131r.<\/p>\n<\/body>\n<\/html><\/code><\/pre>\n<p>\u015eimdi bu Nginx uygulamas\u0131n\u0131 ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">docker-compose up -d<\/code><\/pre>\n<p>Uygulama ba\u015flat\u0131ld\u0131ktan k\u0131sa bir s\u00fcre sonra (Let&#8217;s Encrypt sertifikas\u0131n\u0131n al\u0131nmas\u0131 birka\u00e7 dakika s\u00fcrebilir), <code>app.example.com<\/code> adresine (kendi alan ad\u0131n\u0131zla) HTTPS \u00fczerinden eri\u015fti\u011finizde Nginx&#8217;in sundu\u011fu &#8220;Merhaba Traefik!&#8221; sayfas\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>Traefik Dashboard Kullan\u0131m\u0131<\/h3>\n<p>Traefik Dashboard, Traefik&#8217;in mevcut yap\u0131land\u0131rmas\u0131n\u0131, y\u00f6nlendiricileri, servisleri, middleware&#8217;leri ve sertifikalar\u0131 g\u00f6rsel olarak izlemenizi sa\u011flar. <code>traefik.example.com<\/code> (kendi alan ad\u0131n\u0131zla) adresine giderek ve <code>docker-compose.yml<\/code> dosyas\u0131nda ayarlad\u0131\u011f\u0131n\u0131z kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile giri\u015f yaparak Dashboard&#8217;a eri\u015febilirsiniz.<\/p>\n<p>Dashboard&#8217;da \u015funlar\u0131 g\u00f6receksiniz:<br \/>\n*   <strong>Routers<\/strong>: Tan\u0131mlanan t\u00fcm y\u00f6nlendiricileri (\u00f6rne\u011fin <code>traefik-dashboard<\/code>, <code>nginx-app<\/code>) ve bunlar\u0131n kurallar\u0131n\u0131 (Host) g\u00f6sterir.<br \/>\n*   <strong>Services<\/strong>: Traefik&#8217;in y\u00f6netti\u011fi t\u00fcm servisleri (\u00f6rne\u011fin <code>nginx-app<\/code>) ve bunlar\u0131n hangi portlarda \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<br \/>\n*   <strong>Middlewares<\/strong>: Tan\u0131mlanan t\u00fcm middleware&#8217;leri (\u00f6rne\u011fin <code>traefik-auth<\/code>, <code>redirect-to-https<\/code>) g\u00f6sterir.<br \/>\n*   <strong>Certificates<\/strong>: Let&#8217;s Encrypt taraf\u0131ndan al\u0131nan ve y\u00f6netilen t\u00fcm SSL\/TLS sertifikalar\u0131n\u0131 ve bunlar\u0131n durumunu g\u00f6sterir.<\/p>\n<p>Dashboard, Traefik yap\u0131land\u0131rman\u0131z\u0131n do\u011fru \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek ve sorun gidermek i\u00e7in \u00e7ok de\u011ferli bir ara\u00e7t\u0131r.<\/p>\n<h3>G\u00fcvenlik ve \u0130yile\u015ftirmeler<\/h3>\n<p>Traefik&#8217;i bir ters proxy olarak kullan\u0131rken g\u00fcvenlik her zaman \u00f6ncelikli olmal\u0131d\u0131r. \u0130\u015fte baz\u0131 ek g\u00fcvenlik ve iyile\u015ftirme \u00f6nerileri:<\/p>\n<h4>Dashboard \u0130\u00e7in Temel Kimlik Do\u011frulama (Basic Auth)<\/h4>\n<p>Yukar\u0131daki <code>docker-compose.yml<\/code> \u00f6rne\u011finde Traefik Dashboard&#8217;\u0131 Basic Auth ile koruduk. Bu, yetkisiz eri\u015fimi engellemek i\u00e7in \u00f6nemli bir ad\u0131md\u0131r. <code>htpasswd<\/code> komutunu kullanarak g\u00fc\u00e7l\u00fc bir \u015fifre hash&#8217;i olu\u015fturdu\u011funuzdan emin olun ve bu \u015fifreyi d\u00fczenli olarak de\u011fi\u015ftirin.<\/p>\n<h4><code>acme.json<\/code> \u0130zinleri<\/h4>\n<p><code>acme.json<\/code> dosyas\u0131 hassas sertifika bilgilerini i\u00e7erir. Bu dosyan\u0131n izinlerinin <code>600<\/code> oldu\u011fundan emin olun (<code>chmod 600 acme.json<\/code>). Bu, sadece Traefik konteynerinin bu dosyay\u0131 okuyup yazabilmesini sa\u011flar ve di\u011fer kullan\u0131c\u0131lar\u0131n eri\u015fimini engeller.<\/p>\n<h4>Rate Limiting (Oran S\u0131n\u0131rlama)<\/h4>\n<p>DDoS sald\u0131r\u0131lar\u0131n\u0131 veya k\u00f6t\u00fc niyetli taramalar\u0131 \u00f6nlemek i\u00e7in belirli bir IP adresinden gelen istekleri s\u0131n\u0131rlayabilirsiniz. Traefik, <code>rateLimit<\/code> middleware&#8217;i ile bu \u00f6zelli\u011fi sunar. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-yaml\"># docker-compose.yml i\u00e7indeki bir servisin etiketlerine ekleyin\n      - \"traefik.http.middlewares.my-ratelimit.ratelimit.average=100\" # Saniyede ortalama 100 istek\n      - \"traefik.http.middlewares.my-ratelimit.ratelimit.burst=50\"   # Patlamada 50 iste\u011fe kadar izin ver\n      - \"traefik.http.routers.nginx-app.middlewares=my-ratelimit\"<\/code><\/pre>\n<h4>IP K\u0131s\u0131tlamalar\u0131<\/h4>\n<p>Belirli servislerinize sadece belirli IP adreslerinden eri\u015filmesini isteyebilirsiniz. Traefik&#8217;in <code>ipWhiteList<\/code> middleware&#8217;i ile bunu yapabilirsiniz:<\/p>\n<pre><code class=\"language-yaml\"># docker-compose.yml i\u00e7indeki bir servisin etiketlerine ekleyin\n      - \"traefik.http.middlewares.my-ip-whitelist.ipwhitelist.sourcerange=192.168.1.0\/24,10.0.0.1\"\n      - \"traefik.http.routers.nginx-app.middlewares=my-ip-whitelist\"<\/code><\/pre>\n<p>Bu, sadece belirtilen IP aral\u0131klar\u0131ndan gelen isteklere izin verir.<\/p>\n<h4>TLS Ayarlar\u0131<\/h4>\n<p>Traefik&#8217;in TLS yap\u0131land\u0131rmas\u0131n\u0131 daha g\u00fcvenli hale getirebilirsiniz. \u00d6rne\u011fin, sadece belirli TLS versiyonlar\u0131n\u0131 veya \u015fifreleme algoritmalar\u0131n\u0131 kabul edebilirsiniz:<\/p>\n<pre><code class=\"language-yaml\"># traefik.yml i\u00e7ine ekleyin\ntls:\n  options:\n    default:\n      minVersion: VersionTLS12\n      cipherSuites:\n        - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\n        - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\n        - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305<\/code><\/pre>\n<p>Bu, daha eski ve zay\u0131f TLS versiyonlar\u0131n\u0131n veya \u015fifreleme algoritmalar\u0131n\u0131n kullan\u0131lmas\u0131n\u0131 engeller.<\/p>\n<h4>HTTP G\u00fcvenlik Ba\u015fl\u0131klar\u0131<\/h4>\n<p>Traefik, <code>headers<\/code> middleware&#8217;i ile HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131 eklemenize olanak tan\u0131r. \u00d6rne\u011fin, HSTS (HTTP Strict Transport Security) ba\u015fl\u0131\u011f\u0131 eklemek i\u00e7in:<\/p>\n<pre><code class=\"language-yaml\"># docker-compose.yml i\u00e7indeki bir servisin etiketlerine ekleyin\n      - \"traefik.http.middlewares.my-headers.headers.stsseconds=31536000\"\n      - \"traefik.http.middlewares.my-headers.headers.stspreload=true\"\n      - \"traefik.http.middlewares.my-headers.headers.stsincludeSubdomains=true\"\n      - \"traefik.http.routers.nginx-app.middlewares=my-headers\"<\/code><\/pre>\n<p>Bu ba\u015fl\u0131klar, taray\u0131c\u0131lara sitenize her zaman HTTPS \u00fczerinden ba\u011flanmalar\u0131n\u0131 emreder ve \u00e7e\u015fitli web sald\u0131r\u0131lar\u0131na kar\u015f\u0131 koruma sa\u011flar.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Traefik kurulumu s\u0131ras\u0131nda veya sonras\u0131nda sorunlarla kar\u015f\u0131la\u015fabilirsiniz. \u0130\u015fte yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcm \u00f6nerileri:<\/p>\n<h4>Loglar\u0131 Kontrol Etme<\/h4>\n<p>Herhangi bir sorunla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda ilk yapman\u0131z gereken Traefik konteynerinin loglar\u0131n\u0131 kontrol etmektir:<\/p>\n<pre><code class=\"language-bash\">docker logs traefik<\/code><\/pre>\n<p>Loglar, sertifika alma hatalar\u0131, yap\u0131land\u0131rma sorunlar\u0131 veya a\u011f ba\u011flant\u0131s\u0131 problemleri hakk\u0131nda \u00f6nemli ipu\u00e7lar\u0131 verebilir.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131<\/h4>\n<p>80 ve 443 portlar\u0131n\u0131n g\u00fcvenlik duvar\u0131n\u0131zda a\u00e7\u0131k oldu\u011fundan emin olun. UFW kullan\u0131yorsan\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>Gerekirse portlar\u0131 a\u00e7\u0131n ve UFW&#8217;yi yeniden y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 80\/tcp\nsudo ufw allow 443\/tcp\nsudo ufw reload<\/code><\/pre>\n<h4>DNS Ayarlar\u0131<\/h4>\n<p>Alan ad\u0131n\u0131z\u0131n A kayd\u0131n\u0131n sunucunuzun do\u011fru IP adresine i\u015faret etti\u011finden emin olun. DNS de\u011fi\u015fikliklerinin yay\u0131lmas\u0131 biraz zaman alabilir (genellikle birka\u00e7 dakika ila birka\u00e7 saat). <code>dig<\/code> veya <code>nslookup<\/code> gibi ara\u00e7larla kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">dig +short app.example.com<\/code><\/pre>\n<p>Bu komut, alan ad\u0131n\u0131z\u0131n hangi IP adresine \u00e7\u00f6z\u00fcld\u00fc\u011f\u00fcn\u00fc g\u00f6stermelidir.<\/p>\n<h4>Traefik Etiketleri<\/h4>\n<p>Uygulama konteynerlerinizdeki Traefik etiketlerinin do\u011fru oldu\u011fundan emin olun. \u00d6zellikle <code>traefik.enable=true<\/code>, <code>traefik.http.routers.<router_name>.rule<\/code> (Host k\u0131sm\u0131 do\u011fru alan ad\u0131n\u0131 i\u00e7ermeli) ve <code>traefik.http.services.<service_name>.loadbalancer.server.port<\/code> (uygulaman\u0131n i\u00e7 portuyla e\u015fle\u015fmeli) etiketlerini dikkatlice kontrol edin.<\/p>\n<h4><code>acme.json<\/code> \u0130zinleri ve \u0130\u00e7eri\u011fi<\/h4>\n<p><code>acme.json<\/code> dosyas\u0131n\u0131n izinlerinin <code>600<\/code> oldu\u011fundan emin olun. Ayr\u0131ca, sertifika alma hatas\u0131 al\u0131yorsan\u0131z, bu dosyan\u0131n bo\u015f olup olmad\u0131\u011f\u0131n\u0131 veya hatal\u0131 bir format i\u00e7erip i\u00e7ermedi\u011fini kontrol edin. Bazen, dosyan\u0131n i\u00e7eri\u011fi bozulursa, Traefik&#8217;i durdurup <code>acme.json<\/code> dosyas\u0131n\u0131 silip yeniden ba\u015flatmak sorunu \u00e7\u00f6zebilir (ancak bu, mevcut t\u00fcm sertifikalar\u0131 kaybetmenize neden olur ve Traefik yeniden sertifika almaya \u00e7al\u0131\u015f\u0131r).<\/p>\n<h4>Docker A\u011f\u0131<\/h4>\n<p>Traefik ve uygulama konteynerlerinizin ayn\u0131 Docker a\u011f\u0131na (<code>web<\/code> a\u011f\u0131) ba\u011fl\u0131 oldu\u011fundan emin olun. <code>docker inspect <container_name><\/code> komutu ile bir konteynerin hangi a\u011flara ba\u011fl\u0131 oldu\u011funu g\u00f6rebilirsiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Debian 9 \u00fczerinde Docker konteynerleri i\u00e7in Traefik&#8217;i nas\u0131l bir ters proxy olarak kuraca\u011f\u0131m\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 detayl\u0131 bir \u015fekilde inceledik. Traefik&#8217;in dinamik yap\u0131land\u0131rma yetene\u011fi, otomatik Let&#8217;s Encrypt entegrasyonu ve Docker ile sorunsuz entegrasyonu sayesinde, modern web uygulamalar\u0131n\u0131z\u0131 g\u00fcvenli, \u00f6l\u00e7eklenebilir ve kolay y\u00f6netilebilir bir \u015fekilde d\u0131\u015f d\u00fcnyaya sunabilirsiniz.<\/p>\n<p>Ad\u0131m ad\u0131m kurulum rehberini takip ederek, Traefik servisini ba\u015flatt\u0131k, statik ve dinamik yap\u0131land\u0131rmalar\u0131n\u0131 ayarlad\u0131k ve \u00f6rnek bir Nginx uygulamas\u0131n\u0131 Traefik arac\u0131l\u0131\u011f\u0131yla yay\u0131nlad\u0131k. Ayr\u0131ca, Traefik Dashboard&#8217;\u0131n kullan\u0131m\u0131n\u0131 ve g\u00fcvenlik iyile\u015ftirmelerini ele ald\u0131k. Traefik, mikroservis mimarileri ve konteynerle\u015ftirilmi\u015f uygulamalar i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir \u00e7\u00f6z\u00fcm sunarak DevOps s\u00fcre\u00e7lerinizi \u00f6nemli \u00f6l\u00e7\u00fcde basitle\u015ftirir. Bu rehber, Traefik ile Docker konteynerlerinizi y\u00f6netmeye ba\u015flaman\u0131z i\u00e7in sa\u011flam bir temel olu\u015fturmaktad\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn modern uygulama mimarilerinde, \u00f6zellikle mikroser","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[241],"tags":[],"class_list":{"0":"post-34648","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn modern uygulama mimarilerinde, \u00f6zellikle mikroser\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-20T03:40:51+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu\",\"datePublished\":\"2025-11-20T03:40:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/\"},\"wordCount\":2838,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/\",\"name\":\"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-20T03:40:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu","og_description":"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn modern uygulama mimarilerinde, \u00f6zellikle mikroser","og_url":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-20T03:40:51+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu","datePublished":"2025-11-20T03:40:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/"},"wordCount":2838,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/","name":"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-20T03:40:51+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/traefik-ile-docker-konteynerleri-icin-debian-9-uzerinde-ters-proxy-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Traefik ile Docker Konteynerleri i\u00e7in Debian 9 \u00dczerinde Ters Proxy Kurulumu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34648"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34648\/revisions"}],"predecessor-version":[{"id":34649,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34648\/revisions\/34649"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34648"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}