format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightKendi Blog Sunucunuzu Kurun: Hugo ve Caddy Rehberi
- arrow_rightNeden Hugo + Caddy Kombinasyonu?
- arrow_rightTemel Avantajlar
- arrow_rightKarşılaştırma: Hugo+Caddy vs Geleneksel CMS
- arrow_rightÖn Gereksinimler
- arrow_rightAdım 1: Hugo Kurulumu
- arrow_rightResmi Yöntemle Kurulum
- arrow_rightHomebrew ile Kurulum (Alternatif)
- arrow_rightAdım 2: Blog Sitesi Oluşturma
- arrow_rightİlk İçeriği Oluşturma
- arrow_rightAdım 3: Caddy Web Sunucusu Kurulumu
- arrow_rightResmi Repository ile Kurulum
- arrow_rightKurulum Doğrulama
- arrow_rightAdım 4: Caddy Konfigürasyonu
- arrow_rightCaddyfile Düzenleme
- arrow_rightSite Dizini Ayarları
- arrow_rightAdım 5: Otomatik Deploy Scripti
- arrow_rightAdım 6: Otomatik HTTPS
- arrow_rightDNS Ayarları
- arrow_rightSSL Sertifikası Otomatik Alımı
- arrow_rightAdım 7: Systemd Servisi Oluşturma
- arrow_rightPerformans Optimizasyonu
- arrow_right1. Gzip/Brotli Sıkıştırma
- arrow_right2. Önbellek Başlıkları
- arrow_right3. Hugo Optimizasyonları
- arrow_rightGüvenlik Yapılandırması
- arrow_rightFirewall Yapılandırması
- arrow_rightFail2Ban Kurulumu
- arrow_rightYaygın Sorunlar ve Çözümleri
- arrow_right1. Hugo Build Hatası
- arrow_right2. Caddy SSL Hatası
- arrow_right3. Permission Hatası
- arrow_rightSonuç
Kendi Blog Sunucunuzu Kurun: Hugo ve Caddy Rehberi
Statik site oluşturucu Hugo ve modern web sunucusu Caddy kombinasyonu, blog sunucusu kurmanın en hızlı ve güvenli yollarından birini sunar. Bu rehberde, sıfırdan kendi blog sunucunuzu nasıl kuracağınızı adım adım açıklayacağız.
Neden Hugo + Caddy Kombinasyonu?
Hugo ve Caddy birlikte kullanıldığında, geleneksel dinamik blog platformlarına kıyasla önemli avantajlar sağlar. Araştırmalara göre, web sitesi yüklenme süresindeki her 1 saniye gecikme, kullanıcı memnuniyetini %16 oranında düşürür. Hugo+Caddy ikilisi bu sorunu kökten çözer.
Temel Avantajlar
- Hız: Hugo, saniyeler içinde binlerce sayfa oluşturabilen en hızlı statik site oluşturucudur
- Güvenlik: Statik yapı ve Caddy'nin otomatik SSL desteği saldırı yüzeyini minimize eder
- Basitlik: Veritabanı gerektirmez, bakım maliyetleri düşüktür
- Performans: Önbellek gerektirmez, CDN entegrasyonu kolaydır
Karşılaştırma: Hugo+Caddy vs Geleneksel CMS
| Özellik | Hugo + Caddy | WordPress | Ghost |
|---|---|---|---|
| Sayfa Oluşturma Süresi | <1 saniye | 1-3 saniye | 0.5-2 saniye |
| Veritabanı | Yok | MySQL/MariaDB | MySQL |
| Otomatik SSL | Var | Eklenti gerekli | Eklenti gerekli |
| Güvenlik Açıkları | Minimal | Yüksek | Orta |
| Barındırma Maliyeti | Düşük | Yüksek | Orta-Yüksek |
Ön Gereksinimler
Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
- Ubuntu 20.04/22.04 veya Debian tabanlı bir sunucu
- Root veya sudo erişimi olan bir Linux VPS
- Temel terminal bilgisi
- Bir alan adı (domain)
Adım 1: Hugo Kurulumu
Hugo'yu kurmanın birden fazla yolu vardır. En güncel yöntemi kullanalım.
Resmi Yöntemle Kurulum
sudo apt update
sudo apt install -y wget git
# Hugo Extended sürümünü indirin (SCSS desteği için)
wget https://github.com/gohugoio/hugo/releases/download/v0.123.0/hugo_extended_0.123.0_linux-amd64.tar.gz
# İndirilen dosyayı çıkarın
tar -xzf hugo_extended_0.123.0_linux-amd64.tar.gz
# Hugo'yu sistem dizinine taşıyın
sudo mv hugo /usr/local/bin/
# Sürümü kontrol edin
hugo version
Homebrew ile Kurulum (Alternatif)
# Linux'ta Homebrew kurulumu
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Hugo kurulumu
brew install hugo
Adım 2: Blog Sitesi Oluşturma
Hugo kurulduktan sonra ilk blog sitenizi oluşturun.
# Yeni site oluştur
hugo new site benim-blog
# Site dizinine girin
cd benim-blog
# Temel bir tema ekleyin (Ananke teması)
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
# config.toml dosyasını düzenleyin
echo 'theme = "ananke"' >> config.toml
echo 'baseURL = "https://domain-adiniz.com/"' >> config.toml
echo 'languageCode = "tr"' >> config.toml
echo 'title = "Benim Blogum"' >> config.toml
İlk İçeriği Oluşturma
# Yeni bir blog yazısı oluşturun
hugo new posts/ilk-yazi.md
# İçerik dosyasını düzenleyin
cat > content/posts/ilk-yazi.md << 'EOF'
---
title: "İlk Blog Yazım"
date: 2024-01-15
draft: false
---
Bu benim ilk blog yazım. Hugo ve Caddy kullanarak oluşturdum.
## Giriş
Hugo ile statik site oluşturmak gerçekten çok hızlı.
EOF
Sitenizi yerel olarak test etmek için şu komutu çalıştırın:
hugo server -D
Tarayıcınızda http://localhost:1313 adresine giderek sitenizi görebilirsiniz.
Adım 3: Caddy Web Sunucusu Kurulumu
Caddy, otomatik HTTPS ve basit konfigürasyonu ile öne çıkan modern bir web sunucusudur.
Resmi Repository ile Kurulum
# GPG anahtarını ekleyin
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# Repository'yi ekleyin
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# Caddy'yi kurun
sudo apt update
sudo apt install caddy
Kurulum Doğrulama
# Caddy versiyonunu kontrol edin
caddy version
# Servis durumunu kontrol edin
sudo systemctl status caddy
Adım 4: Caddy Konfigürasyonu
Caddy'nin blogunuzu sunması için yapılandırma dosyasını düzenleyin.
Caddyfile Düzenleme
sudo nano /etc/caddy/Caddyfile
Aşağıdaki konfigürasyonu ekleyin:
blog.domain-adiniz.com {
root * /var/www/benim-blog/public
encode gzip
file_server
# Log ayarları
log {
output file /var/log/caddy/blog-access.log
}
# Güvenlik başlıkları
header {
X-Frame-Options "SAMEORIGIN"
X-Content-Type-Options "nosniff"
X-XSS-Protection "1; mode=block"
Referrer-Policy "strict-origin-when-cross-origin"
Content-Security-Policy "default-src 'self'"
}
# 404 hata sayfası
handle_errors {
respond "{err.status_code} {err.status_text}"
}
}
Site Dizini Ayarları
# Hugo çıktı dizinini oluşturun
sudo mkdir -p /var/www/benim-blog
# İzinleri ayarlayın
sudo chown -R $USER:$USER /var/www/benim-blog
sudo chmod -R 755 /var/www/benim-blog
# Hugo'yu bu dizine derleyin
hugo -d /var/www/benim-blog/public
Adım 5: Otomatik Deploy Scripti
Blog içeriğini her güncellediğinizde otomatik olarak derlemek için bir script oluşturun.
cat > deploy.sh << 'EOF'
#!/bin/bash
# Blog kaynak dizini
BLOG_DIR="/home/kullanici/benim-blog"
OUTPUT_DIR="/var/www/benim-blog/public"
echo "Hugo site derleniyor..."
cd $BLOG_DIR
hugo -d $OUTPUT_DIR
echo "Dosya izinleri güncelleniyor..."
sudo chown -R www-data:www-data $OUTPUT_DIR
sudo chmod -R 755 $OUTPUT_DIR
echo "Caddy yapılandırması yenileniyor..."
sudo systemctl reload caddy
echo "Deploy tamamlandı!"
EOF
chmod +x deploy.sh
Adım 6: Otomatik HTTPS
Caddy'nin en büyük avantajlarından biri otomatik SSL sertifikası yönetimidir.
DNS Ayarları
- Alan adınızın DNS ayarlarına gidin
- A kaydı ekleyin:
blog→SERVER_IP - Cloudflare kullanıyorsanız, proxy devre dışı bırakın (DNS only modu)
SSL Sertifikası Otomatik Alımı
Caddy, siteye ilk erişimde otomatik olarak Let's Encrypt'ten SSL sertifikası alır. Herhangi bir ek yapılandırma yapmanıza gerek yoktur.
Sertifikayı manuel olarak yenilemek için:
# Sertifikayı manuel alın
sudo caddy trust
# Yapılandırmayı test edin
sudo caddy validate --config /etc/caddy/Caddyfile
Adım 7: Systemd Servisi Oluşturma
Sunucu yeniden başladığında Hugo derleme işleminin otomatik çalışması için bir systemd servisi oluşturun.
sudo nano /etc/systemd/system/hugo-deploy.service
Aşağıdaki içeriği ekleyin:
[Unit]
Description=Hugo Blog Deployment Service
After=network.target
[Service]
Type=oneshot
User=root
WorkingDirectory=/home/kullanici/benim-blog
ExecStart=/home/kullanici/benim-blog/deploy.sh
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Timer ekleyerek düzenli deploy yapabilirsiniz:
sudo nano /etc/systemd/system/hugo-deploy.timer
[Unit]
Description=Hugo Blog Deployment Timer
[Timer]
OnBootSec=5min
OnUnitActiveSec=1h
Persistent=true
[Install]
WantedBy=timers.target
Servisi etkinleştirin:
sudo systemctl daemon-reload
sudo systemctl enable hugo-deploy.timer
sudo systemctl start hugo-deploy.timer
Performans Optimizasyonu
Blogunuzun hızını artırmak için aşağıdaki optimizasyonları uygulayabilirsiniz.
1. Gzip/Brotli Sıkıştırma
Caddy varsayılan olarak gzip sıkıştırmayı etkinleştirir. Brothli için ek konfigürasyon ekleyebilirsiniz.
2. Önbellek Başlıkları
Tarayıcı önbelleklemeyi etkinleştirmek için Caddyfile'a ekleyin:
header /static Cache-Control "public, max-age=31536000"
3. Hugo Optimizasyonları
# config.toml dosyasına ekleyin
[minify]
disableXML = true
minifyOutput = true
[imaging]
resampleFilter = "lanczos"
quality = 80
Güvenlik Yapılandırması
Blog sunucunuzu güvende tutmak için ek önlemler alın.
Firewall Yapılandırması
# UFW'yi etkinleştirin
sudo ufw enable
# Sadece HTTP, HTTPS ve SSH'ya izin verin
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Firewall durumunu kontrol edin
sudo ufw status
Fail2Ban Kurulumu
sudo apt install fail2ban
# Caddy için jail oluşturun
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[caddy-auth]
enabled = true
port = http,https
filter = caddy-auth
logpath = /var/log/caddy/*.log
maxretry = 5
Yaygın Sorunlar ve Çözümleri
1. Hugo Build Hatası
Problem: "Error: failed to prune categories"
Çözüm: Config dosyasındaki relativeURLs ayarını kontrol edin ve tema uyumluluğunu doğrulayın.
2. Caddy SSL Hatası
Problem: "tls: error fetching ACME account"
Çözüm: DNS kaydının doğru olduğundan emin olun ve Cloudflare proxy'sini devre dışı bırakın.
3. Permission Hatası
Problem: "Permission denied" hataları
Çözüm: Dosya izinlerini düzeltin:
sudo chown -R www-data:www-data /var/www/benim-blog
sudo chmod -R 755 /var/www/benim-blog
Sonuç
Hugo ve Caddy kombinasyonu, kendi blog sunucunuzu kurmanın en modern ve verimli yoludur. Bu rehberde öğrendiğiniz adımlarla:
- Statik blog sitenizi saniyeler içinde oluşturabilirsiniz