Skip to main content

Command Palette

Search for a command to run...

Node.JS - Webhook Kurulum Rehberi

Updated
3 min read

Bu rehber, Node.js tabanlı bir webhook hizmetinin Ubuntu/Debian tabanlı bir Linux sisteminde nasıl kurulacağını ve yapılandırılacağını açıklamaktadır. Hizmet, Nginx ile ters proxy olarak çalışacak ve Let's Encrypt sertifikası ile HTTPS üzerinden güvenli bir şekilde erişilebilir olacaktır.

Başlamadan önce, aşağıdakilerin sisteminizde kurulu olduğundan emin olun:

  • Node.js ve npm

  • Nginx web sunucusu

  • Certbot (Let's Encrypt sertifikaları için)

  • Çalışan bir webhook uygulamanız (/home/berk/webhook/index.js dosyası)

  • webhook.iberk.me gibi webhook hizmetinize yönlendirilmiş bir alan adı

1. Node.js Webhook Sunucusunu Oluştur

webhook.js (örnek)

const http = require('http');

const server = http.createServer((req, res) => {
  if (req.method === 'POST') {
    let body = '';

    req.on('data', chunk => body += chunk.toString());
    req.on('end', () => {
      console.log('📩 Webhook received:', body);
      res.writeHead(200);
      res.end('Received');
    });
  } else {
    res.writeHead(405);
    res.end('Only POST allowed');
  }
});

const PORT = 3001;
server.listen(PORT, () => {
  console.log(`🚀 Webhook server running on port ${PORT}`);
});

2. Webhook Servisinin Oluşturulması

Webhook hizmetini bir systemd servisi olarak yapılandıralım. Bu, sisteminiz yeniden başlatıldığında bile otomatik olarak çalışmasını sağlar.

sudo nano /etc/systemd/system/webhook.service

Dosyaya aşağıdaki içeriği ekleyin:

[Unit]
Description=Webhook
After=network.target

[Service]
ExecStart=/usr/bin/node /home/berk/webhook/webhook.js
Restart=always
User=berk
WorkingDirectory=/home/berk/webhook
Environment=NODE_ENV=production
Environment=PORT=3001

[Install]
WantedBy=multi-user.target

Açıklamalar:

  • Description: Servisin açıklaması

  • After: Bu servisin ağ hizmetleri başladıktan sonra başlaması gerektiğini belirtir

  • ExecStart: Çalıştırılacak komut

  • WorkingDirectory: Komutun çalıştırılacağı dizin

  • Restart: Hizmet çöktüğünde otomatik olarak yeniden başlatılmasını sağlar

  • User: Hizmetin hangi kullanıcı altında çalışacağı

  • Environment: Ortam değişkenleri

  • WantedBy: Hangi hedef için bu hizmetin başlatılacağını belirtir

Servisi etkinleştirin ve başlatın:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable webhook.service
sudo systemctl start webhook.service
sudo systemctl status webhook.service

Servisin durumunu kontrol edin:

sudo systemctl status webhook.service

2. Nginx Web Sunucusunun Yapılandırılması

Nginx'i webhook hizmetiniz için bir ters proxy olarak yapılandıralım:

sudo nano /etc/nginx/sites-available/webhook

Dosyaya aşağıdaki içeriği ekleyin:

server {
    listen 80;
    listen [::]:80;  # IPv6 için
    server_name webhook.iberk.me;

    location / {
        proxy_pass http://localhost:3001;
        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;
    }
}

Açıklamalar:

  • listen: Nginx'in dinleyeceği port (HTTP için 80)

  • server_name: Bu yapılandırmanın geçerli olduğu alan adı

  • proxy_pass: İsteklerin yönlendirileceği iç adres (Node.js uygulamanızın çalıştığı port)

  • proxy_set_header: Webhook sunucusuna iletilen HTTP başlıklarını ayarlar

  • proxy_cache_bypass: Proxy önbelleğini devre dışı bırakır, gerçek zamanlı iletişim için önemlidir

Symbolic link oluşturun ve Nginx'i yeniden başlatın:

sudo ln -s /etc/nginx/sites-available/webhook /etc/nginx/sites-enabled
sudo nginx -t  # Yapılandırma dosyasını test edin
sudo systemctl reload nginx

3. HTTPS Sertifikasının Kurulumu

Let's Encrypt sertifikasını kuralım:

sudo apt update && sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d webhook.iberk.me

Bu komut:

  1. webhook.iberk.me için yeni bir SSL sertifikası oluşturur

  2. Nginx yapılandırmasını otomatik olarak günceller

  3. HTTP isteklerini HTTPS'e yönlendirir

Certbot, interaktif bir sihirbaz gibi çalışır ve ekrandaki talimatları takip etmeniz gerekir.

Sertifika otomatik olarak eklenir. Test etmek için:

curl -X POST https://webhook.iberk.me -d "Merhaba webhook"

Logları görmek için:

journalctl -u webhook.service -f

4. Sorun Giderme

Webhook servisinde sorun yaşarsanız, aşağıdaki komutlarla günlükleri kontrol edebilirsiniz:

# Webhook servis günlüklerini görüntüle
sudo journalctl -u webhook.service

# Nginx günlüklerini görüntüle
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

Bu kurulumla webhook hizmetiniz şimdi:

  • Bir systemd servisi olarak çalışıyor

  • Nginx ile dış dünyaya açık

  • Let's Encrypt SSL sertifikası ile güvenli

  • Sistem yeniden başlatıldığında otomatik olarak başlıyor