<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Random Things | iBerk]]></title><description><![CDATA[Random Things | iBerk]]></description><link>https://blog.iberk.me</link><generator>RSS for Node</generator><lastBuildDate>Sat, 23 May 2026 04:57:35 GMT</lastBuildDate><atom:link href="https://blog.iberk.me/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Sunucuya Code Service (VS Code) Kurulumu]]></title><description><![CDATA[🔧 1. Gerekli Güncellemeleri Yap
sudo apt update && sudo apt upgrade -y

🌐 2. Gerekli Paketleri Yükle
sudo apt install curl wget gnupg -y


📦 3. Code Server'ı İndir ve Kur
Code Server'ın en son sürümünü indirip kurmak için:
curl -fsSL https://code-...]]></description><link>https://blog.iberk.me/sunucuya-code-service-vs-code-kurulumu</link><guid isPermaLink="true">https://blog.iberk.me/sunucuya-code-service-vs-code-kurulumu</guid><category><![CDATA[server]]></category><category><![CDATA[VS Code]]></category><dc:creator><![CDATA[Ayberk Çolakoğlu]]></dc:creator><pubDate>Sat, 24 May 2025 10:50:03 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-1-gerekli-guncellemeleri-yap">🔧 1. Gerekli Güncellemeleri Yap</h2>
<pre><code class="lang-bash">sudo apt update &amp;&amp; sudo apt upgrade -y
</code></pre>
<h2 id="heading-2-gerekli-paketleri-yukle">🌐 2. Gerekli Paketleri Yükle</h2>
<pre><code class="lang-bash">sudo apt install curl wget gnupg -y
</code></pre>
<hr />
<h2 id="heading-3-code-serveri-indir-ve-kur">📦 3. Code Server'ı İndir ve Kur</h2>
<p>Code Server'ın en son sürümünü indirip kurmak için:</p>
<pre><code class="lang-bash">curl -fsSL https://code-server.dev/install.sh | sh
</code></pre>
<p>Kurulumdan sonra <code>code-server</code> komutu aktif olacaktır.</p>
<hr />
<h2 id="heading-4-varsayilan-yapilandirmayi-yap">⚙️ 4. Varsayılan Yapılandırmayı Yap</h2>
<p>Config dosyası:</p>
<pre><code class="lang-bash">~/.config/code-server/config.yaml
</code></pre>
<p>Örnek yapı:</p>
<pre><code class="lang-yaml"><span class="hljs-attr">bind-addr:</span> <span class="hljs-number">127.0</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span><span class="hljs-string">:8080</span>
<span class="hljs-attr">auth:</span> <span class="hljs-string">password</span>
<span class="hljs-attr">password:</span> <span class="hljs-string">kendi-güçlü-şifren</span>
<span class="hljs-attr">cert:</span> <span class="hljs-literal">false</span>
</code></pre>
<blockquote>
<p><code>bind-addr</code>'ı <code>0.0.0.0:8080</code> yaparsan dışarıdan doğrudan erişebilirsin ama güvenlik risklidir. Biz güvenli bağlantı için nginx kullanacağız.</p>
</blockquote>
<hr />
<h2 id="heading-5-systemd-servisi-ile-baslat">🚀 5. Systemd Servisi ile Başlat</h2>
<pre><code class="lang-bash">sudo nano /etc/systemd/system/code-server.service
</code></pre>
<p>İçeriği:</p>
<pre><code class="lang-bash">[Unit]
Description=code-server
After=network.target

[Service]
Type=simple
User=berk
ExecStart=/usr/bin/code-server
Restart=on-failure

[Install]
WantedBy=default.target
</code></pre>
<p>Etkinleştir ve başlat:</p>
<pre><code class="lang-bash">sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl <span class="hljs-built_in">enable</span> --now code-server
</code></pre>
<hr />
<h2 id="heading-6-nginx-ile-guvenli-yayin-ornek-codeiberkmehttpcodeiberkme">🌍 6. NGINX ile Güvenli Yayın (örnek: <a target="_blank" href="http://code.iberk.me"><code>code.iberk.me</code></a>)</h2>
<h3 id="heading-ssl-ile-yayin-icin-ornek-nginx-konfigurasyonu">SSL ile yayın için örnek <code>nginx</code> konfigürasyonu:</h3>
<pre><code class="lang-bash">sudo nano /etc/nginx/sites-available/vscode.example.com
</code></pre>
<pre><code class="lang-nginx"><span class="hljs-section">server</span> {
    <span class="hljs-attribute">listen</span> <span class="hljs-number">80</span>;
    <span class="hljs-attribute">server_name</span> vscode.example.com;

    <span class="hljs-attribute">location</span> / {
        <span class="hljs-attribute">proxy_pass</span> http://127.0.0.1:8080/;
        <span class="hljs-attribute">proxy_set_header</span> Host <span class="hljs-variable">$host</span>;
        <span class="hljs-attribute">proxy_set_header</span> Upgrade <span class="hljs-variable">$http_upgrade</span>;
        <span class="hljs-attribute">proxy_set_header</span> Connection upgrade;
        <span class="hljs-attribute">proxy_set_header</span> Accept-Encoding gzip;
        <span class="hljs-attribute">proxy_set_header</span> X-Real-IP <span class="hljs-variable">$remote_addr</span>;
        <span class="hljs-attribute">proxy_set_header</span> X-Forwarded-For <span class="hljs-variable">$proxy_add_x_forwarded_for</span>;
        <span class="hljs-attribute">proxy_set_header</span> X-Forwarded-Proto <span class="hljs-variable">$scheme</span>;
    }
}
</code></pre>
<pre><code class="lang-bash">sudo ln -s /etc/nginx/sites-available/vscode.example.com /etc/nginx/sites-enabled/
sudo nginx -t &amp;&amp; sudo systemctl restart nginx
</code></pre>
<hr />
<h2 id="heading-7-ssl-sertifikasi-al-lets-encrypt">🔐 7. SSL Sertifikası Al (Let's Encrypt)</h2>
<pre><code class="lang-bash">sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d vscode.example.com
</code></pre>
<hr />
<h2 id="heading-8-test">✅ 8. Test</h2>
<p>Tarayıcında şu adrese git:</p>
<pre><code class="lang-bash">https://vscode.example.com
</code></pre>
<p>ve belirlediğin şifre ile giriş yap.</p>
<hr />
<p>Hazır olduğunda bir sonraki adım olarak <strong>uzaktan klasör erişimi</strong>, <strong>uzantı yükleme</strong>, veya <strong>Git entegrasyonu</strong> gibi işlemleri yapabiliriz. Yardımcı olayım mı?</p>
]]></content:encoded></item><item><title><![CDATA[Node.JS - Webhook Kurulum Rehberi]]></title><description><![CDATA[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üve...]]></description><link>https://blog.iberk.me/nodejs-webhook-kurulum-rehberi</link><guid isPermaLink="true">https://blog.iberk.me/nodejs-webhook-kurulum-rehberi</guid><category><![CDATA[Node.js]]></category><category><![CDATA[General Programming]]></category><dc:creator><![CDATA[Ayberk Çolakoğlu]]></dc:creator><pubDate>Sun, 18 May 2025 20:36:35 GMT</pubDate><content:encoded><![CDATA[<p>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.</p>
<p>Başlamadan önce, aşağıdakilerin sisteminizde kurulu olduğundan emin olun:</p>
<ul>
<li><p>Node.js ve npm</p>
</li>
<li><p>Nginx web sunucusu</p>
</li>
<li><p>Certbot (Let's Encrypt sertifikaları için)</p>
</li>
<li><p>Çalışan bir webhook uygulamanız (<code>/home/berk/webhook/index.js</code> dosyası)</p>
</li>
<li><p><a target="_blank" href="http://webhook.iberk.me"><code>webhook.iberk.me</code></a> gibi webhook hizmetinize yönlendirilmiş bir alan adı</p>
</li>
</ul>
<h2 id="heading-1-nodejs-webhook-sunucusunu-olustur">1. Node.js Webhook Sunucusunu Oluştur</h2>
<p><code>webhook.js</code> (örnek)</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> http = <span class="hljs-built_in">require</span>(<span class="hljs-string">'http'</span>);

<span class="hljs-keyword">const</span> server = http.createServer(<span class="hljs-function">(<span class="hljs-params">req, res</span>) =&gt;</span> {
  <span class="hljs-keyword">if</span> (req.method === <span class="hljs-string">'POST'</span>) {
    <span class="hljs-keyword">let</span> body = <span class="hljs-string">''</span>;

    req.on(<span class="hljs-string">'data'</span>, <span class="hljs-function"><span class="hljs-params">chunk</span> =&gt;</span> body += chunk.toString());
    req.on(<span class="hljs-string">'end'</span>, <span class="hljs-function">() =&gt;</span> {
      <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'📩 Webhook received:'</span>, body);
      res.writeHead(<span class="hljs-number">200</span>);
      res.end(<span class="hljs-string">'Received'</span>);
    });
  } <span class="hljs-keyword">else</span> {
    res.writeHead(<span class="hljs-number">405</span>);
    res.end(<span class="hljs-string">'Only POST allowed'</span>);
  }
});

<span class="hljs-keyword">const</span> PORT = <span class="hljs-number">3001</span>;
server.listen(PORT, <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`🚀 Webhook server running on port <span class="hljs-subst">${PORT}</span>`</span>);
});
</code></pre>
<h2 id="heading-2-webhook-servisinin-olusturulmasi">2. Webhook Servisinin Oluşturulması</h2>
<p>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.</p>
<pre><code class="lang-bash">sudo nano /etc/systemd/system/webhook.service
</code></pre>
<p>Dosyaya aşağıdaki içeriği ekleyin:</p>
<pre><code class="lang-bash">[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
</code></pre>
<p><strong>Açıklamalar:</strong></p>
<ul>
<li><p><code>Description</code>: Servisin açıklaması</p>
</li>
<li><p><code>After</code>: Bu servisin ağ hizmetleri başladıktan sonra başlaması gerektiğini belirtir</p>
</li>
<li><p><code>ExecStart</code>: Çalıştırılacak komut</p>
</li>
<li><p><code>WorkingDirectory</code>: Komutun çalıştırılacağı dizin</p>
</li>
<li><p><code>Restart</code>: Hizmet çöktüğünde otomatik olarak yeniden başlatılmasını sağlar</p>
</li>
<li><p><code>User</code>: Hizmetin hangi kullanıcı altında çalışacağı</p>
</li>
<li><p><code>Environment</code>: Ortam değişkenleri</p>
</li>
<li><p><code>WantedBy</code>: Hangi hedef için bu hizmetin başlatılacağını belirtir</p>
</li>
</ul>
<p>Servisi etkinleştirin ve başlatın:</p>
<pre><code class="lang-bash">sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl <span class="hljs-built_in">enable</span> webhook.service
sudo systemctl start webhook.service
sudo systemctl status webhook.service
</code></pre>
<p>Servisin durumunu kontrol edin:</p>
<pre><code class="lang-bash">sudo systemctl status webhook.service
</code></pre>
<h2 id="heading-2-nginx-web-sunucusunun-yapilandirilmasi">2. Nginx Web Sunucusunun Yapılandırılması</h2>
<p>Nginx'i webhook hizmetiniz için bir ters proxy olarak yapılandıralım:</p>
<pre><code class="lang-bash">sudo nano /etc/nginx/sites-available/webhook
</code></pre>
<p>Dosyaya aşağıdaki içeriği ekleyin:</p>
<pre><code class="lang-bash">server {
    listen 80;
    listen [::]:80;  <span class="hljs-comment"># IPv6 için</span>
    server_name webhook.iberk.me;

    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade <span class="hljs-variable">$http_upgrade</span>;
        proxy_set_header Connection <span class="hljs-string">'upgrade'</span>;
        proxy_set_header Host <span class="hljs-variable">$host</span>;
        proxy_cache_bypass <span class="hljs-variable">$http_upgrade</span>;
    }
}
</code></pre>
<p><strong>Açıklamalar:</strong></p>
<ul>
<li><p><code>listen</code>: Nginx'in dinleyeceği port (HTTP için 80)</p>
</li>
<li><p><code>server_name</code>: Bu yapılandırmanın geçerli olduğu alan adı</p>
</li>
<li><p><code>proxy_pass</code>: İsteklerin yönlendirileceği iç adres (Node.js uygulamanızın çalıştığı port)</p>
</li>
<li><p><code>proxy_set_header</code>: Webhook sunucusuna iletilen HTTP başlıklarını ayarlar</p>
</li>
<li><p><code>proxy_cache_bypass</code>: Proxy önbelleğini devre dışı bırakır, gerçek zamanlı iletişim için önemlidir</p>
</li>
</ul>
<p>Symbolic link oluşturun ve Nginx'i yeniden başlatın:</p>
<pre><code class="lang-bash">sudo ln -s /etc/nginx/sites-available/webhook /etc/nginx/sites-enabled
sudo nginx -t  <span class="hljs-comment"># Yapılandırma dosyasını test edin</span>
sudo systemctl reload nginx
</code></pre>
<h2 id="heading-3-https-sertifikasinin-kurulumu">3. HTTPS Sertifikasının Kurulumu</h2>
<p>Let's Encrypt sertifikasını kuralım:</p>
<pre><code class="lang-bash">sudo apt update &amp;&amp; sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d webhook.iberk.me
</code></pre>
<p>Bu komut:</p>
<ol>
<li><p><a target="_blank" href="http://webhook.iberk.me">webhook.iberk.me</a> için yeni bir SSL sertifikası oluşturur</p>
</li>
<li><p>Nginx yapılandırmasını otomatik olarak günceller</p>
</li>
<li><p>HTTP isteklerini HTTPS'e yönlendirir</p>
</li>
</ol>
<p>Certbot, interaktif bir sihirbaz gibi çalışır ve ekrandaki talimatları takip etmeniz gerekir.</p>
<p>Sertifika otomatik olarak eklenir. Test etmek için:</p>
<pre><code class="lang-bash">curl -X POST https://webhook.iberk.me -d <span class="hljs-string">"Merhaba webhook"</span>
</code></pre>
<p>Logları görmek için:</p>
<pre><code class="lang-bash">journalctl -u webhook.service -f
</code></pre>
<h2 id="heading-4-sorun-giderme">4. Sorun Giderme</h2>
<p>Webhook servisinde sorun yaşarsanız, aşağıdaki komutlarla günlükleri kontrol edebilirsiniz:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Webhook servis günlüklerini görüntüle</span>
sudo journalctl -u webhook.service

<span class="hljs-comment"># Nginx günlüklerini görüntüle</span>
sudo tail -f /var/<span class="hljs-built_in">log</span>/nginx/access.log
sudo tail -f /var/<span class="hljs-built_in">log</span>/nginx/error.log
</code></pre>
<p>Bu kurulumla webhook hizmetiniz şimdi:</p>
<ul>
<li><p>Bir systemd servisi olarak çalışıyor</p>
</li>
<li><p>Nginx ile dış dünyaya açık</p>
</li>
<li><p>Let's Encrypt SSL sertifikası ile güvenli</p>
</li>
<li><p>Sistem yeniden başlatıldığında otomatik olarak başlıyor</p>
</li>
</ul>
]]></content:encoded></item></channel></rss>