Durumunu kontrol edin:

sudo systemctl status laravel-app1

<p>Bunu her uygulama için tekrarlayın, servis dosyasını kopyalayıp yeni ad, port ve <code>WorkingDirectory</code> ile değiştirerek.<br/></p>
<div class="highlight js-code-highlight">
    <pre class="highlight shell"><code><span class="c"># Örnek, app2 için</span>

sudo cp /etc/systemd/system/laravel-app1.service /etc/systemd/system/laravel-app2.service
sudo nano /etc/systemd/system/laravel-app2.service
# portu 8002 ve WorkingDirectory’yi app2 projesinin path’i ile değiştirin
sudo systemctl daemon-reload
sudo systemctl enable laravel-app2
sudo systemctl start laravel-app2

<hr/>

<h2><a name="hasil-akhir" href="#hasil-akhir"></a>Sonuç</h2>
<p>Tüm adımlar tamamlandıktan sonra:</p>
<div class="table-wrapper-paragraph">
    <table>
        <thead>
            <tr>
                <th>Komponent</th>
                <th>Maliyet</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Alan adı <code>.my.id</code></td>
                <td>~Rp 15.000-16.000/yıl</td>
            </tr>
            <tr>
                <td>Cloudflare (Ücretsiz plan)</td>
                <td>Rp 0</td>
            </tr>
            <tr>
                <td>Cloudflare Tüneli</td>
                <td>Rp 0</td>
            </tr>
            <tr>
                <td>Otomatik SSL/HTTPS</td>
                <td>Rp 0</td>
            </tr>
            <tr>
                <td><strong>Toplam</strong></td>
                <td><strong/></td>
            </tr>
        </tbody>
    </table>
</div>
<p>Tüm alt alan adları, ek yapılandırmalara ihtiyaç duymadan Cloudflare'dan otomatik olarak HTTPS alır. (SSL ayarları için düşünmeye gerek yok)</p>

<hr/>

<h2><a name="lesson-learned" href="#lesson-learned"></a>Öğrenilen Dersler</h2>
<p><strong>1. DNS propagasyonu için sabırlı olun</strong><br/>Cloudflare'a nameserver değiştirdikten sonra, 24 saat bekleyin. İlk birkaç saat içinde alan adı düzgün biçimde çözülmüyorsa panik yapmayın. Bu bir hata değil, DNS’in doğasıdır. Rahatlayın, uyuyun, ertesi gün kontrol edin.</p>    
<p><strong>2. Bu kurulum için Caprover kullanmayın</strong><br/>Caprover, kurulum sürecinin başında doğrudan bir IP isteyen bir yapıdadır, ancak Cloudflare Tüneli CNAME ile çalışır, doğrudan bir statik IP gerektirmemektedir. İsterseniz, Docker tabanlı bir orkestrasyon için Docker Compose’u kullanmanız önerilir.</p>    
<p><strong>3. Tek tünel, bir çok uygulama</strong><br/>Her uygulama için yeni bir tünel oluşturmanıza gerek yoktur. Tek bir tünel, konfigürasyon <code>ingress</code> üzerinden birden fazla alt alan adını yönetebilir. Yeni bir uygulama mı eklemek istiyorsunuz? Yalnızca <code>config.yml</code>'ye yeni bir giriş ekleyin ve DNS yönlendirmesini ayarlayın.</p>    
<p><strong>4. Ücretsiz ve otomatik SSL</strong><br/>Cloudflare, SSL/HTTPS'yi otomatik olarak yönetir. Let's Encrypt veya certbot ayarlamanıza gerek yok. Tüm alt alan adları DNS aktif olur olmaz HTTPS alır.</p>
<p><strong>5. Tünel çalışmıyorsa sorun giderme sırası</strong><br/>Sırayla kontrol edin: önce <code>cloudflared</code> servisi durumu (<code>systemctl status cloudflared</code>) ardından doğru portta uygulamanın çalışıp çalışmadığını (<code>curl localhost:8001</code>) kontrol edin, son olarak Cloudflare kontrol panelinde DNS’i inceleyin. Sorunun nerede olduğunu bilmeden ayarları değiştirmeden önce panik yapmayın.</p>    
<p><strong>6. Laravel APP_URL'un uygun olduğundan emin olun</strong><br/>Her Laravel projesinde <code>.env</code> dosyasını güncelleyin:<br/></p>
<div class="highlight js-code-highlight">
    <pre class="highlight conf"><code><span class="n">APP_URL</span>=<span class="n">https</span>://<span class="n">app1</span>.<span class="n">namaproject</span>.<span class="n">my</span>.<span class="n">id</span></code></pre>
</div>
<p>Bunu unutursanız, CSS/JS dosyaları yüklenemeyebilir çünkü URL hala localhost'a yönlendiriliyor.</p>

<p><strong>7. Sunucu her zaman açık olmalıdır</strong><br/>Kendi barındırma kurulumunun sonucu olarak. Sunucu kapandığında, tüm uygulamalar da kapalıdır. Eğer evde bir makine kullanıyorsanız, UPS gibi bir sistem kullanmak ya da tüm hizmetleri otomatik başlatacak şekilde yapılandırmak önemlidir.</p>

<hr/>

<h2><a name="keamanan-dan-keterbatasan-jangan-tutup-mata" href="#keamanan-dan-keterbatasan-jangan-tutup-mata"></a>Güvenlik ve Sınırlamalar: Gözlerinizi Kapatmayın</h2>
<p>Bu kurulum ücretsizdir, ancak gerçek bir topluluğa dağıtmadan önce dikkate almanız gereken bazı şeyler var.</p>
<h3><a name="server-bisa-mati-kapan-saja" href="#server-bisa-mati-kapan-saja"></a>Sunucu her zaman kapalı kalabilir</h3>
<p>Bu, kendi barındırma işleminin en kritik gerçeğidir. Sunucu kapalıysa, tüm uygulamalar anında kapanır. Sebepler çeşitli olabilir:</p>
<ul>
    <li>Elektrikler kesildi (pln şanssız bir ruh halinde)</li>
    <li>Evde internet bağlantısında kesinti</li>
    <li>Siz gitmişsiniz, aslında kendi barındırma ağınıza takıldınız</li>
    <li>En kötü durum: yangın, sel veya diğer doğal afetler</li>
</ul>

<h3><a name="antisipasi-yang-bisa-dilakukan" href="#antisipasi-yang-bisa-dilakukan"></a>Alınacak Önlemler:</h3>
<ul>
    <li><strong>UPS (Kesintisiz Güç Kaynağı):</strong> Elektrik kesintisi sırasında sunucu düzgün bir şekilde kapatılmak için bur geçiş süresi verin ya da hizmetleri yeniden başlatmak için yeterli zaman tanıyın</li>
    <li><strong>Otomatik hizmet başlatma:</strong> Tüm hizmetlerin (Nginx, PHP-FPM veya artisan serve, Cloudflared) <code>systemctl enable</code> ile otomatik olarak çalışacağını denetimleyin, böylelikle yeniden başlatıldıktan sonra çalışacaktır</li>
    <li><strong>Basit İzleme:</strong> Uptime Robot (ücretsiz) kullanarak URL'leri izleyin ve uygulama kapandığında e-posta veya Telegram bildirimi alın</li>
    <li><strong>Rutin veri tabanı yedeği:</strong> Veritabanını Google Drive veya harici depolamaya yedeklemek için cron job ayarlayın. Kaybolmuş veriler, basit bir kesintiden çok daha kötü bir durumudur</li>
</ul>
<div class="highlight js-code-highlight">
    <pre class="highlight shell"><code><span class="c"># Örnek, her gün sabah 2'de yedekleme için cron</span>

0 2 * mysqldump -u root veri_tabanıadı > /backup/db$(date +\%F).sql

<ul>
    <li><strong>Kurulum dokümantasyonu:</strong> Tüm yapılandırmaları dışarıdan erişilebilecek bir yerde (Notion, Google Docs) yazın. Eğer sunucu bir sorun yaşarsa ve her şeyi sıfırlamak zorunda kalırsanız, bu kurulumun mümkün olan en kısa sürede yeniden inşası için yardımcı olacaktır. 
    Özünde: <strong>Bu kurulum, 24/7 kritik görev uygulamaları için değildir</strong>. RT toplulukları veya çiftçi grubu kayıtları, birkaç duraklama tolere edilebiliyor. Ama yine de kullanıcılara bu sınırlamalar hakkında şeffaf olmalısınız.</li>
</ul>

<h3><a name="keamanan-jaringan" href="#keamanan-jaringan"></a>Ağ Güvenliği</h3>
<p>Çünkü Cloudflare Tüneli doğrudan bir firewall'da açık porta gerek duymaz, saldırı alanı, sıradan bir VPS'de olduğundan çok daha küçüktür. Ama yine de bunu gerçekleştirin:</p>
<ul>
    <li>Cloudflare <strong>WAF</strong> (Web Uygulama Güvenlik Duvarı)'nı panelde etkinleştirin, ücretsiz planda buna erişiminiz var</li>
    <li>Cloudflare SSL/TLS modunu <strong>Full (Strict)</strong> olarak ayarlayın</li>
    <li>Asla açık portları internete açmayın; tüm trafiği tünel üzerinden geçirin</li>
    <li><code>.env</code>'nin asla Git deposuna gitmediğinden emin olun</li>
</ul>

<hr/>

<h2><a name="kalau-udah-ada-yang-mau-bayar-suggest-mereka-buat-bayar-sih-upgrade-ke-vps" href="#kalau-udah-ada-yang-mau-bayar-suggest-mereka-buat-bayar-sih-upgrade-ke-vps"></a>Ödeme Yapmak İsteyenler İçin (Ödeme Yapsınlar Önerin), VPS'yi Yükseltin</h2>
<p>Bu kendi barındırma kurulumları, başlangıç için veya gerçekten sıfır bütçeye sahip topluluklar için idealdir. Ancak, artık yardıma ihtiyacı olan biri varsa, gerçek bir VPS'ye geçmeyi düşünebilirsiniz.</p>
<p>Maliyet hesaplaması mantıklıdır:</p>
<div class="table-wrapper-paragraph">
    <table>
        <thead>
            <tr>
                <th>Kurulum</th>
                <th>Maliyet</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>DigitalOcean/Vultr/Hetzner VPS (2GB RAM)</td>
                <td>~$5-6/ay</td>
            </tr>
            <tr>
                <td>Topluluk/müşteri katkı payı</td>
                <td>Rp 50.000-100.000/ay</td>
            </tr>
            <tr>
                <td>Karşılaşacak bekleme süresi</td>
                <td>1-2 topluluk bile yeter</td>
            </tr>
        </tbody>
    </table>
</div>

<p>10 topluluk veya müşteri varsa ve her biri ayda 50.000 rupiah ödüyorsa, toplamda 500.000 rupiah toplarsınız. Oysa VPS masrafı yaklaşık 80.000-100.000 rupiah olmaktadır. Kalan kısmı alan adı, yedekleme depolaması veya bakım ücreti olarak kullanabilirsiniz.</p>
<p>VPS'ye geçmenin avantajları:</p>
<ul>
    <li>Uptime çok daha stabil, genellikle SLA %99.9’dur</li>
    <li>Evdeki internet ve elektrik durumuna bağlı kalmaksızın</li>
    <li>Rahat bir uyku çekebilirsiniz</li>
    <li>Gitme zamanında daha az düşünün</li>
    <li>Elektriğinizi de tasarruf edin</li>
    <li>Kullanıcı sayısı arttıkça daha kolay ölçeklenir</li>
</ul>
<p>Cloudflare Tüneli'nden VPS'ye geçiş, yapılandırmanın hemen hemen aynı olması nedeniyle zorlu değildir, fark, sunucu artık bulutta, evde değil.</p>

<hr/>

<h2><a name="disclaimer-biaya-serius-wkwk" href="#disclaimer-biaya-serius-wkwk"></a>Maliyet Açıklaması (Ciddi) wkwk</h2>
<p>Kaydedilen toplam maliyet gerçekten yılda 1 dolardan azdır. Fakat, bu <strong>dahil değildir</strong>:</p>
<ul>
    <li>Elektrik faturasının evde artması</li>
    <li>Bir sonraki yıl için <code>.my.id</code> alan adının yaklaşık 50.000 rupiah olması</li>
    <li>Artık "ücretsiz altyapı" olan aylık internet ücreti</li>
    <li>Kurulum ve bakım için harcanan zamanınız (bu, fikir ve kodlama süreçleriniz için çok şey gerektirir ve sonucunu sadece sizin bildiğiniz hata yakalamaları zor bir süreçtir (tekrar))</li>
</ul>

<hr/>

<h2><a name="penutup" href="#penutup"></a>Sonuç</h2>
<p>Bu kurulum, aşağıdaki amaçlar için mükemmel bir şekilde uygundur:</p>
<ul>
    <li>Topluluk için iç uygulamalar (RT, RW, perakende daire)</li>
    <li>Küçük vakıf veya okul portalları</li>
    <li>Çiftçi/grup/yapı/benzeri kıymet kaydı uygulamaları</li>
    <li>Hobi projeleri veya araştırma/geliştirme için, düşük bütçeli ancak düzgün bir alan adı ihtiyacı olanlar</li>
</ul>

Kaynak: Orijinal Makale

Bu Makaleyi Paylaş