{"id":42252,"date":"2026-06-02T17:00:58","date_gmt":"2026-06-02T14:00:58","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=42252"},"modified":"2026-06-02T17:00:58","modified_gmt":"2026-06-02T14:00:58","slug":"concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/","title":{"rendered":"Concourse CI&#8217;\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi"},"content":{"rendered":"<h2>Concourse CI&#8217;\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi<\/h2>\n<p>S\u00fcrekli Entegrasyon (CI) ve S\u00fcrekli Teslimat (CD) s\u00fcre\u00e7leri, modern yaz\u0131l\u0131m geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir. Concourse CI, bu s\u00fcre\u00e7leri otomatikle\u015ftirmek i\u00e7in tasarlanm\u0131\u015f, a\u00e7\u0131k kaynakl\u0131, container tabanl\u0131 ve g\u00f6rsel bir CI\/CD sistemidir. Basit, g\u00fc\u00e7l\u00fc ve esnek yap\u0131s\u0131yla karma\u015f\u0131k pipeline&#8217;lar\u0131 bile kolayca y\u00f6netmenizi sa\u011flar. Bu kapsaml\u0131 rehberde, Concourse CI&#8217;\u0131 Ubuntu 16.04 i\u015fletim sistemi \u00fczerine ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve temel yap\u0131land\u0131rmalar\u0131n\u0131 nas\u0131l yapaca\u011f\u0131n\u0131z\u0131 \u00f6\u011freneceksiniz. Ubuntu 16.04, uzun s\u00fcreli destek (LTS) sa\u011flayan ve bir\u00e7ok kurumsal ortamda hala kullan\u0131lan stabil bir platformdur.<\/p>\n<h3>Concourse CI Nedir ve Neden Kullan\u0131l\u0131r?<\/h3>\n<p>Concourse CI, tamamen container tabanl\u0131 bir yakla\u015f\u0131mla \u00e7al\u0131\u015f\u0131r. Her bir g\u00f6rev (task), izole edilmi\u015f bir Docker container&#8217;\u0131 i\u00e7inde \u00e7al\u0131\u015f\u0131r, bu da ortam tutarl\u0131l\u0131\u011f\u0131n\u0131 ve g\u00fcvenilirli\u011fini garanti eder. Concourse&#8217;un temel felsefesi &#8220;her \u015fey bir kaynak (resource) ve her \u015fey bir g\u00f6rev (task)&#8221; \u00fczerine kuruludur. Bu yakla\u015f\u0131m, pipeline&#8217;lar\u0131n\u0131z\u0131 deklaratif bir \u015fekilde tan\u0131mlaman\u0131za olanak tan\u0131r ve her ad\u0131m\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ve \u00e7\u0131kt\u0131lar\u0131n\u0131 net bir \u015fekilde belirtmenizi sa\u011flar.<\/p>\n<p><strong>Concourse CI&#8217;\u0131n Avantajlar\u0131:<\/strong><\/p>\n<p>*   <strong>Container Tabanl\u0131:<\/strong> Her i\u015flem kendi izole container&#8217;\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in ortam ba\u011f\u0131ml\u0131l\u0131klar\u0131ndan kaynaklanan sorunlar ortadan kalkar. Bu, &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; sorununu \u00e7\u00f6zmeye yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Deklaratif Yap\u0131:<\/strong> Pipeline&#8217;lar YAML dosyalar\u0131yla tan\u0131mlan\u0131r, bu da s\u00fcr\u00fcm kontrol sistemlerinde saklanabilmesini ve kolayca y\u00f6netilebilmesini sa\u011flar.<br \/>\n*   <strong>G\u00f6rsel Aray\u00fcz:<\/strong> Pipeline&#8217;lar\u0131n\u0131z\u0131 ve mevcut durumlar\u0131n\u0131 g\u00f6rsel bir aray\u00fczden takip edebilirsiniz. Bu, karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 anlamay\u0131 ve sorunlar\u0131 gidermeyi kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Esneklik:<\/strong> Geni\u015f bir kaynak (resource) t\u00fcr\u00fc yelpazesi sunar (Git, Docker Image, S3, vb.) ve kendi \u00f6zel kaynak t\u00fcrlerinizi olu\u015fturman\u0131za olanak tan\u0131r.<br \/>\n*   <strong>\u00d6l\u00e7eklenebilirlik:<\/strong> \u0130htiya\u00e7 duyuldu\u011funda ek worker&#8217;lar ekleyerek sistemi kolayca \u00f6l\u00e7eklendirebilirsiniz.<br \/>\n*   <strong>Tekrarlanabilirlik:<\/strong> Container tabanl\u0131 yap\u0131s\u0131 sayesinde her \u00e7al\u0131\u015ft\u0131rma ayn\u0131 ortamda ger\u00e7ekle\u015fir ve bu da tekrarlanabilir sonu\u00e7lar elde edilmesini sa\u011flar.<\/p>\n<p>Bu rehber, Concourse&#8217;u tek bir Ubuntu 16.04 sunucusu \u00fczerinde <code>docker-compose<\/code> kullanarak kurmaya odaklanacakt\u0131r. Bu y\u00f6ntem, geli\u015ftirme ortamlar\u0131, k\u00fc\u00e7\u00fck tak\u0131mlar veya Concourse&#8217;u denemek isteyenler i\u00e7in idealdir. \u00dcretim ortamlar\u0131 i\u00e7in genellikle BOSH gibi daha geli\u015fmi\u015f da\u011f\u0131t\u0131m ara\u00e7lar\u0131 veya Kubernetes entegrasyonlar\u0131 tercih edilir.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Concourse CI&#8217;\u0131 Ubuntu 16.04 \u00fczerine kurmadan \u00f6nce baz\u0131 temel \u00f6n gereksinimleri kar\u015f\u0131laman\u0131z gerekmektedir.<\/p>\n<h4>Ubuntu 16.04 Sunucusu<\/h4>\n<p>*   Minimum 2 CPU \u00e7ekirde\u011fi (tercihen 4+)<br \/>\n*   Minimum 4 GB RAM (tercihen 8 GB+)<br \/>\n*   Minimum 20 GB disk alan\u0131 (build&#8217;ler i\u00e7in daha fazlas\u0131 gerekebilir)<br \/>\n*   <code>sudo<\/code> ayr\u0131cal\u0131klar\u0131na sahip bir kullan\u0131c\u0131 hesab\u0131<br \/>\n*   \u0130nternet ba\u011flant\u0131s\u0131<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>Kuruluma ba\u015flamadan \u00f6nce sisteminizin g\u00fcncel oldu\u011fundan emin olun. Bu, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r ve paket uyumlulu\u011funu sa\u011flar.<\/p>\n<pre><code>\nsudo apt update\nsudo apt upgrade -y\nsudo apt dist-upgrade -y\nsudo reboot # Gerekliyse sistemi yeniden ba\u015flat\u0131n\n<\/code><\/pre>\n<h4>Docker Kurulumu<\/h4>\n<p>Concourse CI, container tabanl\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in Docker&#8217;a ihtiya\u00e7 duyar. Ubuntu 16.04 i\u00e7in Docker CE (Community Edition) kurulumunu ger\u00e7ekle\u015ftirece\u011fiz.<\/p>\n<p>1.  <strong>Gerekli Paketleri Y\u00fckleme:<\/strong><\/p>\n<pre><code>\n    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common\n    <\/code><\/pre>\n<p>2.  <strong>Docker GPG Anahtar\u0131n\u0131 Ekleme:<\/strong><\/p>\n<pre><code>\n    curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -\n    <\/code><\/pre>\n<p>3.  <strong>Docker APT Deposunu Ekleme:<\/strong><\/p>\n<pre><code>\n    sudo add-apt-repository \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu xenial stable\"\n    <\/code><\/pre>\n<p>4.  <strong>APT Paket \u0130ndeksini G\u00fcncelleme:<\/strong><\/p>\n<pre><code>\n    sudo apt update\n    <\/code><\/pre>\n<p>5.  <strong>Docker CE Kurulumu:<\/strong><\/p>\n<pre><code>\n    sudo apt install -y docker-ce\n    <\/code><\/pre>\n<p>6.  <strong>Docker Servisini Ba\u015flatma ve Etkinle\u015ftirme:<\/strong><br \/>\n    Docker genellikle kurulumdan sonra otomatik olarak ba\u015flar. Durumunu kontrol edebilir ve etkinle\u015ftirebilirsiniz:<\/p>\n<pre><code>\n    sudo systemctl status docker\n    sudo systemctl enable docker\n    <\/code><\/pre>\n<p>7.  <strong>Kullan\u0131c\u0131y\u0131 Docker Grubuna Ekleme (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir):<\/strong><br \/>\n    <code>sudo<\/code> kullanmadan Docker komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131c\u0131n\u0131z\u0131 <code>docker<\/code> grubuna ekleyin. De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in oturumu kapat\u0131p tekrar a\u00e7man\u0131z veya sistemi yeniden ba\u015flatman\u0131z gerekebilir.<\/p>\n<pre><code>\n    sudo usermod -aG docker $USER\n    <\/code><\/pre>\n<p>8.  <strong>Docker Kurulumunu Test Etme:<\/strong><\/p>\n<pre><code>\n    docker run hello-world\n    <\/code><\/pre>\n<p>    Bu komut, Docker&#8217;\u0131n do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6steren bir test container&#8217;\u0131 \u00e7al\u0131\u015ft\u0131racakt\u0131r.<\/p>\n<h4>Docker Compose Kurulumu<\/h4>\n<p>Concourse&#8217;un birden fazla servisten (web, worker, veritaban\u0131) olu\u015fmas\u0131 nedeniyle, bunlar\u0131 y\u00f6netmek i\u00e7in Docker Compose kullanaca\u011f\u0131z.<\/p>\n<p>1.  <strong>Docker Compose \u0130ndirme:<\/strong><br \/>\n    En g\u00fcncel s\u00fcr\u00fcm\u00fc Docker Compose GitHub sayfas\u0131ndan kontrol edin. A\u015fa\u011f\u0131daki \u00f6rnekte 1.29.2 s\u00fcr\u00fcm\u00fc kullan\u0131lm\u0131\u015ft\u0131r, ancak daha yeni bir s\u00fcr\u00fcm mevcut olabilir.<\/p>\n<pre><code>\n    sudo curl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.29.2\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose\n    <\/code><\/pre>\n<p>2.  <strong>\u00c7al\u0131\u015ft\u0131r\u0131labilir \u0130zinleri Verme:<\/strong><\/p>\n<pre><code>\n    sudo chmod +x \/usr\/local\/bin\/docker-compose\n    <\/code><\/pre>\n<p>3.  <strong>Sembolik Ba\u011flant\u0131 Olu\u015fturma (\u0130ste\u011fe Ba\u011fl\u0131):<\/strong><br \/>\n    Bazen <code>docker-compose<\/code> komutunun sistem genelinde eri\u015filebilir olmas\u0131 i\u00e7in sembolik ba\u011flant\u0131 olu\u015fturmak gerekebilir.<\/p>\n<pre><code>\n    sudo ln -s \/usr\/local\/bin\/docker-compose \/usr\/bin\/docker-compose\n    <\/code><\/pre>\n<p>4.  <strong>Docker Compose Kurulumunu Test Etme:<\/strong><\/p>\n<pre><code>\n    docker-compose --version\n    <\/code><\/pre>\n<p>    Bu komut, y\u00fckl\u00fc Docker Compose s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir.<\/p>\n<h3>Concourse CI Kurulumu<\/h3>\n<p>Concourse CI&#8217;\u0131 <code>docker-compose<\/code> ile kurmak i\u00e7in bir dizi yap\u0131land\u0131rma dosyas\u0131na ve anahtara ihtiyac\u0131m\u0131z olacak.<\/p>\n<h4>1. Concourse Dizinini Olu\u015fturma<\/h4>\n<p>T\u00fcm Concourse dosyalar\u0131n\u0131 bar\u0131nd\u0131racak bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code>\nmkdir ~\/concourse\ncd ~\/concourse\n<\/code><\/pre>\n<h4>2. Kimlik Do\u011frulama Anahtarlar\u0131 Olu\u015fturma<\/h4>\n<p>Concourse, web ve worker bile\u015fenleri aras\u0131nda g\u00fcvenli ileti\u015fimi sa\u011flamak i\u00e7in SSH anahtarlar\u0131 kullan\u0131r. Bu anahtarlar\u0131 olu\u015fturmam\u0131z gerekiyor.<\/p>\n<pre><code>\nmkdir keys\nssh-keygen -t rsa -f .\/keys\/tsa_host_key -N ''\nssh-keygen -t rsa -f .\/keys\/web_key -N ''\nssh-keygen -t rsa -f .\/keys\/worker_key -N ''\ncp .\/keys\/web_key.pub .\/keys\/authorized_worker_keys\ncp .\/keys\/worker_key.pub .\/keys\/authorized_worker_keys\n<\/code><\/pre>\n<p>Bu komutlar \u015funlar\u0131 yapar:<br \/>\n*   <code>keys<\/code> ad\u0131nda bir dizin olu\u015fturur.<br \/>\n*   <code>tsa_host_key<\/code>: TSA (Team Synchronization Agent) i\u00e7in ana bilgisayar anahtar\u0131.<br \/>\n*   <code>web_key<\/code>: Concourse web d\u00fc\u011f\u00fcm\u00fc i\u00e7in anahtar.<br \/>\n*   <code>worker_key<\/code>: Concourse worker d\u00fc\u011f\u00fcm\u00fc i\u00e7in anahtar.<br \/>\n*   <code>authorized_worker_keys<\/code>: Worker&#8217;lar\u0131n web d\u00fc\u011f\u00fcm\u00fcne ba\u011flanmas\u0131na izin veren ortak anahtarlar\u0131 i\u00e7erir.<\/p>\n<h4>3. Docker Compose Yap\u0131land\u0131rma Dosyas\u0131 (docker-compose.yml)<\/h4>\n<p>Concourse web, worker ve PostgreSQL veritaban\u0131 servislerini tan\u0131mlayacak <code>docker-compose.yml<\/code> dosyas\u0131n\u0131 olu\u015ftural\u0131m.<\/p>\n<pre><code>\nnano docker-compose.yml\n<\/code><\/pre>\n<p>Dosya i\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi olmal\u0131d\u0131r:<\/p>\n<pre><code>\nversion: '3.8'\n\nservices:\n  concourse-db:\n    image: postgres:9.6\n    logging:\n      driver: \"json-file\"\n      options:\n        max-size: \"10m\"\n        max-file: \"5\"\n    environment:\n      POSTGRES_DB: concourse\n      POSTGRES_USER: concourse\n      POSTGRES_PASSWORD: changeme\n      PGDATA: \/var\/lib\/postgresql\/data\/pgdata\n    volumes:\n      - concourse-db-data:\/var\/lib\/postgresql\/data\/pgdata\n    ports:\n      - \"5432:5432\" # Sadece test ama\u00e7l\u0131, \u00fcretimde d\u0131\u015far\u0131ya a\u00e7may\u0131n\n    restart: unless-stopped\n\n  concourse-web:\n    image: concourse\/concourse:6.7.0 # Concourse s\u00fcr\u00fcm\u00fcn\u00fc kontrol edin ve g\u00fcncelleyin\n    logging:\n      driver: \"json-file\"\n      options:\n        max-size: \"10m\"\n        max-file: \"5\"\n    command: web\n    ports:\n      - \"8080:8080\"\n    volumes:\n      - .\/keys\/web_key:\/concourse-keys\/web_key\n      - .\/keys\/tsa_host_key:\/concourse-keys\/tsa_host_key\n      - .\/keys\/authorized_worker_keys:\/concourse-keys\/authorized_worker_keys\n    environment:\n      CONCOURSE_SESSION_SIGNING_KEY: changeme_session_signing_key # \u00dcretim i\u00e7in benzersiz ve g\u00fc\u00e7l\u00fc bir anahtar olmal\u0131\n      CONCOURSE_EXTERNAL_URL: http:\/\/YOUR_SERVER_IP:8080 # Sunucunuzun IP adresi veya alan ad\u0131\n      CONCOURSE_POSTGRES_HOST: concourse-db\n      CONCOURSE_POSTGRES_USER: concourse\n      CONCOURSE_POSTGRES_PASSWORD: changeme\n      CONCOURSE_POSTGRES_DATABASE: concourse\n      CONCOURSE_BASIC_AUTH_USERNAME: admin\n      CONCOURSE_BASIC_AUTH_PASSWORD: password # \u00dcretim i\u00e7in g\u00fc\u00e7l\u00fc bir \u015fifre kullan\u0131n\n      CONCOURSE_ADD_LOCAL_USER: admin:password # Sadece ilk kurulum i\u00e7in, sonra kald\u0131r\u0131labilir\n      CONCOURSE_TSA_HOST_KEY: \/concourse-keys\/tsa_host_key\n      CONCOURSE_WEB_KEY: \/concourse-keys\/web_key\n      CONCOURSE_AUTHORIZED_KEYS: \/concourse-keys\/authorized_worker_keys\n    depends_on:\n      - concourse-db\n    restart: unless-stopped\n\n  concourse-worker:\n    image: concourse\/concourse:6.7.0 # Concourse s\u00fcr\u00fcm\u00fcn\u00fc kontrol edin ve g\u00fcncelleyin\n    logging:\n      driver: \"json-file\"\n      options:\n        max-size: \"10m\"\n        max-file: \"5\"\n    command: worker\n    volumes:\n      - .\/keys\/worker_key:\/concourse-keys\/worker_key\n      - .\/keys\/tsa_host_key.pub:\/concourse-keys\/tsa_host_key.pub\n    environment:\n      CONCOURSE_TSA_HOST: concourse-web:2222\n      CONCOURSE_TSA_PUBLIC_KEY: \/concourse-keys\/tsa_host_key.pub\n      CONCOURSE_WORKER_KEY: \/concourse-keys\/worker_key\n    privileged: true # Worker'lar\u0131n Docker i\u00e7inde Docker \u00e7al\u0131\u015ft\u0131rmas\u0131 i\u00e7in gerekli olabilir\n    depends_on:\n      - concourse-web\n    restart: unless-stopped\n\nvolumes:\n  concourse-db-data:\n<\/code><\/pre>\n<p><strong>\u00d6nemli Notlar ve Yap\u0131land\u0131rma Detaylar\u0131:<\/strong><\/p>\n<p>*   <strong><code>image: concourse\/concourse:6.7.0<\/code><\/strong>: Bu rehber yaz\u0131l\u0131rken Concourse 6.7.0 s\u00fcr\u00fcm\u00fc kullan\u0131lm\u0131\u015ft\u0131r. En g\u00fcncel ve stabil s\u00fcr\u00fcm\u00fc Concourse resmi Docker Hub sayfas\u0131ndan kontrol ederek kullanman\u0131z \u00f6nerilir.<br \/>\n*   <strong><code>POSTGRES_PASSWORD: changeme<\/code><\/strong>: Bu \u015fifreyi kesinlikle g\u00fc\u00e7l\u00fc ve benzersiz bir \u015fifre ile de\u011fi\u015ftirin.<br \/>\n*   <strong><code>CONCOURSE_SESSION_SIGNING_KEY: changeme_session_signing_key<\/code><\/strong>: Bu da \u00fcretim ortam\u0131 i\u00e7in \u00e7ok \u00f6nemli bir g\u00fcvenlik anahtar\u0131d\u0131r. Rastgele, uzun ve karma\u015f\u0131k bir dize ile de\u011fi\u015ftirilmelidir. \u00d6rne\u011fin, <code>openssl rand -hex 32<\/code> komutu ile olu\u015fturulabilir.<br \/>\n*   <strong><code>CONCOURSE_EXTERNAL_URL: http:\/\/YOUR_SERVER_IP:8080<\/code><\/strong>: <code>YOUR_SERVER_IP<\/code> k\u0131sm\u0131n\u0131 sunucunuzun ger\u00e7ek IP adresi veya alan ad\u0131 ile de\u011fi\u015ftirin. E\u011fer bir alan ad\u0131 kullan\u0131yorsan\u0131z ve SSL\/TLS yap\u0131land\u0131rmas\u0131 yapacaksan\u0131z <code>https:\/\/<\/code> ile ba\u015flamal\u0131d\u0131r.<br \/>\n*   <strong><code>CONCOURSE_BASIC_AUTH_USERNAME: admin<\/code> ve <code>CONCOURSE_BASIC_AUTH_PASSWORD: password<\/code><\/strong>: Bu, Concourse&#8217;a eri\u015fim i\u00e7in varsay\u0131lan kullan\u0131c\u0131 ad\u0131 ve \u015fifredir. \u00dcretim ortam\u0131nda kesinlikle g\u00fc\u00e7l\u00fc bir \u015fifre kullan\u0131n ve bu temel kimlik do\u011frulama yerine daha geli\u015fmi\u015f kimlik do\u011frulama y\u00f6ntemlerini (GitHub, LDAP, OAuth vb.) tercih edin.<br \/>\n*   <strong><code>CONCOURSE_ADD_LOCAL_USER: admin:password<\/code><\/strong>: Bu, Concourse&#8217;un dahili kullan\u0131c\u0131 veritaban\u0131na bir kullan\u0131c\u0131 eklemek i\u00e7in kullan\u0131l\u0131r. \u0130lk kurulum i\u00e7in kullan\u0131\u015fl\u0131d\u0131r ancak daha sonra kald\u0131r\u0131lmas\u0131 veya yorum sat\u0131r\u0131 yap\u0131lmas\u0131 \u00f6nerilir.<br \/>\n*   <strong><code>privileged: true<\/code><\/strong>: Concourse worker&#8217;lar\u0131n\u0131n build i\u015flemleri s\u0131ras\u0131nda Docker i\u00e7inde Docker \u00e7al\u0131\u015ft\u0131rmas\u0131 gerekebilir. Bu ayar, container&#8217;a daha fazla yetki verir. G\u00fcvenlik a\u00e7\u0131s\u0131ndan dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h4>4. Concourse&#8217;u Ba\u015flatma<\/h4>\n<p><code>docker-compose.yml<\/code> dosyas\u0131n\u0131 kaydettikten sonra, Concourse servislerini ba\u015flatabilirsiniz:<\/p>\n<pre><code>\ndocker-compose up -d\n<\/code><\/pre>\n<p>*   <code>-d<\/code> parametresi, servisleri arka planda (detached mode) \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar.<\/p>\n<p>Servislerin durumunu kontrol etmek i\u00e7in:<\/p>\n<pre><code>\ndocker-compose ps\n<\/code><\/pre>\n<p>T\u00fcm servislerin <code>Up<\/code> durumunda olmas\u0131 gerekir.<\/p>\n<p>Loglar\u0131 takip etmek i\u00e7in:<\/p>\n<pre><code>\ndocker-compose logs -f\n<\/code><\/pre>\n<h3>Concourse UI&#8217;a Eri\u015fim ve \u0130lk Kullan\u0131m<\/h3>\n<p>Concourse servisleri \u00e7al\u0131\u015fmaya ba\u015flad\u0131ktan sonra, web aray\u00fcz\u00fcne eri\u015febilirsiniz.<\/p>\n<p>1.  <strong>Web Taray\u0131c\u0131s\u0131 ile Eri\u015fim:<\/strong><br \/>\n    Web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve <code>http:\/\/YOUR_SERVER_IP:8080<\/code> adresine gidin (burada <code>YOUR_SERVER_IP<\/code> yerine sunucunuzun IP adresini veya alan ad\u0131n\u0131 yaz\u0131n).<br \/>\n    Concourse giri\u015f ekran\u0131n\u0131 g\u00f6rmelisiniz. <code>docker-compose.yml<\/code> dosyas\u0131nda belirtti\u011finiz <code>admin<\/code> kullan\u0131c\u0131 ad\u0131 ve <code>password<\/code> ile giri\u015f yap\u0131n.<\/p>\n<p>2.  <strong><code>fly<\/code> CLI Kurulumu:<\/strong><br \/>\n    <code>fly<\/code>, Concourse ile etkile\u015fim kurmak i\u00e7in kullan\u0131lan komut sat\u0131r\u0131 arac\u0131d\u0131r. Concourse web aray\u00fcz\u00fcn\u00fcn sa\u011f alt k\u00f6\u015fesinde veya <code>http:\/\/YOUR_SERVER_IP:8080\/fly<\/code> adresinde <code>fly<\/code> CLI i\u00e7in indirme ba\u011flant\u0131lar\u0131n\u0131 bulabilirsiniz. Linux (64-bit) s\u00fcr\u00fcm\u00fcn\u00fc indirin.<\/p>\n<pre><code>\n    # Concourse UI'dan indirilen fly dosyas\u0131n\u0131 kullan\u0131n veya a\u015fa\u011f\u0131daki gibi indirin\n    wget http:\/\/YOUR_SERVER_IP:8080\/api\/v1\/cli?arch=amd64&platform=linux -O fly\n    chmod +x fly\n    sudo mv fly \/usr\/local\/bin\/\n    <\/code><\/pre>\n<p>3.  <strong><code>fly<\/code> ile Concourse&#8217;a Giri\u015f:<\/strong><br \/>\n    <code>fly<\/code> CLI&#8217;yi kullanarak Concourse hedef sunucunuza giri\u015f yap\u0131n:<\/p>\n<pre><code>\n    fly -t main login -c http:\/\/YOUR_SERVER_IP:8080 -u admin -p password\n    <\/code><\/pre>\n<p>    *   <code>-t main<\/code>: Hedefin ad\u0131n\u0131 <code>main<\/code> olarak belirler. Birden fazla Concourse ortam\u0131n\u0131z varsa bu isimleri de\u011fi\u015ftirebilirsiniz.<br \/>\n    *   <code>-c http:\/\/YOUR_SERVER_IP:8080<\/code>: Concourse web aray\u00fcz\u00fcn\u00fcn URL&#8217;si.<br \/>\n    *   <code>-u admin -p password<\/code>: Giri\u015f yapmak i\u00e7in kullan\u0131lan kullan\u0131c\u0131 ad\u0131 ve \u015fifre.<\/p>\n<p>    Ba\u015far\u0131l\u0131 bir giri\u015fin ard\u0131ndan <code>logged in successfully<\/code> mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>4.  <strong>Basit Bir Pipeline Olu\u015fturma ve \u00c7al\u0131\u015ft\u0131rma (\u0130ste\u011fe Ba\u011fl\u0131):<\/strong><br \/>\n    Concourse kurulumunuzu test etmek i\u00e7in basit bir pipeline tan\u0131mlay\u0131p \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<p>    <code>hello-world.yml<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code>\n    nano hello-world.yml\n    <\/code><\/pre>\n<p>    \u0130\u00e7eri\u011fi:<\/p>\n<pre><code>\n    resource_types:\n    - name: git\n      type: docker-image\n      source:\n        repository: concourse\/git-resource\n\n    resources:\n    - name: my-repo\n      type: git\n      source:\n        uri: https:\/\/github.com\/concourse\/concourse-pipeline-samples.git # \u00d6rnek bir repo\n\n    jobs:\n    - name: hello-world\n      plan:\n      - get: my-repo\n        trigger: true\n      - task: say-hello\n        config:\n          platform: linux\n          image_resource:\n            type: docker-image\n            source: {repository: busybox}\n          run:\n            path: sh\n            args: [\"-c\", \"echo Hello from Concourse CI! && ls -la my-repo\"]\n    <\/code><\/pre>\n<p>    Pipeline&#8217;\u0131 ayarlay\u0131n:<\/p>\n<pre><code>\n    fly -t main set-pipeline -p hello-world -c hello-world.yml\n    <\/code><\/pre>\n<p>    Onaylaman\u0131z istenecektir, <code>y<\/code> yaz\u0131p Enter&#8217;a bas\u0131n.<\/p>\n<p>    Pipeline&#8217;\u0131 tetikleyin:<\/p>\n<pre><code>\n    fly -t main trigger-job -j hello-world\/hello-world\n    <\/code><\/pre>\n<p>    Pipeline&#8217;\u0131n durumunu izleyin:<\/p>\n<pre><code>\n    fly -t main watch -j hello-world\/hello-world\n    <\/code><\/pre>\n<p>    Veya Concourse web aray\u00fcz\u00fcnden <code>hello-world<\/code> pipeline&#8217;\u0131n\u0131 takip edebilirsiniz. Ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131nda &#8220;Hello from Concourse CI!&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>Concourse&#8217;u Y\u00f6netme ve Sorun Giderme<\/h3>\n<h4>Concourse Servislerini Durdurma ve Yeniden Ba\u015flatma<\/h4>\n<p>*   <strong>Durdurma:<\/strong><\/p>\n<pre><code>\n    docker-compose down\n    <\/code><\/pre>\n<p>    Bu komut, container&#8217;lar\u0131 durdurur ve kald\u0131r\u0131r, ancak <code>concourse-db-data<\/code> hacmini (volume) korur.<\/p>\n<p>*   <strong>Ba\u015flatma:<\/strong><\/p>\n<pre><code>\n    docker-compose up -d\n    <\/code><\/pre>\n<p>*   <strong>Yeniden Ba\u015flatma:<\/strong><\/p>\n<pre><code>\n    docker-compose restart\n    <\/code><\/pre>\n<h4>Loglar\u0131 Kontrol Etme<\/h4>\n<p>Herhangi bir sorunla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda, loglar en iyi bilgi kayna\u011f\u0131d\u0131r.<\/p>\n<pre><code>\n<h2>T\u00fcm servislerin loglar\u0131n\u0131 takip etme<\/h2>\ndocker-compose logs -f\n\n<h2>Sadece belirli bir servisin loglar\u0131n\u0131 takip etme (\u00f6rne\u011fin concourse-web)<\/h2>\ndocker-compose logs -f concourse-web\n<\/code><\/pre>\n<h4>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h4>\n<p>*   <strong><code>docker-compose up -d<\/code> komutu \u00e7al\u0131\u015fm\u0131yor veya servisler ba\u015flam\u0131yor:<\/strong><br \/>\n    *   Docker ve Docker Compose&#8217;un do\u011fru y\u00fcklendi\u011finden ve \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   <code>docker-compose logs<\/code> komutu ile hatay\u0131 kontrol edin.<br \/>\n    *   Port \u00e7ak\u0131\u015fmalar\u0131 olabilir (\u00f6rne\u011fin 8080 portu ba\u015fka bir uygulama taraf\u0131ndan kullan\u0131l\u0131yor olabilir).<br \/>\n    *   <code>docker-compose.yml<\/code> dosyas\u0131ndaki yaz\u0131m hatalar\u0131n\u0131 kontrol edin. YAML format\u0131 bo\u015fluklara kar\u015f\u0131 hassast\u0131r.<br \/>\n    *   Disk alan\u0131n\u0131n yeterli oldu\u011fundan emin olun.<\/p>\n<p>*   <strong>Concourse web aray\u00fcz\u00fcne eri\u015filemiyor:<\/strong><br \/>\n    *   <code>CONCOURSE_EXTERNAL_URL<\/code> de\u011ferinin do\u011fru ayarland\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   Sunucu g\u00fcvenlik duvar\u0131n\u0131n (UFW veya ba\u015fka bir firewall) 8080 portuna gelen ba\u011flant\u0131lara izin verdi\u011finden emin olun:<\/p>\n<pre><code>\n        sudo ufw allow 8080\/tcp\n        sudo ufw enable\n        <\/code><\/pre>\n<p>    *   <code>docker-compose ps<\/code> ile <code>concourse-web<\/code> servisinin <code>Up<\/code> durumda oldu\u011funu do\u011frulay\u0131n.<\/p>\n<p>*   <strong><code>fly login<\/code> ba\u015far\u0131s\u0131z oluyor:<\/strong><br \/>\n    *   URL&#8217;nin ( <code>-c<\/code> parametresi) do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   Kullan\u0131c\u0131 ad\u0131 ve \u015fifrenin (<code>-u<\/code>, <code>-p<\/code> parametreleri) <code>docker-compose.yml<\/code> dosyas\u0131ndaki <code>CONCOURSE_BASIC_AUTH_USERNAME<\/code> ve <code>CONCOURSE_BASIC_AUTH_PASSWORD<\/code> ile e\u015fle\u015fti\u011finden emin olun.<br \/>\n    *   Concourse web servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<\/p>\n<p>*   <strong>Worker&#8217;lar web servisine ba\u011flanam\u0131yor:<\/strong><br \/>\n    *   <code>docker-compose logs concourse-worker<\/code> komutu ile worker loglar\u0131n\u0131 kontrol edin.<br \/>\n    *   Anahtar dosyalar\u0131n\u0131n (<code>.\/keys<\/code> dizini) do\u011fru olu\u015fturuldu\u011fundan ve <code>docker-compose.yml<\/code> dosyas\u0131nda do\u011fru yollarla belirtildi\u011finden emin olun.<br \/>\n    *   <code>concourse-web<\/code> ve <code>concourse-worker<\/code> servislerinin ayn\u0131 Docker a\u011f\u0131nda oldu\u011fundan emin olun. <code>docker-compose<\/code> bunu varsay\u0131lan olarak yapar.<\/p>\n<p>*   <strong>Build&#8217;ler tak\u0131l\u0131 kal\u0131yor veya ba\u015far\u0131s\u0131z oluyor:<\/strong><br \/>\n    *   Worker loglar\u0131n\u0131 kontrol edin.<br \/>\n    *   <code>privileged: true<\/code> ayar\u0131n\u0131n <code>concourse-worker<\/code> servisi i\u00e7in etkin oldu\u011fundan emin olun, \u00f6zellikle Docker i\u00e7inde Docker \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z.<br \/>\n    *   Yeterli sistem kayna\u011f\u0131 (CPU, RAM, disk) oldu\u011fundan emin olun.<\/p>\n<h3>G\u00fcvenlik Hususlar\u0131<\/h3>\n<p>Bu kurulum rehberi, Concourse&#8217;u h\u0131zl\u0131ca \u00e7al\u0131\u015ft\u0131rmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. \u00dcretim ortamlar\u0131 i\u00e7in a\u015fa\u011f\u0131daki g\u00fcvenlik \u00f6nlemlerini dikkate alman\u0131z \u00f6nemlidir:<\/p>\n<p>*   <strong>G\u00fc\u00e7l\u00fc \u015eifreler ve Anahtarlar:<\/strong> <code>POSTGRES_PASSWORD<\/code>, <code>CONCOURSE_SESSION_SIGNING_KEY<\/code>, <code>CONCOURSE_BASIC_AUTH_PASSWORD<\/code> gibi t\u00fcm \u015fifreleri ve anahtarlar\u0131 g\u00fc\u00e7l\u00fc, rastgele ve benzersiz de\u011ferlerle de\u011fi\u015ftirin.<br \/>\n*   <strong>SSL\/TLS Kullan\u0131m\u0131:<\/strong> Concourse web aray\u00fcz\u00fcne HTTPS \u00fczerinden eri\u015fimi sa\u011flamak i\u00e7in bir ters proxy (Nginx veya Apache) ve Let&#8217;s Encrypt gibi bir sertifika yetkilisi kullanarak SSL\/TLS yap\u0131land\u0131rmas\u0131 yap\u0131n. <code>CONCOURSE_EXTERNAL_URL<\/code> de\u011ferini <code>https:\/\/<\/code> ile ba\u015flayacak \u015fekilde g\u00fcncelleyin.<br \/>\n*   <strong>Kimlik Do\u011frulama Entegrasyonu:<\/strong> Temel HTTP kimlik do\u011frulamas\u0131 yerine GitHub, GitLab, LDAP veya OAuth gibi daha g\u00fcvenli ve merkezi kimlik do\u011frulama y\u00f6ntemlerini kullan\u0131n.<br \/>\n*   <strong>A\u011f G\u00fcvenli\u011fi:<\/strong> Concourse servislerinin sadece ihtiya\u00e7 duyulan portlardan eri\u015filebilir oldu\u011fundan emin olun. \u00d6zellikle PostgreSQL veritaban\u0131 portunu (<code>5432<\/code>) d\u0131\u015f d\u00fcnyaya a\u00e7maktan ka\u00e7\u0131n\u0131n. Concourse web aray\u00fcz\u00fc portunu (<code>8080<\/code>), bir ters proxy kullan\u0131yorsan\u0131z sadece ters proxy&#8217;nin eri\u015febilece\u011fi \u015fekilde yap\u0131land\u0131r\u0131n.<br \/>\n*   <strong>Kullan\u0131c\u0131 ve \u0130zin Y\u00f6netimi:<\/strong> Concourse&#8217;ta farkl\u0131 tak\u0131mlar ve kullan\u0131c\u0131lar i\u00e7in uygun izinleri tan\u0131mlay\u0131n.<br \/>\n*   <strong>G\u00fcncel Tutma:<\/strong> Concourse ve Docker s\u00fcr\u00fcmlerini d\u00fczenli olarak g\u00fcncelleyerek g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131n.<br \/>\n*   <strong>Log Y\u00f6netimi:<\/strong> Loglar\u0131 merkezi bir loglama sistemine (ELK Stack, Grafana Loki vb.) g\u00f6ndererek izlenebilirli\u011fi art\u0131r\u0131n ve g\u00fcvenlik olaylar\u0131n\u0131 daha h\u0131zl\u0131 tespit edin.<br \/>\n*   <strong>Yedekleme:<\/strong> Concourse veritaban\u0131n\u0131 d\u00fczenli olarak yedekleyin.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu rehberde, Concourse CI&#8217;\u0131 Ubuntu 16.04 \u00fczerine <code>docker-compose<\/code> kullanarak ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frendiniz. Docker ve Docker Compose kurulumundan, Concourse servislerinin yap\u0131land\u0131r\u0131lmas\u0131na, web aray\u00fcz\u00fcne eri\u015fime ve <code>fly<\/code> CLI kullan\u0131m\u0131na kadar t\u00fcm temel ad\u0131mlar\u0131 ele ald\u0131k. Art\u0131k Concourse CI ortam\u0131n\u0131z haz\u0131r ve ilk pipeline&#8217;lar\u0131n\u0131z\u0131 olu\u015fturmaya ba\u015flayabilirsiniz.<\/p>\n<p>Concourse&#8217;un g\u00fcc\u00fc, deklaratif pipeline tan\u0131m\u0131nda ve container tabanl\u0131 i\u015f y\u00fck\u00fc y\u00f6netiminde yatmaktad\u0131r. Bu sayede, yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinizi otomatikle\u015ftirebilir, daha h\u0131zl\u0131 ve g\u00fcvenilir teslimatlar yapabilirsiniz. Unutmay\u0131n ki bu kurulum bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r; \u00fcretim ortamlar\u0131 i\u00e7in g\u00fcvenlik ve \u00f6l\u00e7eklenebilirlik konular\u0131nda ek yap\u0131land\u0131rmalar yapman\u0131z gerekecektir. Concourse&#8217;un resmi belgeleri, daha derinlemesine yap\u0131land\u0131rma ve geli\u015fmi\u015f \u00f6zellikler hakk\u0131nda de\u011ferli bilgiler sunar. Ke\u015ffetmeye devam edin ve CI\/CD yolculu\u011funuzda ba\u015far\u0131lar dileriz!<\/p>\n","protected":false},"excerpt":{"rendered":"Concourse CI&#8217;\u0131 Ubuntu 16. 04 \u00dczerine Kurulum Rehberi S\u00fcrekli Entegrasyon (CI) ve S\u00fcrekli Teslimat (CD) s\u00fcre\u00e7leri, modern yaz\u0131l\u0131m geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir.","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-42252","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>Concourse CI&#039;\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi - 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\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Concourse CI&#039;\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi\" \/>\n<meta property=\"og:description\" content=\"Concourse CI&#039;\u0131 Ubuntu 16. 04 \u00dczerine Kurulum Rehberi S\u00fcrekli Entegrasyon (CI) ve S\u00fcrekli Teslimat (CD) s\u00fcre\u00e7leri, modern yaz\u0131l\u0131m geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-02T14:00:58+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=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Concourse CI&#8217;\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi\",\"datePublished\":\"2026-06-02T14:00:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/\"},\"wordCount\":2155,\"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\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/\",\"name\":\"Concourse CI'\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-06-02T14:00:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Concourse CI&#8217;\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi\"}]},{\"@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":"Concourse CI'\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi - 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\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Concourse CI'\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi","og_description":"Concourse CI'\u0131 Ubuntu 16. 04 \u00dczerine Kurulum Rehberi S\u00fcrekli Entegrasyon (CI) ve S\u00fcrekli Teslimat (CD) s\u00fcre\u00e7leri, modern yaz\u0131l\u0131m geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir.","og_url":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-06-02T14:00:58+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Concourse CI&#8217;\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi","datePublished":"2026-06-02T14:00:58+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/"},"wordCount":2155,"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\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/","name":"Concourse CI'\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-06-02T14:00:58+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/concourse-cii-ubuntu-16-04-uzerine-kurulum-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Concourse CI&#8217;\u0131 Ubuntu 16.04 \u00dczerine Kurulum Rehberi"}]},{"@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\/42252","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=42252"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42252\/revisions"}],"predecessor-version":[{"id":42253,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42252\/revisions\/42253"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=42252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=42252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=42252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}