{"id":30327,"date":"2025-09-26T17:20:11","date_gmt":"2025-09-26T14:20:11","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=30327"},"modified":"2025-09-26T17:20:11","modified_gmt":"2025-09-26T14:20:11","slug":"doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/","title":{"rendered":"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek"},"content":{"rendered":"<p><body><\/p>\n<h2>Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz bulut bili\u015fim d\u00fcnyas\u0131nda, altyap\u0131 y\u00f6netimi giderek daha karma\u015f\u0131k hale gelmektedir. Sunucular, veritabanlar\u0131, depolama alanlar\u0131 ve a\u011f bile\u015fenleri gibi bir\u00e7ok farkl\u0131 kayna\u011f\u0131n etkin bir \u015fekilde y\u00f6netilmesi gerekmektedir. DigitalOcean, geli\u015ftiricilere ve k\u00fc\u00e7\u00fck i\u015fletmelere y\u00f6nelik basit ve g\u00fc\u00e7l\u00fc bir bulut platformu sunarak bu karma\u015f\u0131kl\u0131\u011f\u0131 azaltmay\u0131 hedefler. DigitalOcean&#8217;\u0131n sundu\u011fu bu kolayl\u0131\u011f\u0131, komut sat\u0131r\u0131 aray\u00fcz\u00fcnden (CLI) y\u00f6netmek isteyenler i\u00e7in ise resmi arac\u0131 olan <code>doctl<\/code> devreye girer.<\/p>\n<p><code>doctl<\/code>, DigitalOcean API&#8217;si ile etkile\u015fime giren, a\u00e7\u0131k kaynakl\u0131 bir komut sat\u0131r\u0131 aray\u00fcz\u00fc arac\u0131d\u0131r. Bu ara\u00e7 sayesinde Droplet&#8217;ler (sanal sunucular), SSH anahtarlar\u0131, g\u00fcvenlik duvarlar\u0131, y\u00fck dengeleyiciler, veritabanlar\u0131, Kubernetes k\u00fcmeleri ve di\u011fer DigitalOcean hizmetleri gibi t\u00fcm kaynaklar\u0131n\u0131z\u0131 terminalinizden olu\u015fturabilir, yap\u0131land\u0131rabilir, izleyebilir ve silebilirsiniz. <code>doctl<\/code> kullanmak, \u00f6zellikle otomasyon senaryolar\u0131nda, betik yaz\u0131m\u0131nda ve h\u0131zl\u0131 y\u00f6netim g\u00f6revlerinde b\u00fcy\u00fck avantajlar sa\u011flar. Grafiksel kullan\u0131c\u0131 aray\u00fcz\u00fcne (GUI) k\u0131yasla daha h\u0131zl\u0131 ve verimli bir \u00e7al\u0131\u015fma ak\u0131\u015f\u0131 sunar.<\/p>\n<p>Bu makalede, <code>doctl<\/code>&#8216;u nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, kimlik do\u011frulamas\u0131n\u0131 nas\u0131l yapaca\u011f\u0131n\u0131z\u0131 ve DigitalOcean kaynaklar\u0131n\u0131z\u0131 komut sat\u0131r\u0131ndan y\u00f6netmek i\u00e7in temelden ileri seviyeye kadar nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ayr\u0131nt\u0131l\u0131 bir \u015fekilde ele alaca\u011f\u0131z.<\/p>\n<h2>Doctl Kurulumu<\/h2>\n<p><code>doctl<\/code>&#8216;u kullanmaya ba\u015flamadan \u00f6nce, i\u015fletim sisteminize kurman\u0131z gerekmektedir. Kurulum ad\u0131mlar\u0131, kulland\u0131\u011f\u0131n\u0131z i\u015fletim sistemine g\u00f6re de\u011fi\u015fiklik g\u00f6sterir.<\/p>\n<h3>Linux Kurulumu<\/h3>\n<p>Linux da\u011f\u0131t\u0131mlar\u0131 i\u00e7in <code>doctl<\/code>&#8216;u kurman\u0131n birka\u00e7 yolu vard\u0131r.<\/p>\n<h4>APT (Debian\/Ubuntu tabanl\u0131 sistemler) ile Kurulum<\/h4>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install doctl<\/code><\/pre>\n<h4>YUM (CentOS\/RHEL tabanl\u0131 sistemler) ile Kurulum<\/h4>\n<pre><code class=\"language-bash\">sudo yum install -y yum-utils\nsudo yum-config-manager --add-repo https:\/\/digitalocean.github.io\/doctl\/rpm\/doctl.repo\nsudo yum install doctl<\/code><\/pre>\n<h4>Snap ile Kurulum (Evrensel Linux paketi)<\/h4>\n<p>Snap y\u00fckl\u00fc sistemlerde kolayca kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo snap install doctl<\/code><\/pre>\n<h4>Manuel Kurulum (T\u00fcm Linux da\u011f\u0131t\u0131mlar\u0131 i\u00e7in)<\/h4>\n<p>Manuel kurulum, <code>doctl<\/code>&#8216;un en son s\u00fcr\u00fcm\u00fcn\u00fc do\u011frudan DigitalOcean&#8217;\u0131n GitHub sayfas\u0131ndan indirip PATH&#8217;inize eklemeyi i\u00e7erir.<\/p>\n<p>1.  <strong>En Son S\u00fcr\u00fcm\u00fc \u0130ndirin:<\/strong> <code>doctl<\/code>&#8216;un GitHub yay\u0131nlar sayfas\u0131ndan i\u015fletim sisteminize uygun <code>tar.gz<\/code> dosyas\u0131n\u0131 bulun (\u00f6rne\u011fin, <code>doctl-*-linux-amd64.tar.gz<\/code>).<\/p>\n<pre><code class=\"language-bash\"># \u00d6rnek: En son s\u00fcr\u00fcm\u00fc kontrol edin ve indirme URL'sini g\u00fcncelleyin\n    wget https:\/\/github.com\/digitalocean\/doctl\/releases\/download\/v1.107.0\/doctl-1.107.0-linux-amd64.tar.gz<\/code><\/pre>\n<p>2.  <strong>Dosyay\u0131 \u00c7\u0131kar\u0131n:<\/strong><\/p>\n<pre><code class=\"language-bash\">tar xf doctl-1.107.0-linux-amd64.tar.gz<\/code><\/pre>\n<p>3.  <strong><code>doctl<\/code> y\u00fcr\u00fct\u00fclebilir dosyas\u0131n\u0131 PATH&#8217;inize ta\u015f\u0131y\u0131n:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo mv doctl \/usr\/local\/bin<\/code><\/pre>\n<h3>macOS Kurulumu<\/h3>\n<p>macOS kullan\u0131c\u0131lar\u0131 i\u00e7in Homebrew arac\u0131l\u0131\u011f\u0131yla kurulum en kolay y\u00f6ntemdir.<\/p>\n<h4>Homebrew ile Kurulum<\/h4>\n<p>E\u011fer Homebrew y\u00fckl\u00fc de\u011filse, \u00f6nce onu y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">\/bin\/bash -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Homebrew\/install\/HEAD\/install.sh)\"<\/code><\/pre>\n<p>Ard\u0131ndan <code>doctl<\/code>&#8216;u kurun:<\/p>\n<pre><code class=\"language-bash\">brew install doctl<\/code><\/pre>\n<h4>Manuel Kurulum (macOS i\u00e7in)<\/h4>\n<p>Linux&#8217;takine benzer \u015fekilde, <code>doctl<\/code> y\u00fcr\u00fct\u00fclebilir dosyas\u0131n\u0131 indirip PATH&#8217;inize ta\u015f\u0131yabilirsiniz.<\/p>\n<p>1.  <strong>En Son S\u00fcr\u00fcm\u00fc \u0130ndirin:<\/strong> GitHub yay\u0131nlar sayfas\u0131ndan macOS i\u00e7in uygun <code>tar.gz<\/code> dosyas\u0131n\u0131 indirin (\u00f6rne\u011fin, <code>doctl-*-darwin-amd64.tar.gz<\/code>).<\/p>\n<pre><code class=\"language-bash\"># \u00d6rnek:\n    wget https:\/\/github.com\/digitalocean\/doctl\/releases\/download\/v1.107.0\/doctl-1.107.0-darwin-amd64.tar.gz<\/code><\/pre>\n<p>2.  <strong>Dosyay\u0131 \u00c7\u0131kar\u0131n:<\/strong><\/p>\n<pre><code class=\"language-bash\">tar xf doctl-1.107.0-darwin-amd64.tar.gz<\/code><\/pre>\n<p>3.  <strong><code>doctl<\/code> y\u00fcr\u00fct\u00fclebilir dosyas\u0131n\u0131 PATH&#8217;inize ta\u015f\u0131y\u0131n:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo mv doctl \/usr\/local\/bin<\/code><\/pre>\n<h3>Windows Kurulumu<\/h3>\n<p>Windows kullan\u0131c\u0131lar\u0131 i\u00e7in Chocolatey veya manuel kurulum se\u00e7enekleri mevcuttur.<\/p>\n<h4>Chocolatey ile Kurulum<\/h4>\n<p>E\u011fer Chocolatey y\u00fckl\u00fc de\u011filse, PowerShell&#8217;i y\u00f6netici olarak \u00e7al\u0131\u015ft\u0131r\u0131n ve a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-powershell\">Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https:\/\/community.chocolatey.org\/install.ps1'))<\/code><\/pre>\n<p>Ard\u0131ndan <code>doctl<\/code>&#8216;u kurun:<\/p>\n<pre><code class=\"language-powershell\">choco install doctl<\/code><\/pre>\n<h4>Manuel Kurulum (Windows i\u00e7in)<\/h4>\n<p>1.  <strong>En Son S\u00fcr\u00fcm\u00fc \u0130ndirin:<\/strong> GitHub yay\u0131nlar sayfas\u0131ndan Windows i\u00e7in uygun <code>zip<\/code> dosyas\u0131n\u0131 indirin (\u00f6rne\u011fin, <code>doctl-*-windows-amd64.zip<\/code>).<br \/>\n2.  <strong>Dosyay\u0131 \u00c7\u0131kar\u0131n:<\/strong> \u0130ndirdi\u011finiz zip dosyas\u0131n\u0131 tercih etti\u011finiz bir konuma (\u00f6rne\u011fin, <code>C:\\Program Files\\doctl<\/code>) \u00e7\u0131kar\u0131n.<br \/>\n3.  <strong>PATH&#8217;e Ekleme:<\/strong> <code>doctl.exe<\/code> dosyas\u0131n\u0131n bulundu\u011fu klas\u00f6r\u00fc sistem PATH ortam de\u011fi\u015fkeninize ekleyin. Bunu yapmak i\u00e7in:<br \/>\n    *   Ba\u015flat men\u00fcs\u00fcnde &#8220;Ortam de\u011fi\u015fkenleri&#8221; yaz\u0131p &#8220;Sistem ortam de\u011fi\u015fkenlerini d\u00fczenle&#8221; se\u00e7ene\u011fini a\u00e7\u0131n.<br \/>\n    *   &#8220;Ortam De\u011fi\u015fkenleri&#8230;&#8221; butonuna t\u0131klay\u0131n.<br \/>\n    *   &#8220;Sistem de\u011fi\u015fkenleri&#8221; alt\u0131nda &#8220;Path&#8221; de\u011fi\u015fkenini se\u00e7in ve &#8220;D\u00fczenle&#8230;&#8221; butonuna t\u0131klay\u0131n.<br \/>\n    *   &#8220;Yeni&#8221; butonuna t\u0131klay\u0131n ve <code>doctl.exe<\/code> dosyas\u0131n\u0131n bulundu\u011fu klas\u00f6r\u00fcn yolunu (\u00f6rne\u011fin, <code>C:\\Program Files\\doctl<\/code>) ekleyin.<br \/>\n    *   T\u00fcm pencereleri &#8220;Tamam&#8221; diyerek kapat\u0131n.<\/p>\n<h3>Kurulumu Do\u011frulama<\/h3>\n<p>Kurulum tamamland\u0131ktan sonra, terminalinizde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rarak <code>doctl<\/code>&#8216;un do\u011fru \u015fekilde y\u00fcklenip y\u00fcklenmedi\u011fini ve s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">doctl version<\/code><\/pre>\n<p>E\u011fer ba\u015far\u0131l\u0131 bir kurulum yapt\u0131ysan\u0131z, <code>doctl<\/code>&#8216;un s\u00fcr\u00fcm numaras\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h2>Kimlik Do\u011frulama (Authentication)<\/h2>\n<p><code>doctl<\/code>&#8216;u kullanabilmek i\u00e7in DigitalOcean hesab\u0131n\u0131zla kimlik do\u011frulamas\u0131 yapman\u0131z gerekmektedir. Bu i\u015flem i\u00e7in bir DigitalOcean API belirtecine (token) ihtiyac\u0131n\u0131z olacak.<\/p>\n<h3>API Belirteci Olu\u015fturma<\/h3>\n<p>1.  DigitalOcean kontrol paneline giri\u015f yap\u0131n.<br \/>\n2.  Sol men\u00fcden &#8220;API&#8221; se\u00e7ene\u011fine t\u0131klay\u0131n.<br \/>\n3.  &#8220;Tokens\/Keys&#8221; sekmesi alt\u0131nda &#8220;Generate New Token&#8221; butonuna t\u0131klay\u0131n.<br \/>\n4.  Belirtecinize a\u00e7\u0131klay\u0131c\u0131 bir isim verin (\u00f6rne\u011fin, &#8220;doctl-cli-token&#8221;).<br \/>\n5.  &#8220;Write&#8221; kapsam\u0131n\u0131 etkinle\u015ftirdi\u011finizden emin olun (bu, <code>doctl<\/code>&#8216;un kaynaklar\u0131 olu\u015fturmas\u0131na, de\u011fi\u015ftirmesine ve silmesine izin verir). Yaln\u0131zca okuma yetkisi gerektiren durumlar i\u00e7in &#8220;Read&#8221; yeterli olabilir, ancak tam y\u00f6netim i\u00e7in &#8220;Write&#8221; gereklidir.<br \/>\n6.  &#8220;Generate Token&#8221; butonuna t\u0131klay\u0131n.<br \/>\n7.  Olu\u015fturulan belirteci <strong>hemen kopyalay\u0131n<\/strong>. Bu belirte\u00e7 sadece bir kez g\u00f6sterilecektir ve tekrar g\u00f6r\u00fcnt\u00fclenemez. G\u00fcvenli bir yerde saklay\u0131n.<\/p>\n<h3>Doctl ile Kimlik Do\u011frulama<\/h3>\n<p>API belirtecinizi ald\u0131ktan sonra, <code>doctl<\/code>&#8216;u bu belirte\u00e7le yap\u0131land\u0131rman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">doctl auth init<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, <code>doctl<\/code> sizden API belirtecinizi yap\u0131\u015ft\u0131rman\u0131z\u0131 isteyecektir:<\/p>\n<pre><code class=\"language-\">Please authenticate doctl for use with your DigitalOcean account. You can generate a new token in your account settings at: https:\/\/cloud.digitalocean.com\/account\/api\/tokens\n\nEnter your access token:<\/code><\/pre>\n<p>Kopyalad\u0131\u011f\u0131n\u0131z belirteci buraya yap\u0131\u015ft\u0131r\u0131n ve Enter tu\u015funa bas\u0131n. <code>doctl<\/code> belirteci do\u011frulayacak ve yap\u0131land\u0131rma dosyas\u0131n\u0131 (varsay\u0131lan olarak <code>~\/.config\/doctl\/config.yaml<\/code>) olu\u015fturacakt\u0131r.<\/p>\n<p>Kimlik do\u011frulaman\u0131n ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 test etmek i\u00e7in hesap bilgilerinizi listeleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">doctl account get<\/code><\/pre>\n<p>Bu komut, hesab\u0131n\u0131zla ilgili temel bilgileri (e-posta, UUID, vb.) g\u00f6stermelidir.<\/p>\n<h3>Birden Fazla Hesap veya Ba\u011flam (Context) Y\u00f6netimi<\/h3>\n<p>E\u011fer birden fazla DigitalOcean hesab\u0131 y\u00f6netiyorsan\u0131z veya farkl\u0131 projeler i\u00e7in farkl\u0131 API belirte\u00e7leri kullanman\u0131z gerekiyorsa, <code>doctl<\/code> ba\u011flam (context) \u00f6zelli\u011fini kullanabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">doctl auth init --context my-project-context<\/code><\/pre>\n<p>Bu komut, yeni bir ba\u011flam olu\u015fturur ve bu ba\u011flam i\u00e7in API belirtecini girmenizi ister. Ba\u011flamlar aras\u0131nda ge\u00e7i\u015f yapmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">doctl auth switch --context my-project-context<\/code><\/pre>\n<p>Mevcut ba\u011flamlar\u0131 listelemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">doctl auth list<\/code><\/pre>\n<h2>Temel Doctl Kullan\u0131m\u0131 ve Komut Yap\u0131s\u0131<\/h2>\n<p><code>doctl<\/code> komutlar\u0131 genellikle <code>doctl <kaynak> <eylem> [parametreler]<\/code> yap\u0131s\u0131n\u0131 takip eder.<\/p>\n<p>*   <code><kaynak><\/code>: Y\u00f6netmek istedi\u011finiz DigitalOcean kayna\u011f\u0131n\u0131 belirtir (\u00f6rne\u011fin, <code>compute droplet<\/code>, <code>compute ssh-key<\/code>, <code>kubernetes cluster<\/code>).<br \/>\n*   <code><eylem><\/code>: Kaynak \u00fczerinde yapmak istedi\u011finiz i\u015flemi belirtir (\u00f6rne\u011fin, <code>list<\/code>, <code>create<\/code>, <code>get<\/code>, <code>delete<\/code>).<br \/>\n*   <code>[parametreler]<\/code>: Eylemi \u00f6zelle\u015ftirmek i\u00e7in kullan\u0131lan iste\u011fe ba\u011fl\u0131 bayraklard\u0131r (\u00f6rne\u011fin, <code>--region<\/code>, <code>--image<\/code>, <code>--size<\/code>).<\/p>\n<h3>Yard\u0131m Alma<\/h3>\n<p>Herhangi bir komut veya alt komut hakk\u0131nda yard\u0131m almak i\u00e7in <code>--help<\/code> bayra\u011f\u0131n\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">doctl --help             # Genel yard\u0131m\ndoctl compute --help     # Compute hizmetleri hakk\u0131nda yard\u0131m\ndoctl compute droplet --help # Droplet komutlar\u0131 hakk\u0131nda yard\u0131m\ndoctl compute droplet create --help # Droplet olu\u015fturma komutu hakk\u0131nda yard\u0131m<\/code><\/pre>\n<h3>\u00c7\u0131kt\u0131 Formatlar\u0131<\/h3>\n<p><code>doctl<\/code> komutlar\u0131n\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 farkl\u0131 formatlarda alabilirsiniz. Bu, \u00f6zellikle betik yazarken ve programatik olarak veri i\u015flerken faydal\u0131d\u0131r.<\/p>\n<p>*   <strong>Tablo (varsay\u0131lan):<\/strong> \u0130nsan taraf\u0131ndan okunabilir, s\u00fctunlu \u00e7\u0131kt\u0131.<br \/>\n*   <strong>JSON:<\/strong> Makine taraf\u0131ndan okunabilir JSON format\u0131nda \u00e7\u0131kt\u0131. <code>--output json<\/code> bayra\u011f\u0131n\u0131 kullan\u0131n.<br \/>\n*   <strong>YAML:<\/strong> Makine taraf\u0131ndan okunabilir YAML format\u0131nda \u00e7\u0131kt\u0131. <code>--output yaml<\/code> bayra\u011f\u0131n\u0131 kullan\u0131n.<\/p>\n<p>\u00d6rnek:<\/p>\n<pre><code class=\"language-bash\">doctl compute droplet list --output json<\/code><\/pre>\n<h2>DigitalOcean Kaynaklar\u0131n\u0131 Y\u00f6netme<\/h2>\n<p>\u015eimdi <code>doctl<\/code> ile en yayg\u0131n DigitalOcean kaynaklar\u0131n\u0131 nas\u0131l y\u00f6netece\u011finize dair \u00f6rneklere ge\u00e7elim.<\/p>\n<h3>Droplet&#8217;ler (Sanal Sunucular)<\/h3>\n<p>Droplet&#8217;ler, DigitalOcean&#8217;\u0131n temel sanal sunucu hizmetidir.<\/p>\n<h4>Droplet&#8217;leri Listeleme<\/h4>\n<p>T\u00fcm Droplet&#8217;lerinizi listeler:<\/p>\n<pre><code class=\"language-bash\">doctl compute droplet list<\/code><\/pre>\n<p>Belirli s\u00fctunlar\u0131 se\u00e7erek daha d\u00fczenli bir \u00e7\u0131kt\u0131 alabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">doctl compute droplet list --format ID,Name,PublicIPv4,Region,Status<\/code><\/pre>\n<h4>Yeni Droplet Olu\u015fturma<\/h4>\n<p>Bir Droplet olu\u015fturmak i\u00e7in en az\u0131ndan bir b\u00f6lge (region), bir g\u00f6r\u00fcnt\u00fc (image) ve bir boyut (size) belirtmeniz gerekir. Ayr\u0131ca SSH anahtarlar\u0131n\u0131 da eklemek isteyeceksiniz.<\/p>\n<p>1.  <strong>Mevcut G\u00f6r\u00fcnt\u00fcleri Listeleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute image list --public --format ID,Slug,Distribution,Name<\/code><\/pre>\n<p>    Pop\u00fcler bir Ubuntu g\u00f6r\u00fcnt\u00fcs\u00fc i\u00e7in <code>ubuntu-22-04-x64<\/code> gibi bir slug kullanabilirsiniz.<\/p>\n<p>2.  <strong>Mevcut Boyutlar\u0131 Listeleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute size list --format Slug,Memory,VCPUs,Disk,PriceMonthly<\/code><\/pre>\n<p>    \u00d6rne\u011fin, <code>s-1vcpu-1gb<\/code> gibi bir slug kullanabilirsiniz.<\/p>\n<p>3.  <strong>Mevcut SSH Anahtarlar\u0131n\u0131 Listeleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute ssh-key list --format ID,Name,Fingerprint<\/code><\/pre>\n<p>    Daha \u00f6nce ekledi\u011finiz SSH anahtar\u0131n\u0131n ad\u0131n\u0131 veya parmak izini kullan\u0131n. E\u011fer eklemediyseniz, \u00f6nce eklemeniz gerekecektir (a\u015fa\u011f\u0131daki SSH Anahtarlar\u0131 b\u00f6l\u00fcm\u00fcne bak\u0131n).<\/p>\n<p>4.  <strong>Droplet Olu\u015fturma Komutu:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute droplet create my-web-server \\\n      --region nyc1 \\\n      --image ubuntu-22-04-x64 \\\n      --size s-1vcpu-1gb \\\n      --ssh-keys \"your-ssh-key-name\" \\\n      --user-data \"#cloud-config\\npackages:\\n  - nginx\" \\\n      --tag web-server,production<\/code><\/pre>\n<p>    *   <code>my-web-server<\/code>: Droplet&#8217;in ad\u0131.<br \/>\n    *   <code>--region nyc1<\/code>: New York 1 b\u00f6lgesinde olu\u015fturur.<br \/>\n    *   <code>--image ubuntu-22-04-x64<\/code>: Ubuntu 22.04 kullan\u0131r.<br \/>\n    *   <code>--size s-1vcpu-1gb<\/code>: 1 vCPU, 1GB RAM boyutunu kullan\u0131r.<br \/>\n    *   <code>--ssh-keys \"your-ssh-key-name\"<\/code>: Droplet&#8217;e ba\u011flanmak i\u00e7in kullan\u0131lacak SSH anahtar\u0131n\u0131n ad\u0131. Birden fazla anahtar i\u00e7in virg\u00fclle ay\u0131rabilirsiniz.<br \/>\n    *   <code>--user-data<\/code>: Droplet ba\u015flat\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lacak cloud-init beti\u011fi. Bu \u00f6rnekte Nginx kurar.<br \/>\n    *   <code>--tag web-server,production<\/code>: Droplet&#8217;e etiketler ekler.<\/p>\n<h4>Droplet Detaylar\u0131n\u0131 G\u00f6r\u00fcnt\u00fcleme<\/h4>\n<p>Belirli bir Droplet&#8217;in detaylar\u0131n\u0131 ID veya ad\u0131 ile g\u00f6r\u00fcnt\u00fcleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">doctl compute droplet get my-web-server\n<h2>veya<\/h2>\ndoctl compute droplet get <droplet-id><\/code><\/pre>\n<h4>Droplet Eylemleri<\/h4>\n<p>Droplet&#8217;ler \u00fczerinde \u00e7e\u015fitli eylemler ger\u00e7ekle\u015ftirebilirsiniz:<\/p>\n<p>*   <strong>Yeniden Ba\u015flatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute droplet reboot my-web-server<\/code><\/pre>\n<p>*   <strong>Kapatma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute droplet power off my-web-server<\/code><\/pre>\n<p>*   <strong>A\u00e7ma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute droplet power on my-web-server<\/code><\/pre>\n<p>*   <strong>Yeniden Boyutland\u0131rma:<\/strong> (\u00d6nce Droplet&#8217;i kapatman\u0131z gerekebilir)<\/p>\n<pre><code class=\"language-bash\">doctl compute droplet-action resize my-web-server --size s-2vcpu-2gb --disk<\/code><\/pre>\n<p>    <code>--disk<\/code> bayra\u011f\u0131, disk boyutunun da yeni boyuta g\u00f6re ayarlanmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>*   <strong>Anl\u0131k G\u00f6r\u00fcnt\u00fc (Snapshot) Olu\u015fturma:<\/strong> (\u00d6nce Droplet&#8217;i kapatman\u0131z \u00f6nerilir)<\/p>\n<pre><code class=\"language-bash\">doctl compute droplet-action snapshot my-web-server --name my-web-server-snapshot-$(date +%F)<\/code><\/pre>\n<h4>Droplet&#8217;i Silme<\/h4>\n<p>Bir Droplet&#8217;i silmek i\u00e7in ID veya ad\u0131n\u0131 kullan\u0131n. <strong>Bu i\u015flem geri al\u0131namaz!<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute droplet delete my-web-server --force<\/code><\/pre>\n<p><code>--force<\/code> bayra\u011f\u0131, onay istemini atlar. Dikkatli kullan\u0131n.<\/p>\n<h3>SSH Anahtarlar\u0131<\/h3>\n<p>SSH anahtarlar\u0131, Droplet&#8217;lerinize g\u00fcvenli bir \u015fekilde eri\u015fmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>SSH Anahtarlar\u0131n\u0131 Listeleme<\/h4>\n<pre><code class=\"language-bash\">doctl compute ssh-key list<\/code><\/pre>\n<h4>Yeni SSH Anahtar\u0131 Ekleme<\/h4>\n<p>Genellikle yerel makinenizde <code>ssh-keygen<\/code> ile bir anahtar olu\u015fturursunuz, ard\u0131ndan genel anahtar\u0131n\u0131z\u0131 DigitalOcean&#8217;a eklersiniz.<\/p>\n<pre><code class=\"language-bash\"># Yerel makinenizde SSH anahtar\u0131 olu\u015fturma (e\u011fer yoksa)\nssh-keygen -t rsa -b 4096 -f ~\/.ssh\/id_rsa_do -C \"my-do-key\"\n\n<h2>Genel anahtar\u0131 DigitalOcean'a ekleme<\/h2>\ndoctl compute ssh-key create \"my-do-key\" --public-key \"$(cat ~\/.ssh\/id_rsa_do.pub)\"<\/code><\/pre>\n<h4>SSH Anahtar\u0131n\u0131 Silme<\/h4>\n<pre><code class=\"language-bash\">doctl compute ssh-key delete \"my-do-key\"<\/code><\/pre>\n<h3>Volumes (Blok Depolama)<\/h3>\n<p>Volumes, Droplet&#8217;lerinize takabilece\u011finiz ve ay\u0131rabilece\u011finiz \u00f6l\u00e7eklenebilir blok depolama birimleridir.<\/p>\n<h4>Volumes&#8217;lar\u0131 Listeleme<\/h4>\n<pre><code class=\"language-bash\">doctl compute volume list<\/code><\/pre>\n<h4>Volume Olu\u015fturma<\/h4>\n<pre><code class=\"language-bash\">doctl compute volume create my-data-volume \\\n  --region nyc1 \\\n  --size 100GiB \\\n  --desc \"Veritaban\u0131 i\u00e7in veri depolama\"<\/code><\/pre>\n<h4>Volume&#8217;u Droplet&#8217;e Ekleme<\/h4>\n<pre><code class=\"language-bash\">doctl compute volume attach my-data-volume --droplet my-web-server<\/code><\/pre>\n<h4>Volume&#8217;u Droplet&#8217;ten Ay\u0131rma<\/h4>\n<pre><code class=\"language-bash\">doctl compute volume detach my-data-volume --droplet my-web-server<\/code><\/pre>\n<h4>Volume&#8217;u Silme<\/h4>\n<pre><code class=\"language-bash\">doctl compute volume delete my-data-volume --force<\/code><\/pre>\n<h3>Firewalls (G\u00fcvenlik Duvarlar\u0131)<\/h3>\n<p>G\u00fcvenlik duvarlar\u0131, Droplet&#8217;lerinizin gelen ve giden trafi\u011fini kontrol etmenizi sa\u011flar.<\/p>\n<h4>G\u00fcvenlik Duvarlar\u0131n\u0131 Listeleme<\/h4>\n<pre><code class=\"language-bash\">doctl compute firewall list<\/code><\/pre>\n<h4>Yeni G\u00fcvenlik Duvar\u0131 Olu\u015fturma<\/h4>\n<pre><code class=\"language-bash\">doctl compute firewall create \\\n  --name \"web-server-fw\" \\\n  --inbound-rules protocol:tcp,ports:22,sources:0.0.0.0\/0,::\/0 \\\n  --inbound-rules protocol:tcp,ports:80,sources:0.0.0.0\/0,::\/0 \\\n  --inbound-rules protocol:tcp,ports:443,sources:0.0.0.0\/0,::\/0 \\\n  --outbound-rules protocol:all,destinations:0.0.0.0\/0,::\/0 \\\n  --droplet-ids $(doctl compute droplet list --format ID --no-header)<\/code><\/pre>\n<p>Bu \u00f6rnek, t\u00fcm Droplet&#8217;lere (mevcut olanlara) SSH, HTTP ve HTTPS eri\u015fimine izin veren bir g\u00fcvenlik duvar\u0131 olu\u015fturur. <code>--droplet-ids<\/code> k\u0131sm\u0131nda, t\u00fcm mevcut Droplet&#8217;lerin ID&#8217;lerini otomatik olarak alacak bir alt komut kullan\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h4>G\u00fcvenlik Duvar\u0131 Detaylar\u0131n\u0131 G\u00f6r\u00fcnt\u00fcleme<\/h4>\n<pre><code class=\"language-bash\">doctl compute firewall get web-server-fw<\/code><\/pre>\n<h4>G\u00fcvenlik Duvar\u0131na Droplet Ekleme\/\u00c7\u0131karma<\/h4>\n<pre><code class=\"language-bash\"># Droplet ekleme\ndoctl compute firewall add-droplets web-server-fw --droplet-ids <droplet-id>\n\n<h2>Droplet \u00e7\u0131karma<\/h2>\ndoctl compute firewall remove-droplets web-server-fw --droplet-ids <droplet-id><\/code><\/pre>\n<h4>G\u00fcvenlik Duvar\u0131n\u0131 Silme<\/h4>\n<pre><code class=\"language-bash\">doctl compute firewall delete web-server-fw --force<\/code><\/pre>\n<h3>Load Balancers (Y\u00fck Dengeleyiciler)<\/h3>\n<p>Y\u00fck dengeleyiciler, gelen a\u011f trafi\u011fini birden fazla Droplet aras\u0131nda da\u011f\u0131tarak uygulaman\u0131z\u0131n \u00f6l\u00e7eklenebilirli\u011fini ve kullan\u0131labilirli\u011fini art\u0131r\u0131r.<\/p>\n<h4>Y\u00fck Dengeleyicileri Listeleme<\/h4>\n<pre><code class=\"language-bash\">doctl compute load-balancer list<\/code><\/pre>\n<h4>Y\u00fck Dengeleyici Olu\u015fturma<\/h4>\n<pre><code class=\"language-bash\">doctl compute load-balancer create \\\n  --name \"my-app-lb\" \\\n  --region nyc1 \\\n  --forwarding-rules entry_protocol:http,entry_port:80,target_protocol:http,target_port:80 \\\n  --droplet-ids $(doctl compute droplet list --format ID --no-header --tag web-server)<\/code><\/pre>\n<p>Bu \u00f6rnek, <code>web-server<\/code> etiketine sahip t\u00fcm Droplet&#8217;lere trafi\u011fi y\u00f6nlendiren bir HTTP y\u00fck dengeleyici olu\u015fturur.<\/p>\n<h4>Y\u00fck Dengeleyiciye Droplet Ekleme\/\u00c7\u0131karma<\/h4>\n<pre><code class=\"language-bash\"># Droplet ekleme\ndoctl compute load-balancer add-droplets my-app-lb --droplet-ids <droplet-id>\n\n<h2>Droplet \u00e7\u0131karma<\/h2>\ndoctl compute load-balancer remove-droplets my-app-lb --droplet-ids <droplet-id><\/code><\/pre>\n<h4>Y\u00fck Dengeleyiciyi Silme<\/h4>\n<pre><code class=\"language-bash\">doctl compute load-balancer delete my-app-lb --force<\/code><\/pre>\n<h3>Kubernetes (DigitalOcean Kubernetes &#8211; DOKS)<\/h3>\n<p>DigitalOcean Kubernetes, y\u00f6netilen bir Kubernetes hizmetidir.<\/p>\n<h4>Kubernetes K\u00fcmelerini Listeleme<\/h4>\n<pre><code class=\"language-bash\">doctl kubernetes cluster list<\/code><\/pre>\n<h4>Kubernetes K\u00fcmesi Olu\u015fturma<\/h4>\n<pre><code class=\"language-bash\">doctl kubernetes cluster create my-k8s-cluster \\\n  --region nyc1 \\\n  --version 1.28.2-do.0 \\\n  --node-pool name=worker-pool,size=s-2vcpu-2gb,count=3<\/code><\/pre>\n<p>*   <code>my-k8s-cluster<\/code>: K\u00fcmenin ad\u0131.<br \/>\n*   <code>--version<\/code>: Kubernetes s\u00fcr\u00fcm\u00fc. <code>doctl kubernetes options versions<\/code> ile mevcut s\u00fcr\u00fcmleri g\u00f6rebilirsiniz.<br \/>\n*   <code>--node-pool<\/code>: D\u00fc\u011f\u00fcm havuzu yap\u0131land\u0131rmas\u0131 (ad\u0131, boyutu, say\u0131s\u0131).<\/p>\n<h4>Kubeconfig Dosyas\u0131n\u0131 Kaydetme<\/h4>\n<p>Bir k\u00fcmeye <code>kubectl<\/code> ile ba\u011flanabilmek i\u00e7in kubeconfig dosyas\u0131n\u0131 kaydetmeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">doctl kubernetes cluster kubeconfig save my-k8s-cluster<\/code><\/pre>\n<p>Bu komut, <code>~\/.kube\/config<\/code> dosyan\u0131z\u0131 g\u00fcncelleyecek ve <code>kubectl<\/code>&#8216;u bu k\u00fcmeye i\u015faret edecektir.<\/p>\n<h4>Kubernetes K\u00fcmesini Silme<\/h4>\n<pre><code class=\"language-bash\">doctl kubernetes cluster delete my-k8s-cluster --force<\/code><\/pre>\n<h3>Databases (Y\u00f6netilen Veritabanlar\u0131)<\/h3>\n<p>DigitalOcean, y\u00f6netilen PostgreSQL, MySQL, Redis ve MongoDB veritabanlar\u0131 sunar.<\/p>\n<h4>Veritabanlar\u0131n\u0131 Listeleme<\/h4>\n<pre><code class=\"language-bash\">doctl databases list<\/code><\/pre>\n<h4>Veritaban\u0131 K\u00fcmesi Olu\u015fturma<\/h4>\n<pre><code class=\"language-bash\">doctl databases create my-postgres-db \\\n  --engine pg \\\n  --version 15 \\\n  --region nyc1 \\\n  --size db-s-1vcpu-1gb \\\n  --num-nodes 1 \\\n  --tag database<\/code><\/pre>\n<p>*   <code>--engine pg<\/code>: PostgreSQL i\u00e7in. Di\u011fer se\u00e7enekler <code>mysql<\/code>, <code>redis<\/code>, <code>mongodb<\/code>.<br \/>\n*   <code>--size<\/code>: Veritaban\u0131 boyutu. <code>doctl databases options sizes --engine pg<\/code> ile mevcut boyutlar\u0131 g\u00f6rebilirsiniz.<\/p>\n<h4>Veritaban\u0131 Ba\u011flant\u0131 Bilgilerini Alma<\/h4>\n<pre><code class=\"language-bash\">doctl databases get my-postgres-db --output json<\/code><\/pre>\n<p>Bu \u00e7\u0131kt\u0131dan <code>connection.uri<\/code> veya di\u011fer ba\u011flant\u0131 bilgilerini alabilirsiniz.<\/p>\n<h4>Veritaban\u0131n\u0131 Silme<\/h4>\n<pre><code class=\"language-bash\">doctl databases delete my-postgres-db --force<\/code><\/pre>\n<h3>Spaces (Nesne Depolama)<\/h3>\n<p>DigitalOcean Spaces, S3 uyumlu nesne depolama hizmetidir.<\/p>\n<h4>Spaces&#8217;leri Listeleme (Kovalar\u0131)<\/h4>\n<pre><code class=\"language-bash\">doctl spaces list<\/code><\/pre>\n<h4>Yeni Space (Kova) Olu\u015fturma<\/h4>\n<pre><code class=\"language-bash\">doctl spaces create my-static-website-bucket --region nyc3 --acl public-read<\/code><\/pre>\n<h4>Spaces Eri\u015fim Anahtarlar\u0131n\u0131 Y\u00f6netme<\/h4>\n<p>Spaces&#8217;e programatik olarak eri\u015fmek i\u00e7in eri\u015fim anahtarlar\u0131na ihtiyac\u0131n\u0131z vard\u0131r. Bunlar, DigitalOcean API belirtecinizden farkl\u0131d\u0131r.<\/p>\n<p>*   <strong>Eri\u015fim Anahtarlar\u0131n\u0131 Listeleme:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl spaces access-key list<\/code><\/pre>\n<p>*   <strong>Yeni Eri\u015fim Anahtar\u0131 Olu\u015fturma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl spaces access-key create my-app-space-key<\/code><\/pre>\n<p>    Bu komut, bir <code>Access Key<\/code> ve bir <code>Secret Key<\/code> d\u00f6nd\u00fcrecektir. <code>Secret Key<\/code> sadece bir kez g\u00f6sterilir, bu y\u00fczden g\u00fcvenli bir \u015fekilde saklay\u0131n.<br \/>\n*   <strong>Eri\u015fim Anahtar\u0131n\u0131 Silme:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl spaces access-key delete <access-key-id><\/code><\/pre>\n<p><code>doctl<\/code> do\u011frudan dosya y\u00fckleme\/indirme i\u015flevselli\u011fi sunmaz, ancak olu\u015fturdu\u011funuz eri\u015fim anahtarlar\u0131 ile <code>s3cmd<\/code> veya <code>aws cli<\/code> gibi S3 uyumlu ara\u00e7lar\u0131 kullanabilirsiniz.<\/p>\n<h2>Geli\u015fmi\u015f Doctl \u00d6zellikleri ve \u0130pu\u00e7lar\u0131<\/h2>\n<h3>Betik Yaz\u0131m\u0131 ve Otomasyon<\/h3>\n<p><code>doctl<\/code>&#8216;un en g\u00fc\u00e7l\u00fc y\u00f6nlerinden biri, betik yaz\u0131m\u0131 i\u00e7in uygun olmas\u0131d\u0131r. JSON \u00e7\u0131kt\u0131s\u0131n\u0131 <code>jq<\/code> gibi ara\u00e7larla birle\u015ftirerek karma\u015f\u0131k otomasyon g\u00f6revleri olu\u015fturabilirsiniz.<\/p>\n<p><strong>\u00d6rnek: Belirli bir etikete sahip t\u00fcm Droplet&#8217;lerin IP adreslerini alma:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl compute droplet list --format ID,Name,PublicIPv4,Tags --output json | \\\n  jq -r '.[] | select(.Tags | contains([\"web-server\"])) | .PublicIPv4'<\/code><\/pre>\n<h3>Yap\u0131land\u0131rma Dosyas\u0131<\/h3>\n<p><code>doctl<\/code>&#8216;un yap\u0131land\u0131rma dosyas\u0131 genellikle <code>~\/.config\/doctl\/config.yaml<\/code> konumunda bulunur. Bu dosyay\u0131 elle d\u00fczenleyerek varsay\u0131lan ba\u011flam\u0131n\u0131z\u0131 veya di\u011fer ayarlar\u0131 de\u011fi\u015ftirebilirsiniz.<\/p>\n<h3>Sayfalama (Pagination)<\/h3>\n<p>\u00c7ok say\u0131da kayna\u011f\u0131n\u0131z varsa, <code>doctl<\/code> komutlar\u0131 varsay\u0131lan olarak belirli bir say\u0131da \u00f6\u011fe d\u00f6nd\u00fcr\u00fcr. T\u00fcm \u00f6\u011feleri almak i\u00e7in <code>--all<\/code> bayra\u011f\u0131n\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">doctl compute droplet list --all<\/code><\/pre>\n<p>Belirli sayfalar\u0131 veya sayfa ba\u015f\u0131na \u00f6\u011fe say\u0131s\u0131n\u0131 kontrol etmek i\u00e7in <code>--page<\/code> ve <code>--per-page<\/code> bayraklar\u0131n\u0131 kullanabilirsiniz.<\/p>\n<h3>Filtreleme ve S\u0131ralama<\/h3>\n<p>Baz\u0131 <code>doctl<\/code> komutlar\u0131, <code>--tag<\/code> veya <code>--region<\/code> gibi bayraklarla filtreleme yapman\u0131za olanak tan\u0131r. \u00c7o\u011fu komutun \u00e7\u0131kt\u0131s\u0131n\u0131 <code>grep<\/code>, <code>awk<\/code>, <code>jq<\/code> gibi standart Linux ara\u00e7lar\u0131yla daha da i\u015fleyebilirsiniz.<\/p>\n<h2>Sorun Giderme<\/h2>\n<p>*   <strong>&#8220;Error: Unable to authenticate you.&#8221;<\/strong>: API belirteciniz yanl\u0131\u015f, s\u00fcresi dolmu\u015f veya yetersiz izinlere sahip olabilir. Yeni bir belirte\u00e7 olu\u015fturup <code>doctl auth init<\/code> ile tekrar deneyin.<br \/>\n*   <strong>&#8220;Error: GET https:\/\/api.digitalocean.com\/v2\/&#8230;&#8221;<\/strong>: Genellikle a\u011f ba\u011flant\u0131s\u0131 sorunlar\u0131 veya API hizmetinde ge\u00e7ici bir kesinti anlam\u0131na gelir. \u0130nternet ba\u011flant\u0131n\u0131z\u0131 kontrol edin veya DigitalOcean&#8217;\u0131n durum sayfas\u0131n\u0131 kontrol edin.<br \/>\n*   <strong>Komut Bulunamad\u0131<\/strong>: <code>doctl<\/code>&#8216;un PATH&#8217;inizde do\u011fru \u015fekilde ayarland\u0131\u011f\u0131ndan emin olun. <code>doctl version<\/code> komutu \u00e7al\u0131\u015fm\u0131yorsa, kurulumu tekrar kontrol edin.<br \/>\n*   <strong>Yanl\u0131\u015f Parametreler<\/strong>: Her zaman bir komutun <code>--help<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 kontrol edin. Bayraklar\u0131n do\u011fru kullan\u0131ld\u0131\u011f\u0131ndan ve gerekli t\u00fcm parametrelerin sa\u011fland\u0131\u011f\u0131ndan emin olun.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p><code>doctl<\/code>, DigitalOcean altyap\u0131n\u0131z\u0131 komut sat\u0131r\u0131ndan y\u00f6netmek i\u00e7in paha bi\u00e7ilmez bir ara\u00e7t\u0131r. Kurulumu basit, kullan\u0131m\u0131 esnek ve otomasyon senaryolar\u0131 i\u00e7in son derece g\u00fc\u00e7l\u00fcd\u00fcr. Droplet&#8217;lerden Kubernetes k\u00fcmelerine, veritabanlar\u0131ndan depolama alanlar\u0131na kadar DigitalOcean&#8217;\u0131n sundu\u011fu hemen hemen her hizmeti <code>doctl<\/code> arac\u0131l\u0131\u011f\u0131yla y\u00f6netebilirsiniz.<\/p>\n<p>Bu makalede ele al\u0131nan temel komutlar ve \u00f6rnekler, <code>doctl<\/code> ile DigitalOcean&#8217;daki varl\u0131klar\u0131n\u0131z\u0131 etkin bir \u015fekilde y\u00f6netmeye ba\u015flaman\u0131z i\u00e7in sa\u011flam bir temel olu\u015fturmaktad\u0131r. Daha karma\u015f\u0131k senaryolar i\u00e7in <code>doctl<\/code>&#8216;un kapsaml\u0131 yard\u0131m \u00e7\u0131kt\u0131lar\u0131n\u0131 ve DigitalOcean&#8217;\u0131n resmi belgelerini incelemeniz \u015fiddetle tavsiye edilir. Komut sat\u0131r\u0131n\u0131n g\u00fcc\u00fcn\u00fc ke\u015ffederek, bulut altyap\u0131s\u0131 y\u00f6netimi s\u00fcre\u00e7lerinizi h\u0131zland\u0131rabilir ve otomatikle\u015ftirebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek\nG\u00fcn\u00fcm\u00fcz bulut bili\u015fim d\u00fcnyas\u0131nda, altyap\u0131 y\u00f6netimi giderek daha karma\u015f\u0131k h","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":[1],"tags":[],"class_list":{"0":"post-30327","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek - 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\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek\" \/>\n<meta property=\"og:description\" content=\"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek G\u00fcn\u00fcm\u00fcz bulut bili\u015fim d\u00fcnyas\u0131nda, altyap\u0131 y\u00f6netimi giderek daha karma\u015f\u0131k h\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-26T14:20:11+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek\",\"datePublished\":\"2025-09-26T14:20:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/\"},\"wordCount\":2381,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/\",\"name\":\"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-26T14:20:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek\"}]},{\"@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":"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek - 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\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/","og_locale":"tr_TR","og_type":"article","og_title":"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek","og_description":"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek G\u00fcn\u00fcm\u00fcz bulut bili\u015fim d\u00fcnyas\u0131nda, altyap\u0131 y\u00f6netimi giderek daha karma\u015f\u0131k h","og_url":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-26T14:20:11+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek","datePublished":"2025-09-26T14:20:11+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/"},"wordCount":2381,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/","url":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/","name":"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-26T14:20:11+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/doctl-nedir-dijital-altyapinizi-komut-satirindan-yonetmek\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Doctl Nedir? Dijital Altyap\u0131n\u0131z\u0131 Komut Sat\u0131r\u0131ndan Y\u00f6netmek"}]},{"@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\/30327","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=30327"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30327\/revisions"}],"predecessor-version":[{"id":30328,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30327\/revisions\/30328"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}