Apartment Management - Sistem Kurulum ve Yeni Müşteri Rehberi (Plesk + Multi-Tenant DB) ──────────────────────────────────────────────────────────────────────────────────────── Bu belge, sistemin ilk defa kurulması (Ana Domain / Süper Admin) ve sonrasında sisteme yeni bir müşteri (yeni apartman/tenant) eklenmesi aşamalarını baştan sona açıklamaktadır. =========================================================== BÖLÜM 1: İLK KURULUM (ANA DOMAİN VE SÜPER ADMİN) =========================================================== 1. ADIM: Plesk Üzerinde Ana Domain Açılışı ----------------------------------------------------------- Plesk panelinize giriş yapın ve ana alan adınızı (örn: `apartment-management.engcan.com.tr`) ekleyin. Bu alan adı, Süper Admin panelinin çalışacağı ve tüm sistemi yöneteceğiniz ana adrestir. - Let's Encrypt veya benzeri bir araçla SSL sertifikasını kurmayı unutmayın. 2. ADIM: Varsayılan (Sistem/Migration) Veritabanının Oluşturulması -------------------------------------------------------------- Sistemin Prisma migration (veritabanı şema güncellemeleri) işlemlerini yürütebilmesi ve genel ayarları tutabilmesi için ilk veritabanını oluşturun. - Plesk'te "Veritabanları" kısmından yeni bir veritabanı açın (örn: `apartment_management_default` veya `apartment_managementA`). - Bu veritabanı için bir kullanıcı adı ve şifresi belirleyin. 3. ADIM: Backend Dosyalarının Yüklenmesi ve Kurulum ------------------------------------------------------ - Backend klasörünüzü (zip) Plesk dosya yöneticisinden proje dizinine yükleyip çıkartın. - Plesk Node.js arayüzü üzerinden veya SSH ile sunucuya bağlanıp proje dizininde `npm install` komutu ile Node.js bağımlılıklarını kurun. 4. ADIM: İlk .env (Ortam Değişkenleri) Yapılandırması ------------------------------------------------------- Backend dizininizdeki `.env.production` dosyasını oluşturun veya düzenleyin. İlk kurulum için şu ayarları kendinize göre belirleyin: # Varsayılan (Migration) Veritabanı DATABASE_URL="mysql://kullanici:sifre@localhost:3306/apartment_management_default" # Super Admin Domaini (En başta açılan ana domain) SUPER_ADMIN_DOMAIN="apartment-management.engcan.com.tr" # İzin verilen Frontend originleri ve CORS (Süper adminin kendi URL'si) FRONTEND_URL="https://apartment-management.engcan.com.tr" ALLOWED_DOMAINS="engcan.com.tr" # Güvenlik Ayarları JWT_SECRET="guvenli-bir-sifre-belirleyin-12345" ENCRYPTION_SECRET="kvkk-icin-guvenli-sifre-xyz" 5. ADIM: Veritabanı Tablolarının Oluşturulması (Migration) ----------------------------------------------------------------------- Proje dizininde SQL tablolarını oluşturmak için: Plesk SSH Terminal veya Git bash üzerinden `npx prisma db push` (veya `npx prisma migrate deploy`) komutunu çalıştırın. Bu komut, veritabanınızda schema.prisma'daki tabloları oluşturacaktır. Ardından size verilen ilk kurulum `sql-setup.sql` dosyasının içeriğini kopyalayın. phpMyAdmin üzerinden `apartment_management_default` veritabanınıza bağlanıp, SQL sekmesinden komutu çalıştırın. (Bu dosya Süper Admin yetkilerini ve Ana Kasayı yükleyecektir). Uygulamayı Node.js üzerinden (Restart App) başlatın. Ana sistemin backend'i artık hazırdır. =========================================================== BÖLÜM 2: SİSTEME YENİ MÜŞTERİ (TENANT / APARTMAN) EKLEME =========================================================== (Sistem kurulduktan sonra, yeni bir site veya apartmana panel açılacağı zaman uygulanır) 1. ADIM: Plesk Üzerinde Müşteriye Özel Subdomain Açılması ----------------------------------------------------------- Plesk panelinden yeni müşteri için (örn: `apartmentc-management`) bir subdomain ekleyin. Bunun ana alan adınıza (`engcan.com.tr`) bağlı olduğundan emin olun (örn: apartmentc-management.engcan.com.tr). - SSL sertifikasını (Let's Encrypt) aktif edin. 2. ADIM: Yeni ve Boş Bir Veritabanı (Tenant DB) Oluşturulması -------------------------------------------------------------- Plesk "Veritabanları" bölümünden yeni müşteri için yepyeni, ayrı bir MySQL veritabanı oluşturun ve bir veritabanı kullanıcısı bağlayın. Örnek: - DB Adı: `apartment_managementC` - Kullanıcı: `engin2` - Şifre: `[Şifreniz]` 3. ADIM: Backend .env Dosyasının Güncellenmesi --------------------------------------- Mevcut çalışan (Bölüm 1'de kurduğunuz) backend uygulamanızın `.env.production` dosyasına bağlanıp yeni açtığınız müşterinin bilgilerini ekleyin: a) Yeni Veritabanını Tanımlayın: `TENANT_DB_apartment_managementC="mysql://engin2:sifre@localhost:3306/apartment_managementC"` b) Subdomain'i Bu Veritabanıyla Eşleyin (TENANT_MAP): Mevcut `TENANT_MAP` değişkeninin sonuna virgülle ekleyin. Format: [subdomain_adı]:[tenant_veritabani] `TENANT_MAP="...,apartmentc-management:apartment_managementC"` c) Frontend CORS İzinleri: `FRONTEND_URL` listesinin sonuna virgül koyarak yeni subdomain adresini ekleyin: `FRONTEND_URL="...,https://apartmentc-management.engcan.com.tr"` 4. ADIM: Tabloların Oluşturulması ve Yeni Veritabanına Sql-Setup (Seed) İşlenmesi ------------------------------------------------------- - Backend dizininde `npx prisma db push` komutunu tekrar çalıştırabilirsiniz. Bu komut, yeni tanımlanan TENANT_DB_... URL'lerini algılayarak yeni müşteri veritabanına da tabloları çizecektir. - Çizim tamamlanınca, phpMyAdmin ile boş olarak açtığınız `apartment_managementC` veritabanına bağlanın. - Size verilen `sql-setup.sql` dosyasındaki içeriği SQL sekmesine yapıştırıp çalıştırın. (Bu sayede her müşterinin kendi panelinde varsayılan "Süper Admin" rolleri, "Yönetici" kullanıcıları, Sayfalar ve Kasa hazır halde başlar.) 5. ADIM: Süper Admin (Frontend) Ortam Değişkenlerinin Güncellenmesi ---------------------------------------------------------------------- Uygulamanın çalışması için ana yönetim (Süper Admin) panelinin de bu yeni apartmandan haberdar olması gerekir. Bunun için projenin **frontend (arayüz)** tarafındaki `.env` veya `.env.production` (kullandığınız yapıya göre) dosyasına bağlanın. Oradaki tenant listesine (varsa `NEXT_PUBLIC_TENANTS` veya benzeri bir değişkene) aynı şekilde yeni açtığınız `apartmentc-management` ve `apartment_managementC` bilgilerini ekleyin. *Not: Bu adım, frontend kısmında tenant anahtarlaması veya farklı apartmanları listeleme işlemi kullanılıyorsa kritiktir.* 6. ADIM: Uygulamaların Yeniden Başlatılması (Restart) ---------------------------------------------------- Yeni `.env` ayarlarının devreye girmesi için Plesk üzerinden: 1. Backend Node.js uygulamasını (Restart App) yeniden başlatın. 2. Eğer frontend'iniz de Node.js (Next.js vb.) ise onu da yeniden başlatın (Statik build alıyorsanız tekrar build almalısınız). İŞLEM TAMAM! Artık tarayıcıdan yeni apartmanın paneline (https://apartmentc-management.engcan.com.tr) girip, "yonetici@site.com" ("admin123" şifresi ile) giriş yapabilirsiniz. Süper admin paneli de yeni tenant'ı tanımış olacaktır.