{"id":612,"date":"2026-04-14T07:26:38","date_gmt":"2026-04-14T04:26:38","guid":{"rendered":"https:\/\/m4.ist\/index.php\/2026\/04\/14\/caddy-technitium-dns-grafana-4\/"},"modified":"2026-04-14T07:26:38","modified_gmt":"2026-04-14T04:26:38","slug":"caddy-technitium-dns-grafana-4","status":"publish","type":"post","link":"https:\/\/m4.ist\/index.php\/2026\/04\/14\/caddy-technitium-dns-grafana-4\/","title":{"rendered":"Caddy Technitium DNS Grafana Rehberi"},"content":{"rendered":"<h1>Caddy, Technitium DNS ve Grafana ile Ev Mini\u2011PC \u0130zleme S\u00fctunu Ustal\u0131\u011f\u0131<\/h1>\n<p>Caddy Technitium DNS Grafana bu rehberin merkezindedir. Caddy, Technitium DNS ve Grafana, az bir mini\u2011PC\u2019yi gizlilik odakl\u0131 bir DNS hub\u2019a d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in kulland\u0131\u011f\u0131m tam y\u0131\u011f\u0131n\u0131 temsil ediyor; ayn\u0131 zamanda ev a\u011f\u0131mda ge\u00e7en her sorguyu ger\u00e7ek\u2011zaman izleme imkan\u0131 da sa\u011fl\u0131yor. Bu g\u00f6nderide, donan\u0131m se\u00e7imlerinden geri alma (geri alma) stratejilerine kadar t\u00fcm plan\u0131 ad\u0131m ad\u0131m anlataca\u011f\u0131m, b\u00f6ylece kendi dairenizde veya k\u00fc\u00e7\u00fck ofisinizde g\u00fc\u00e7l\u00fc, d\u00fc\u015f\u00fck\u2011g\u00fc\u00e7l\u00fc ve izlenebilir bir DoH\/DoT\/DoQ hizmeti olu\u015fturabilirsiniz.<\/p>\n<p>Daha fazla ba\u011flam i\u00e7in <a href=\"\/caddy-technitium-dns-grafana-mini-pc-monitoring-service-control-guide\">ilgili rehber<\/a> ve <a href=\"https:\/\/blog.technitium.com\/2020\/07\/how-to-host-your-own-dns-over-https-and.html\" target=\"_blank\" rel=\"noopener\">resmi kaynak<\/a> ba\u011flant\u0131lar\u0131na g\u00f6z at.<\/p>\n<div class=\"rankmath-manual-toc\" data-rankmath-toc=\"1\">\n<p>\u0130\u00e7indekiler<\/p>\n<ul>\n<li><a href=\"#section-1\">Intro<\/a><\/li>\n<li><a href=\"#section-2\">Genel \u00c7er\u00e7eve<\/a><\/li>\n<li><a href=\"#section-3\">Neden \u00d6nemlidir<\/a><\/li>\n<li><a href=\"#section-4\">Gizlilik &amp; G\u00fcvenlik<\/a><\/li>\n<li><a href=\"#section-5\">Operasyonel Bilgiler<\/a><\/li>\n<li><a href=\"#section-6\">Gereksinimler<\/a><\/li>\n<li><a href=\"#section-7\">Donan\u0131m<\/a><\/li>\n<li><a href=\"#section-8\">\u0130\u015fletim Sistemi<\/a><\/li>\n<li><a href=\"#section-9\">A\u011f<\/a><\/li>\n<li><a href=\"#section-10\">Yaz\u0131l\u0131m Ba\u011f\u0131ml\u0131l\u0131klar\u0131<\/a><\/li>\n<li><a href=\"#section-11\">Ad\u0131m\u2011Ad\u0131m Uygulama<\/a><\/li>\n<li><a href=\"#section-12\">1. Technitium DNS Sunucusunu Y\u00fckleyin<\/a><\/li>\n<li><a href=\"#section-13\">2. DoH\/DoT i\u00e7in Caddy\u2019yi yap\u0131land\u0131r<\/a><\/li>\n<li><a href=\"#section-14\">3. Grafana ve Technitium Exporter\u2019\u0131 Kurma<\/a><\/li>\n<li><a href=\"#section-15\">4. Dinamik DNS\u2019i Ba\u011flama<\/a><\/li>\n<li><a href=\"#section-16\">5. Noktalar\u0131 Do\u011frula<\/a><\/li>\n<li><a href=\"#section-17\">Sorun Giderme<\/a><\/li>\n<li><a href=\"#section-18\">Optimizasyon<\/a><\/li>\n<li><a href=\"#section-19\">SSS<\/a><\/li>\n<li><a href=\"#section-20\">Kaynaklar &amp; \u0130leri Okuma<\/a><\/li>\n<li><a href=\"#section-21\">Tablo<\/a><\/li>\n<li><a href=\"#section-22\">Caddy vs Di\u011fer DoH \u00c7evirici Geri Proxy\u2019leri<\/a><\/li>\n<li><a href=\"#section-23\">Risk &amp; Geri Alma Karar Matrisi<\/a><\/li>\n<li><a href=\"#section-24\">En \u0130yi Uygulama Do\u011frulama Kontrol Listesi<\/a><\/li>\n<li><a href=\"#section-25\">Kontrol Listeleri<\/a><\/li>\n<li><a href=\"#section-26\">Yerle\u015ftirme \u00d6ncesi Haz\u0131rl\u0131k Kontrol Listesi<\/a><\/li>\n<li><a href=\"#section-27\">Yerle\u015ftirme Sonras\u0131 \u0130zleme Kontrol Listesi<\/a><\/li>\n<li><a href=\"#section-28\">Otomatik Kurulum Beti\u011fi<\/a><\/li>\n<\/ul>\n<\/div>\n<h2 id=\"section-1\">Intro<\/h2>\n<p>Ev a\u011flar\u0131 genellikle ki\u015fisel gizlili\u011fin en zay\u0131f halkas\u0131d\u0131r. Tek bir DNS \u00e7arp\u0131tmas\u0131 t\u00fcm trafi\u011finizi ISP&#8217;niz ya da k\u00f6t\u00fc niyetli bir y\u00f6nlendiriciye a\u00e7abilir. Yerel bir DNS\u2011over\u2011HTTPS (DoH) sunucusu kurmak bunu engellerken, bir panel (dashboard) sorunlar\u0131 kesintiye d\u00f6n\u00fc\u015fmeden \u00f6nce fark etmenizi sa\u011flar.<\/p>\n<p>Bu k\u0131lavuzda \u015funlar\u0131 \u00f6\u011freneceksiniz:<br \/>\n&#8211; Technitium DNS Server\u2019\u0131 yetkili \u00e7\u00f6z\u00fcc\u00fc olarak kurmak<br \/>\n&#8211; Caddy\u2019i ters proxy (reverse proxy) olarak kullanarak DoH\/DoT\/DoQ u\u00e7 noktalar\u0131n\u0131 a\u00e7mak<br \/>\n&#8211; DNS metriklerini s\u00fcrekli izleme i\u00e7in Grafana\u2019ya aktarmak<br \/>\n&#8211; Dinamik DNS g\u00fcncellemelerini yap\u0131land\u0131rmak, b\u00f6ylece ISP&#8217;niz yeni bir IP verdi\u011finde ev otomasyonunuz bozulmaz<br \/>\n&#8211; Her \u015feyin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak ve bir sorun \u00e7\u0131kt\u0131\u011f\u0131nda h\u0131zl\u0131ca geri d\u00f6nmek<\/p>\n<p>Makale boyunca ger\u00e7ek\u2011d\u00fcnya senaryolar\u0131 ekleyece\u011fim; \u00f6rne\u011fin, dinamik IP ge\u00e7i\u015finin ak\u0131ll\u0131 \u0131\u015f\u0131klar\u0131m\u0131 devre d\u0131\u015f\u0131 b\u0131rakmas\u0131 ve kullan\u0131m senaryonuz de\u011fi\u015fti\u011finde Caddy, Traefik veya Nginx aras\u0131nda se\u00e7im yapman\u0131za yard\u0131mc\u0131 olacak karar noktalar\u0131.<\/p>\n<blockquote>\n<p><em>Bu yeniden yaz\u0131m\u0131n ilham kayna\u011f\u0131 olan orijinal g\u00f6nderiyi merak ediyorsan\u0131z, ar\u015fivlenmi\u015f makaleyi <a href=\"#\">\/saturday-october-10-2020<\/a> adresinde inceleyin.<\/em><\/p>\n<\/blockquote>\n<h2 id=\"section-2\">Genel \u00c7er\u00e7eve<\/h2>\n<p>Y\u0131\u011f\u0131n \u00fc\u00e7 temel bile\u015fenden olu\u015fur:<\/p>\n<table>\n<thead>\n<tr>\n<th>Bile\u015fen<\/th>\n<th>Rol<\/th>\n<th>\u00d6nemli \u00d6zellikler<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Caddy<\/strong><\/td>\n<td>Geri y\u00f6nlendirme proxy&#8217;si ve HTTP\/HTTPS sunucusu<\/td>\n<td>Otomatik TLS, temiz yap\u0131land\u0131rma, eklenti ekosistemi<\/td>\n<\/tr>\n<tr>\n<td><strong>Technitium DNS Server<\/strong><\/td>\n<td>Yetkili \u00e7\u00f6z\u00fcmleyici<\/td>\n<td>Yerle\u015fik DoH\/DoT\/DoQ deste\u011fi, web y\u00f6netim aray\u00fcz\u00fc, d\u00fc\u015f\u00fck ayak izi<\/td>\n<\/tr>\n<tr>\n<td><strong>Grafana<\/strong><\/td>\n<td>G\u00f6rselle\u015ftirme ve uyar\u0131<\/td>\n<td>Prometheus ihracat\u00e7\u0131s\u0131 arac\u0131l\u0131\u011f\u0131yla metrik toplar, \u00f6zelle\u015ftirilebilir paneller<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Nas\u0131l etkile\u015firler:<\/strong> Caddy, 443 ve 853 portlar\u0131nda dinler, DoH\/DoT isteklerini Technitium&#8217;a y\u00f6nlendirir, Technitium sorgular\u0131 \u00e7\u00f6zer ve g\u00fcnl\u00fc\u011fe kaydeder. Technitium ihracat\u00e7\u0131s\u0131, Prometheus i\u00e7in <code>\/metrics<\/code> sunar; Grafana bunu tarayarak sorgu gecikmesi, hata oranlar\u0131 ve \u00f6nbellek ba\u015far\u0131 oranlar\u0131 g\u00f6steren paneller olu\u015fturur. K\u00fc\u00e7\u00fck bir Caddy eklentisi (<code>dynamic_dns<\/code>) mini-PC&#8217;nin kamu IP&#8217;si ile d\u0131\u015f DNS kay\u0131tlar\u0131n\u0131 senkronize tutar, b\u00f6ylece ISP adresinizi de\u011fi\u015ftirdi\u011finde bile ev cihazlar\u0131n\u0131z DoH sunucusuna her zaman ula\u015fabilir.<\/p>\n<p><em>\u00d6rnek:<\/em> <\/p>\n<pre><code>Caddy \u279c (DoH) \u279c Technitium \u279c (\u00e7\u00f6zer) \u279c \u0130nternet\n                    |\n                    \u2514\u2500 Prometheus ihracat\u00e7\u0131s\u0131 \u279c Grafana paneli\n<\/code><\/pre>\n<h2 id=\"section-3\">Neden \u00d6nemlidir<\/h2>\n<h3 id=\"section-4\">Gizlilik &amp; G\u00fcvenlik<\/h3>\n<ul>\n<li><strong>\u015eifreli trafik<\/strong>: DoH\/DoT, sorgu i\u00e7eri\u011fini pasif dinleyicilerden gizler.<\/li>\n<\/ul>\n<h3 id=\"section-5\">Operasyonel Bilgiler<\/h3>\n<ul>\n<li><strong>An\u0131nda uyar\u0131lar<\/strong>: Sorgu hatalar\u0131nda aniden art\u0131\u015f, bir yanl\u0131\u015f yap\u0131land\u0131rmay\u0131 ya da bir DDoS giri\u015fimini g\u00f6sterebilir.  <\/li>\n<li><strong>Tarihi e\u011filimler<\/strong>: Zaman i\u00e7inde \u00f6nbellek hit oranlar\u0131n\u0131 izlemek, TTL\u2019leri h\u0131z ile tazelik aras\u0131nda dengelemek i\u00e7in ayarlaman\u0131za yard\u0131mc\u0131 olur.  <\/li>\n<li><strong>K\u00f6k neden analizi<\/strong>: Ev otomasyonu ba\u015far\u0131s\u0131z olursa, Grafana paneli hatan\u0131n DNS zaman a\u015f\u0131m\u0131 m\u0131 yoksa yanl\u0131\u015f y\u00f6nlendirilmi\u015f sorgu mu oldu\u011funu ortaya \u00e7\u0131karabilir.  <\/li>\n<\/ul>\n<p><em>Ger\u00e7ek hayattan \u00f6rnek:<\/em> Daha \u00f6nceki bir kurulumda, ISP\u2019nin BGP duyurular\u0131ndaki ani bir de\u011fi\u015fiklik ev a\u011f\u0131n\u0131n farkl\u0131 bir genel IP almas\u0131na yol a\u00e7t\u0131. Statik DNS kayd\u0131 kullanan ak\u0131ll\u0131 kilidim hata vermeye ba\u015flad\u0131. Caddy\u2019nin <code>dynamic_dns<\/code> eklentisiyle Cloudflare kay\u0131tlar\u0131n\u0131 otomatik olarak g\u00fcncelleyerek kilidi manuel m\u00fcdahale olmadan eri\u015filebilir tutabildik.  <\/p>\n<h2 id=\"section-6\">Gereksinimler<\/h2>\n<h3 id=\"section-7\">Donan\u0131m<\/h3>\n<ul>\n<li><strong>Mini\u2011PC<\/strong>: En az 1\u202fGHz \u00e7ift \u00e7ekirdek, 2\u202fGB RAM ve SSD (NVMe h\u0131zl\u0131ysa art\u0131). Raspberry Pi\u202f4 4\u202fGB yeterli olsa da, y\u00fcksek sorgu y\u00fckleri i\u00e7in daha g\u00fc\u00e7l\u00fc bir kenar y\u00f6nlendirici ya da d\u00fc\u015f\u00fck g\u00fc\u00e7 t\u00fcketimli Intel NUC tercih edilir.  <\/li>\n<li><strong>G\u00fc\u00e7<\/strong>: Kesintisiz g\u00fc\u00e7 kayna\u011f\u0131 (UPS) ya da en az 15\u202fW\u2019l\u0131k adapt\u00f6r, beklenmedik bir g\u00fc\u00e7 kesintisinde ani kapanmay\u0131 \u00f6nlemek i\u00e7in gerekir.  <\/li>\n<\/ul>\n<h3 id=\"section-8\">\u0130\u015fletim Sistemi<\/h3>\n<p>Ubuntu\u202f22.04 LTS, Debian\u202f12 veya systemd ve <code>apt<\/code> i\u00e7eren herhangi bir yeni da\u011f\u0131t\u0131m.<\/p>\n<h3 id=\"section-9\">A\u011f<\/h3>\n<ul>\n<li><strong>Statik IP veya DDNS<\/strong>: En az bir a\u00e7\u0131k IP adresi, bir domaine e\u015flenebilmeli. Dinamik IP ortamlar\u0131 i\u00e7in Cloudflare, DuckDNS veya Caddy&#8217;nin <code>dynamic_dns<\/code> eklentisi gibi bir dinamik DNS sa\u011flay\u0131c\u0131s\u0131 \u015fartt\u0131r.<\/li>\n<li><strong>Portlar<\/strong>:  <\/li>\n<li>443\/TCP, DoH i\u00e7in  <\/li>\n<li>853\/TCP, DoT i\u00e7in  <\/li>\n<li>443\/TCP, Grafana i\u00e7in (g\u00fcvenlik amac\u0131yla farkl\u0131 bir port se\u00e7ebilirsiniz)<\/li>\n<\/ul>\n<h3 id=\"section-10\">Yaz\u0131l\u0131m Ba\u011f\u0131ml\u0131l\u0131klar\u0131<\/h3>\n<ul>\n<li>Docker (Grafana ve exporter i\u00e7in)<\/li>\n<li>systemd (servis y\u00f6netimi)<\/li>\n<li>curl, jq (CLI ara\u00e7lar\u0131)<\/li>\n<li>caddy (https:\/\/caddyserver.com\/download&#8217;dan indirilen)<\/li>\n<\/ul>\n<p><em>\u00d6rnek:<\/em><br \/>\nUbuntu 22.04 \u00e7al\u0131\u015fan bir Raspberry Pi\u202f4, Cloudflare domainine <code>doh.example.com<\/code> ba\u011flanm\u0131\u015f, y\u00f6nlendiricide 443 ve 853 portlar\u0131 a\u00e7\u0131k ise, tamamen \u00e7al\u0131\u015f\u0131r durumda bir kurulumdur.<\/p>\n<h2 id=\"section-11\">Ad\u0131m\u2011Ad\u0131m Uygulama<\/h2>\n<p>A\u015fa\u011f\u0131daki b\u00f6l\u00fcmler, her bile\u015fenin kurulumu, yap\u0131land\u0131r\u0131lmas\u0131 ve entegrasyonu i\u00e7in ad\u0131m ad\u0131m rehberlik eder. Sonundaki betik, bu ad\u0131mlar\u0131n \u00e7o\u011funu otomatikle\u015ftirir, ama her blo\u011fun ne yapt\u0131\u011f\u0131n\u0131 a\u00e7\u0131klayaca\u011f\u0131m, b\u00f6ylece ortam\u0131n\u0131za uyarlayabilirsiniz.<\/p>\n<h3 id=\"section-12\">1. Technitium DNS Sunucusunu Y\u00fckleyin<\/h3>\n<ol>\n<li>En son ikili dosyay\u0131 GitHub&#8217;dan indir:<br \/>\n<code>bash<br \/>\n   wget https:\/\/github.com\/TechnitiumSoftware\/DnsServer\/releases\/download\/v5.2.0\/dns-server-linux-amd64.tar.gz<\/code><\/li>\n<li>A\u00e7\u0131n ve <code>\/usr\/local\/bin<\/code> konumuna ta\u015f\u0131y\u0131n:<br \/>\n<code>bash<br \/>\n   tar -xzf dns-server-linux-amd64.tar.gz<br \/>\n   sudo mv dns-server-linux-amd64 \/usr\/local\/bin\/dns-server<\/code><\/li>\n<li>systemd birimi olu\u015fturun:<br \/>\n   &#8220;`bash<br \/>\n   cat &lt;&lt;EOF | sudo tee \/etc\/systemd\/system\/dns-server.service<br \/>\n   [Unit]<br \/>\n   Description=Technitium DNS Server<br \/>\n   After=network.target<\/li>\n<\/ol>\n<p>[Service]<br \/>\n   ExecStart=\/usr\/local\/bin\/dns-server<br \/>\n   Restart=on-failure<br \/>\n   User=nobody<br \/>\n   Group=nogroup<br \/>\n   Environment=PORT=53<br \/>\n   TimeoutStartSec=0<\/p>\n<p>[Install]<br \/>\n   WantedBy=multi-user.target<br \/>\n   EOF<br \/>\n   <code>4. Ba\u015flat\u0131n ve etkinle\u015ftirin:<\/code>bash<br \/>\n   sudo systemctl daemon-reload<br \/>\n   sudo systemctl start dns-server<br \/>\n   sudo systemctl enable dns-server<br \/>\n   &#8220;`<\/p>\n<h3 id=\"section-13\">2. DoH\/DoT i\u00e7in Caddy\u2019yi yap\u0131land\u0131r<\/h3>\n<ol>\n<li>\n<p>Caddy ikili dosyas\u0131n\u0131 ve <code>dynamic_dns<\/code> eklentisini indir:<br \/>\n   <code>bash<br \/>\n   curl -Lo caddy.zip https:\/\/caddyserver.com\/api\/download?os=linux&amp;arch=amd64<br \/>\n   unzip caddy.zip<br \/>\n   sudo mv caddy \/usr\/local\/bin\/<\/code><\/p>\n<\/li>\n<li>\n<p>DoH, DoT ve dinamik DNS deste\u011fiyle bir Caddyfile olu\u015ftur:<br \/>\n   &#8220;`bash<br \/>\n   cat &lt;&lt;EOF | sudo tee \/etc\/caddy\/Caddyfile<br \/>\n   doh.example.com {<br \/>\n       reverse_proxy localhost:53<br \/>\n       tls internal<br \/>\n   }<\/p>\n<\/li>\n<\/ol>\n<p>dot.example.com {<br \/>\n       reverse_proxy localhost:53<br \/>\n       tls internal<br \/>\n   }<\/p>\n<p>admin.example.com {<br \/>\n       reverse_proxy localhost:8080<br \/>\n       tls internal<br \/>\n   }<\/p>\n<p>(dynamic) {<br \/>\n       header X-Forwarded-For {remote}<br \/>\n       header X-Real-IP {remote}<br \/>\n   }<\/p>\n<p>dns.example.com {<br \/>\n       import dynamic<br \/>\n       reverse_proxy localhost:53<br \/>\n       tls internal<br \/>\n   }<br \/>\n   EOF<br \/>\n   &#8220;`<\/p>\n<ol>\n<li>\n<p><code>dynamic_dns<\/code> eklentisini Caddyfile\u2019a ekleyerek veya mod\u00fcl olarak kurarak etkinle\u015ftir. H\u0131zl\u0131 bir test i\u00e7in Caddy ile birlikte gelen yerle\u015fik <code>dynamic_dns<\/code> beti\u011fini kullan:<br \/>\n   <code>bash<br \/>\n   curl -Lo dynamic-dns.sh https:\/\/caddyserver.com\/api\/plugins?name=dynamic_dns<br \/>\n   chmod +x dynamic-dns.sh<br \/>\n   sudo mv dynamic-dns.sh \/usr\/local\/bin\/<\/code><\/p>\n<\/li>\n<li>\n<p>Caddy i\u00e7in bir systemd birimi olu\u015ftur:<br \/>\n   &#8220;`bash<br \/>\n   cat &lt;&lt;EOF | sudo tee \/etc\/systemd\/system\/caddy.service<br \/>\n   [Unit]<br \/>\n   Description=Caddy web server<br \/>\n   After=network.target<\/p>\n<\/li>\n<\/ol>\n<p>[Service]<br \/>\n   ExecStart=\/usr\/local\/bin\/caddy run &#8211;config \/etc\/caddy\/Caddyfile<br \/>\n   ExecReload=\/usr\/local\/bin\/caddy reload &#8211;config \/etc\/caddy\/Caddyfile<br \/>\n   ExecStop=\/usr\/local\/bin\/caddy stop<br \/>\n   Restart=on-failure<br \/>\n   User=nobody<br \/>\n   Group=nogroup<\/p>\n<p>[Install]<br \/>\n   WantedBy=multi-user.target<br \/>\n   EOF<br \/>\n   &#8220;`<\/p>\n<ol>\n<li>Ba\u015flat ve etkinle\u015ftir:<br \/>\n   <code>bash<br \/>\n   sudo systemctl daemon-reload<br \/>\n   sudo systemctl start caddy<br \/>\n   sudo systemctl enable caddy<\/code><\/li>\n<\/ol>\n<h3 id=\"section-14\">3. Grafana ve Technitium Exporter\u2019\u0131 Kurma<\/h3>\n<ol>\n<li>\n<p>Docker Compose dosyas\u0131 olu\u015fturun:<br \/>\n   <code>bash<br \/>\n   cat &lt;&lt;EOF | sudo tee \/home\/pi\/docker-compose.yml<br \/>\n   version: '3.7'<br \/>\n   services:<br \/>\n     grafana:<br \/>\n       image: grafana\/grafana:latest<br \/>\n       container_name: grafana<br \/>\n       ports:<br \/>\n         - \"3000:3000\"<br \/>\n       volumes:<br \/>\n         - grafana-data:\/var\/lib\/grafana<br \/>\n     exporter:<br \/>\n       image: technitium\/dns-exporter:latest<br \/>\n       container_name: dns-exporter<br \/>\n       ports:<br \/>\n         - \"9115:9115\"<br \/>\n   volumes:<br \/>\n     grafana-data:<br \/>\n   EOF<\/code><\/p>\n<\/li>\n<li>\n<p>Stack\u2019i ba\u015flat\u0131n:<br \/>\n   <code>bash<br \/>\n   cd \/home\/pi<br \/>\n   docker compose up -d<\/code><\/p>\n<\/li>\n<li>\n<p>Grafana\u2019y\u0131 yap\u0131land\u0131r\u0131n:<br \/>\n   &#8211; <code>http:\/\/&lt;mini-pc-ip&gt;:3000<\/code> adresini a\u00e7\u0131n ve varsay\u0131lan <code>admin<\/code>\/<code>admin<\/code> ile giri\u015f yap\u0131n.<br \/>\n   &#8211; Bir <strong>Prometheus<\/strong> veri kayna\u011f\u0131 ekleyin ve <code>http:\/\/exporter:9115\/metrics<\/code> adresine i\u015faret etsin.<br \/>\n   &#8211; Grafana Labs\u2019tan \u00f6nceden olu\u015fturulmu\u015f dashboard\u2019u i\u00e7e aktar\u0131n: https:\/\/grafana.com\/grafana\/dashboards\/24555-technitium-dns-exporter\/.<br \/>\n<em>\u0130\u00e7e aktar<\/em> \u00f6zelli\u011fini kullan\u0131n ve dashboard ID&#8217;sini girin.<\/p>\n<\/li>\n<\/ol>\n<h3 id=\"section-15\">4. Dinamik DNS\u2019i Ba\u011flama<\/h3>\n<p>Cloudflare kullan\u0131yorsan\u0131z, \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">export CF_API_TOKEN=\"your_cloudflare_api_token\"\n.\/dynamic-dns.sh \\\n  --token=\"$CF_API_TOKEN\" \\\n  --zone=\"example.com\" \\\n  --record=\"doh\" \\\n  --subdomain=\"doh\" \\\n  --ttl=300\n<\/code><\/pre>\n<p>Bu betik, herkese a\u00e7\u0131k IP de\u011fi\u015fti\u011finde <code>doh.example.com<\/code> A kayd\u0131n\u0131 g\u00fcnceller. Token\u2019\u0131 g\u00fcvenli bir yerde saklay\u0131n ve her 5 dakikada bir \u00e7al\u0131\u015facak bir cron i\u015fi kurun.<\/p>\n<h3 id=\"section-16\">5. Noktalar\u0131 Do\u011frula<\/h3>\n<ul>\n<li>DoH: <code>curl -s https:\/\/doh.example.com\/dns-query -H 'accept: application\/dns-json' -d '{\"id\":1,\"opcode\":0,\"questions\":[{\"name\":\"example.com\",\"type\":1}]}' | jq .<\/code><\/li>\n<li>DoT: Use <code>dig @dot.example.com example.com +dnssec +short<\/code><\/li>\n<li>Grafana: Panoya gidin, sorgu say\u0131lar\u0131 ve gecikmenin g\u00fcncellenip g\u00fcncellenmedi\u011fini kontrol edin.<\/li>\n<\/ul>\n<p>Herhangi bir hizmet ba\u015far\u0131s\u0131z olursa, g\u00fcnl\u00fckleri kontrol edin:<\/p>\n<pre><code class=\"language-bash\">journalctl -u caddy -f\njournalctl -u dns-server -f\ndocker logs grafana\ndocker logs exporter\n<\/code><\/pre>\n<h2 id=\"section-17\">Sorun Giderme<\/h2>\n<table>\n<thead>\n<tr>\n<th>Belirti<\/th>\n<th>Muhtemel Sebep<\/th>\n<th>D\u00fczeltme<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>502 Bad Gateway<\/strong><\/td>\n<td>Caddy, Technitium\u2019e ula\u015fam\u0131yor (yanl\u0131\u015f port veya firewall)<\/td>\n<td>Technitium\u2019un 53 portunda dinlenip dinlemedi\u011fini ve <code>ufw<\/code>\/router ACL\u2019lerinin trafi\u011fe izin verip vermedi\u011fini do\u011frulay\u0131n<\/td>\n<\/tr>\n<tr>\n<td><strong>TLS handshake failure<\/strong><\/td>\n<td>Caddy\u2019de uygun sertifika eksik veya DNS kayd\u0131 yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f<\/td>\n<td><code>caddy validate<\/code> ile konfig\u00fcrasyonu kontrol edin; alan ad\u0131n\u0131n do\u011fru IP\u2019ye i\u015faret etti\u011finden emin olun<\/td>\n<\/tr>\n<tr>\n<td><strong>Grafana veri kayna\u011f\u0131 hatas\u0131<\/strong><\/td>\n<td>Exporter, 9115\u2019te <code>\/metrics<\/code> sunmuyorsa<\/td>\n<td><code>curl http:\/\/exporter:9115\/metrics<\/code> \u00e7al\u0131\u015ft\u0131r\u0131n; bo\u015fsa, exporter g\u00fcnl\u00fcklerini kontrol edin<\/td>\n<\/tr>\n<tr>\n<td><strong>DNS sorgu zaman a\u015f\u0131mlar\u0131<\/strong><\/td>\n<td>ISP UDP 53\u2019\u00fc engelliyor veya firewall paketleri d\u00fc\u015f\u00fcr\u00fcyor<\/td>\n<td>DoH\/DoT\u2019yi 443\/853 portuna ge\u00e7ir; bu portlar\u0131n a\u00e7\u0131k oldu\u011fundan emin olun<\/td>\n<\/tr>\n<tr>\n<td><strong>\u00d6nbellek ka\u00e7\u0131rma art\u0131\u015f\u0131<\/strong><\/td>\n<td>Y\u00fcksek TTL\u2019ler eski veri yarat\u0131yor<\/td>\n<td>Caddyfile\u2019da cache TTL\u2019yi azalt\u0131n: <code>cache default 300<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Genel hata<\/strong>: Caddyfile\u2019\u0131 d\u00fczenlerken <code>--reload<\/code> bayra\u011f\u0131n\u0131 eklemeyi unutmak. Caddy otomatik yeniden ba\u015flar, ama k\u0131sa bir kesinti g\u00f6rebilirsiniz. Bunun \u00f6n\u00fcne ge\u00e7mek i\u00e7in <code>caddy reload --config \/etc\/caddy\/Caddyfile<\/code> kullan\u0131n.<\/p>\n<p><strong>Geri Alma stratejisi:<\/strong><br \/>\n&#8211; Caddy i\u00e7in: <code>caddy stop &amp;&amp; caddy run --config \/etc\/caddy\/Caddyfile.old<\/code><br \/>\n&#8211; Technitium i\u00e7in: <code>\/etc\/dns-server.conf<\/code> dosyas\u0131n\u0131 yedekten geri y\u00fckleyin<br \/>\n&#8211; Grafana i\u00e7in: Eski JSON\u2019\u0131 kullanarak panoyu yeniden i\u00e7e aktar\u0131n<\/p>\n<h2 id=\"section-18\">Optimizasyon<\/h2>\n<table>\n<thead>\n<tr>\n<th>Alan<\/th>\n<th>Teknik<\/th>\n<th>Fayda<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Caddy \u00f6nbelle\u011fi<\/strong><\/td>\n<td><code>cache default 300<\/code><\/td>\n<td>Yayg\u0131n sorgular i\u00e7in yan\u2011\u00e7evrim say\u0131s\u0131n\u0131 azalt\u0131r<\/td>\n<\/tr>\n<tr>\n<td><strong>Technitium \u00f6l\u00e7eklendirme<\/strong><\/td>\n<td>Okunur bir yedek kurun ve <code>rsync<\/code> ile yap\u0131land\u0131rmalar\u0131 senkronize edin<\/td>\n<td>Yo\u011fun okuma trafi\u011fini hafifletir, dayan\u0131kl\u0131l\u0131\u011f\u0131 art\u0131r\u0131r<\/td>\n<\/tr>\n<tr>\n<td><strong>Grafana uyar\u0131lar\u0131<\/strong><\/td>\n<td>E\u015fik: <code>query_latency &gt; 200ms<\/code><\/td>\n<td>Gecikme artarsa an\u0131nda bildirim al\u0131rs\u0131n\u0131z<\/td>\n<\/tr>\n<tr>\n<td><strong>Yedeklemeler<\/strong><\/td>\n<td><code>cron.daily \/usr\/local\/bin\/backup.sh<\/code><\/td>\n<td>Yanl\u0131\u015f yap\u0131land\u0131rma de\u011fi\u015fikliklerinden sonra h\u0131zl\u0131ca geri y\u00fckleme<\/td>\n<\/tr>\n<tr>\n<td><strong>G\u00fc\u00e7<\/strong><\/td>\n<td>En az 2 saat \u00e7al\u0131\u015fma s\u00fcresine sahip bir UPS kullan\u0131n<\/td>\n<td>Yap\u0131land\u0131rma dosyalar\u0131n\u0131 bozan ani kapanmalar\u0131 \u00f6nler<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Pratik bir operat\u00f6r notu: Son 30 g\u00fcn\u00fcn Grafana anl\u0131k g\u00f6r\u00fcnt\u00fclerini i\u00e7eren k\u00fc\u00e7\u00fck bir USB s\u00fcr\u00fcc\u00fcs\u00fc tutuyorum. Katalitik bir hata meydana geldi\u011finde, pano d\u00fczenini ve veri kayna\u011f\u0131 ayarlar\u0131n\u0131 5 dakikadan k\u0131sa s\u00fcrede geri y\u00fckleyebilirim.<\/p>\n<h2 id=\"section-19\">SSS<\/h2>\n<p><strong>S: Caddy, Technitium DNS ve Grafana ev a\u011f\u0131 i\u00e7in ne zaman do\u011fru bir se\u00e7imdir?<\/strong><br \/>\n<strong>A:<\/strong> \u015eifreli DNS&#8217;e ihtiya\u00e7 duydu\u011funuzda, ISP manip\u00fclasyonunu \u00f6nlemek istedi\u011finizde ve sorgu desenlerine g\u00f6r\u00fcn\u00fcrl\u00fck istedi\u011finizde. Ak\u0131ll\u0131 evler, VoIP veya g\u00fcvenilir isim \u00e7\u00f6z\u00fcmlemesi gerektiren herhangi bir hizmet i\u00e7in idealdir.<\/p>\n<p><strong>S: Bu y\u0131\u011f\u0131n\u0131 kurarken en yayg\u0131n hata nedir?<\/strong><br \/>\n<strong>A:<\/strong> DoH ve DoT i\u00e7in ayn\u0131 alan ad\u0131n\u0131 a\u00e7may\u0131 unutmak veya Caddy&#8217;yi yanl\u0131\u015f arka u\u00e7 ba\u011flant\u0131 noktas\u0131yla yap\u0131land\u0131rmak. \u00dcretime ge\u00e7meden \u00f6nce her zaman <code>curl<\/code> veya <code>dig<\/code> ile test edin.<\/p>\n<p><strong>S: \u0130zleme servisini kurduktan sonra neyi do\u011frulamal\u0131s\u0131n\u0131z?<\/strong><br \/>\n<strong>A:<\/strong> Grafana&#8217;n\u0131n canl\u0131 sorgu say\u0131mlar\u0131n\u0131 g\u00f6sterdi\u011finden, Prometheus&#8217;un <code>\/metrics<\/code>&#8216;i kaz\u0131d\u0131\u011f\u0131ndan ve sim\u00fcle edilen art\u0131\u015flar i\u00e7in uyar\u0131lar\u0131n tetiklendi\u011finden emin olun. Dinamik DNS g\u00fcncellemesini, test ortam\u0131nda genel IP&#8217;yi manuel olarak de\u011fi\u015ftirerek do\u011frulay\u0131n.<\/p>\n<p><strong>S: Caddy y\u00f6netim aray\u00fcz\u00fcn\u00fc nas\u0131l g\u00fcvence alt\u0131na al\u0131r\u0131m?<\/strong><br \/>\n<strong>A:<\/strong> <code>127.0.0.1<\/code> adresine ba\u011flay\u0131n ve yaln\u0131zca mini\u2011PC&#8217;nin kendisine izin veren bir g\u00fcvenlik duvar\u0131 kural\u0131 kullan\u0131n. <code>basic_auth<\/code> ile HTTP kimlik do\u011frulamas\u0131 veya istemci sertifikalar\u0131n\u0131 y\u00f6neten ters vekil (reverse proxy) kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<h2 id=\"section-20\">Kaynaklar &amp; \u0130leri Okuma<\/h2>\n<ul>\n<li>Resmi Caddy indirme: https:\/\/caddyserver.com\/download  <\/li>\n<li>Technitium DNS Sunucusu k\u0131lavuzu: https:\/\/blog.technitium.com\/2020\/07\/how-to-host-your-own-dns-over-https-and.html  <\/li>\n<li>Grafana Technitium Exporter paneli: https:\/\/grafana.com\/grafana\/dashboards\/24555-technitium-dns-exporter\/  <\/li>\n<li>Caddy dinamik DNS eklentisi: https:\/\/github.com\/caddyserver\/caddy-dynamic-dns  <\/li>\n<li>\u0130\u00e7 k\u0131lavuz: [\/caddy-technitium-dns-grafana-mini-pc-monitoring-service-control-guide]  <\/li>\n<li>Sorun giderme notlar\u0131: [\/caddy-technitium-dns-grafana-mini-pc-monitoring-service-control-troubleshooting]  <\/li>\n<\/ul>\n<h2 id=\"section-21\">Tablo<\/h2>\n<h3 id=\"section-22\">Caddy vs Di\u011fer DoH \u00c7evirici Geri Proxy\u2019leri<\/h3>\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>Caddy<\/th>\n<th>Traefik<\/th>\n<th>Nginx<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Otomatik TLS<\/td>\n<td>\u2714<\/td>\n<td>\u2714<\/td>\n<td>\u274c<\/td>\n<\/tr>\n<tr>\n<td>Basitlik<\/td>\n<td>8\/10<\/td>\n<td>7\/10<\/td>\n<td>6\/10<\/td>\n<\/tr>\n<tr>\n<td>Eklenti ekosistemi<\/td>\n<td>9\/10<\/td>\n<td>8\/10<\/td>\n<td>7\/10<\/td>\n<\/tr>\n<tr>\n<td>Kaynak kullan\u0131m\u0131<\/td>\n<td>D\u00fc\u015f\u00fck<\/td>\n<td>Orta<\/td>\n<td>Orta<\/td>\n<\/tr>\n<tr>\n<td>Dinamik DNS deste\u011fi<\/td>\n<td>Yerle\u015fik (dynamic_dns)<\/td>\n<td>\u00dc\u00e7\u00fcnc\u00fc taraf<\/td>\n<td>\u00dc\u00e7\u00fcnc\u00fc taraf<\/td>\n<\/tr>\n<tr>\n<td>Karar<\/td>\n<td>Mini\u2011PC \u00fczerinde h\u0131zl\u0131, g\u00fcvenli DoH da\u011f\u0131t\u0131m\u0131 i\u00e7in en iyi se\u00e7enek<\/td>\n<td>Traefik zaten kullan\u0131yorsan\u0131z iyi<\/td>\n<td>Yeterli ama daha a\u011f\u0131r<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"section-23\">Risk &amp; Geri Alma Karar Matrisi<\/h3>\n<table>\n<thead>\n<tr>\n<th>Senaryo<\/th>\n<th>Risk<\/th>\n<th>Geri alma yolu<\/th>\n<th>Do\u011frulama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Caddy yap\u0131land\u0131rma s\u00f6zdizim hatas\u0131<\/td>\n<td>Servis \u00e7\u00f6kmesi<\/td>\n<td>Geri y\u00fckle <code>Caddyfile.old<\/code><\/td>\n<td><code>caddy validate<\/code><\/td>\n<\/tr>\n<tr>\n<td>Technitium DB bozulmas\u0131<\/td>\n<td>DNS kesintileri<\/td>\n<td>Geri y\u00fckle <code>\/var\/lib\/dns-server\/db<\/code><\/td>\n<td><code>journalctl -u dns-server<\/code> kontrol\u00fc<\/td>\n<\/tr>\n<tr>\n<td>Grafana paneli i\u00e7e aktar\u0131lam\u0131yor<\/td>\n<td>Kullan\u0131c\u0131 aray\u00fcz\u00fc eksik<\/td>\n<td>\u00d6nceki JSON\u2019i yeniden i\u00e7e aktar<\/td>\n<td>Grafana konsol loglar\u0131<\/td>\n<\/tr>\n<tr>\n<td>Dinamik DNS g\u00fcncellemesi ba\u015far\u0131s\u0131z<\/td>\n<td>Kamu IP&#8217;si eski<\/td>\n<td>Skript&#8217;i yeniden \u00e7al\u0131\u015ft\u0131r, <code>dig doh.example.com<\/code> kontrol et<\/td>\n<td>IP&#8217;nin <code>curl ifconfig.me<\/code> ile e\u015fle\u015fti\u011fini do\u011frula<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"section-24\">En \u0130yi Uygulama Do\u011frulama Kontrol Listesi<\/h3>\n<ul>\n<li>\u2611 <strong>Caddy<\/strong> HTTPS sunar hatas\u0131z (<code>curl -I https:\/\/doh.example.com<\/code>)<\/li>\n<li>\u2611 <strong>Technitium<\/strong> sorgular\u0131 \u00e7\u00f6zer (<code>dig @doh.example.com example.com<\/code>)<\/li>\n<li>\u2611 <strong>Grafana<\/strong> canl\u0131 metrikleri g\u00f6sterir (<code>http:\/\/&lt;mini-pc&gt;:3000\/d\/<\/code> paneli)<\/li>\n<li>\u2611 <strong>Dinamik DNS<\/strong> kayd\u0131 g\u00fcnceller (<code>dig doh.example.com +short<\/code>)<\/li>\n<li>\u2611 <strong>Yedeklemeler<\/strong> var (d\u0131\u015fa aktar\u0131lan konfig\u00fcrasyon, Grafana JSON)<\/li>\n<\/ul>\n<h2 id=\"section-25\">Kontrol Listeleri<\/h2>\n<h3 id=\"section-26\">Yerle\u015ftirme \u00d6ncesi Haz\u0131rl\u0131k Kontrol Listesi<\/h3>\n<ul>\n<li>\u2611 Mini\u2011PC CPU\/RAM\/SSD gereksinimlerini kar\u015f\u0131l\u0131yor<\/li>\n<li>\u2611 Ubuntu 22.04 veya Debian 12 kurulu<\/li>\n<li>\u2611 Y\u00f6nlendirici 443 ve 853 portlar\u0131 mini\u2011PC\u2019ye y\u00f6nlendirildi<\/li>\n<li>\u2611 Alan adlar\u0131 kay\u0131tl\u0131 ve ge\u00e7erli IP\u2019ye i\u015faret ediyor<\/li>\n<li>\u2611 Cloudflare API token (dinamik DNS kullan\u0131yorsan\u0131z) g\u00fcvenli \u015fekilde sakland\u0131<\/li>\n<\/ul>\n<h3 id=\"section-27\">Yerle\u015ftirme Sonras\u0131 \u0130zleme Kontrol Listesi<\/h3>\n<ul>\n<li>\u2611 Grafana paneli 30\u202fsn aral\u0131klarla g\u00fcncelleniyor<\/li>\n<li>\u2611 <code>query_latency &gt; 200ms<\/code> uyar\u0131 kural\u0131 test art\u0131\u015f\u0131 s\u0131ras\u0131nda tetikleniyor<\/li>\n<li>\u2611 Yedekleme cron i\u015fi aktif ve test geri y\u00fckleme ba\u015far\u0131l\u0131<\/li>\n<li>\u2611 Caddy loglar\u0131 son 24\u202fh i\u00e7inde 502\/504 hatas\u0131 g\u00f6stermiyor<\/li>\n<li>\u2611 Dinamik DNS kayd\u0131 d\u0131\u015f IP ile e\u015fle\u015fiyor<\/li>\n<\/ul>\n<h2 id=\"section-28\">Otomatik Kurulum Beti\u011fi<\/h2>\n<pre><code class=\"language-bash\">#!\/usr\/bin\/env bash\nset -euo pipefail\n\n# De\u011fi\u015fkenler \u2013 ortam\u0131n\u0131za g\u00f6re ayarlay\u0131n\nDOMAIN=\"doh.example.com\"\nDNS_DOMAIN=\"doh.example.com\"\nTEMPLATE_URL=\"https:\/\/caddyserver.com\/api\/download?os=linux&amp;arch=amd64\"\nDYNAMIC_DNS_URL=\"https:\/\/caddyserver.com\/api\/plugins?name=dynamic_dns\"\nCF_API_TOKEN=\"YOUR_CLOUDFLARE_TOKEN\"\nZONE_ID=\"YOUR_CLOUDFLARE_ZONE_ID\"\n\n# 1. \u00d6nceden kurulu paketleri kurun\nsudo apt update\nsudo apt install -y docker.io docker-compose curl jq ufw\n\n# 2. Technitium DNS Sunucusunu kurun\ncurl -L -o dns-server.tar.gz https:\/\/github.com\/TechnitiumSoftware\/DnsServer\/releases\/download\/v5.2.0\/dns-server-linux-amd64.tar.gz\ntar -xzf dns-server.tar.gz\nsudo mv dns-server-linux-amd64 \/usr\/local\/bin\/dns-server\ncat &lt;&lt;EOF | sudo tee \/etc\/systemd\/system\/dns-server.service\n[Unit]\nDescription=Technitium DNS Server\nAfter=network.target\n\n[Service]\nExecStart=\/usr\/local\/bin\/dns-server\nRestart=on-failure\nUser=nobody\nGroup=nogroup\nEnvironment=PORT=53\n\n[Install]\nWantedBy=multi-user.target\nEOF\nsudo systemctl daemon-reload\nsudo systemctl enable dns-server\nsudo systemctl start dns-server\n\n# 3. Caddy'yi kurun\ncurl -L -o caddy.zip \"$TEMPLATE_URL\"\nunzip caddy.zip\nsudo mv caddy \/usr\/local\/bin\/\ncurl -L -o dynamic-dns.sh \"$DYNAMIC_DNS_URL\"\nchmod +x dynamic-dns.sh\nsudo mv dynamic-dns.sh \/usr\/local\/bin\/\n\n# 4. Caddyfile olu\u015fturun\nsudo mkdir -p \/etc\/caddy\ncat &lt;&lt;EOF | sudo tee \/etc\/caddy\/Caddyfile\n$DOMAIN {\n    reverse_proxy localhost:53\n    tls internal\n}\nEOF\n\n# 5. Caddy i\u00e7in Systemd birimi\ncat &lt;&lt;EOF | sudo tee \/etc\/systemd\/system\/caddy.service\n[Unit]\nDescription=Caddy web server\nAfter=network.target\n\n[Service]\nExecStart=\/usr\/local\/bin\/caddy run --config \/etc\/caddy\/Caddyfile\nExecReload=\/usr\/local\/bin\/caddy reload --config \/etc\/caddy\/Caddyfile\nExecStop=\/usr\/local\/bin\/caddy stop\nRestart=on-failure\nUser=nobody\nGroup=nogroup\n\n[Install]\nWantedBy=multi-user.target\nEOF\nsudo systemctl daemon-reload\nsudo systemctl enable caddy\nsudo systemctl start caddy\n\n# 6. Grafana ve Exporter i\u00e7in Docker Compose\nmkdir -p \/home\/$USER\/monitoring\ncat &lt;&lt;EOF | tee \/home\/$USER\/monitoring\/docker-compose.yml\nversion: '3.7'\nservices:\n  grafana:\n<\/code><\/pre>\n<pre><code class=\"language-yaml\">image: grafana\/grafana:latest\n    container_name: grafana\n    ports:\n      - \"3000:3000\"\n    volumes:\n      - grafana-data:\/var\/lib\/grafana\n  exporter:\n    image: technitium\/dns-exporter:latest\n    container_name: dns-exporter\n    ports:\n      - \"9115:9115\"\nvolumes:\n  grafana-data:\nEOF\ncd \/home\/$USER\/monitoring\nsudo docker compose up -d\n\n# 7. Grafana panosunu i\u00e7e aktar (curl ve jq gerektirir)\nDASHBOARD_JSON=$(curl -s https:\/\/api.grafana.com\/dashboards\/ids\/24555 | jq -r .dashboard)\ncurl -X POST -H \"Content-Type: application\/json\" \\\n     -d \"{\\\"dashboard\\\":${DASHBOARD_JSON},\\\"overwrite\\\":true}\" \\\n     http:\/\/admin:admin@localhost:3000\/api\/dashboards\/db\n\n# 8. Dinamik DNS g\u00fcncellemesi (bir kez \u00e7al\u0131\u015ft\u0131r\u0131n, sonra cron ayarlay\u0131n)\n.\/dynamic-dns.sh \\\n  --token=\"$CF_API_TOKEN\" \\\n  --zone=\"$ZONE_ID\" \\\n  --record=\"doh\" \\\n  --subdomain=\"doh\" \\\n  --ttl=300\n\necho \"Kurulum tamamland\u0131. 'systemctl status dns-server caddy' ile servisleri kontrol edin ve Grafana'ya http:\/\/$DOMAIN:3000 adresinden eri\u015fin.\"\n<\/code><\/pre>\n<p>Bu planla, gizlili\u011finizi koruyan, ISP m\u00fcdahalelerine kar\u015f\u0131 diren\u00e7li ve ev a\u011f\u0131n\u0131z\u0131n kontrol\u00fcn\u00fc elinizde tutan, g\u00f6zlemlenmeye haz\u0131r kendi kendine yeten bir DNS hub&#8217;\u0131na sahip olacaks\u0131n\u0131z. \u0130yi hacking!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Caddy Technitium DNS Grafana: Mini PC DNS zleme ile ev a\u011f\u0131n\u0131z\u0131 tek mini PC&#8217;de Caddy ve Grafana sayesinde d\u00fc\u015f\u00fck g\u00fc\u00e7 t\u00fcketimiyle kullan\u0131m kolay ger\u00e7ek zamanl\u0131 tam<\/p>\n","protected":false},"author":1,"featured_media":610,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Caddy Technitium DNS Grafana Rehberi","rank_math_description":"Caddy Technitium DNS Grafana: Mini PC DNS zleme ile ev a\u011f\u0131n\u0131z\u0131 tek mini PC'de Caddy ve Grafana sayesinde d\u00fc\u015f\u00fck g\u00fc\u00e7 t\u00fcketimiyle kullan\u0131m kolay ger\u00e7ek zamanl\u0131 tam","rank_math_focus_keyword":"Caddy Technitium DNS Grafana","footnotes":""},"categories":[242],"tags":[244,236,245,243,246,176],"class_list":["post-612","post","type-post","status-publish","format-standard","has-post-thumbnail","category-dns","tag-caddy","tag-grafana","tag-izleme","tag-mini-pc-dns-zleme","tag-rollback","tag-technitium-dns"],"_links":{"self":[{"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/posts\/612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/comments?post=612"}],"version-history":[{"count":0,"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/posts\/612\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/media\/610"}],"wp:attachment":[{"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/media?parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/categories?post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/m4.ist\/index.php\/wp-json\/wp\/v2\/tags?post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}