Arka Plan
Toplum, bazen RT yöneticisi, dernek, çiftçi grubu ya da başka bir topluluk için uygulama geliştirme isteğiyle karşılaşıyor musunuz? Genellikle şu şekilde başlıyor: bir sistem kaydı, yoklama, ya da bir vatandaş portalı istiyorlar, ama barındırma konusunda sorduğumuzda klasik yanıtı alıyoruz: “Bizim bütçemiz yok.” Her türlü fiyat teklifi ile karşılaşınca, “pahalı” diyorlar, hiç kimse yardımcı olmak istemiyor. Ama arkadaşlar… devam edelim. (herkes böyle değil, çünkü ben de gerçekten ödeyecek olanlar buldum ki onlar hemen bir fiyat için farkındaydılar; bu, uygulama kullanılabilir hale gelmek içindi)
<p>En sık önerilen çözüm genellikle ücretsiz platformlar kullanmaktır. Ancak, bu ücretsiz platformların kendine has sorunları var: uygulamalar ya uyku durumunda kalıyor, ya da bağlantı hızı belirsiz, ya da uzun ve hatırlanması zor alan adı gibi.</p>
<p>Benim üretim ortamında çalışan bir kurulumu var: <strong>yıllık toplam maliyet 1 dolardan az</strong>, her yerden erişilebilir ve düzgün bir alan adı. Bu makalede, bu kurulumun nasıl yapıldığını belgeler hale getireceğim.</p>
<hr/>
<h2><a name="konsep-dasarnya" href="#konsep-dasarnya"></a>Temel Konsept</h2>
<p>İdea oldukça basit:</p>
<ul>
<li>Uygulama <strong>yerel sunucuda</strong> çalışıyor (eski bir laptop, mini PC veya hatta Raspberry Pi olabilir)</li>
<li><strong>Cloudflare Tunnel</strong> bu sunucuya halk erişimi sağlar, statik IP olmadan</li>
<li><strong><code>.my.id</code></strong> alan adı özelleştirilmiş alan adı olarak kullanılır, yıllık maliyeti yaklaşık 15.000-16.000 rupiah. Yüksek maliyetli VPS yok, Cloudflare için de hiçbir maliyet yok (Ücretsiz plan yeterlidir). Gerçek maliyet alan adı. (diğer görünmeyen maliyetler, daha sonra tartışılacak)</li>
</ul>
<hr/>
<h2><a name="tech-stack-yang-dipakai" href="#tech-stack-yang-dipakai"></a>Kullanılan Teknoloji Yığını</h2>
<ul>
<li><strong>Cloudflare</strong> – DNS, tünel ve otomatik SSL</li>
<li><strong>Cloudflared</strong> – sunucuda çalışan tünel daemon'u</li>
<li><strong>Nginx</strong> – yerel ters proxy; her uygulama farklı bir portta çalışır</li>
<li><strong>Laravel</strong> – uygulama framework'ü (diğer yığınlara uyarlanabilir)</li>
<li><strong><code>.my.id</code> alan adı</strong> – her hangi bir kaydediciden satın alınabilir (Niagahoster, Domainesia, vb.)</li>
</ul>
<hr/>
<h2><a name="prerequisites" href="#prerequisites"></a>Ön Gereksinimler</h2>
<p>Başlamadan önce şunlara sahip olduğunuzdan emin olun:</p>
<ol>
<li>Ücretsiz bir Cloudflare hesabı</li>
<li>Aktif bir alan adı (örnek: <code>namaproject.my.id</code>)</li>
<li>Kök erişimi olan bir sunucu, eski bir laptop, mini PC veya Raspberry Pi olabilir</li>
<li>Belirli bir portta çalışan bir uygulama (örneğin: port 8001, 8002 vb.)</li>
</ol>
<hr/>
<h2><a name="spesifikasi-yang-dipakai" href="#spesifikasi-yang-dipakai"></a>Kullanılan Özellikler</h2>
<p>Bir fikir vermesi açısından eski bir laptop kullandım, özellikler:</p>
<ul>
<li>core i7 4558u - 2.8Ghz</li>
<li>RAM 8GB</li>
<li>Linux Mint</li>
</ul>
<p>İnternet bağlantısı için Indihome 75Mbps kullanıyorum (aylık yaklaşık 300.000 rupiah)</p>
<hr/>
<h2><a name="step-1-daftarkan-domain-ke-cloudflare" href="#step-1-daftarkan-domain-ke-cloudflare"></a>Adım 1: Alan Adını Cloudflare'a Kaydedin</h2>
<p>Üçüncü taraf bir kayıt şirketinden domain satın aldıktan sonra, isim sunucularını Cloudflare'a taşımanız gerekir.</p>
<ol>
<li><a href="https://dash.cloudflare.com" target="_blank" rel="noopener noreferrer">Cloudflare Dashboard</a>'a giriş yapın</li>
<li><strong>Add a Site</strong> butonuna tıklayın ve alan adınızı girin</li>
<li><strong>Free</strong> planı seçin</li>
<li>Cloudflare iki nameserver verecek, örneğin: <strong>"ada.ns.cloudflare.com , bob.ns.cloudflare.com"</strong></li>
<li>Alan adını satın aldığınız kayıt paneline girin, nameserver'ı Cloudflare'ınki ile değiştirin</li>
</ol>
<blockquote>
<p><strong>Öğrenilen Ders:</strong> Nameserver propagasyonu zaman alır. Tecrübeme göre, <strong>24 saat sabretmek</strong> daha iyidir. İlk 1-2 saat içinde aktif değilse panik yapmayın.</p>
</blockquote>
<hr/>
<h2><a name="step-2-install-cloudflared-di-server" href="#step-2-install-cloudflared-di-server"></a>Adım 2: Sunucuda Cloudflared'ı Kurun</h2>
<div class="highlight js-code-highlight">
<pre class="highlight shell"><code><span class="c"># En son sürümü indirin (sunucu mimarisine göre ayarlayın)</span>curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
Doğrulayın:
cloudflared --version<hr/>
<h2><a name="step-3-login-dan-buat-tunnel" href="#step-3-login-dan-buat-tunnel"></a>Adım 3: Giriş Yapın ve Tünel Oluşturun</h2>
<div class="highlight js-code-highlight">
<pre class="highlight shell"><code>cloudflared tunnel login</code></pre>
</div>
<p>Bu komut tarayıcıyı otorizasyon için açacaktır. Tamamlandıktan sonra, kimlik bilgileri otomatik olarak kaydedilecektir.</p>
<p>Yeni bir tünel oluşturun:<br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight shell"><code>cloudflared tunnel create isim-tuneliniz</code></pre>
</div>
<p><strong>Tünel Kimliği</strong> not edin, bunu bir sonraki adımda kullanacaksınız.</p>
<hr/>
<h2><a name="step-4-konfigurasi-tunnel" href="#step-4-konfigurasi-tunnel"></a>Adım 4: Tüneli Yapılandırın</h2>
<p>Yapılandırma dosyası oluşturun:<br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight shell"><code><span class="nb">mkdir</span> <span class="nt">-p</span> ~/.cloudflarednano ~/.cloudflared/config.yml


