{"id":4566,"date":"2026-02-05T20:53:42","date_gmt":"2026-02-05T17:53:42","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/ghost-blog-ve-headless-blog-platformlari-icin-dogru-hosting-mimarisi\/"},"modified":"2026-02-05T20:53:42","modified_gmt":"2026-02-05T17:53:42","slug":"ghost-blog-ve-headless-blog-platformlari-icin-dogru-hosting-mimarisi","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/ghost-blog-ve-headless-blog-platformlari-icin-dogru-hosting-mimarisi\/","title":{"rendered":"Ghost Blog ve Headless Blog Platformlar\u0131 \u0130\u00e7in Do\u011fru Hosting Mimarisi"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Ghost_ve_Diger_Headless_Blog_Platformlari_Icin_Neden_Ozel_Bir_Hosting_Mimarisi_Gerekir\"><span class=\"toc_number toc_depth_1\">1<\/span> Ghost ve Di\u011fer Headless Blog Platformlar\u0131 \u0130\u00e7in Neden \u00d6zel Bir Hosting Mimarisi Gerekir?<\/a><\/li><li><a href=\"#Ghost_ve_Headless_Blog_Yaklasimini_Kisaca_Konumlandiralim\"><span class=\"toc_number toc_depth_1\">2<\/span> Ghost ve Headless Blog Yakla\u015f\u0131m\u0131n\u0131 K\u0131saca Konumland\u0131ral\u0131m<\/a><\/li><li><a href=\"#Dogru_Sunucu_Tipi_ve_Kaynak_Planlama_paylasimli_hosting_Neden_Yetmez\"><span class=\"toc_number toc_depth_1\">3<\/span> Do\u011fru Sunucu Tipi ve Kaynak Planlama: payla\u015f\u0131ml\u0131 hosting Neden Yetmez?<\/a><\/li><li><a href=\"#Temel_Mimari_Nodejs_Uygulamasi_Nginx_Reverse_Proxy_SSL\"><span class=\"toc_number toc_depth_1\">4<\/span> Temel Mimari: Node.js Uygulamas\u0131 + Nginx Reverse Proxy + SSL<\/a><\/li><li><a href=\"#Adim_Adim_Kurulum_Linux_Nodejs_Ghost_ve_Veritabani\"><span class=\"toc_number toc_depth_1\">5<\/span> Ad\u0131m Ad\u0131m Kurulum: Linux, Node.js, Ghost ve Veritaban\u0131<\/a><ul><li><a href=\"#1_Sunucuyu_Hazirlama\"><span class=\"toc_number toc_depth_2\">5.1<\/span> 1) Sunucuyu Haz\u0131rlama<\/a><\/li><li><a href=\"#2_Nodejs_Kurulumu\"><span class=\"toc_number toc_depth_2\">5.2<\/span> 2) Node.js Kurulumu<\/a><\/li><li><a href=\"#3_Ghost_veya_Diger_Headless_Blog_Uygulamasini_Kurmak\"><span class=\"toc_number toc_depth_2\">5.3<\/span> 3) Ghost veya Di\u011fer Headless Blog Uygulamas\u0131n\u0131 Kurmak<\/a><\/li><li><a href=\"#4_Process_Manager_systemd_veya_PM2\"><span class=\"toc_number toc_depth_2\">5.4<\/span> 4) Process Manager: systemd veya PM2<\/a><\/li><\/ul><\/li><li><a href=\"#Nginx_Reverse_Proxy_Yapilandirmasi\"><span class=\"toc_number toc_depth_1\">6<\/span> Nginx Reverse Proxy Yap\u0131land\u0131rmas\u0131<\/a><\/li><li><a href=\"#SSL_ve_HTTPS_Lets_Encrypt_ile_Otomatik_Sertifika_Yonetimi\"><span class=\"toc_number toc_depth_1\">7<\/span> SSL ve HTTPS: Let\u2019s Encrypt ile Otomatik Sertifika Y\u00f6netimi<\/a><ul><li><a href=\"#1_Lets_Encrypt_ile_Temel_SSL_Kurulumu\"><span class=\"toc_number toc_depth_2\">7.1<\/span> 1) Let\u2019s Encrypt ile Temel SSL Kurulumu<\/a><\/li><li><a href=\"#2_HTTPden_HTTPSe_Zorunlu_Yonlendirme_ve_HSTS\"><span class=\"toc_number toc_depth_2\">7.2<\/span> 2) HTTP\u2019den HTTPS\u2019e Zorunlu Y\u00f6nlendirme ve HSTS<\/a><\/li><li><a href=\"#3_Tek_IP_Uzerinde_Birden_Fazla_HTTPS_Blog_SNI\"><span class=\"toc_number toc_depth_2\">7.3<\/span> 3) Tek IP \u00dczerinde Birden Fazla HTTPS Blog (SNI)<\/a><\/li><\/ul><\/li><li><a href=\"#Headless_Senaryolar_Ghost_API_NextjsNuxt_ve_Statik_Frontendler\"><span class=\"toc_number toc_depth_1\">8<\/span> Headless Senaryolar: Ghost API + Next.js\/Nuxt ve Statik Frontend\u2019ler<\/a><\/li><li><a href=\"#Guvenlik_Yedekleme_ve_Guncelleme_Stratejileri\"><span class=\"toc_number toc_depth_1\">9<\/span> G\u00fcvenlik, Yedekleme ve G\u00fcncelleme Stratejileri<\/a><ul><li><a href=\"#1_Sunucu_ve_Uygulama_Guvenligi\"><span class=\"toc_number toc_depth_2\">9.1<\/span> 1) Sunucu ve Uygulama G\u00fcvenli\u011fi<\/a><\/li><li><a href=\"#2_Yedekleme_Veritabani_Icerik_Dosyalari\"><span class=\"toc_number toc_depth_2\">9.2<\/span> 2) Yedekleme: Veritaban\u0131 + \u0130\u00e7erik Dosyalar\u0131<\/a><\/li><li><a href=\"#3_Guncellemeler_Nodejs_Ghost_ve_Bagimliliklar\"><span class=\"toc_number toc_depth_2\">9.3<\/span> 3) G\u00fcncellemeler: Node.js, Ghost ve Ba\u011f\u0131ml\u0131l\u0131klar<\/a><\/li><\/ul><\/li><li><a href=\"#Olceklendirme_ve_Coklu_Blog_Senaryolari\"><span class=\"toc_number toc_depth_1\">10<\/span> \u00d6l\u00e7eklendirme ve \u00c7oklu Blog Senaryolar\u0131<\/a><\/li><li><a href=\"#DCHost_Uzerinde_Ghost_ve_Headless_Blog_Platformlari_Icin_Onerdigimiz_Yol_Haritasi\"><span class=\"toc_number toc_depth_1\">11<\/span> DCHost \u00dczerinde Ghost ve Headless Blog Platformlar\u0131 \u0130\u00e7in \u00d6nerdi\u011fimiz Yol Haritas\u0131<\/a><\/li><li><a href=\"#Ozet_ve_Sonraki_Adimlar\"><span class=\"toc_number toc_depth_1\">12<\/span> \u00d6zet ve Sonraki Ad\u0131mlar<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Ghost_ve_Diger_Headless_Blog_Platformlari_Icin_Neden_Ozel_Bir_Hosting_Mimarisi_Gerekir\">Ghost ve Di\u011fer Headless Blog Platformlar\u0131 \u0130\u00e7in Neden \u00d6zel Bir Hosting Mimarisi Gerekir?<\/span><\/h2>\n<p>Ghost, modern bir Node.js tabanl\u0131 blog platformu ve bir\u00e7ok yeni nesil headless blog \u00e7\u00f6z\u00fcm\u00fc gibi geleneksel PHP tabanl\u0131 CMS\u2019lerden farkl\u0131 \u00e7al\u0131\u015f\u0131yor. Uygulama kendi HTTP sunucusunu aya\u011fa kald\u0131r\u0131yor, genellikle 2368 gibi bir portta dinliyor, HTTPS ve alan ad\u0131 y\u00f6netimi ise \u00e7o\u011fu zaman Nginx veya benzeri bir <strong>reverse proxy<\/strong> katman\u0131 \u00fczerinden \u00e7\u00f6z\u00fcl\u00fcyor. \u0130\u015fte bu nedenle \u201calan ad\u0131 \u2192 Nginx reverse proxy \u2192 Node.js\/ Ghost s\u00fcreci \u2192 veritaban\u0131 ve dosya sistemi\u201d \u015feklinde d\u00fc\u015f\u00fcn\u00fclm\u00fc\u015f bir mimariye ihtiya\u00e7 var.<\/p>\n<p>DCHost\u2019ta g\u00f6rd\u00fc\u011f\u00fcm\u00fcz bir\u00e7ok kurulumda sorunlar hep ayn\u0131 yerlerden \u00e7\u0131k\u0131yor: Node.js servisinin \u00e7\u00f6kmesi, SSL yenilemelerinin otomatik \u00e7al\u0131\u015fmamas\u0131, reverse proxy yap\u0131land\u0131rmas\u0131nda hatal\u0131 y\u00f6nlendirmeler veya HTTP\/HTTPS karma i\u00e7erik problemleri. Bu yaz\u0131da, Ghost ba\u015fta olmak \u00fczere benzer Node.js tabanl\u0131 headless blog platformlar\u0131n\u0131 <strong>VPS veya <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a> \u00fczerinde, Nginx reverse proxy ve otomatik SSL<\/strong> ile nas\u0131l sa\u011fl\u0131kl\u0131 \u015fekilde \u00e7al\u0131\u015ft\u0131rabilece\u011finizi ad\u0131m ad\u0131m anlataca\u011f\u0131z. Ayr\u0131ca \u00f6l\u00e7eklendirme, g\u00fcvenlik ve yedekleme taraf\u0131nda da DCHost olarak sahada edindi\u011fimiz pratik \u00f6nerileri payla\u015faca\u011f\u0131z.<\/p>\n<h2><span id=\"Ghost_ve_Headless_Blog_Yaklasimini_Kisaca_Konumlandiralim\">Ghost ve Headless Blog Yakla\u015f\u0131m\u0131n\u0131 K\u0131saca Konumland\u0131ral\u0131m<\/span><\/h2>\n<p>Ghost\u2019u hen\u00fcz detayl\u0131 incelemediyseniz, \u00f6nce <a href=\"https:\/\/www.dchost.com\/blog\/ghost-nedir-wordpressden-farki-nedir\/\">Ghost\u2019un WordPress\u2019ten farklar\u0131n\u0131 anlatt\u0131\u011f\u0131m\u0131z rehbere<\/a> g\u00f6z atman\u0131z\u0131 \u00f6neririm. \u00d6zetle Ghost:<\/p>\n<ul>\n<li>Node.js \u00fczerinde \u00e7al\u0131\u015fan, performans odakl\u0131 bir blog platformudur.<\/li>\n<li>MySQL\/MariaDB veritaban\u0131 kullan\u0131r.<\/li>\n<li>Yap\u0131 olarak \u201cuygulama + reverse proxy\u201d mimarisine ihtiya\u00e7 duyar.<\/li>\n<li>API katman\u0131 sayesinde headless (sadece i\u00e7erik kayna\u011f\u0131) olarak kullan\u0131labilir.<\/li>\n<\/ul>\n<p>Benzer \u015fekilde, kendi Node.js tabanl\u0131 blog\/universal uygulaman\u0131z\u0131 veya ba\u015fka bir headless CMS \u00e7\u00f6z\u00fcm\u00fcn\u00fc de ayn\u0131 prensiplerle host edebilirsiniz. Bu noktada, Node.js uygulamalar\u0131n\u0131 nerede ve nas\u0131l host etmek gerekti\u011fini ay\u0131rmak \u00f6nemli. Bu konuya daha geni\u015f \u00e7er\u00e7eveden bakmak isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/node-js-uygulamalarini-nerede-host-etmeli-cpanel-paylasimli-hosting-ve-vps-karsilastirmasi\/\">Node.js uygulamalar\u0131n\u0131 cPanel, payla\u015f\u0131ml\u0131 hosting ve VPS \u00fczerinde kar\u015f\u0131la\u015ft\u0131rd\u0131\u011f\u0131m\u0131z yaz\u0131m\u0131za<\/a> da g\u00f6z atabilirsiniz.<\/p>\n<h2><span id=\"Dogru_Sunucu_Tipi_ve_Kaynak_Planlama_paylasimli_hosting_Neden_Yetmez\">Do\u011fru Sunucu Tipi ve Kaynak Planlama: <a href=\"https:\/\/www.dchost.com\/tr\/web-hosting\">payla\u015f\u0131ml\u0131 hosting<\/a> Neden Yetmez?<\/span><\/h2>\n<p>Ghost ve benzeri headless blog platformlar\u0131 i\u00e7in <strong>genellikle payla\u015f\u0131ml\u0131 hosting do\u011fru se\u00e7im de\u011fildir<\/strong>. \u00c7\u00fcnk\u00fc:<\/p>\n<ul>\n<li>Node.js servislerini arka planda s\u00fcrekli \u00e7al\u0131\u015f\u0131r durumda tutmak gerekir.<\/li>\n<li>Uygulama kendi portunda (\u00f6rne\u011fin 2368) dinler, bu da klasik payla\u015f\u0131ml\u0131 hosting mimarisiyle \u00e7ak\u0131\u015f\u0131r.<\/li>\n<li>systemd veya PM2 gibi process manager\u2019lara ihtiya\u00e7 duyars\u0131n\u0131z.<\/li>\n<li>Nginx\/Apache konfig\u00fcrasyonuna tam eri\u015fim isteyeceksiniz.<\/li>\n<\/ul>\n<p>Bu y\u00fczden Ghost ve benzeri headless bloglar i\u00e7in pratikte \u00fc\u00e7 se\u00e7enek \u00f6ne \u00e7\u0131kar:<\/p>\n<ul>\n<li><strong>VPS sunucu:<\/strong> \u00c7o\u011fu ki\u015fisel blog, ajans portf\u00f6y\u00fc ve kurumsal i\u00e7erik sitesi i\u00e7in yeterli ve esnek.<\/li>\n<li><strong>Dedicated sunucu:<\/strong> Y\u00fcksek trafikli medya siteleri, \u00e7oklu Ghost instancelar\u0131 veya a\u011f\u0131r API y\u00fckleri i\u00e7in.<\/li>\n<li><strong>Colocation:<\/strong> Kendi fiziksel donan\u0131m\u0131n\u0131z\u0131 DCHost veri merkezinde bar\u0131nd\u0131rmak istedi\u011finiz daha kurumsal senaryolar i\u00e7in.<\/li>\n<\/ul>\n<p>K\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekte trafik bekleyen bir Ghost blog i\u00e7in ba\u015flang\u0131\u00e7ta 1\u20132 vCPU, 2\u20134 GB RAM ve h\u0131zl\u0131 SSD\/NVMe disk genellikle yeterli olur. Daha detayl\u0131 kapasite planlamak isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-laravel-ve-node-jsde-dogru-vps-kaynaklarini-nasil-secersin-cpu-ram-nvme-ve-bant-genisligi-rehberi\/\">CPU, RAM ve disk gereksinimlerini anlatt\u0131\u011f\u0131m\u0131z Node.js odakl\u0131 kapasite planlama rehberine<\/a> mutlaka bak\u0131n; oradaki hesaplama mant\u0131\u011f\u0131n\u0131 Ghost i\u00e7in de birebir uygulayabilirsiniz.<\/p>\n<h2><span id=\"Temel_Mimari_Nodejs_Uygulamasi_Nginx_Reverse_Proxy_SSL\">Temel Mimari: Node.js Uygulamas\u0131 + Nginx Reverse Proxy + SSL<\/span><\/h2>\n<p>Ghost veya ba\u015fka bir headless blogu \u00fcretim ortam\u0131na al\u0131rken tipik mimari \u015f\u00f6yledir:<\/p>\n<ul>\n<li>Sunucu \u00fczerinde bir Linux da\u011f\u0131t\u0131m\u0131 (Ubuntu, Debian, AlmaLinux vb.).<\/li>\n<li>Node.js (LTS s\u00fcr\u00fcm\u00fc) ve uygulaman\u0131n kendisi (Ghost, custom blog vb.).<\/li>\n<li>MySQL\/MariaDB veritaban\u0131.<\/li>\n<li>\u00d6nde, 80\/443 portlar\u0131n\u0131 dinleyen bir Nginx reverse proxy.<\/li>\n<li>Let\u2019s Encrypt veya kurumsal bir <a href=\"https:\/\/www.dchost.com\/tr\/ssl\">SSL sertifikas\u0131<\/a>.<\/li>\n<\/ul>\n<p>Genel ak\u0131\u015f \u015f\u00f6yle i\u015fler:<\/p>\n<ol>\n<li>Ziyaret\u00e7i <strong>https:\/\/blog.siteniz.com<\/strong> adresine gelir.<\/li>\n<li>DNS, alan ad\u0131n\u0131 DCHost \u00fczerinde \u00e7al\u0131\u015fan VPS veya dedicated sunucunuzun IP\u2019sine y\u00f6nlendirir.<\/li>\n<li>Nginx, 443 portunda iste\u011fi kar\u015f\u0131lar, SSL terminasyonunu yapar.<\/li>\n<li>\u0130ste\u011fi <strong>http:\/\/127.0.0.1:2368<\/strong> gibi bir i\u00e7 adrese proxy\u2019ler.<\/li>\n<li>Node.js\/ Ghost s\u00fcreci iste\u011fi i\u015fler, cevab\u0131 Nginx\u2019e geri verir.<\/li>\n<li>Nginx cevab\u0131 s\u0131k\u0131\u015ft\u0131rma, \u00f6nbellek ba\u015fl\u0131klar\u0131 vb. ekleyerek ziyaret\u00e7iye iletir.<\/li>\n<\/ol>\n<p>Nginx reverse proxy taraf\u0131n\u0131 daha geni\u015f \u00f6rneklerle g\u00f6rmek isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/nginx-reverse-proxy-ve-basit-load-balancer-kurulumu-kucuk-projeler-icin-uygulamali-rehber\/\">Nginx reverse proxy kurulum rehberimiz<\/a> mimariyi anlaman\u0131zda \u00e7ok yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2><span id=\"Adim_Adim_Kurulum_Linux_Nodejs_Ghost_ve_Veritabani\">Ad\u0131m Ad\u0131m Kurulum: Linux, Node.js, Ghost ve Veritaban\u0131<\/span><\/h2>\n<h3><span id=\"1_Sunucuyu_Hazirlama\">1) Sunucuyu Haz\u0131rlama<\/span><\/h3>\n<p>\u00d6nce DCHost \u00fczerinden uygun bir VPS veya dedicated sunucu se\u00e7ti\u011finizi varsayal\u0131m. Ard\u0131ndan:<\/p>\n<ul>\n<li>G\u00fcncellemeleri yap\u0131n: <strong>apt update &amp;&amp; apt upgrade<\/strong> veya kulland\u0131\u011f\u0131n\u0131z da\u011f\u0131t\u0131ma uygun komutlar.<\/li>\n<li>Yeni bir kullan\u0131c\u0131 olu\u015fturun ve \u015fifreli SSH anahtar giri\u015fi yap\u0131land\u0131r\u0131n.<\/li>\n<li>G\u00fcvenlik duvar\u0131 (ufw, firewalld vb.) ile sadece gerekli portlar\u0131 a\u00e7\u0131n (80, 443, SSH).<\/li>\n<\/ul>\n<p>VPS g\u00fcvenlik sertle\u015ftirme taraf\u0131n\u0131 daha sistematik ele almak isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/vps-guvenlik-sertlestirme-kontrol-listesi-sshd_config-fail2ban-ve-root-erisimini-kapatmak\/\">VPS g\u00fcvenlik sertle\u015ftirme kontrol listemizde<\/a> sshd_config, fail2ban ve root eri\u015fimi kapatma gibi kritik ayarlar\u0131 detayl\u0131 anlatt\u0131k.<\/p>\n<h3><span id=\"2_Nodejs_Kurulumu\">2) Node.js Kurulumu<\/span><\/h3>\n<p>Ghost ve \u00e7o\u011fu modern Node.js tabanl\u0131 blog i\u00e7in <strong>LTS bir Node.js s\u00fcr\u00fcm\u00fc<\/strong> yeterlidir. Tercihen:<\/p>\n<ul>\n<li>Da\u011f\u0131t\u0131ma \u00f6zel NodeSource deposu ya da<\/li>\n<li>nvm (Node Version Manager)<\/li>\n<\/ul>\n<p>kullanabilirsiniz. \u00d6rne\u011fin nvm ile:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">curl -fsSL https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.39.7\/install.sh | bash\nsource ~\/.bashrc\nnvm install --lts\nnvm use --lts\n<\/code><\/pre>\n<p>Ard\u0131ndan <strong>node -v<\/strong> ve <strong>npm -v<\/strong> ile s\u00fcr\u00fcmleri kontrol edin.<\/p>\n<h3><span id=\"3_Ghost_veya_Diger_Headless_Blog_Uygulamasini_Kurmak\">3) Ghost veya Di\u011fer Headless Blog Uygulamas\u0131n\u0131 Kurmak<\/span><\/h3>\n<p>Ghost kullan\u0131yorsan\u0131z Ghost-CLI i\u015finizi olduk\u00e7a kolayla\u015ft\u0131r\u0131r:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">npm install -g ghost-cli\nmkdir -p \/var\/www\/ghost\ncd \/var\/www\/ghost\nghost install\n<\/code><\/pre>\n<p>Ghost-CLI, kurulum s\u0131ras\u0131nda sizden alan ad\u0131n\u0131z\u0131, veritaban\u0131 bilgilerinizi, SMTP ayarlar\u0131n\u0131z\u0131 sorar ve isterseniz Nginx + SSL yap\u0131land\u0131rmas\u0131n\u0131 da otomatik olu\u015fturur. Ancak \u00e7o\u011fu zaman Nginx ve SSL\u2019i kendiniz elle y\u00f6netmek isteyeceksiniz; \u00f6zellikle ayn\u0131 sunucuda birden fazla site\/uygulama host ediyorsan\u0131z.<\/p>\n<p>Kendi Node.js tabanl\u0131 blogunuzu geli\u015ftiriyorsan\u0131z, proje klas\u00f6r\u00fcn\u00fcz\u00fc <strong>\/var\/www\/proje-ad\u0131<\/strong> alt\u0131nda tutup <strong>npm install<\/strong> ve <strong>npm run start<\/strong> gibi komutlarla \u00fcretim modunda \u00e7al\u0131\u015ft\u0131rman\u0131z yeterlidir. Burada \u00f6nemli olan, uygulaman\u0131n <strong>her zaman ayakta kalmas\u0131n\u0131<\/strong> sa\u011flayacak bir process manager kullanmak.<\/p>\n<h3><span id=\"4_Process_Manager_systemd_veya_PM2\">4) Process Manager: systemd veya PM2<\/span><\/h3>\n<p>Ghost-CLI zaten systemd servis dosyas\u0131 olu\u015fturur, ancak kendi uygulaman\u0131z i\u00e7in manuel olarak tan\u0131mlayabilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">[Unit]\nDescription=Ghost Blog\nAfter=network.target\n\n[Service]\nType=simple\nUser=ghost\nWorkingDirectory=\/var\/www\/ghost\nExecStart=\/usr\/bin\/node current\/index.js\nRestart=always\nEnvironment=NODE_ENV=production\n\n[Install]\nWantedBy=multi-user.target\n<\/code><\/pre>\n<p>Alternatif olarak, birden fazla Node.js uygulamas\u0131n\u0131 daha kolay y\u00f6netmek i\u00e7in PM2 kullanabilirsiniz. Node.js\u2019i canl\u0131ya al\u0131rken PM2, Nginx ve SSL\u2019i birlikte kulland\u0131\u011f\u0131m\u0131z daha geni\u015f bir rehbere ihtiyac\u0131n\u0131z varsa, <a href=\"https:\/\/www.dchost.com\/blog\/node-jsi-canliya-alirken-panik-yapma-pm2-systemd-nginx-ssl-ve-sifir-kesinti-deploy-nasil-kurulur\/\">Node.js\u2019i canl\u0131ya alma rehberimiz<\/a> ad\u0131m ad\u0131m yol g\u00f6sterecektir.<\/p>\n<h2><span id=\"Nginx_Reverse_Proxy_Yapilandirmasi\">Nginx Reverse Proxy Yap\u0131land\u0131rmas\u0131<\/span><\/h2>\n<p>Ghost veya headless blog uygulaman\u0131z 127.0.0.1:2368 portunda dinliyorsa, Nginx sanal host\u2019unuz yakla\u015f\u0131k olarak \u015f\u00f6yle g\u00f6r\u00fcn\u00fcr:<\/p>\n<pre class=\"language-nginx line-numbers\"><code class=\"language-nginx\">server {\n    listen 80;\n    server_name blog.ornekalanadi.com;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:2368;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}\n<\/code><\/pre>\n<p>Bu yap\u0131 temel bir HTTP reverse proxy sa\u011flar. Sonraki ad\u0131mda buna <strong>SSL terminasyonu<\/strong> ekleyerek 443 portunu da devreye alaca\u011f\u0131z. Nginx taraf\u0131nda cache, gzip\/brotli s\u0131k\u0131\u015ft\u0131rma ve HTTP\/2 gibi performans odakl\u0131 ayarlarla ilgileniyorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/brotli-ve-gzip-sikistirma-ayarlari-nginx-apache-ve-litespeedde-core-web-vitals-icin-dogru-konfigurasyon\/\">Brotli ve Gzip s\u0131k\u0131\u015ft\u0131rma rehberimiz<\/a> pratik ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h2><span id=\"SSL_ve_HTTPS_Lets_Encrypt_ile_Otomatik_Sertifika_Yonetimi\">SSL ve HTTPS: Let\u2019s Encrypt ile Otomatik Sertifika Y\u00f6netimi<\/span><\/h2>\n<h3><span id=\"1_Lets_Encrypt_ile_Temel_SSL_Kurulumu\">1) Let\u2019s Encrypt ile Temel SSL Kurulumu<\/span><\/h3>\n<p>Ghost gibi modern bloglar i\u00e7in HTTPS art\u0131k opsiyon de\u011fil, zorunluluk. SEO, g\u00fcvenlik ve taray\u0131c\u0131 uyar\u0131lar\u0131 a\u00e7\u0131s\u0131ndan mutlaka HTTPS kullanmal\u0131s\u0131n\u0131z. En pratik yol, Let\u2019s Encrypt kullanmak ve sertifikalar\u0131 otomatik yenilemek:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">apt install certbot python3-certbot-nginx\ncertbot --nginx -d blog.ornekalanadi.com\n<\/code><\/pre>\n<p>Bu komut, Nginx konfig\u00fcrasyonunuza gerekli <strong>listen 443 ssl<\/strong> bloklar\u0131n\u0131, <strong>ssl_certificate<\/strong> ve <strong>ssl_certificate_key<\/strong> ayarlar\u0131n\u0131 ekler ve 90 g\u00fcnde bir otomatik yenileme i\u00e7in cron\/systemd timer olu\u015fturur. Let\u2019s Encrypt\u2019i cPanel ve DirectAdmin taraf\u0131nda nas\u0131l otomatik kullanabilece\u011finizi merak ediyorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/lets-encrypt-ile-ucretsiz-ssl-sertifikasi-kurulumu-cpanel-ve-directadminde-otomatik-yenileme-rehberi\/\">Let\u2019s Encrypt otomatik yenileme rehberimizde<\/a> detayl\u0131 \u00f6rnekler bulabilirsiniz.<\/p>\n<h3><span id=\"2_HTTPden_HTTPSe_Zorunlu_Yonlendirme_ve_HSTS\">2) HTTP\u2019den HTTPS\u2019e Zorunlu Y\u00f6nlendirme ve HSTS<\/span><\/h3>\n<p>SEO kayb\u0131 ya\u015famamak ve kullan\u0131c\u0131lar\u0131n her zaman HTTPS \u00fczerinden ba\u011flanmas\u0131n\u0131 sa\u011flamak i\u00e7in 80 portundaki b\u00fct\u00fcn trafi\u011fi 301 ile 443\u2019e y\u00f6nlendirmek gerekir. \u00d6rnek:<\/p>\n<pre class=\"language-nginx line-numbers\"><code class=\"language-nginx\">server {\n    listen 80;\n    server_name blog.ornekalanadi.com;\n    return 301 https:\/\/$host$request_uri;\n}\n<\/code><\/pre>\n<p>Daha ileri seviye g\u00fcvenlik i\u00e7in <strong>HSTS (HTTP Strict Transport Security)<\/strong> ba\u015fl\u0131\u011f\u0131n\u0131 da ekleyebilirsiniz. HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131, CSP ve HSTS\u2019i detayl\u0131ca anlatt\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/http-guvenlik-basliklari-rehberi-hsts-csp-ve-digerlerini-ne-zaman-nasil-uygulamalisin\/\">HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131 rehberimiz<\/a>, Ghost gibi modern sitelerde HTTPS g\u00fcvenli\u011fini sertle\u015ftirmek i\u00e7in iyi bir referans.<\/p>\n<h3><span id=\"3_Tek_IP_Uzerinde_Birden_Fazla_HTTPS_Blog_SNI\">3) Tek IP \u00dczerinde Birden Fazla HTTPS Blog (SNI)<\/span><\/h3>\n<p>Ajanslar ve \u00e7oklu proje y\u00f6neten ekipler i\u00e7in s\u0131k sorulan soru: \u201cTek IP \u00fczerinde birden fazla Ghost blogu HTTPS ile \u00e7al\u0131\u015ft\u0131rabilir miyim?\u201d. Evet, modern taray\u0131c\u0131lar\u0131n destekledi\u011fi <strong>SNI (Server Name Indication)<\/strong> teknolojisi sayesinde, ayn\u0131 IP \u00fczerinde birden fazla alan ad\u0131 ve sertifika kullanabilirsiniz. Bu konuyu detayl\u0131 anlatt\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/tek-ip-uzerinde-birden-fazla-https-site-barindirmak-sni-nedir\/\">tek IP \u00fczerinde birden fazla HTTPS site bar\u0131nd\u0131rma rehberi<\/a> tam da bu senaryolar i\u00e7in yaz\u0131ld\u0131.<\/p>\n<h2><span id=\"Headless_Senaryolar_Ghost_API_NextjsNuxt_ve_Statik_Frontendler\">Headless Senaryolar: Ghost API + Next.js\/Nuxt ve Statik Frontend\u2019ler<\/span><\/h2>\n<p>Ghost\u2019u sadece klasik blog temalar\u0131yla de\u011fil, ayn\u0131 zamanda bir <strong>headless i\u00e7erik kayna\u011f\u0131 (Content API)<\/strong> olarak da kullanabilirsiniz. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>Ghost, admin paneli ve i\u00e7erik y\u00f6netimi i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li>\u00d6n y\u00fczde Next.js, Nuxt veya ba\u015fka bir JS framework ile \u00f6zel bir aray\u00fcz geli\u015ftirilir.<\/li>\n<li>Frontend, Ghost API\u2019den JSON olarak i\u00e7erikleri \u00e7eker.<\/li>\n<\/ul>\n<p>Bu mimari, <a href=\"https:\/\/www.dchost.com\/blog\/headless-cms-ve-jamstack-siteler-icin-hosting-rehberi-statik-build-object-storage-ve-serverless-fonksiyonlar\/\">headless CMS ve Jamstack siteler i\u00e7in hosting rehberimizde<\/a> anlatt\u0131\u011f\u0131m\u0131z yakla\u015f\u0131ma olduk\u00e7a benzer. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>Ghost ve veritaban\u0131 DCHost VPS \u00fczerinde \u00e7al\u0131\u015f\u0131r.<\/li>\n<li>Next.js\/Nuxt uygulamas\u0131 SSR (server-side render) ya da SSG (statik export) olarak ayr\u0131 bir Node.js s\u00fcrecinde veya statik olarak host edilir.<\/li>\n<li>\u00d6nde yine Nginx reverse proxy vard\u0131r, alt yollar\u0131 API ve frontend aras\u0131nda payla\u015ft\u0131r\u0131rs\u0131n\u0131z.<\/li>\n<\/ul>\n<p>Bu senaryolarda dikkat etmeniz gereken ek ba\u015fl\u0131klar:<\/p>\n<ul>\n<li>CORS (Cross-Origin Resource Sharing) ayarlar\u0131.<\/li>\n<li>API endpointlerinin sadece gerekli origin\u2019lerden \u00e7a\u011fr\u0131lmas\u0131na izin verilmesi.<\/li>\n<li>\u00d6nbellekleme (CDN, Nginx cache, statik build) stratejileri.<\/li>\n<\/ul>\n<h2><span id=\"Guvenlik_Yedekleme_ve_Guncelleme_Stratejileri\">G\u00fcvenlik, Yedekleme ve G\u00fcncelleme Stratejileri<\/span><\/h2>\n<h3><span id=\"1_Sunucu_ve_Uygulama_Guvenligi\">1) Sunucu ve Uygulama G\u00fcvenli\u011fi<\/span><\/h3>\n<p>Ghost ve benzeri headless blog platformlar\u0131 genellikle admin paneli, API anahtarlar\u0131 ve webhooks gibi hassas y\u00fczeylere sahiptir. Bu y\u00fczden:<\/p>\n<ul>\n<li>SSH i\u00e7in parola yerine anahtar temelli giri\u015f kullan\u0131n.<\/li>\n<li>G\u00fcvenlik duvar\u0131nda sadece 80, 443 ve y\u00f6netim i\u00e7in gerekliyse s\u0131n\u0131rl\u0131 IP\u2019lere a\u00e7\u0131k olan 22 portunu tutun.<\/li>\n<li>fail2ban ile brute-force denemelerini engelleyin.<\/li>\n<li>Ghost admin panelini m\u00fcmk\u00fcnse \u00f6zel bir alt yola veya sadece VPN\/mTLS ile eri\u015filebilir bir a\u011fa ta\u015f\u0131y\u0131n.<\/li>\n<\/ul>\n<p>Genel VPS g\u00fcvenlik mimarisi hakk\u0131nda daha derinlemesine bir bak\u0131\u015f i\u00e7in, <a href=\"https:\/\/www.dchost.com\/blog\/vps-sunucu-guvenligi-pratik-olceklenebilir-ve-dogrulanabilir-yaklasimlar\/\">VPS sunucu g\u00fcvenli\u011fi i\u00e7in pratik ve \u00f6l\u00e7eklenebilir yakla\u015f\u0131mlar\u0131 anlatt\u0131\u011f\u0131m\u0131z yaz\u0131y\u0131<\/a> inceleyebilirsiniz.<\/p>\n<h3><span id=\"2_Yedekleme_Veritabani_Icerik_Dosyalari\">2) Yedekleme: Veritaban\u0131 + \u0130\u00e7erik Dosyalar\u0131<\/span><\/h3>\n<p>Ghost i\u00e7in yedeklemenin iki ana aya\u011f\u0131 vard\u0131r:<\/p>\n<ul>\n<li><strong>MySQL\/MariaDB veritaban\u0131:<\/strong> \u0130\u00e7erikler, kullan\u0131c\u0131lar, ayarlar.<\/li>\n<li><strong>\u0130\u00e7erik dosyalar\u0131:<\/strong> \/content klas\u00f6r\u00fc i\u00e7indeki g\u00f6rseller, temalar, ayarlar.<\/li>\n<\/ul>\n<p>G\u00fcnl\u00fck veritaban\u0131 dump\u2019lar\u0131 (mysqldump) ve \/var\/www\/ghost\/content klas\u00f6r\u00fcn\u00fcn d\u00fczenli ar\u015fivlenmesi en temel yakla\u015f\u0131md\u0131r. Daha sa\u011flam bir strateji i\u00e7in 3-2-1 kural\u0131n\u0131 benimseyin: 3 kopya, 2 farkl\u0131 ortam, 1 kopya farkl\u0131 lokasyonda. Bu konuyu uygulamaya d\u00f6kmek i\u00e7in, <a href=\"https:\/\/www.dchost.com\/blog\/3-2-1-yedekleme-stratejisi-neden-ise-yariyor-cpanel-plesk-ve-vpste-otomatik-yedekleri-nasil-kurarsin\/\">3-2-1 yedekleme stratejisi rehberimizi<\/a> mutlaka okuyun.<\/p>\n<h3><span id=\"3_Guncellemeler_Nodejs_Ghost_ve_Bagimliliklar\">3) G\u00fcncellemeler: Node.js, Ghost ve Ba\u011f\u0131ml\u0131l\u0131klar<\/span><\/h3>\n<p>Ghost ve benzeri headless bloglar d\u00fczenli aral\u0131klarla g\u00fcncellenir. Bu g\u00fcncellemeler sadece \u00f6zellik de\u011fil, <strong>g\u00fcvenlik yamalar\u0131<\/strong> da i\u00e7erir. Dikkat etmeniz gerekenler:<\/p>\n<ul>\n<li>Node.js\u2019i m\u00fcmk\u00fcnse LTS s\u00fcr\u00fcmler aras\u0131nda g\u00fcncel tutun.<\/li>\n<li>Ghost-CLI \u00fczerinden <strong>ghost update<\/strong> komutuyla g\u00fcncelleme yap\u0131n.<\/li>\n<li>G\u00fcncelleme \u00f6ncesi veritaban\u0131 ve i\u00e7erik klas\u00f6r\u00fcn\u00fcn yede\u011fini al\u0131n.<\/li>\n<li>Canl\u0131 ortamdan \u00f6nce staging bir Ghost kurulumu \u00fczerinde g\u00fcncellemeyi test etmek olduk\u00e7a sa\u011fl\u0131kl\u0131d\u0131r.<\/li>\n<\/ul>\n<h2><span id=\"Olceklendirme_ve_Coklu_Blog_Senaryolari\">\u00d6l\u00e7eklendirme ve \u00c7oklu Blog Senaryolar\u0131<\/span><\/h2>\n<p>Zamanla blog trafi\u011finiz artabilir veya ayn\u0131 sunucuda birden fazla Ghost\/headless blog host etmek isteyebilirsiniz. Bu durumda tipik olarak \u015fu yollar \u00f6ne \u00e7\u0131kar:<\/p>\n<ul>\n<li>Ayn\u0131 VPS\u2019te birden fazla Ghost instance\u2019\u0131 (farkl\u0131 portlar ve farkl\u0131 Nginx server_name bloklar\u0131).<\/li>\n<li>Veritaban\u0131n\u0131 ayr\u0131 bir VPS\/dedicated sunucuya ta\u015f\u0131yarak uygulama ve veriyi ay\u0131rmak.<\/li>\n<li>\u00d6n tarafa CDN koyarak statik i\u00e7erik trafi\u011fini hafifletmek.<\/li>\n<\/ul>\n<p>Uygulama ve veritaban\u0131 sunucular\u0131n\u0131 ay\u0131rman\u0131n ne zaman mant\u0131kl\u0131 hale geldi\u011fini merak ediyorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/veritabani-sunucusunu-uygulama-sunucusundan-ayirmak-ne-zaman-mantikli\/\">veritaban\u0131 sunucusunu uygulama sunucusundan ay\u0131rma rehberimiz<\/a> bu karar\u0131 daha net vermenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2><span id=\"DCHost_Uzerinde_Ghost_ve_Headless_Blog_Platformlari_Icin_Onerdigimiz_Yol_Haritasi\">DCHost \u00dczerinde Ghost ve Headless Blog Platformlar\u0131 \u0130\u00e7in \u00d6nerdi\u011fimiz Yol Haritas\u0131<\/span><\/h2>\n<p>DCHost taraf\u0131nda Ghost ve di\u011fer Node.js tabanl\u0131 blog\/headless \u00e7\u00f6z\u00fcmler i\u00e7in pratikte \u00fc\u00e7 tipik profil g\u00f6r\u00fcyoruz:<\/p>\n<ul>\n<li><strong>Ki\u015fisel veya k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli kurumsal blog:<\/strong> 1\u20132 vCPU, 2\u20134 GB RAM, h\u0131zl\u0131 NVMe diskli bir VPS genellikle fazlas\u0131yla yeterli. Tek bir Ghost instance\u2019\u0131 ve Nginx reverse proxy ile sade bir mimari.<\/li>\n<li><strong>Ajans ve \u00e7oklu proje y\u00f6netimi:<\/strong> Birden fazla Ghost veya Node.js tabanl\u0131 blogu tek bir g\u00fc\u00e7l\u00fc VPS veya dedicated sunucuda bar\u0131nd\u0131rmak, her proje i\u00e7in ayr\u0131 sistem kullan\u0131c\u0131s\u0131 ve ayr\u0131 Nginx site konfig\u00fcrasyonu ile izole bir yap\u0131 kurmak.<\/li>\n<li><strong>Y\u00fcksek trafikli yay\u0131nlar:<\/strong> Ayr\u0131 veritaban\u0131 sunucusu, \u00f6n tarafta CDN, gerekiyorsa birden fazla uygulama sunucusu ve Nginx\/HAProxy ile y\u00fck dengeleme.<\/li>\n<\/ul>\n<p>Hangi profile daha yak\u0131n oldu\u011funuzdan emin de\u011filseniz, trafik tahmini, i\u00e7erik tipi ve b\u00fcy\u00fcme planlar\u0131n\u0131za g\u00f6re sizinle birlikte kapasite analizi yap\u0131p uygun DCHost altyap\u0131s\u0131n\u0131 \u00f6nerebiliriz. Zaten bu yaz\u0131da bahsetti\u011fimiz mimarilerin b\u00fcy\u00fck k\u0131sm\u0131n\u0131, m\u00fc\u015fterilerimizle birlikte birebir sahada kuruyor ve i\u015fletiyoruz.<\/p>\n<h2><span id=\"Ozet_ve_Sonraki_Adimlar\">\u00d6zet ve Sonraki Ad\u0131mlar<\/span><\/h2>\n<p>Ghost ve di\u011fer Node.js tabanl\u0131 headless blog platformlar\u0131, klasik PHP tabanl\u0131 CMS\u2019lere g\u00f6re biraz daha fazla altyap\u0131 bilgisi istiyor; fakat do\u011fru kuruldu\u011funda performans, esneklik ve modern geli\u015ftirme deneyimi a\u00e7\u0131s\u0131ndan \u00e7ok g\u00fc\u00e7l\u00fc bir se\u00e7enek sunuyor. Bu yaz\u0131da DCHost olarak sahada defalarca uygulad\u0131\u011f\u0131m\u0131z \u015fu \u00e7er\u00e7eveyi \u00f6zetledik:<\/p>\n<ul>\n<li>Payla\u015f\u0131ml\u0131 hosting yerine VPS veya dedicated sunucu tercih etmek.<\/li>\n<li>Node.js uygulamas\u0131n\u0131 systemd\/PM2 ile s\u00fcrekli ayakta tutmak.<\/li>\n<li>Nginx reverse proxy ile alan ad\u0131 ve port y\u00f6nlendirmesini \u00e7\u00f6zmek.<\/li>\n<li>Let\u2019s Encrypt ile otomatik SSL ve HTTP\u2192HTTPS y\u00f6nlendirmelerini do\u011fru kurgulamak.<\/li>\n<li>G\u00fcvenlik, yedekleme ve \u00f6l\u00e7eklendirmeyi ba\u015ftan planlamak.<\/li>\n<\/ul>\n<p>Ghost veya ba\u015fka bir headless blog projesi planl\u0131yorsan\u0131z, DCHost \u00fczerindeki VPS, dedicated sunucu veya colocation se\u00e7eneklerinden biri sizin i\u00e7in mutlaka uygun bir temel sunacakt\u0131r. Mimari tasar\u0131m, kapasite planlama ve ilk kurulum ad\u0131mlar\u0131nda destek almak isterseniz, ekibimizle ileti\u015fime ge\u00e7meniz yeterli; birlikte sizin projenize uygun, s\u00fcrd\u00fcr\u00fclebilir ve g\u00fcvenli bir hosting mimarisi \u00e7\u0131karabiliriz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Ghost ve Di\u011fer Headless Blog Platformlar\u0131 \u0130\u00e7in Neden \u00d6zel Bir Hosting Mimarisi Gerekir?2 Ghost ve Headless Blog Yakla\u015f\u0131m\u0131n\u0131 K\u0131saca Konumland\u0131ral\u0131m3 Do\u011fru Sunucu Tipi ve Kaynak Planlama: payla\u015f\u0131ml\u0131 hosting Neden Yetmez?4 Temel Mimari: Node.js Uygulamas\u0131 + Nginx Reverse Proxy + SSL5 Ad\u0131m Ad\u0131m Kurulum: Linux, Node.js, Ghost ve Veritaban\u01315.1 1) Sunucuyu Haz\u0131rlama5.2 2) Node.js Kurulumu5.3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4567,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-4566","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/4566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=4566"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/4566\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/4567"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=4566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=4566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=4566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}