<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: İsa Sarıoğlan</title>
    <description>The latest articles on DEV Community by İsa Sarıoğlan (@isasarioglan).</description>
    <link>https://dev.to/isasarioglan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3557381%2Ffcd57196-0334-40e1-a9d3-8c26268ed016.png</url>
      <title>DEV Community: İsa Sarıoğlan</title>
      <link>https://dev.to/isasarioglan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/isasarioglan"/>
    <language>en</language>
    <item>
      <title>Liman MYS Eklentisi ile Elasticsearch API'sine Bağlanma Rehberi</title>
      <dc:creator>İsa Sarıoğlan</dc:creator>
      <pubDate>Thu, 04 Dec 2025 10:51:31 +0000</pubDate>
      <link>https://dev.to/aciklab/liman-mys-eklentisi-ile-elasticsearch-apisine-baglanma-rehberi-g9l</link>
      <guid>https://dev.to/aciklab/liman-mys-eklentisi-ile-elasticsearch-apisine-baglanma-rehberi-g9l</guid>
      <description>&lt;p&gt;Bu yazı, Liman MYS eklenti şablonunu kullanarak, Basic Authentication (Kullanıcı Adı/Şifre) ile korunan bir Elasticsearch API'sine bağlanmayı ve veri çekmeyi adım adım anlatır.&lt;/p&gt;

&lt;p&gt;Bu rehber, zaten çalışan bir Liman MYS geliştirme ortamınız olduğunu varsayar.&lt;/p&gt;

&lt;p&gt;Eğer henüz sunucunuza SSH ile bağlanmadıysanız, liman kullanıcısı için yetkilendirme yapmadıysanız, VS Code Remote - SSH eklentisini kurmadıysanız veya Node.js/pnpm kurulumunu tamamlamadıysanız, lütfen öncelikle aşağıdaki rehberi okuyun:&lt;/p&gt;

&lt;p&gt;➡️ Referans: &lt;a href="https://dev.to/aciklab/liman-mys-icin-eklenti-gelistirme-ortami-kurulum-rehberi-34ch"&gt;Liman MYS Eklentisi Geliştirme Ortamı Sorun Rehberi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bu rehberdeki adımları tamamladıktan sonra buradan devam edebilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 1: Eklenti Ayarlarını Yapılandırma (&lt;strong&gt;db.json&lt;/strong&gt;)
&lt;/h2&gt;

&lt;p&gt;Amacımız Eklentimizin, bağlanacağı API'nin adresini, kullanıcı adını ve şifresini Liman arayüzünden güvenli bir şekilde almasını sağlamak.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;db.json&lt;/strong&gt; dosyası, Liman'ın "Eklenti Ayarları" menüsüne hangi ayar alanlarını ekleyeceğimizi tanımlar.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Eklentinizin ana dizininde bulunan &lt;strong&gt;db.json&lt;/strong&gt; dosyasını açın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;database&lt;/strong&gt; isimli JSON dizisini bulun.&lt;/li&gt;
&lt;li&gt;Bu dizinin içine, API URL'si, kullanıcı adı ve şifre için aşağıdaki üç JSON objesini ekleyin.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "elasti",
  "publisher": "...",
  "version": "...",
  "database": [
    {
      "variable": "api_url",
      "type": "text",
      "name": "API URL (ex. https://10.67.67.202:30936)",
      "required": true,
      "global": true,
      "writable": false
    },
    {
      "variable": "Username",
      "type": "text",
      "name": "Elasticsearch Username",
      "required": true,
      "global": true,
      "writable": false
    },
    {
      "variable": "Password",
      "type": "password",
      "name": "Elasticsearch Password",
      "required": true,
      "global": true,
      "writable": false
    }
  ],
  "language": "php",
  "vite": true,
  "...": "..."
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Detaylı Açıklama:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;"variable": "api_url"&lt;/code&gt;: Bu, PHP kodumuzun içinden &lt;code&gt;extensionDb('api_url')&lt;/code&gt; fonksiyonunu kullanarak bu değere erişmesini sağlayan anahtar isimdir.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"type": "password"&lt;/code&gt;: Bu ayar, Liman arayüzündeki bu metin kutusuna girilen değerin &lt;code&gt;****&lt;/code&gt; şeklinde maskelenmesini sağlar. Güvenlik için kritik bir adımdır.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"global": true&lt;/code&gt;: Ayarın eklenti bazında global olmasını sağlar.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Önemli:&lt;/strong&gt; Bu değişikliği yaptıktan sonra eklentinizi Liman arayüzünden Yeniden Yükle yapın ve &lt;strong&gt;Eklenti Ayarları&lt;/strong&gt;'na giderek API URL,Elasticsearch Username ve Elasticsearch Password olmak üzere aşşağıdaki görselde bulunan üç alanı da doldurun&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3agpe45snbo3ez8gs3z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3agpe45snbo3ez8gs3z.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 2: helpers.php Dosyasını Güncelleme (Yetkilendirme)
&lt;/h2&gt;

&lt;p&gt;Bu adımda amacımız  PHP backend'imizin, Adım 1'de kaydettiğimiz ayarları okuyup Elasticsearch'e &lt;strong&gt;Basic Authentication&lt;/strong&gt; başlığını (header) göndermesini sağlamak.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;helpers.php&lt;/strong&gt; dosyası, backend kodumuzun her yerinden çağırabileceğimiz yardımcı fonksiyonları barındırır. &lt;strong&gt;getDefaults()&lt;/strong&gt; fonksiyonu, eklentimizden dışarı giden her API isteği için varsayılan ayarları belirler.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;/views&lt;/strong&gt; klasörünün (veya ana dizinin) yanındaki &lt;strong&gt;helpers.php&lt;/strong&gt; dosyasını açın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;getDefaults()&lt;/strong&gt; fonksiyonunu bulun.&lt;/li&gt;
&lt;li&gt;Bu fonksiyonun tamamını, &lt;strong&gt;db.json&lt;/strong&gt;'dan &lt;strong&gt;Username&lt;/strong&gt; ve &lt;strong&gt;Password&lt;/strong&gt; değişkenlerini okuyacak ve &lt;strong&gt;Authorization&lt;/strong&gt; başlığını oluşturacak şekilde aşağıdaki gibi güncelleyin.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (!function_exists('getDefaults')) {
    function getDefaults()
    {
        // 1. ADIM: db.json'dan kullanıcı adı ve şifreyi al
        $username = extensionDb('Username');
        $password = extensionDb('Password');

        // 2. ADIM: Basic Auth için kullanıcı adı ve şifreyi "kullanıcı:şifre" formatında
        // base64 algoritmasıyla kodla
        $auth = base64_encode($username . ':' . $password);

        // 3. ADIM: Guzzle (PHP HTTP istemcisi) için ayar dizisini oluştur
        return [
            'headers' =&amp;gt; [
                'Content-Type' =&amp;gt; 'application/json',

                // Oluşturduğumuz kodu "Authorization" başlığına "Basic " ön ekiyle ekle
                'Authorization' =&amp;gt; 'Basic ' . $auth,
            ],

            // 4. ADIM: SSL Sertifika Doğrulamasını Kapat
            // Eğer API'niz (https://...) kendinden imzalı (self-signed)
            // bir sertifika kullanıyorsa bu gereklidir. Aksi halde bağlantı hatası alırsınız.
            'verify' =&amp;gt; false 
        ];
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adım 3: CORS ve HMR Hatalarını Önleme (vite.config.ts)
&lt;/h2&gt;

&lt;p&gt;Amacımız &lt;strong&gt;localhost&lt;/strong&gt; sorununu çözdükten sonra ortaya çıkan &lt;strong&gt;CORS policy&lt;/strong&gt; (farklı port) ve WebSocket (HMR) bağlantı hatalarını en baştan engellemek.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sorun:&lt;/strong&gt; Liman arayüzü (örn: &lt;strong&gt;https_://10.68.68.249&lt;/strong&gt;) ile Vite sunucusu (örn: &lt;strong&gt;https_://10.68.68.249:5173&lt;/strong&gt;) farklı portlarda çalıştığı için tarayıcı bunu "güvenliksiz" bir işlem olarak görür ve &lt;strong&gt;CORS&lt;/strong&gt; hatası verir.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;frontend/vite.config.ts&lt;/code&gt; dosyasını açın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;defineConfig&lt;/strong&gt; objesine, &lt;strong&gt;plugins&lt;/strong&gt; ve &lt;strong&gt;resolve&lt;/strong&gt; gibi anahtarların yanına, &lt;strong&gt;server&lt;/strong&gt; adında yeni bir yapılandırma bloğu ekleyin.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// CORS VE HMR HATALARINI ÖNLEMEK İÇİN BU BLOĞU EKLEYİN
  // ###############################################################
  server: {
    // 1. Sunucunun tüm IP'lerden gelen isteklere yanıt vermesini sağlar
    // (Sadece localhost'tan değil)
    host: '0.0.0.0', 

    // 2. CORS HATASININ ÇÖZÜMÜ:
    // Bu ayar, tarayıcıya "Access-Control-Allow-Origin: *" başlığını gönderir
    // ve farklı portlardan (örn: Liman'ın 443 portu) gelen isteklere izin verir.
    cors: true, 

    // 3. HMR (WebSocket) HATASININ ÇÖZÜMÜ:
    // Kodda değişiklik yaptığınızda sayfanın otomatik yenilenmesi (HMR)
    // için Vite bir WebSocket bağlantısı kullanır. Bu ayar,
    // WebSocket'in hangi IP'ye bağlanacağını söyler.
    hmr: {
      host: '10.68.68.249' // Buraya Vite sunucunuzun IP'sini yazın
    }
  }
  // ###############################################################
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adım 4: Geliştirme Sunucusu Sertifika (SSL) Uyarısını Geçme
&lt;/h2&gt;

&lt;p&gt;Amacımız Tarayıcınızın, Vite geliştirme sunucusunun "kendinden imzalı" (self-signed) SSL sertifikasına güvenmesini sağlamak.&lt;/p&gt;

&lt;p&gt;Adım 3 ve 4'ü yapsanız bile, &lt;code&gt;pnpm run dev&lt;/code&gt; komutunu çalıştırdıktan sonra eklentiyi açtığınızda konsolda &lt;strong&gt;net::ERR_TIMED_OUT&lt;/strong&gt; veya &lt;strong&gt;net::ERR_CERT_AUTHORITY_INVALID&lt;/strong&gt; hatası alabilirsiniz.&lt;/p&gt;

&lt;p&gt;Vite sunucusu (&lt;strong&gt;&lt;a href="https://10.68.68.249:5173" rel="noopener noreferrer"&gt;https://10.68.68.249:5173&lt;/a&gt;&lt;/strong&gt;) &lt;strong&gt;https&lt;/strong&gt; kullanır ancak resmi olmayan bir sertifikaya sahiptir. Tarayıcınız, sizden onay almadan bu "güvenli olmayan" adresten script (&lt;strong&gt;main.ts&lt;/strong&gt;) yüklemeyi reddeder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Çözüm:&lt;/strong&gt; Tarayıcınıza bu adrese güvenmesini manuel olarak öğretmeniz gerekir.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Vite sunucunuzun adresini (örn: &lt;strong&gt;&lt;a href="https://10.68.68.249:5173" rel="noopener noreferrer"&gt;https://10.68.68.249:5173&lt;/a&gt;&lt;/strong&gt;) kopyalayın.&lt;/li&gt;
&lt;li&gt;Tarayıcınızda yeni bir sekme açın.&lt;/li&gt;
&lt;li&gt;Bu adresi yapıştırın ve Enter'a basın.&lt;/li&gt;
&lt;li&gt;Karşınıza "Bağlantınız gizli değil" (Your connection is not private) uyarısı çıkacaktır.&lt;/li&gt;
&lt;li&gt;"Gelişmiş" (&lt;strong&gt;Advanced&lt;/strong&gt;) butonuna tıklayın.&lt;/li&gt;
&lt;li&gt;"10.68.68.249 sitesine ilerle (güvenli değil)" (&lt;strong&gt;Proceed to 10.68.68.249&lt;/strong&gt; (&lt;strong&gt;unsafe&lt;/strong&gt;)) linkine tıklayın.&lt;/li&gt;
&lt;li&gt;Ekrana beyaz bir sayfa veya "Vite" logosu gelirse, işlem başarılıdır. Bu sekmeyi kapatabilirsiniz.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bu işlemi yaptığınızda, tarayıcınız bu sertifikayı geçici olarak kabul etmiş olur ve Liman arayüzü artık &lt;strong&gt;main.ts&lt;/strong&gt; dosyasını yükleyebilir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 5: Frontend Veri Katmanını Oluşturma (elastic.ts)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;data.ts&lt;/strong&gt; dosyasını kopyalayıp &lt;strong&gt;elastic.ts&lt;/strong&gt; adında yeni bir dosya oluşturmanızı ve içeriğini aşağıdaki gibi düzenlemenizi istiyorum.&lt;/p&gt;

&lt;p&gt;Bu dosyada, &lt;strong&gt;data.ts&lt;/strong&gt; içindeki tüm CRUD (create, update, delete) fonksiyonlarını kaldıracağız. Sadece bizim Elastic API'mizden veri çekecek &lt;strong&gt;fetchStats&lt;/strong&gt; adında tek bir fonksiyon bırakacağız. Bu fonksiyon, &lt;strong&gt;RequestController.php&lt;/strong&gt; dosyanızdaki &lt;strong&gt;apiProxy&lt;/strong&gt; fonksiyonunu tetikleyecek.&lt;/p&gt;

&lt;p&gt;Komut parametrelerini URL'den (&lt;strong&gt;GET&lt;/strong&gt;) gönderdiğimiz takdirde &lt;strong&gt;RequestController.php&lt;/strong&gt;'deki &lt;strong&gt;apiProxy&lt;/strong&gt; fonksiyonu, &lt;strong&gt;GET&lt;/strong&gt; isteğiyle gelen URL parametrelerini (örn: &lt;strong&gt;?type=...&lt;/strong&gt;) hedef API'ye (Elasticsearch) "taşıma" eğilimindedir. Elasticsearch bu &lt;strong&gt;type&lt;/strong&gt; ve &lt;strong&gt;endpoint&lt;/strong&gt; parametrelerini tanımadığı için hata verir.&lt;/p&gt;

&lt;p&gt;bu yüzden komut parametrelerini URL'den (&lt;strong&gt;GET&lt;/strong&gt;) göndermek yerine bir &lt;strong&gt;POST&lt;/strong&gt; isteğinin gövdesinde (body) göndereceğiz. &lt;strong&gt;RequestController&lt;/strong&gt; bu verileri gövdeden okuyacak ve Elasticsearch'e "temiz" bir &lt;strong&gt;GET&lt;/strong&gt; isteği atacaktır.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;src/stores/data.ts&lt;/code&gt; dosyasını kopyalayıp &lt;code&gt;src/stores/elastic.ts&lt;/code&gt; adında yeni bir dosya oluşturun.&lt;/li&gt;
&lt;li&gt;İçeriğini aşağıdaki gibi (hatayı en baştan önleyecek şekilde) düzenleyin:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import http from "@/utils/http-common"
import { i18n } from "@/utils/i18n"
import { defineStore } from "pinia"

// Store adını useElasticStore olarak değiştiriyoruz
export const useElasticStore = defineStore({
  id: "elastic",
  state: () =&amp;gt; ({
    elasticData: {} as any, // Gelen veriyi tutmak için
  }),
  getters: {
    getStats: (state) =&amp;gt; state.elasticData,
  },
  actions: {
    // Veri çekme fonksiyonumuz
    async fetchStats() {

      // Parametreleri POST gövdesinde göndermek için hazırlıyoruz
      const payload = {
        // Backend'e "get" isteği yapmasını söylüyoruz
        type: "get",
        // Backend'e hangi uca gitmesini istediğimizi söylüyoruz
        endpoint: "_nodes/stats/fs?pretty=true" 
      }

      // Hata almamak için http.get yerine http.post kullanıyoruz.
      // RequestController bu POST gövdesini okur
      // ve Elastic'e temiz bir GET isteği atar.
      // İlk parametre olan URL'e sadece "?" koymamız, 
      // apiProxy'nin kök dizine gitmesini sağlar.
      return http.post(`?`, payload).then((res) =&amp;gt; {
        if (res.status == 200) {
          if (res.data) {
            this.elasticData = res.data
            console.log("Elastic verisi başarıyla alındı:", res.data)
          }
        } else {
          window.$notification.error({
            duration: 5000,
            title: i18n.t("common.error"),
            content: "Elastic verisi alınırken bir hata oluştu.",
          })
        }
      })
    },
  },
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adım 6: RequestController.php Debug (Hata Ayıklama)
&lt;/h2&gt;

&lt;p&gt;Lütfen &lt;strong&gt;RequestController.php&lt;/strong&gt; dosyanızı açın ve &lt;strong&gt;apiProxy&lt;/strong&gt; fonksiyonunu bulun.&lt;/p&gt;

&lt;p&gt;Bu fonksiyonun içine, &lt;strong&gt;validate([...]);&lt;/strong&gt; satırından hemen sonra, aşağıdaki &lt;strong&gt;dd()&lt;/strong&gt; satırlarını ekleyin. Bu sayede frontend'den gelen isteği yakalayıp, API'ye gitmeden önce tam olarak hangi URL'i ve hangi ayarları kullandığımızı göreceğiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// --- DEBUG BAŞLANGIÇ ---
        // Bu iki satırı ekleyin:

        // 1. Doğru URL'i oluşturup oluşturmadığımızı kontrol edelim
        dd(extensionDb('api_url') . '/' . request("endpoint"));

        // 2. helpers.php'den doğru ayarların (Auth Header) gelip gelmediğini kontrol edelim
        // (Eğer ilk dd çalışırsa, tarayıcıda sonucu gördükten sonra bu satırı açıp ilkini silebilirsiniz)
        // dd(getDefaults()); 

        // --- DEBUG BİTİŞ ---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adım 7: Home.vue Dosyasını Düzenleme ve Debug'ı Tetikleme
&lt;/h2&gt;

&lt;p&gt;Bu adımda, &lt;strong&gt;Home.vue&lt;/strong&gt; dosyanızı, oluşturduğumuz &lt;strong&gt;elastic.ts&lt;/strong&gt; store'unu kullanacak şekilde düzenleyeceğiz.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Yeni &lt;strong&gt;useElasticStore&lt;/strong&gt;'u import edeceğiz.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;onMounted&lt;/strong&gt; (sayfa yüklendiğinde) &lt;strong&gt;store.fetchStats()&lt;/strong&gt; fonksiyonunu çağıracağız.&lt;/li&gt;
&lt;li&gt;Gelen veriyi basit bir &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; etiketi içinde ekrana basacağız.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lütfen &lt;code&gt;src/views/Home.vue&lt;/code&gt; dosyanızın içeriğini tamamen aşağıdaki kodla değiştirin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script lang="ts" setup&amp;gt;
import { onMounted } from "vue"
// 1. Oluşturduğumuz elastic store'u import et
import { useElasticStore } from "@/stores/elastic"

// 2. Store'u kur
const store = useElasticStore()

// 3. Sayfa yüklendiğinde fetchStats fonksiyonunu çalıştır
onMounted(() =&amp;gt; {
  store.fetchStats()
})
&amp;lt;/script&amp;gt;

&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;h2&amp;gt;Elasticsearch FS İstatistikleri&amp;lt;/h2&amp;gt;
    &amp;lt;pre&amp;gt;{{ store.elasticData }}&amp;lt;/pre&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;style scoped&amp;gt;
pre {
  background-color: #f4f4f4;
  border: 1px solid #ddd;
  padding: 10px;
  white-space: pre-wrap; /* Uzun satırların kaydırmasını sağlar */
  word-wrap: break-word;
}
&amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Şimdi Test Edelim:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Bu değişikliği kaydedin.&lt;/li&gt;
&lt;li&gt;Projenizin derlendiğinden emin olun (genellikle pnpm run dev veya pnpm run serve).&lt;/li&gt;
&lt;li&gt;Tarayıcınızı açın ve Liman arayüzünden eklentinize gidin.&lt;/li&gt;
&lt;li&gt;Tarayıcınızın &lt;strong&gt;Geliştirici Araçları&lt;/strong&gt;'nı açın (F12) ve "&lt;strong&gt;Ağ (Network)&lt;/strong&gt;" sekmesine tıklayın.&lt;/li&gt;
&lt;li&gt;Eklentinizin ana sayfasını (Home.vue) açın veya yenileyin.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Beklenen Sonuç:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sayfanız büyük ihtimalle yüklenmeyecek (veya "500 Sunucu Hatası" gibi bir hata gösterecek).&lt;/p&gt;

&lt;p&gt;Ağ (Network) sekmesinde, &lt;code&gt;apiProxy?type=get&amp;amp;endpoint=...&lt;/code&gt; ile başlayan kırmızı bir istek görmelisiniz. Bu isteğe tıklayın ve "&lt;strong&gt;Önizleme (Preview)&lt;/strong&gt;" veya "&lt;strong&gt;Yanıt (Response)&lt;/strong&gt;" sekmesine bakın.&lt;/p&gt;

&lt;p&gt;Orada, RequestController.php içine yazdığımız ilk dd() komutunun çıktısını görmeniz gerekiyor. Çıktı, bir string (metin) olarak şunu içermeli:&lt;/p&gt;

&lt;p&gt;"&lt;code&gt;https://10.67.67.202:30936/_nodes/stats/fs?pretty=true&lt;/code&gt;" (Eğer &lt;strong&gt;db.json&lt;/strong&gt;'a IP'yi &lt;strong&gt;10.67.67.202&lt;/strong&gt; olarak girdiyseniz)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjocv4u97lj70q226vlev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjocv4u97lj70q226vlev.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ilk debug komutunda istediğimiz sonuçlara ulaştıktan sonra ikinci debug komutunu tetikleyelim.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lütfen &lt;strong&gt;RequestController.php&lt;/strong&gt; dosyasını açın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;validate([...]);&lt;/strong&gt; satırından hemen sonra, &lt;strong&gt;dd(getDefaults());&lt;/strong&gt; satırını aşşağıdaki gibi yorum satırı olmaktan çıkarıp ilk debug komutunu yorum satırına alalım.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// --- DEBUG BAŞLANGIÇ ---
        // Bu iki satırı ekleyin:

        // 1. Doğru URL'i oluşturup oluşturmadığımızı kontrol edelim
        // dd(extensionDb('api_url') . '/' . request("endpoint"));

        // 2. helpers.php'den doğru ayarların (Auth Header) gelip gelmediğini kontrol edelim
        // (Eğer ilk dd çalışırsa, tarayıcıda sonucu gördükten sonra bu satırı açıp ilkini silebilirsiniz)
         dd(getDefaults()); 

        // --- DEBUG BİTİŞ ---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Şimdi Test Edin:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dosyayı bu şekilde kaydedin.&lt;/li&gt;
&lt;li&gt;Tarayıcıda Geliştirici Araçları (F12) açıkken sayfayı yenileyin (F5).&lt;/li&gt;
&lt;li&gt;Network sekmesinde yine &lt;strong&gt;kırmızı&lt;/strong&gt; bir apiProxy isteği göreceksiniz.&lt;/li&gt;
&lt;li&gt;Bu isteğe tıklayın ve "&lt;strong&gt;Önizleme (Preview)&lt;/strong&gt;" sekmesine bakın.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Beklenen Sonuç:&lt;/strong&gt; Bu kez, ekranda o URL'i &lt;strong&gt;görmemelisiniz&lt;/strong&gt;. Onun yerine "Önizleme (Preview)" sekmesinde, Authorization başlığını içeren şu JSON objesini görmelisiniz:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpq5wyuaexivn0uba2hbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpq5wyuaexivn0uba2hbl.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bu çıktıyı gördüğünüzde kimlik doğrulama adımını başarıyla geçtiğimiz anlamına gelecek.&lt;br&gt;
Artık tüm testlerimiz (debug) bitti. Backend'imiz (PHP) isteği göndermeye hazır.&lt;/p&gt;

&lt;p&gt;Şimdi son adıma geçiyoruz: Yola koyduğumuz tüm bu "tuzakları" (yani &lt;strong&gt;dd()&lt;/strong&gt; komutlarını) kaldıracağız ve isteğin Elastic API'sine gerçekten gitmesine izin vereceğiz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 8: Eklentiyi Çalıştırma ve Son Test
&lt;/h2&gt;

&lt;p&gt;Tüm dosyaları doğru şekilde yapılandırdık. Artık eklentiyi çalıştırabiliriz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Önemli: Geliştirme (Dev) ve Üretim (Build) Modu Farkı&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Geliştirme (Dev) Modu:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;pnpm run dev&lt;/strong&gt; ile çalışır. Kodunuzda yaptığınız her değişiklik anında tarayıcıya yansır (&lt;strong&gt;vite: true&lt;/strong&gt; ve &lt;strong&gt;HMR&lt;/strong&gt; sayesinde). Bu mod, eklentiyi aktif olarak geliştirirken kullanılır.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Üretim (Build) Modu:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;pnpm run build&lt;/strong&gt; ile çalışır. Tüm Vue/TS kodunuzu derleyip optimize edilmiş, tek bir statik JavaScript dosyası haline getirir. Eklentiyi bitirip son kullanıcıya sunacağınız zaman bu modu kullanırsınız ve &lt;strong&gt;db.json&lt;/strong&gt;'daki &lt;strong&gt;vite: true&lt;/strong&gt; ayarını &lt;strong&gt;vite: false&lt;/strong&gt; yaparsınız.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terminalde &lt;strong&gt;frontend&lt;/strong&gt; klasörüne gidin (&lt;strong&gt;/liman/extensions/elasti/frontend&lt;/strong&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gerekli paketlerin yüklü olduğundan emin olun:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pnpm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Vite geliştirme sunucusunu (tüm ayarlarıyla beraber) başlatın:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pnpm run dev --host 0.0.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Liman arayüzüne gidin (tarayıcıdan).&lt;/li&gt;
&lt;li&gt;Sol menüden eklentinizi açın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KRİTİK ADIM:&lt;/strong&gt; Geliştirme sunucusunu görmek için, eklentinizin normal URL'inin sonuna &lt;code&gt;/development&lt;/code&gt; eklemeniz gerekir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Yanlış Adres:&lt;/strong&gt; &lt;code&gt;https://.../l/e/elasti&lt;/code&gt; (Bu, üretim modunu (build) açar)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Doğru Adres:&lt;/strong&gt; &lt;code&gt;https://.../l/e/elasti/development&lt;/code&gt; (Bu, pnpm run dev sunucusuna bağlanır)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nihai Sonuç:&lt;/strong&gt; &lt;code&gt;.../development&lt;/code&gt; adresini açtığınızda, ekrandaElasticsearch FS İstat istikleri başlığının altında, API'den gelen (içinde _nodes, cluster_name vb. bulunan) JSON verisinin tamamını hatasız bir şekilde aşşağdaki şekilde arayüzde görmelisiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpisk06o0p1b1re33lxwt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpisk06o0p1b1re33lxwt.png" alt=" " width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>elasticsearch</category>
      <category>vite</category>
      <category>php</category>
    </item>
    <item>
      <title>Liman MYS için Eklenti Geliştirme Ortamı Kurulum Rehberi</title>
      <dc:creator>İsa Sarıoğlan</dc:creator>
      <pubDate>Thu, 04 Dec 2025 10:43:34 +0000</pubDate>
      <link>https://dev.to/aciklab/liman-mys-icin-eklenti-gelistirme-ortami-kurulum-rehberi-34ch</link>
      <guid>https://dev.to/aciklab/liman-mys-icin-eklenti-gelistirme-ortami-kurulum-rehberi-34ch</guid>
      <description>&lt;p&gt;Liman MYS, sunucu yönetimini kolaylaştıran güçlü bir platform olmasının yanı sıra, esnek eklenti altyapısıyla da öne çıkar. Bu rehberde, "Liman Extension Template" adını vereceğimiz hazır bir eklenti şablonunu kullanarak, kod değişikliklerimizi anında Liman arayüzünde görebileceğimiz profesyonel bir geliştirme ortamını nasıl kuracağımızı adım adım inceleyeceğiz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bölüm 1: Eklenti Şablonunu Liman'a Yükleme
&lt;/h2&gt;

&lt;p&gt;Geliştirme ortamını kurmadan önce, üzerinde çalışacağımız eklentinin Liman tarafından tanınması gerekir. Bu nedenle, hazır eklenti şablonumuzu sisteme yüklüyoruz.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Liman MYS web arayüzünde oturum açın ve sağ üst köşedeki &lt;strong&gt;Ayarlar&lt;/strong&gt; simgesine tıklayın.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyuvbajh3lucsh291k532.png" alt=" " width="800" height="459"&gt;
&lt;/li&gt;
&lt;li&gt;Açılan menüden &lt;strong&gt;Sistem Ayarları&lt;/strong&gt; seçeneğine ve ardından sol menüden &lt;strong&gt;Eklentiler&lt;/strong&gt; sekmesine gidin.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwg11hlgdmiu91umqfi5s.png" alt=" " width="800" height="469"&gt;
&lt;/li&gt;
&lt;li&gt;Yükle butonuna tıklayarak bilgisayarınızdaki &lt;strong&gt;.zip&lt;/strong&gt; uzantılı eklenti şablonu dosyasını seçin ve yüklemeyi tamamlayın.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2f1cc5kvggaay8wlkjj.png" alt=" " width="523" height="386"&gt;
&lt;/li&gt;
&lt;li&gt;Yükleme başarılı olduğunda, eklentiniz listede görünecektir.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bu adımdan sonra artık eklentimizi arayüzden silip yüklemeyeceğiz. Tüm süreci sunucu tarafında yöneteceğiz.Bu ksımla ılgili detaylı bilgi aşşağıdaki linkten erişebilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.liman.dev/kullanim-kilavuzu/liman-kurulumu/eklenti-kurulumu-ve-guencellemeler" rel="noopener noreferrer"&gt;Limana Eklenti Yükleme&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Bölüm 2: Sunucuya Bağlantı ve Yetkilendirme Hazırlıkları
&lt;/h2&gt;

&lt;p&gt;Bu bölümde, geliştirme yapacağımız sunucuya SSH üzerinden bağlanacak ve VS Code ile sorunsuz bir bağlantı kurmak için gerekli yapılandırmaları yapacağız.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 1: Sunucuya İlk Bağlantı&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Öncelikle sunucunuza standart kullanıcınız ile (genellikle &lt;strong&gt;ubuntu&lt;/strong&gt;, &lt;strong&gt;centos&lt;/strong&gt;, &lt;strong&gt;debian&lt;/strong&gt; vb.) bağlanın.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh kullanici_adiniz@&amp;lt;SUNUCU_IP_ADRESINIZ&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;&amp;lt;SUNUCU_IP_ADRESINIZ&amp;gt;&lt;/code&gt;kısmını Liman'ın kurulu olduğu sunucunun IP adresi ile değiştirin.&lt;/p&gt;

&lt;p&gt;Bu aşamada sizden sunucu şifreniz istenecektir.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 2: liman Kullanıcısını Geliştirmeye Hazırlama&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Liman, sistem üzerinde kendi işlemlerini yönetmek için genellikle &lt;strong&gt;liman&lt;/strong&gt; adında bir kullanıcı oluşturur. Geliştirme yaparken yetki ve sahiplik sorunları yaşamamak adına işlemlerimizi bu kullanıcı üzerinden yürütmek en sağlıklı yöntemdir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;liman Kullanıcısına Şifre Atama:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;liman&lt;/strong&gt; kullanıcısının varsayılan olarak bir şifresi olmayabilir. SSH bağlantısı için bir şifre belirlememiz gerekiyor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo passwd liman
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komutu çalıştırdıktan sonra &lt;strong&gt;liman&lt;/strong&gt; kullanıcısı için yeni bir şifre belirlemeniz istenir.Şifre belirledikten sonra terminale aşağıdaki formatta bağlantı komutunu girin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh liman@&amp;lt;SUNUCU_IP_ADRESINIZ&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komut,&lt;strong&gt;liman&lt;/strong&gt; adlı kullanıcıya bağlanmamızı sağlar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;liman Kullanıcısının Kabuğunu (Shell) Değiştirme:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Güvenlik nedeniyle &lt;strong&gt;liman&lt;/strong&gt; kullanıcısının kabuğu interaktif olmayan bir kabuk &lt;strong&gt;(/usr/bin/login gibi)&lt;/strong&gt; olabilir. Etkileşimli bir terminal deneyimi için bu kabuğu &lt;strong&gt;bash&lt;/strong&gt; olarak değiştirmeliyiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo usermod --shell /bin/bash liman
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komut, &lt;strong&gt;liman&lt;/strong&gt; kullanıcısının oturum açtığında standart bir Bash terminali kullanmasını sağlar.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 3: Şifresiz ve Güvenli Bağlantı için SSH Anahtarı Oluşturma&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Her seferinde şifre girmek yerine, SSH anahtar tabanlı kimlik doğrulama kullanarak süreci otomatikleştirebiliriz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSH Anahtar Çifti Oluşturma (Lokal Makinenizde):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Eğer daha önce oluşturmadıysanız, kendi bilgisayarınızın terminalinde aşağıdaki komutu çalıştırın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-keygen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;"Enter file in which to save the key...":&lt;/strong&gt; Bu soruya Enter'a basarak varsayılan konumu onaylayın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Enter passphrase...":&lt;/strong&gt; Daha fazla güvenlik için bir parola belirleyebilirsiniz, ancak geliştirme kolaylığı için bu adımı Enter'a basarak boş geçebilirsiniz. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public Anahtarı Sunucuya Kopyalama:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Oluşturduğunuz public anahtarı (&lt;strong&gt;.pub&lt;/strong&gt; uzantılı olan) &lt;strong&gt;Liman&lt;/strong&gt; sunucusundaki liman kullanıcısının yetkilendirilmiş anahtarlar listesine ekleyeceğiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-copy-id liman@&amp;lt;SUNUCU_IP_ADRESINIZ&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komut sizden son bir kez &lt;strong&gt;liman&lt;/strong&gt; kullanıcısının şifresini isteyecektir. Şifreyi girdikten sonra, artık &lt;code&gt;ssh liman@&amp;lt;SUNUCU_IP_ADRESINIZ&amp;gt;&lt;/code&gt; komutuyla şifresiz bir şekilde sunucuya bağlanabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bölüm 3: Visual Studio Code ile Geliştirme Ortamını Yapılandırma
&lt;/h2&gt;

&lt;p&gt;Artık sunucu tarafı hazır olduğuna göre, kodlarımızı doğrudan sunucu üzerinde düzenlemek için VS Code'u yapılandıracağız. Her seferinde IP adresi ve kullanıcı adı yazmak yerine, SSH yapılandırma dosyasına kalıcı bir kayıt ekleyerek bağlantı sürecini otomatikleştireceğiz.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 1:"Remote - SSH" Eklentisini Yükleyin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;VS Code'u açın, sol taraftaki Eklentiler (Extensions) sekmesine gidin, arama çubuğuna &lt;strong&gt;Remote - SSH&lt;/strong&gt; yazın ve Microsoft tarafından geliştirilen eklentiyi yükleyin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz16g4rawa02embb0wr53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz16g4rawa02embb0wr53.png" alt=" " width="800" height="147"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 2: Kalıcı Bir SSH Bağlantısı Oluşturma (Config Dosyası)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu adım, sunucu bağlantı bilgilerimizi &lt;strong&gt;config&lt;/strong&gt; adında özel bir dosyaya kaydederek, bu bağlantıya kolayca hatırlanabilir bir isim vermemizi sağlar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSH Yapılandırma Dosyasını Açın:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kendi lokal bilgisayarınızda, bir terminal veya komut istemi açın. SSH yapılandırma dosyasını bir metin editörü ile açın. Bu dosya genellikle aşağıdaki konumlarda bulunur:&lt;/p&gt;

&lt;p&gt;Linux veya macOS: &lt;code&gt;~/.ssh/config&lt;/code&gt;&lt;br&gt;
Windows: &lt;code&gt;C:\Users\KULLANICI_ADINIZ\.ssh\config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Not:&lt;br&gt;
Eğer &lt;strong&gt;.ssh&lt;/strong&gt; klasörü veya &lt;strong&gt;config&lt;/strong&gt; dosyası mevcut değilse, kendiniz oluşturabilirsiniz.&lt;/p&gt;

&lt;p&gt;Kendi lokal bilgisayarınızda bir terminal açın. &lt;strong&gt;nano&lt;/strong&gt; gibi kullanımı kolay bir terminal editörü ile yapılandırma dosyasını doğrudan açmak için aşağıdaki komutu çalıştırın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
nano ~/.ssh/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not: &lt;strong&gt;nano&lt;/strong&gt; editöründe dosyayı kaydetmek için &lt;strong&gt;Ctrl+O&lt;/strong&gt; (Write Out) ve ardından &lt;strong&gt;Enter&lt;/strong&gt;'a, çıkmak için ise &lt;strong&gt;Ctrl+X&lt;/strong&gt; tuş kombinasyonunu kullanabilirsiniz.&lt;/p&gt;

&lt;p&gt;Eğer Windows kullanıyorsanız ve terminal kullanmak istemiyorsanız, dosyayı &lt;strong&gt;C:\Users\KULLANICI_ADINIZ.ssh\config&lt;/strong&gt; konumunda bulup Not Defteri (Notepad) gibi bir metin editörü ile de açabilirsiniz.&lt;/p&gt;

&lt;p&gt;(Eğer &lt;strong&gt;.ssh&lt;/strong&gt; klasörü veya &lt;strong&gt;config&lt;/strong&gt; dosyası mevcut değilse, komut dosyayı sizin için oluşturacaktır.)&lt;/p&gt;

&lt;p&gt;Yeni host bilgilerini eklemek için aşşağıdaki işlemleri gerçekleştirin.&lt;/p&gt;

&lt;p&gt;Açtığınız &lt;strong&gt;config&lt;/strong&gt; dosyasına aşağıdaki bloğu ekleyin ve kendi bilgilerinizle doldurun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Liman MYS Geliştirme Sunucusu
Host liman-dev-sunucusu
    HostName &amp;lt;SUNUCU_IP_ADRESINIZ&amp;gt;
    User liman
    IdentityFile ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Host:&lt;/strong&gt; Bağlantınızın kısa adıdır. VS Code'da görünecek ve                kullanacağınız isim budur.&lt;br&gt;
   &lt;strong&gt;HostName:&lt;/strong&gt; Liman sunucusunun gerçek IP adresi.&lt;br&gt;
   &lt;strong&gt;User:&lt;/strong&gt; Bağlanacağınız kullanıcı adı, yani liman.&lt;br&gt;
   &lt;strong&gt;IdentityFile:&lt;/strong&gt; Şifresiz bağlantı için oluşturduğunuz SSH özel anahtarınızın yolu (&lt;strong&gt;~/.ssh/id_rsa&lt;/strong&gt; genellikle varsayılandır).&lt;br&gt;
Dosyayı kaydedip kapatın.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 3: VS Code ile Yapılandırılmış Host'a Bağlanma&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ctrl+Shift+P&lt;/strong&gt; (veya &lt;strong&gt;F1&lt;/strong&gt;) tuş kombinasyonu ile komut paletini açın.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1r9acmx5ipdtgmf07f6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1r9acmx5ipdtgmf07f6.png" alt=" " width="800" height="534"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Remote-SSH: Connect to Host...&lt;/strong&gt; yazıp seçin.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvuxx4y5hmjj3pne7trsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvuxx4y5hmjj3pne7trsg.png" alt=" " width="602" height="116"&gt;&lt;/a&gt;&lt;br&gt;
Karşınıza çıkan listede, &lt;strong&gt;config&lt;/strong&gt; dosyasına eklediğiniz Host isminin (&lt;strong&gt;liman-dev-sunucusu&lt;/strong&gt; gibi) doğrudan göründüğünü göreceksiniz.Bu isme tıklayarak bağlantıyı başlatın.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtfevitbba73hm4sxrne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtfevitbba73hm4sxrne.png" alt=" " width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VS Code yeni bir pencere açacaktır. Sol alt köşede &lt;strong&gt;"SSH: liman-dev-sunucusu"&lt;/strong&gt; yazdığını gördüğünüzde, bağlantı başarıyla kurulmuş demektir.   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 4:Eklenti Klasörünü Açma&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;VS Code'da &lt;strong&gt;File &amp;gt; Open Folder...&lt;/strong&gt; (veya &lt;strong&gt;Dosya &amp;gt; Klasör Aç...&lt;/strong&gt;) seçeneğine tıklayın.&lt;/p&gt;

&lt;p&gt;Açılan diyalog kutusuna eklentilerin bulunduğu yolu girin: &lt;strong&gt;/liman/extensions/&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OK&lt;/strong&gt; butonuna tıklayın.&lt;/p&gt;

&lt;p&gt;Artık sol taraftaki dosya gezgininde, sunucudaki tüm eklenti dosyalarınızı görebilirsiniz. Yaptığınız her değişiklik anında sunucuya kaydedilecektir.&lt;/p&gt;
&lt;h2&gt;
  
  
  Bölüm 4: Eklentiyi Derleme ve Geliştirme Modunu Aktif Etme
&lt;/h2&gt;

&lt;p&gt;Son aşamada, kodumuzun canlı olarak derlenmesini ve Liman arayüzünde görüntülenmesini sağlayacağız.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 1 :Node.js ve pnpm Kurulumu (Gerekliyse)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eklenti bağımlılıklarını yönetmek ve derleme işlemlerini yapmak için &lt;strong&gt;pnpm&lt;/strong&gt; paket yöneticisine ihtiyacımız var. &lt;strong&gt;pnpm&lt;/strong&gt;'in çalışabilmesi için de öncelikle sunucunuzda &lt;strong&gt;Node.js&lt;/strong&gt;'in kurulu olması gerekmektedir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Node.js Kurulumu:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Eğer sunucunuzda &lt;strong&gt;Node.js&lt;/strong&gt; kurulu değilse veya çok eski bir sürüm varsa, aşağıdaki komutlarla güncel bir LTS (Uzun Süreli Destek) sürümünü kurabilirsiniz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Terminalde aşağıdaki komutları sırasıyla çalıştırın:

# Node.js 22.x LTS sürümü için kurulum betiğini indirip çalıştırın
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -

# Node.js ve beraberinde gelen npm'i yükleyin
sudo apt-get install -y nodejs

# Kurulumun başarılı olduğunu kontrol edin
node -v
npm -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komutlar sonunda &lt;strong&gt;v22.x.x&lt;/strong&gt; ve &lt;strong&gt;v10.x.x&lt;/strong&gt; gibi sürüm numaraları görmelisiniz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PNPM Kurulumu:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Node.js&lt;/strong&gt; ve &lt;strong&gt;npm&lt;/strong&gt;'i kurduktan sonra, &lt;strong&gt;npm&lt;/strong&gt;'i kullanarak &lt;strong&gt;pnpm&lt;/strong&gt;'i global olarak (sistemin her yerinden erişilebilir şekilde) kurabiliriz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# npm kullanarak pnpm'i global olarak yükleyin
sudo npm install -g pnpm

# pnpm kurulumunu kontrol edin
pnpm -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komut sonunda &lt;strong&gt;pnpm&lt;/strong&gt;'in sürüm numarasını (&lt;strong&gt;9.x.x&lt;/strong&gt; gibi) görüyorsanız, kurulum tamamlanmıştır.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 2: Bağımlılıkları Yükleme&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Artık &lt;strong&gt;pnpm&lt;/strong&gt; kurulu olduğuna göre, eklentimizin ihtiyaç duyduğu kütüphaneleri ve paketleri yükleyebiliriz.&lt;br&gt;
VS Code içerisinde &lt;strong&gt;Terminal &amp;gt; New Terminal&lt;/strong&gt; (veya &lt;strong&gt;Terminal &amp;gt; Yeni Terminal&lt;/strong&gt;) menüsünden yeni bir terminal açın. Bu terminalin doğrudan sunucunuzda, açtığınız klasör yolunda (&lt;strong&gt;/liman/extensions/&lt;/strong&gt;) açıldığına dikkat edin.&lt;/p&gt;

&lt;p&gt;Üzerinde çalıştığınız eklentinin klasörüne girin (örneğin: &lt;strong&gt;cd eklenti-adiniz&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proje bağımlılıklarını yüklemek için aşağıdaki komutu çalıştırın:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pnpm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komut, &lt;strong&gt;package.json&lt;/strong&gt; dosyasını okur ve projenin ihtiyaç duyduğu tüm kütüphaneleri &lt;strong&gt;node_modules&lt;/strong&gt; klasörü altına indirir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Geliştirme Sunucusunu Başlatma:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aynı terminalde, projenin canlı olarak derlenmesini ve dosya değişikliklerini izlemesini sağlayacak komutu çalıştırın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pnpm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komut, genellikle arkaplanda bir geliştirme sunucusu başlatır ve dosyalarınızda yaptığınız her değişikliği otomatik olarak algılayıp yeniden derler.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adım 3 :Liman Arayüzünde Geliştirme Modunu Aktif Etme&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Öncelikle Liman arayüzünden, geliştirdiğiniz eklentiyi bir sunucu  gerekir. Bu işlem hakkında detaylı bilgi için resmi Liman dokümantasyonunu inceleyebilirsiniz: &lt;a href="https://docs.liman.dev/kullanim-kilavuzu/sunucu-yoenetimi/sunucu-ekleme-ve-kaldirma" rel="noopener noreferrer"&gt;Liman Sunucu Yönetimi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eklentiyi sunucuya atadıktan sonra, ilgili sunucu üzerinden eklentinizi açın.&lt;/p&gt;

&lt;p&gt;Tarayıcınızın adres çubuğundaki URL'nin sonuna &lt;strong&gt;/development&lt;/strong&gt; ekleyin ve &lt;strong&gt;Enter&lt;/strong&gt;'a basın.&lt;/p&gt;

&lt;p&gt;Bu işlemi yaptığınızda, Liman artık eklentinin derlenmiş statik dosyalarını değil, pnpm run dev komutunun çalıştırdığı geliştirme sunucusundan gelen canlı verileri kullanacaktır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ek Bölüm: Geliştirme Sürecinde Sık Karşılaşılan Sorunlar ve Çözümleri
&lt;/h2&gt;

&lt;p&gt;Aşağıda, ana rehberi takip ederken veya geliştirme yaparken karşılaşabileceğiniz en yaygın dört sorun ve bu sorunları çözmek için izlemeniz gereken adımlar detaylandırılmıştır.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Eklenti Panelde Görünmüyor veya "Undefined" Olarak Gözüküyor&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Eklentiyi Liman'a yükledikten sonra, panelde hiç görünmemesi veya isminin "Undefined" olarak listelenmesi.&lt;br&gt;
Bu sorunun neredeyse her zaman tek bir nedeni vardır: Eklentinin &lt;strong&gt;.zip&lt;/strong&gt; dosyasının hatalı bir klasör yapısıyla sıkıştırılması. Liman MYS, eklentiyi tanımak için hayati bir dosya olan &lt;strong&gt;extension.json&lt;/strong&gt;'ın doğrudan zip dosyasının kök dizininde olmasını bekler.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Çözüm Yolları:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Doğru Zip Yapısı:&lt;/strong&gt; Eklenti dosyalarınızın bulunduğu klasörün içine girin, tüm dosyaları (&lt;strong&gt;extension.json&lt;/strong&gt;, &lt;strong&gt;views&lt;/strong&gt;, &lt;strong&gt;public&lt;/strong&gt; vb.) seçin ve bunları doğrudan zipleyin.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;my-extension.zip&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;-&amp;gt; extension.json&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;-&amp;gt; views/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-&amp;gt; public/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-&amp;gt; ...diğer dosyalar&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yanlış Zip Yapısı (Kaçınılması Gereken):&lt;/strong&gt; Eklenti dosyalarını içeren ana klasöre sağ tıklayıp onu zip'lemek. Bu durumda extension.json kök dizinde olmaz.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;my-extension.zip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-&amp;gt; my-extension/  (Hatalı alt klasör)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-&amp;gt; extension.json&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;-&amp;gt; views/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-&amp;gt; ...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Port Çakışması (EADDRINUSE) Hatası&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;pnpm run dev&lt;/strong&gt; komutunu çalıştırdığınızda, terminalde "EADDRINUSE" (Error: address already in use) hatası almanız.&lt;/p&gt;

&lt;p&gt;Temel Nedeni Geliştirme sunucusunun kullanmaya çalıştığı portun (genellikle &lt;strong&gt;5173&lt;/strong&gt;) başka bir uygulama veya arka planda unutulmuş eski bir geliştirme süreci tarafından zaten kullanılıyor olması.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Çözüm Yolları:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Yöntem A:&lt;/strong&gt; Alternatif Bir Port Kullanmak (En Hızlı Çözüm)&lt;br&gt;
&lt;strong&gt;pnpm run dev&lt;/strong&gt; komutunu, boş olduğundan emin olduğunuz farklı bir port numarası ile çalıştırın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pnpm run dev -- --port 5174
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Yöntem B:&lt;/strong&gt; Portu Kullanan İşlemi Sonlandırmak&lt;br&gt;
Mevcut portu meşgul eden işlemi bulup sonlandırın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Örnek olarak 5173 portunu kullanan işlemi bulalım
sudo lsof -i :5173
# Komut çıktısındaki PID (Process ID) numarasını kullanarak işlemi sonlandıralım
# Örneğin PID 12345 ise:
sudo kill -9 12345
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu işlemden sonra &lt;strong&gt;pnpm run dev&lt;/strong&gt; komutunu tekrar çalıştırabilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. 404 - Not Found (/development) Hatası&lt;/strong&gt;&lt;br&gt;
 Liman arayüzünde eklentiyi açıp URL sonuna &lt;strong&gt;/development&lt;/strong&gt; eklediğinizde "404 - Not Found" hatası almanız.&lt;/p&gt;

&lt;p&gt;Temel Nedeni Tarayıcınız, geliştirme sunucusuyla iletişim kuramıyor. Bunun birkaç sebebi olabilir.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Çözüm Yolları (Sırasıyla Kontrol Edin):&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Geliştirme Sunucusu Çalışıyor mu?&lt;/strong&gt;&lt;br&gt;
VS Code'daki terminalinize geri dönün. &lt;strong&gt;pnpm run dev&lt;/strong&gt; komutunun hala çalıştığından ve bir hata vermediğinden emin olun. Eğer durmuşsa, yeniden başlatın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Doğru Portu mu Kullanıyorsunuz?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;pnpm run dev&lt;/strong&gt; komutunun çıktısını kontrol edin. Geliştirme sunucusu hangi portta (&lt;strong&gt;5173&lt;/strong&gt;, &lt;strong&gt;5174&lt;/strong&gt; vb.) çalıştığını size söyleyecektir. Liman'ın bu porta erişebildiğinden emin olun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Güvenlik Duvarı (Firewall) Engelliyor mu?&lt;/strong&gt;&lt;br&gt;
Sunucunuzun güvenlik duvarı, geliştirme portuna dışarıdan erişimi engelliyor olabilir. Ubuntu'da &lt;strong&gt;ufw&lt;/strong&gt; kullanılıyorsa, ilgili porta izin verin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Vite'ın varsayılan portu 5173 için izin verelim
sudo ufw allow 5173
sudo ufw reload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>vscode</category>
      <category>opensource</category>
      <category>limanmys</category>
    </item>
  </channel>
</rss>
