# Kendi Blog Siteni Nasıl Yaparsın?

> Bu yazımda kendi blog siteni nasıl açabileceğinden bahsediyorum.

- URL: https://kayhan.blog/kendi-blog-siteni-nasil-yaparsin
- Dil: tr
- Yayın: 2026-09-03
- Kategori: Yazılım
- Etiketler: blog, geliştirme, Node.js, Docker, Nginx, PM2, sunucu, yönetimi
- Yazar: Kayhan (https://kayhan.blog/hakkimda)

---
Selamlar,

Bu yazımda, yayında olan blog siteme benzer bir yapıyı sıfırdan nasıl kurup canlıya alabileceğinizi adım adım anlatacağım. İhtiyacınıza göre ister doğrudan Node/PM2 ortamında çalıştırabilir, isterseniz de repoda yer alan Docker altyapısıyla konteyner olarak yayına alabilirsiniz.

Kullanacağımız git repomuz: [https://github.com/SwitchAlpha/myblog](https://github.com/SwitchAlpha/myblog)



İlk adım olarak **Hetzner** gibi fiyat/performans odaklı bir sağlayıcıdan sanal sunucu (VPS) temin edip alan adınızın DNS (A) kaydını bu sunucunun IP adresine yönlendirmeniz gerekiyor. Sunucunuza SSH ile bağlandıktan sonra kaynak kodları klonlayarak işe başlıyoruz:

```bash
git clone https://github.com/SwitchAlpha/myblog.git &amp;&amp; cd myblog

```

Buradan sonra dağıtım için iki farklı yol izleyebilirsiniz:

---
## **Yöntem 1: Doğrudan Kurulum (Node / PM2 &amp; Nginx)**
### **1. Bağımlılıkları Kurma ve Test**

```bash
pnpm setup
pnpm dev

```

Yerel test sunucusunda sitenin sorunsuz çalıştığını teyit ettikten sonra canlı ortam çıktısını alıyoruz:

```bash
pnpm build

```
### **2. PM2 ile Sürekli Çalıştırma**

Uygulamanın arka planda kesintisiz çalışması ve sunucu yeniden başladığında otomatik açılması için:

```bash
pm2 start pnpm --name "myblog" -- start
pm2 save
pm2 startup

```
### **3. Nginx Reverse Proxy Yapılandırması**

```bash
sudo apt update &amp;&amp; sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/myblog

```

Açılan dosyaya aşağıdaki yönlendirme bloğunu ekleyin (`alanadiniz.com` ve port bilgisini kendi yapınıza göre düzenleyin):

```nginx
server {
    listen 80;
    server_name alanadiniz.com www.alanadiniz.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

```

Yapılandırmayı aktif edip Nginx servisini test ederek yeniden başlatıyoruz:

```bash
sudo ln -s /etc/nginx/sites-available/myblog /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

```

---
## **Yöntem 2: Docker &amp; Docker Compose ile Kurulum**

Sunucuda paket ve sürüm bağımlılıklarıyla uğraşmadan izole bir ortamda çalıştırmak isterseniz, repoda hazır bulunan `Dockerfile`'ı Docker Compose ile ayağa kaldırabilirsiniz.

Proje dizininde bir `docker-compose.yml` dosyası oluşturun:

```yaml
version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: myblog_app
    restart: always
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production

```

Konteyneri arka planda derleyip çalıştırmak için:

```bash
docker compose up -d --build

```

Konteyner `3000` portunda çalıştıktan sonra, trafiği karşılamak için yukarıdaki Nginx adımlarını uygulayarak trafiği `http://localhost:3000` adresine yönlendirmeniz yeterlidir.

---
## **Son Adım: SSL Sertifikası (HTTPS)**

Hangi dağıtım yöntemini seçerseniz seçin, sitenizi güvenli bağlantıya (HTTPS) geçirmek için Certbot ile ücretsiz Let's Encrypt SSL sertifikasını tanımlayın:

```bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com

```

Tüm işlemler bu kadar! Blog siteniz artık alan adınız üzerinden güvenli ve canlı şekilde yayında.

Vakit ayırıp okuduğunuz için teşekkürler, sonraki yazılarda görüşmek üzere!
