{"id":31435,"date":"2025-10-09T23:41:15","date_gmt":"2025-10-09T20:41:15","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31435"},"modified":"2025-10-09T23:41:15","modified_gmt":"2025-10-09T20:41:15","slug":"caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/","title":{"rendered":"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>Web siteleri ve uygulamalar\u0131 bar\u0131nd\u0131rmak i\u00e7in geleneksel olarak Nginx veya Apache gibi sunucular tercih edilse de, son y\u0131llarda Caddy gibi modern alternatifler, \u00f6zellikle basitlikleri ve otomatik HTTPS deste\u011fi ile dikkat \u00e7ekmektedir. Bu kapsaml\u0131 rehberde, Ubuntu 18.04 sunucusu \u00fczerinde Caddy web sunucusunu kullanarak bir web sitesini nas\u0131l bar\u0131nd\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Caddy&#8217;nin kurulumundan yap\u0131land\u0131rmas\u0131na, g\u00fcvenlik duvar\u0131 ayarlar\u0131ndan geli\u015fmi\u015f \u00f6zelliklerine kadar her detay\u0131 inceleyece\u011fiz.<\/p>\n<p>Caddy, Go dilinde yaz\u0131lm\u0131\u015f, h\u0131zl\u0131, kullan\u0131m\u0131 kolay ve performans odakl\u0131 bir web sunucusudur. \u00d6zellikle otomatik HTTPS (Let&#8217;s Encrypt arac\u0131l\u0131\u011f\u0131yla) \u00f6zelli\u011fi sayesinde, SSL\/TLS sertifikalar\u0131yla u\u011fra\u015fma y\u00fck\u00fcn\u00fc tamamen ortadan kald\u0131r\u0131r. Bu, hem geli\u015ftiriciler hem de sistem y\u00f6neticileri i\u00e7in b\u00fcy\u00fck bir kolayl\u0131k sa\u011flar. Ubuntu 18.04, uzun s\u00fcreli destek (LTS) sunan stabil bir i\u015fletim sistemi oldu\u011fu i\u00e7in, Caddy ile g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir web sunucusu altyap\u0131s\u0131 olu\u015fturmak i\u00e7in ideal bir platformdur.<\/p>\n<h3>Caddy ve Neden Caddy?<\/h3>\n<p>Caddy, web sunucular\u0131 d\u00fcnyas\u0131nda nispeten yeni bir oyuncu olmas\u0131na ra\u011fmen, sundu\u011fu benzersiz \u00f6zelliklerle h\u0131zla pop\u00fclerlik kazanm\u0131\u015ft\u0131r. Geleneksel web sunucular\u0131 olan Nginx ve Apache, geni\u015f \u00f6zellik setleri ve esneklikleri ile bilinirken, Caddy \u00f6zellikle kurulum ve yap\u0131land\u0131rma kolayl\u0131\u011f\u0131na odaklanm\u0131\u015ft\u0131r.<\/p>\n<p>Caddy&#8217;nin en belirgin avantaj\u0131, web siteniz i\u00e7in otomatik olarak Let&#8217;s Encrypt sertifikalar\u0131 sa\u011flamas\u0131 ve bunlar\u0131 otomatik olarak yenilemesidir. Bu, HTTPS&#8217;i varsay\u0131lan olarak etkinle\u015ftirir ve manuel sertifika y\u00f6netimiyle ili\u015fkili karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131r\u0131r. Geleneksel sunucularda HTTPS yap\u0131land\u0131rmas\u0131 genellikle birden fazla ad\u0131m ve dikkatli dosya d\u00fczenlemesi gerektirirken, Caddy&#8217;de bu i\u015flem tek bir sat\u0131r yap\u0131land\u0131rma ile halledilebilir.<\/p>\n<p>Ayr\u0131ca Caddy, tek bir ikili dosya olarak da\u011f\u0131t\u0131l\u0131r ve bu da onu olduk\u00e7a hafif ve ta\u015f\u0131nabilir k\u0131lar. Mod\u00fcler yap\u0131s\u0131 sayesinde ihtiya\u00e7 duymad\u0131\u011f\u0131n\u0131z \u00f6zellikleri y\u00fcklemenize gerek kalmaz, bu da kaynak t\u00fcketimini minimize eder. \u00d6zellikle k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli projeler, API&#8217;ler, tek sayfal\u0131k uygulamalar veya geli\u015ftirme ortamlar\u0131 i\u00e7in Caddy, kurulum ve bak\u0131m kolayl\u0131\u011f\u0131 a\u00e7\u0131s\u0131ndan rakipsizdir. Caddy, statik dosya sunumundan ters proxy (reverse proxy) i\u015flevlerine, y\u00fck dengeleyiciden HTTP\/2 deste\u011fine kadar modern web uygulamalar\u0131n\u0131n ihtiya\u00e7 duydu\u011fu t\u00fcm temel \u00f6zellikleri sunar. T\u00fcm bu \u00f6zellikler, Caddy&#8217;yi hem yeni ba\u015flayanlar hem de deneyimli profesyoneller i\u00e7in cazip bir se\u00e7enek haline getirmektedir.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce, a\u015fa\u011f\u0131daki \u00f6n gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131n\u0131zdan emin olun:<\/p>\n<p>*   <strong>Ubuntu 18.04 Sunucusu:<\/strong> \u0130nternet eri\u015fimi olan ve SSH \u00fczerinden ba\u011flanabilece\u011finiz bir Ubuntu 18.04 sunucusu. Bu bir sanal makine (VM), bir bulut sunucusu (AWS, DigitalOcean, Azure, Vultr vb.) veya fiziksel bir sunucu olabilir.<br \/>\n*   <strong>SSH Eri\u015fimi:<\/strong> Sunucunuza SSH ile ba\u011flanabilmeniz gerekmektedir. Genellikle <code>ssh kullan\u0131c\u0131ad\u0131@sunucu_ip_adresi<\/code> komutuyla yap\u0131l\u0131r.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 i\u00e7in <code>sudo<\/code> yetkisine sahip bir kullan\u0131c\u0131 hesab\u0131n\u0131z olmal\u0131d\u0131r. Root kullan\u0131c\u0131s\u0131 olarak do\u011frudan \u00e7al\u0131\u015fmak yerine, <code>sudo<\/code> kullanmak daha g\u00fcvenli bir yakla\u015f\u0131md\u0131r.<br \/>\n*   <strong>Alan Ad\u0131 (Domain Name):<\/strong> Web sitenizi bar\u0131nd\u0131rmak i\u00e7in bir alan ad\u0131na ihtiyac\u0131n\u0131z olacak (\u00f6rne\u011fin, <code>example.com<\/code>). Caddy&#8217;nin otomatik HTTPS \u00f6zelli\u011fini kullanabilmek i\u00e7in bu alan ad\u0131n\u0131n ger\u00e7ek bir alan ad\u0131 olmas\u0131 ve genel internet \u00fczerinden eri\u015filebilir olmas\u0131 gerekmektedir.<br \/>\n*   <strong>DNS Yap\u0131land\u0131rmas\u0131:<\/strong> Alan ad\u0131n\u0131z\u0131n DNS kay\u0131tlar\u0131n\u0131n (A kayd\u0131), Ubuntu sunucunuzun genel IP adresini i\u015faret etti\u011finden emin olun. Bu, Caddy&#8217;nin Let&#8217;s Encrypt ile sertifika alabilmesi i\u00e7in kritik \u00f6neme sahiptir. DNS de\u011fi\u015fikliklerinin internet genelinde yay\u0131lmas\u0131 (propagation) biraz zaman alabilir (birka\u00e7 dakika ile birka\u00e7 saat aras\u0131). Bu nedenle, DNS ayarlar\u0131n\u0131z\u0131 \u00f6nceden yapman\u0131z \u00f6nerilir.<\/p>\n<p>Bu \u00f6n gereksinimleri tamamlad\u0131ktan sonra, Caddy kurulumuna ve yap\u0131land\u0131rmas\u0131na ge\u00e7meye haz\u0131r olacaks\u0131n\u0131z.<\/p>\n<h3>Caddy Kurulumu<\/h3>\n<p>Caddy&#8217;yi Ubuntu 18.04 \u00fczerine kurmak olduk\u00e7a basittir. Caddy geli\u015ftiricileri, APT deposu arac\u0131l\u0131\u011f\u0131yla kolay kurulum sa\u011flamaktad\u0131r.<\/p>\n<h4>Sistem G\u00fcncelleme<\/h4>\n<p>Kuruluma ba\u015flamadan \u00f6nce, sunucunuzdaki paket listelerini g\u00fcncelleyip mevcut paketleri y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, herhangi bir uyumluluk sorununu \u00f6nlemeye yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h4>Caddy Deposu Ekleme<\/h4>\n<p>Caddy&#8217;nin resmi APT deposunu sisteminize eklemeniz gerekmektedir. Bu, en g\u00fcncel Caddy s\u00fcr\u00fcm\u00fcn\u00fc do\u011frudan <code>apt<\/code> komutuyla kurman\u0131z\u0131 sa\u011flar.<\/p>\n<p>\u0130lk olarak, Caddy&#8217;nin GPG anahtar\u0131n\u0131 indirin ve APT anahtar zincirinize ekleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https\ncurl -1sLf 'https:\/\/dl.cloudsmith.io\/public\/caddy\/stable\/gpg.key' | sudo gpg --dearmor -o \/usr\/share\/keyrings\/caddy-stable-archive-keyring.gpg<\/code><\/pre>\n<p>Ard\u0131ndan, Caddy deposunu kaynak listenize ekleyin:<\/p>\n<pre><code class=\"language-bash\">curl -1sLf 'https:\/\/dl.cloudsmith.io\/public\/caddy\/stable\/debian.deb.txt' | sudo tee \/etc\/apt\/sources.list.d\/caddy-stable.list<\/code><\/pre>\n<p>Depoyu ekledikten sonra, yeni paketi bulabilmek i\u00e7in paket listesini tekrar g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update<\/code><\/pre>\n<h4>Caddy Kurulumu<\/h4>\n<p>Art\u0131k Caddy&#8217;yi <code>apt<\/code> komutuyla kolayca kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install caddy -y<\/code><\/pre>\n<p>Bu komut, Caddy web sunucusunu ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 sisteminize kuracakt\u0131r. Kurulum tamamland\u0131\u011f\u0131nda, Caddy otomatik olarak bir sistem hizmeti olarak yap\u0131land\u0131r\u0131l\u0131r ve ba\u015flat\u0131l\u0131r.<\/p>\n<h4>Caddy Hizmetini Kontrol Etme<\/h4>\n<p>Caddy&#8217;nin ba\u015far\u0131yla kurulup \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">systemctl status caddy<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz. Bu, Caddy hizmetinin ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131 anlam\u0131na gelir. E\u011fer \u00e7al\u0131\u015fm\u0131yorsa, <code>systemctl start caddy<\/code> komutuyla ba\u015flatmay\u0131 deneyebilirsiniz.<\/p>\n<p>Caddy&#8217;nin s\u00fcr\u00fcm\u00fcn\u00fc kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">caddy version<\/code><\/pre>\n<p>Bu ad\u0131mlarla Caddy&#8217;yi Ubuntu 18.04 sunucunuza ba\u015far\u0131yla kurmu\u015f oldunuz. Bir sonraki ad\u0131m, g\u00fcvenlik duvar\u0131n\u0131 yap\u0131land\u0131rmak ve web sitenizin dosyalar\u0131n\u0131 haz\u0131rlamakt\u0131r.<\/p>\n<h3>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (UFW)<\/h3>\n<p>Sunucunuzda UFW (Uncomplicated Firewall) etkinse, web trafi\u011finin sunucunuza ula\u015fabilmesi i\u00e7in HTTP (80) ve HTTPS (443) portlar\u0131n\u0131 a\u00e7man\u0131z gerekmektedir. Bu ad\u0131m\u0131 atlamak, web sitenize d\u0131\u015far\u0131dan eri\u015fimi engelleyecektir.<\/p>\n<p>\u00d6ncelikle, UFW&#8217;nin durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>E\u011fer UFW etkin de\u011filse, etkinle\u015ftirmeniz \u00f6nerilir:<\/p>\n<pre><code class=\"language-bash\">sudo ufw enable<\/code><\/pre>\n<p>UFW etkinse, a\u015fa\u011f\u0131daki komutlarla gerekli portlar\u0131 a\u00e7\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow http\nsudo ufw allow https<\/code><\/pre>\n<p>Bu komutlar, s\u0131ras\u0131yla 80 (HTTP) ve 443 (HTTPS) portlar\u0131ndan gelen t\u00fcm trafi\u011fe izin verir. De\u011fi\u015fikliklerin uyguland\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in UFW durumunu tekrar kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>80\/tcp ALLOW Anywhere<\/code> ve <code>443\/tcp ALLOW Anywhere<\/code> gibi sat\u0131rlar\u0131 g\u00f6rmelisiniz. Bu, web sunucunuzun art\u0131k gelen HTTP ve HTTPS isteklerini kabul etmeye haz\u0131r oldu\u011fu anlam\u0131na gelir.<\/p>\n<h3>Web Sitesi Dosyalar\u0131n\u0131 Haz\u0131rlama<\/h3>\n<p>Caddy&#8217;nin bir web sitesini sunabilmesi i\u00e7in, web sitesi dosyalar\u0131n\u0131z\u0131n sunucunuzda bir dizinde bulunmas\u0131 gerekir. Bu rehberde basit bir statik HTML sitesi olu\u015fturaca\u011f\u0131z.<\/p>\n<h4>\u00d6rnek Bir Statik HTML Sitesi Olu\u015fturma<\/h4>\n<p>Varsay\u0131lan olarak, Caddy&#8217;nin sistem hizmeti <code>\/var\/www\/html<\/code> dizinini kullan\u0131r. Bu dizini kullanabilir veya kendi tercih etti\u011finiz bir dizini olu\u015fturabilirsiniz. G\u00fcvenlik ve d\u00fczenlilik a\u00e7\u0131s\u0131ndan <code>\/var\/www\/<\/code> alt\u0131nda alan ad\u0131n\u0131za \u00f6zel bir dizin olu\u015fturmak iyi bir uygulamad\u0131r.<\/p>\n<p>\u00d6rne\u011fin, <code>example.com<\/code> alan ad\u0131n\u0131z i\u00e7in bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/www\/example.com<\/code><\/pre>\n<p>\u015eimdi bu dizine basit bir <code>index.html<\/code> dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/var\/www\/example.com\/index.html<\/code><\/pre>\n<p>A\u00e7\u0131lan edit\u00f6re a\u015fa\u011f\u0131daki HTML i\u00e7eri\u011fini yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-html\"><!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Caddy ile Web Sitesi<\/title>\n    <style>\n        body { font-family: sans-serif; text-align: center; margin-top: 50px; }\n        h1 { color: #333; }\n        p { color: #666; }\n    <\/style>\n<\/head>\n<body>\n    \n    <p>Bu web sitesi Caddy sunucusu \u00fczerinde ba\u015far\u0131yla bar\u0131nd\u0131r\u0131l\u0131yor.<\/p>\n    <p>Ubuntu 18.04 ve Caddy ile harika bir kombinasyon!<\/p>\n<\/body>\n<\/html><\/code><\/pre>\n<p>Dosyay\u0131 kaydedip kapat\u0131n (CTRL+X, Y, Enter).<\/p>\n<h4>Dosya \u0130zinleri ve Sahipli\u011fi<\/h4>\n<p>Web sunucusunun bu dosyalara eri\u015febilmesi i\u00e7in do\u011fru dosya izinleri ve sahipli\u011fi ayarlamak \u00f6nemlidir. Caddy, genellikle <code>caddy<\/code> ad\u0131nda bir sistem kullan\u0131c\u0131s\u0131 ve grubu alt\u0131nda \u00e7al\u0131\u015f\u0131r. Bu nedenle, web sitesi dosyalar\u0131n\u0131n bu kullan\u0131c\u0131 taraf\u0131ndan okunabilir olmas\u0131 gerekir.<\/p>\n<p>Web sitesi dizininin sahipli\u011fini <code>caddy<\/code> kullan\u0131c\u0131s\u0131na ve grubuna atay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chown -R caddy:caddy \/var\/www\/example.com<\/code><\/pre>\n<p>Dosya izinlerini de uygun \u015fekilde ayarlay\u0131n. Genellikle dizinler i\u00e7in <code>755<\/code> ve dosyalar i\u00e7in <code>644<\/code> izinleri yeterlidir:<\/p>\n<pre><code class=\"language-bash\">sudo chmod -R 755 \/var\/www\/example.com<\/code><\/pre>\n<p>Bu ad\u0131mlarla web sitesi dosyalar\u0131n\u0131z\u0131 haz\u0131rlam\u0131\u015f oldunuz. Art\u0131k Caddy&#8217;yi bu dosyalar\u0131 sunacak \u015fekilde yap\u0131land\u0131rmaya ge\u00e7ebiliriz.<\/p>\n<h3>Caddyfile Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Caddy&#8217;nin ana yap\u0131land\u0131rma dosyas\u0131 <code>Caddyfile<\/code> olarak adland\u0131r\u0131l\u0131r. Bu dosya, Caddy&#8217;ye hangi alan adlar\u0131 i\u00e7in hangi dizinlerden dosya sunaca\u011f\u0131n\u0131, hangi ters proxy&#8217;leri y\u00f6netece\u011fini ve di\u011fer t\u00fcm ayarlar\u0131 bildirir.<\/p>\n<h4>Caddyfile&#8217;\u0131n Konumu ve Temel Yap\u0131s\u0131<\/h4>\n<p>Caddy&#8217;nin sistem hizmeti olarak \u00e7al\u0131\u015ft\u0131\u011f\u0131nda varsay\u0131lan <code>Caddyfile<\/code> konumu <code>\/etc\/caddy\/Caddyfile<\/code> \u015feklindedir. Bu dosyay\u0131 d\u00fczenleyerek web sitenizin yap\u0131land\u0131rmas\u0131n\u0131 yapacaks\u0131n\u0131z.<\/p>\n<p>Bir Caddyfile&#8217;\u0131n temel yap\u0131s\u0131 genellikle a\u015fa\u011f\u0131daki gibidir:<\/p>\n<pre><code class=\"language-\"><alan_ad\u0131> {\n    <direktifler>\n}<\/code><\/pre>\n<p>\u00d6rne\u011fin, <code>example.com<\/code> alan ad\u0131 i\u00e7in <code>\/var\/www\/example.com<\/code> dizininden statik dosyalar\u0131 sunan basit bir Caddyfile \u015fu \u015fekilde g\u00f6r\u00fcn\u00fcr:<\/p>\n<pre><code class=\"language-caddyfile\">example.com {\n    root * \/var\/www\/example.com\n    file_server\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, <code>example.com<\/code> adresine gelen t\u00fcm istekler i\u00e7in <code>\/var\/www\/example.com<\/code> dizinini k\u00f6k dizin olarak belirler ve <code>file_server<\/code> direktifi ile bu dizindeki dosyalar\u0131 sunar. Caddy, bu yap\u0131land\u0131rmay\u0131 g\u00f6rd\u00fc\u011f\u00fcnde otomatik olarak Let&#8217;s Encrypt arac\u0131l\u0131\u011f\u0131yla <code>example.com<\/code> i\u00e7in bir HTTPS sertifikas\u0131 al\u0131r ve HTTPS \u00fczerinden hizmet verir.<\/p>\n<h4>Basit Bir Statik Site \u0130\u00e7in Caddyfile \u00d6rne\u011fi<\/h4>\n<p>\u015eimdi, daha \u00f6nce olu\u015fturdu\u011fumuz <code>index.html<\/code> dosyas\u0131n\u0131 sunmak i\u00e7in <code>\/etc\/caddy\/Caddyfile<\/code> dosyas\u0131n\u0131 d\u00fczenleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/caddy\/Caddyfile<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7eri\u011fini tamamen silin ve a\u015fa\u011f\u0131daki yap\u0131land\u0131rmay\u0131 yap\u0131\u015ft\u0131r\u0131n (alan ad\u0131n\u0131z\u0131 kendi alan ad\u0131n\u0131zla de\u011fi\u015ftirmeyi unutmay\u0131n):<\/p>\n<pre><code class=\"language-caddyfile\"># Global ayarlar (iste\u011fe ba\u011fl\u0131, ama faydal\u0131 olabilir)\n{\n    # Loglama format\u0131n\u0131 ve seviyesini ayarlayabilirsiniz.\n    log {\n        output file \/var\/log\/caddy\/access.log\n        format json\n    }\n    # Email adresi Let's Encrypt i\u00e7in kullan\u0131l\u0131r, sertifika yenileme bildirimleri i\u00e7in.\n    email admin@example.com\n}\n\nexample.com {\n    # Web sitesi dosyalar\u0131n\u0131n k\u00f6k dizini\n    root * \/var\/www\/example.com\n\n    # Statik dosyalar\u0131 sunmak i\u00e7in direktif\n    file_server\n\n    # Hata sayfalar\u0131 (iste\u011fe ba\u011fl\u0131)\n    # handle_errors {\n    #     rewrite * \/404.html\n    #     file_server\n    # }\n\n    # Gzip s\u0131k\u0131\u015ft\u0131rmay\u0131 etkinle\u015ftir (performans i\u00e7in \u00f6nerilir)\n    # encode gzip\n\n    # Loglama (global olarak ayarlanmad\u0131ysa veya farkl\u0131 bir log istiyorsan\u0131z)\n    # log {\n    #     output file \/var\/log\/caddy\/example.com-access.log\n    #     format json\n    # }\n}<\/code><\/pre>\n<p>Dosyay\u0131 kaydedip kapat\u0131n.<\/p>\n<p>Bu yap\u0131land\u0131rma ile Caddy:<br \/>\n*   <code>example.com<\/code> alan ad\u0131na gelen istekleri dinleyecek.<br \/>\n*   <code>\/var\/www\/example.com<\/code> dizinindeki dosyalar\u0131 sunacak.<br \/>\n*   Otomatik olarak Let&#8217;s Encrypt \u00fczerinden <code>example.com<\/code> i\u00e7in bir SSL\/TLS sertifikas\u0131 alacak ve HTTPS&#8217;i etkinle\u015ftirecek.<br \/>\n*   HTTP&#8217;den HTTPS&#8217;e otomatik y\u00f6nlendirme yapacak.<br \/>\n*   Belirtilen yola loglar\u0131 yazacak.<\/p>\n<p>Caddyfile&#8217;\u0131 g\u00fcncelledikten sonra, Caddy hizmetini yeniden ba\u015flatman\u0131z veya yeniden y\u00fcklemeniz gerekir ki de\u011fi\u015fiklikler uygulans\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl reload caddy<\/code><\/pre>\n<p>E\u011fer bir hata olu\u015fursa, Caddy hata mesaj\u0131n\u0131 g\u00f6sterecektir. Hata yoksa, web taray\u0131c\u0131n\u0131zdan alan ad\u0131n\u0131za (\u00f6rne\u011fin <code>https:\/\/example.com<\/code>) giderek sitenizin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz. Taray\u0131c\u0131n\u0131zda &#8220;Merhaba Caddy!&#8221; yaz\u0131s\u0131n\u0131 g\u00f6rmelisiniz ve ba\u011flant\u0131n\u0131n g\u00fcvenli (HTTPS) oldu\u011funu fark edeceksiniz.<\/p>\n<h4>Birden Fazla Site \u0130\u00e7in Caddyfile<\/h4>\n<p>Tek bir Caddyfile i\u00e7inde birden fazla web sitesi yap\u0131land\u0131rabilirsiniz. Her site i\u00e7in ayr\u0131 bir blok tan\u0131mlaman\u0131z yeterlidir.<\/p>\n<pre><code class=\"language-caddyfile\">{\n    email admin@example.com\n    log {\n        output file \/var\/log\/caddy\/global-access.log\n        format json\n    }\n}\n\nexample.com {\n    root * \/var\/www\/example.com\n    file_server\n    encode gzip\n}\n\nsub.example.com {\n    root * \/var\/www\/sub.example.com\n    file_server\n    encode gzip\n}\n\nanotherdomain.net {\n    root * \/var\/www\/anotherdomain.net\n    file_server\n    encode gzip\n    # Ba\u015fka direktifler\n}<\/code><\/pre>\n<p>Her alan ad\u0131 blo\u011fu kendi <code>root<\/code> dizinini ve di\u011fer direktifleri i\u00e7erebilir.<\/p>\n<h4>Otomatik HTTPS (Let&#8217;s Encrypt)<\/h4>\n<p>Caddy&#8217;nin en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri, Let&#8217;s Encrypt ile entegre \u00e7al\u0131\u015farak otomatik HTTPS sa\u011flamas\u0131d\u0131r. Caddyfile&#8217;da sadece alan ad\u0131n\u0131z\u0131 belirtmeniz yeterlidir, Caddy gerisini halleder:<\/p>\n<p>*   Alan ad\u0131n\u0131z i\u00e7in bir sertifika talebi olu\u015fturur.<br \/>\n*   Alan ad\u0131 sahipli\u011fini do\u011frular (genellikle HTTP-01 challenge ile).<br \/>\n*   Sertifikay\u0131 al\u0131r ve sunucunuza kurar.<br \/>\n*   Sertifika s\u00fcresi dolmadan \u00f6nce otomatik olarak yeniler.<\/p>\n<p>Bu s\u00fcre\u00e7, manuel sertifika y\u00f6netimiyle u\u011fra\u015fma ihtiyac\u0131n\u0131 tamamen ortadan kald\u0131r\u0131r ve web sitenizin her zaman g\u00fcvenli bir HTTPS ba\u011flant\u0131s\u0131 \u00fczerinden eri\u015filebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Geli\u015fmi\u015f Caddyfile Direktifleri<\/h4>\n<p>Caddy, statik dosya sunumundan \u00e7ok daha fazlas\u0131n\u0131 yapabilir. \u0130\u015fte baz\u0131 yayg\u0131n ve geli\u015fmi\u015f Caddyfile direktifleri:<\/p>\n<h5>Reverse Proxy (Ters Proxy)<\/h5>\n<p>Caddy&#8217;yi bir ters proxy olarak kullanmak, Node.js, Python (Django, Flask), Ruby on Rails veya Go gibi uygulama sunucular\u0131n\u0131 Caddy&#8217;nin arkas\u0131nda \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r. Caddy, gelen istekleri uygulama sunucunuza iletir ve yan\u0131tlar\u0131 istemciye geri g\u00f6nderir. Bu, Caddy&#8217;nin HTTPS&#8217;i y\u00f6netirken uygulaman\u0131z\u0131n sadece HTTP \u00fczerinden \u00e7al\u0131\u015fabilmesini sa\u011flar.<\/p>\n<p>\u00d6rnek bir Node.js uygulamas\u0131 i\u00e7in ters proxy yap\u0131land\u0131rmas\u0131:<\/p>\n<pre><code class=\"language-caddyfile\">myapp.example.com {\n    # Bu, Node.js uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 adres ve porttur.\n    reverse_proxy localhost:3000\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, <code>myapp.example.com<\/code> adresine gelen t\u00fcm istekleri <code>localhost:3000<\/code> adresinde \u00e7al\u0131\u015fan Node.js uygulaman\u0131za y\u00f6nlendirecektir. Caddy, bu i\u015flem s\u0131ras\u0131nda otomatik HTTPS&#8217;i sa\u011flamaya devam edecektir.<\/p>\n<h5>Loglama<\/h5>\n<p>Caddy, gelen istekleri ve di\u011fer olaylar\u0131 g\u00fcnl\u00fc\u011fe kaydetmek i\u00e7in esnek loglama se\u00e7enekleri sunar. Global olarak veya her site i\u00e7in ayr\u0131 ayr\u0131 loglama yap\u0131land\u0131rabilirsiniz.<\/p>\n<pre><code class=\"language-caddyfile\"># Global loglama ayar\u0131\n{\n    log {\n        output file \/var\/log\/caddy\/access.log {\n            roll_size 10MB\n            roll_keep 5\n        }\n        format json # veya console\n        level INFO # veya DEBUG, WARN, ERROR\n    }\n}\n\n<h2>Siteye \u00f6zel loglama (global ayar\u0131 ge\u00e7ersiz k\u0131lar)<\/h2>\nanotherdomain.net {\n    root * \/var\/www\/anotherdomain.net\n    file_server\n    log {\n        output file \/var\/log\/caddy\/anotherdomain.net-access.log\n        format json\n    }\n}<\/code><\/pre>\n<p><code>roll_size<\/code> ve <code>roll_keep<\/code> direktifleri, log dosyalar\u0131n\u0131n boyutunu ve ka\u00e7 tanesinin saklanaca\u011f\u0131n\u0131 kontrol eder, bu da disk alan\u0131n\u0131 y\u00f6netmek i\u00e7in \u00f6nemlidir.<\/p>\n<h5>Gzip S\u0131k\u0131\u015ft\u0131rma<\/h5>\n<p>Web sitenizin performans\u0131n\u0131 art\u0131rmak i\u00e7in Caddy ile giden verileri s\u0131k\u0131\u015ft\u0131rabilirsiniz. Bu, \u00f6zellikle statik dosyalar i\u00e7in bant geni\u015fli\u011fi kullan\u0131m\u0131n\u0131 azalt\u0131r ve y\u00fckleme s\u00fcrelerini h\u0131zland\u0131r\u0131r.<\/p>\n<pre><code class=\"language-caddyfile\">example.com {\n    root * \/var\/www\/example.com\n    file_server\n    encode gzip zstd # gzip ve zstd s\u0131k\u0131\u015ft\u0131rmalar\u0131n\u0131 etkinle\u015ftirir\n}<\/code><\/pre>\n<p><code>encode<\/code> direktifi, taray\u0131c\u0131n\u0131n destekledi\u011fi s\u0131k\u0131\u015ft\u0131rma algoritmalar\u0131n\u0131 kullan\u0131r. <code>gzip<\/code> yayg\u0131n olarak desteklenirken, <code>zstd<\/code> daha modern ve verimli bir alternatiftir.<\/p>\n<h5>Yeniden Y\u00f6nlendirmeler (Redirects)<\/h5>\n<p>Caddy, URL&#8217;leri yeniden y\u00f6nlendirmek i\u00e7in g\u00fc\u00e7l\u00fc ve esnek ara\u00e7lar sunar. Bu, eski URL&#8217;leri yeni URL&#8217;lere y\u00f6nlendirmek veya www olmayan alan ad\u0131n\u0131 www&#8217;ye y\u00f6nlendirmek gibi durumlar i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-caddyfile\"># HTTP'den HTTPS'e Caddy taraf\u0131ndan otomatik olarak yap\u0131l\u0131r.\n<h2>Ancak, \u00f6zel bir y\u00f6nlendirme yapman\u0131z gerekirse:<\/h2>\n\n<h2>www.example.com'u example.com'a y\u00f6nlendirme<\/h2>\nwww.example.com {\n    redir https:\/\/example.com{uri} permanent\n}\n\n<h2>Eski bir URL'yi yeni bir URL'ye y\u00f6nlendirme<\/h2>\nexample.com {\n    root * \/var\/www\/example.com\n    file_server\n\n    # Eski blog g\u00f6nderisi URL'sini yeniye y\u00f6nlendirme\n    redir \/old-blog-post \/new-blog-post permanent\n\n    # T\u00fcm \/blog\/<em> isteklerini \/articles\/<\/em> alt\u0131na y\u00f6nlendirme\n    redir \/blog\/* \/articles\/{uri} permanent\n}<\/code><\/pre>\n<p><code>permanent<\/code> anahtar kelimesi, 301 (kal\u0131c\u0131) yeniden y\u00f6nlendirmesi yapar.<\/p>\n<h5>Statik Dosya Sunumu<\/h5>\n<p><code>file_server<\/code> direktifi, belirtilen <code>root<\/code> dizinindeki dosyalar\u0131 sunar. Bu, Caddy&#8217;nin en temel i\u015flevlerinden biridir.<\/p>\n<pre><code class=\"language-caddyfile\">example.com {\n    root * \/var\/www\/example.com\n    file_server {\n        hide .git .env # Baz\u0131 dosyalar\u0131 gizle\n        browse # Dizin listelemeyi etkinle\u015ftir (g\u00fcvenlik riski ta\u015f\u0131yabilir, dikkatli kullan\u0131n)\n    }\n}<\/code><\/pre>\n<p><code>hide<\/code> alt direktifi, belirli dosyalar\u0131n veya dizinlerin listelenmesini veya do\u011frudan eri\u015filmesini engeller. <code>browse<\/code> ise dizin listelemeyi etkinle\u015ftirir, bu da genellikle g\u00fcvenlik nedeniyle \u00f6nerilmez.<\/p>\n<h5>PHP-FPM ile Entegrasyon (\u00d6rn: WordPress)<\/h5>\n<p>Dinamik PHP uygulamalar\u0131n\u0131 (WordPress, Laravel vb.) Caddy ile \u00e7al\u0131\u015ft\u0131rmak i\u00e7in PHP-FPM (FastCGI Process Manager) kullanman\u0131z gerekir. Caddy, gelen PHP isteklerini PHP-FPM&#8217;e iletir, PHP-FPM kodu \u00e7al\u0131\u015ft\u0131r\u0131r ve \u00e7\u0131kt\u0131y\u0131 Caddy&#8217;ye geri g\u00f6nderir.<\/p>\n<p><strong>1. PHP-FPM Kurulumu:<\/strong><\/p>\n<p>\u00d6ncelikle, sunucunuza PHP-FPM ve gerekli PHP uzant\u0131lar\u0131n\u0131 kurman\u0131z gerekir. Ubuntu 18.04 i\u00e7in PHP 7.2 veya 7.4 kullanabilirsiniz. Bu \u00f6rnekte PHP 7.2 kullanaca\u011f\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo apt install php7.2-fpm php7.2-mysql php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl php7.2-zip -y<\/code><\/pre>\n<p>Kurulumdan sonra PHP-FPM hizmetinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status php7.2-fpm<\/code><\/pre>\n<p><strong>2. Caddyfile Yap\u0131land\u0131rmas\u0131:<\/strong><\/p>\n<p>\u015eimdi Caddyfile&#8217;\u0131 PHP uygulamalar\u0131n\u0131 y\u00f6netecek \u015fekilde yap\u0131land\u0131r\u0131n. WordPress i\u00e7in tipik bir yap\u0131land\u0131rma \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-caddyfile\">wordpress.example.com {\n    root * \/var\/www\/wordpress.example.com\n    php_fastcgi unix\/\/run\/php\/php7.2-fpm.sock\n    file_server\n\n    # WordPress'in permalink'leri i\u00e7in yeniden yazma kural\u0131\n    # index.php bulunamazsa, index.php'ye y\u00f6nlendir\n    try_files {path} {path}\/ \/index.php?{query}\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rmada:<br \/>\n<em>   <code>root <\/em> \/var\/www\/wordpress.example.com<\/code>: WordPress dosyalar\u0131n\u0131n bulundu\u011fu dizini belirtir.<br \/>\n*   <code>php_fastcgi unix\/\/run\/php\/php7.2-fpm.sock<\/code>: Caddy&#8217;ye PHP isteklerini PHP-FPM&#8217;in UNIX soketine y\u00f6nlendirmesini s\u00f6yler. Ubuntu&#8217;da varsay\u0131lan soket genellikle <code>\/run\/php\/phpX.X-fpm.sock<\/code> \u015feklindedir.<br \/>\n*   <code>file_server<\/code>: Statik dosyalar\u0131 (CSS, JS, resimler) sunar.<br \/>\n*   <code>try_files {path} {path}\/ \/index.php?{query}<\/code>: Bu, WordPress gibi uygulamalar\u0131n permalink yap\u0131s\u0131 i\u00e7in kritik bir yeniden yazma kural\u0131d\u0131r. E\u011fer istenen dosya veya dizin bulunamazsa, iste\u011fi <code>index.php<\/code>&#8216;ye y\u00f6nlendirir.<\/p>\n<p>Caddyfile&#8217;\u0131 kaydettikten sonra, Caddy hizmetini yeniden y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl reload caddy<\/code><\/pre>\n<p>Art\u0131k <code>wordpress.example.com<\/code> adresine gelen istekler Caddy taraf\u0131ndan kar\u015f\u0131lanacak, statik dosyalar do\u011frudan sunulacak ve PHP dosyalar\u0131 PHP-FPM taraf\u0131ndan i\u015flenecektir. WordPress kurulumunuzu <code>\/var\/www\/wordpress.example.com<\/code> dizinine yerle\u015ftirdi\u011finizde, Caddy otomatik olarak HTTPS ile sitenizi bar\u0131nd\u0131rmaya ba\u015flayacakt\u0131r.<\/p>\n<h3>Caddy Hizmetini Y\u00f6netme<\/h3>\n<p>Caddy bir sistem hizmeti olarak \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, <code>systemctl<\/code> komutuyla kolayca y\u00f6netilebilir.<\/p>\n<p>*   <strong>Caddyfile De\u011fi\u015fikliklerini Uygulama:<\/strong><br \/>\n    Caddyfile&#8217;da herhangi bir de\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda, bu de\u011fi\u015fikliklerin Caddy taraf\u0131ndan uygulanmas\u0131 i\u00e7in hizmeti yeniden y\u00fcklemeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl reload caddy<\/code><\/pre>\n<p>    <code>reload<\/code> komutu, Caddy&#8217;yi durdurup yeniden ba\u015flatmadan yap\u0131land\u0131rmay\u0131 yeniden okumas\u0131n\u0131 sa\u011flar, bu da kesintisiz hizmet anlam\u0131na gelir.<\/p>\n<p>*   <strong>Caddy&#8217;yi Ba\u015flatma:<\/strong><br \/>\n    E\u011fer Caddy hizmeti \u00e7al\u0131\u015fm\u0131yorsa veya durdurulmu\u015fsa, a\u015fa\u011f\u0131daki komutla ba\u015flatabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start caddy<\/code><\/pre>\n<p>*   <strong>Caddy&#8217;yi Durdurma:<\/strong><br \/>\n    Caddy hizmetini tamamen durdurmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl stop caddy<\/code><\/pre>\n<p>*   <strong>Caddy&#8217;yi Yeniden Ba\u015flatma:<\/strong><br \/>\n    Bazen <code>reload<\/code> yeterli olmayabilir veya tamamen yeni bir ba\u015flang\u0131\u00e7 gerekebilir. Bu durumda <code>restart<\/code> komutunu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart caddy<\/code><\/pre>\n<p>*   <strong>Caddy&#8217;nin Durumunu Kontrol Etme:<\/strong><br \/>\n    Caddy hizmetinin mevcut durumunu (\u00e7al\u0131\u015f\u0131yor mu, durduruldu mu, hatalar var m\u0131) kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status caddy<\/code><\/pre>\n<p>*   <strong>Caddy Loglar\u0131n\u0131 \u0130nceleme:<\/strong><br \/>\n    Caddy&#8217;nin \u00e7\u0131kt\u0131lar\u0131n\u0131 ve hatalar\u0131n\u0131 incelemek i\u00e7in <code>journalctl<\/code> kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo journalctl -u caddy --since \"5 minutes ago\"<\/code><\/pre>\n<p>    Bu komut, son 5 dakikadaki Caddy hizmetinin g\u00fcnl\u00fcklerini g\u00f6sterir. <code>--since<\/code> parametresini de\u011fi\u015ftirerek daha eski g\u00fcnl\u00fckleri de inceleyebilirsiniz.<br \/>\n    E\u011fer Caddyfile&#8217;da \u00f6zel log dosyalar\u0131 belirttiyseniz (\u00f6rne\u011fin <code>\/var\/log\/caddy\/access.log<\/code>), bu dosyalar\u0131 do\u011frudan <code>tail<\/code> komutuyla da izleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo tail -f \/var\/log\/caddy\/access.log<\/code><\/pre>\n<p>*   <strong>Caddyfile S\u00f6zdizimini Do\u011frulama:<\/strong><br \/>\n    Caddyfile&#8217;da bir de\u011fi\u015fiklik yapmadan \u00f6nce s\u00f6zdiziminin do\u011fru olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in <code>caddy validate<\/code> komutunu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo caddy validate --config \/etc\/caddy\/Caddyfile<\/code><\/pre>\n<p>    Bu komut, yap\u0131land\u0131rma dosyas\u0131ndaki olas\u0131 hatalar\u0131 tespit etmenize yard\u0131mc\u0131 olur ve <code>reload<\/code> veya <code>restart<\/code> s\u0131ras\u0131nda sorun ya\u015faman\u0131z\u0131 engeller.<\/p>\n<p>Bu y\u00f6netim komutlar\u0131, Caddy sunucunuzu verimli bir \u015fekilde izlemenizi ve bak\u0131m\u0131n\u0131 yapman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>Sorun Giderme ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Caddy ile bir web sitesi bar\u0131nd\u0131r\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve bunlar\u0131n \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>Caddyfile S\u00f6zdizimi Hatalar\u0131:<\/strong><br \/>\n    *   <strong>Belirti:<\/strong> Caddy hizmeti yeniden y\u00fcklenmiyor veya ba\u015flam\u0131yor, <code>systemctl status caddy<\/code> \u00e7\u0131kt\u0131s\u0131nda hatalar g\u00f6r\u00fcn\u00fcyor.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> <code>sudo caddy validate --config \/etc\/caddy\/Caddyfile<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak Caddyfile&#8217;daki s\u00f6zdizimi hatalar\u0131n\u0131 kontrol edin. Caddy genellikle hatan\u0131n hangi sat\u0131rda oldu\u011funu belirtir.<br \/>\n    *   <strong>\u0130pucu:<\/strong> Her Caddyfile de\u011fi\u015fikli\u011finden sonra <code>validate<\/code> komutunu kullanmay\u0131 al\u0131\u015fkanl\u0131k haline getirin.<\/p>\n<p>*   <strong>DNS Sorunlar\u0131:<\/strong><br \/>\n    *   <strong>Belirti:<\/strong> Web sitenize alan ad\u0131n\u0131zla eri\u015femiyorsunuz, ancak sunucunuzun IP adresiyle eri\u015febiliyorsunuz (e\u011fer Caddy&#8217;yi IP adresiyle de yap\u0131land\u0131rd\u0131ysan\u0131z). Caddy, Let&#8217;s Encrypt sertifikas\u0131n\u0131 alam\u0131yor.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Alan ad\u0131n\u0131z\u0131n A kayd\u0131n\u0131n sunucunuzun genel IP adresini do\u011fru bir \u015fekilde i\u015faret etti\u011finden emin olun. DNS de\u011fi\u015fikliklerinin yay\u0131lmas\u0131 biraz zaman alabilir (24 saate kadar). <code>dig alanadiniz.com<\/code> veya <code>nslookup alanadiniz.com<\/code> komutlar\u0131yla DNS kay\u0131tlar\u0131n\u0131 kontrol edebilirsiniz.<br \/>\n    *   <strong>\u0130pucu:<\/strong> <code>ping alanadiniz.com<\/code> komutu da IP adresini do\u011fru g\u00f6steriyorsa DNS do\u011fru \u00e7al\u0131\u015f\u0131yor demektir.<\/p>\n<p>*   <strong>G\u00fcvenlik Duvar\u0131 Engelleri:<\/strong><br \/>\n    *   <strong>Belirti:<\/strong> Web sitenize hi\u00e7 eri\u015filemiyor veya sadece HTTP \u00fczerinden eri\u015filebiliyor (HTTPS \u00e7al\u0131\u015fm\u0131yor).<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> UFW veya ba\u015fka bir g\u00fcvenlik duvar\u0131n\u0131n 80 (HTTP) ve 443 (HTTPS) portlar\u0131n\u0131 engellemedi\u011finden emin olun. <code>sudo ufw status<\/code> komutuyla kontrol edin ve gerekirse <code>sudo ufw allow http<\/code> ve <code>sudo ufw allow https<\/code> komutlar\u0131yla portlar\u0131 a\u00e7\u0131n.<\/p>\n<p>*   <strong>Let&#8217;s Encrypt Limitleri:<\/strong><br \/>\n    *   <strong>Belirti:<\/strong> Caddy, &#8220;too many certificates already issued&#8221; (\u00e7ok fazla sertifika zaten verilmi\u015f) gibi bir hata mesaj\u0131 g\u00f6steriyor.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Let&#8217;s Encrypt&#8217;in belirli bir zaman diliminde (genellikle bir hafta) bir alan ad\u0131 i\u00e7in alabilece\u011finiz sertifika say\u0131s\u0131na ili\u015fkin limitleri vard\u0131r. Genellikle bu, \u00e7ok s\u0131k sertifika denemesi yap\u0131ld\u0131\u011f\u0131nda ortaya \u00e7\u0131kar. Bir s\u00fcre beklemek ve tekrar denemek en iyi \u00e7\u00f6z\u00fcmd\u00fcr. Geli\u015ftirme ortamlar\u0131nda <code>example.com<\/code> yerine <code>localhost<\/code> veya <code>.test<\/code> gibi alan adlar\u0131 kullanarak bu limitlerden ka\u00e7\u0131nabilirsiniz.<br \/>\n    *   <strong>\u0130pucu:<\/strong> Caddy, varsay\u0131lan olarak Let&#8217;s Encrypt&#8217;in \u00fcretim ortam\u0131n\u0131 kullan\u0131r. Testler i\u00e7in Let&#8217;s Encrypt&#8217;in staging ortam\u0131n\u0131 kullanabilirsiniz. Bunu Caddyfile&#8217;\u0131n global blo\u011funa <code>acme_ca https:\/\/acme-staging-v02.api.letsencrypt.org\/directory<\/code> ekleyerek yapabilirsiniz.<\/p>\n<p>*   <strong>Caddy Loglar\u0131:<\/strong><br \/>\n    *   <strong>Belirti:<\/strong> Bir sorun ya\u015f\u0131yorsunuz ancak nedenini belirleyemiyorsunuz.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Caddy&#8217;nin g\u00fcnl\u00fcklerini detayl\u0131 bir \u015fekilde inceleyin. <code>sudo journalctl -u caddy<\/code> veya Caddyfile&#8217;da belirtti\u011finiz log dosyalar\u0131n\u0131 (<code>\/var\/log\/caddy\/access.log<\/code> gibi) kontrol edin. Hata mesajlar\u0131 veya uyar\u0131lar sorunun kayna\u011f\u0131na i\u015faret edebilir.<br \/>\n    *   <strong>\u0130pucu:<\/strong> Caddyfile&#8217;daki loglama seviyesini <code>DEBUG<\/code> olarak ayarlayarak daha ayr\u0131nt\u0131l\u0131 bilgi alabilirsiniz, ancak bunu \u00fcretimde s\u00fcrekli a\u00e7\u0131k b\u0131rakmak performans d\u00fc\u015f\u00fc\u015f\u00fcne neden olabilir.<\/p>\n<p>*   <strong>Dosya \u0130zinleri:<\/strong><br \/>\n    *   <strong>Belirti:<\/strong> Web siteniz &#8220;403 Forbidden&#8221; hatas\u0131 veriyor veya dosyalar y\u00fcklenmiyor.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Web sitesi dosyalar\u0131n\u0131z\u0131n ve dizinlerinizin Caddy kullan\u0131c\u0131s\u0131 (<code>caddy<\/code>) taraf\u0131ndan okunabilir oldu\u011fundan emin olun. <code>sudo chown -R caddy:caddy \/var\/www\/yourdomain.com<\/code> ve <code>sudo chmod -R 755 \/var\/www\/yourdomain.com<\/code> komutlar\u0131n\u0131 kullanarak izinleri d\u00fczeltin.<\/p>\n<p>Bu sorun giderme ipu\u00e7lar\u0131, Caddy ile web sitesi bar\u0131nd\u0131rma s\u00fcrecinde kar\u015f\u0131la\u015fabilece\u011finiz \u00e7o\u011fu sorunu \u00e7\u00f6zmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, Ubuntu 18.04 sunucusu \u00fczerinde Caddy web sunucusunu kullanarak bir web sitesini nas\u0131l bar\u0131nd\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. Caddy&#8217;nin kurulumundan g\u00fcvenlik duvar\u0131 yap\u0131land\u0131rmas\u0131na, temel ve geli\u015fmi\u015f Caddyfile direktiflerinden PHP-FPM entegrasyonuna kadar bir\u00e7ok konuyu ele ald\u0131k.<\/p>\n<p>Caddy, modern web projeleri i\u00e7in sundu\u011fu basitlik, otomatik HTTPS, h\u0131zl\u0131 performans ve esnek yap\u0131land\u0131rma se\u00e7enekleri ile \u00f6ne \u00e7\u0131kan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. \u00d6zellikle Let&#8217;s Encrypt ile entegre otomatik SSL\/TLS sertifikas\u0131 y\u00f6netimi, Caddy&#8217;yi manuel sertifika yenileme zahmetinden kurtulmak isteyen herkes i\u00e7in cazip bir se\u00e7enek haline getirir. \u0130ster statik bir web sitesi sunun, ister bir Node.js API&#8217;si i\u00e7in ters proxy g\u00f6revi g\u00f6rs\u00fcn, ister WordPress gibi dinamik bir PHP uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n, Caddy t\u00fcm bu senaryolarda g\u00fcvenilir ve verimli bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<p>Caddy&#8217;nin sa\u011flad\u0131\u011f\u0131 bu kolayl\u0131klar ve performans avantajlar\u0131, web sitesi bar\u0131nd\u0131rma s\u00fcrecini daha eri\u015filebilir ve daha az karma\u015f\u0131k hale getirir. Bu rehberde edindi\u011finiz bilgilerle, kendi web projelerinizi Caddy ve Ubuntu 18.04 \u00fczerinde ba\u015far\u0131yla hayata ge\u00e7irebilirsiniz. \u0130leriye d\u00f6n\u00fck olarak, Caddy&#8217;nin di\u011fer \u00f6zelliklerini (y\u00fck dengeleme, kimlik do\u011frulama, HTTP\/3 deste\u011fi gibi) ke\u015ffederek sunucunuzun yeteneklerini daha da geni\u015fletebilirsiniz. Unutmay\u0131n, Caddy toplulu\u011fu olduk\u00e7a aktif ve Caddy dok\u00fcmantasyonu, daha fazla bilgi ve geli\u015fmi\u015f yap\u0131land\u0131rma \u00f6rnekleri i\u00e7in harika bir kaynakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber\nWeb siteleri ve uygulamalar\u0131 bar\u0131nd\u0131rmak i\u00e7in geleneksel olarak Ng","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":[1468],"tags":[],"class_list":{"0":"post-31435","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","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>Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber - 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\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber Web siteleri ve uygulamalar\u0131 bar\u0131nd\u0131rmak i\u00e7in geleneksel olarak Ng\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-09T20:41:15+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=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2025-10-09T20:41:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/\"},\"wordCount\":3307,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/\",\"name\":\"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-09T20:41:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber\"}]},{\"@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":"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber - 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\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber","og_description":"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber Web siteleri ve uygulamalar\u0131 bar\u0131nd\u0131rmak i\u00e7in geleneksel olarak Ng","og_url":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-09T20:41:15+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber","datePublished":"2025-10-09T20:41:15+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/"},"wordCount":3307,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/","name":"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-09T20:41:15+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/caddy-ile-ubuntu-18-04-uzerinde-web-sitesi-barindirma-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Caddy ile Ubuntu 18.04 \u00dczerinde Web Sitesi Bar\u0131nd\u0131rma: Kapsaml\u0131 Bir Rehber"}]},{"@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\/31435","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=31435"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31435\/revisions"}],"predecessor-version":[{"id":31436,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31435\/revisions\/31436"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31435"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}