SmartApt · Kurulum Rehberi
Production Deployment

PLESK Hosting Kurulum Rehberi

Merkezi yetkilendirme (AuthApartmentDb) ve dinamik tenant veritabanı yapısı ile PLESK paneli üzerinde kurulum adımları.

Central AuthDinamik DBPrisma Multi-SchemaNode.js App

Mimari Özeti (Merkezi Yetki)

Apartman Yönetimi

Merkezi Giriş & Auth DB

A Apartmanı

Dinamik Bağlantı (DB_A)

B Apartmanı

Dinamik Bağlantı (DB_B)

Tüm kullanıcılar ve apartman yetkileri merkezi "AuthApartmentDb" üzerinden yönetilir. Giriş sonrası seçilen apartmana göre ilgili veritabanına anlık geçiş yapılır.

1

Domain Yapılandırması

PLESK Panel

Uygulamanız tek bir domain üzerinde merkezi olarak çalışır. Alt domain (subdomain) zorunluluğu yoktur.

Örnek yapı:
https://apartment-management.engcan.com.trTüm kullanıcılar için tek giriş noktası
3

MySQL Veritabanlarını Oluşturun

Databases

PLESK → DatabasesAdd Database ile merkezi yetki ve en az bir apartman veritabanı oluşturun.

Database: AuthApartmentDb# Merkezi Yetki & Kullanıcılar
Database: apartment_managementA# A Apartmanı Verileri
Database: apartment_managementB# B Apartmanı Verileri

Bağlantı şablonu (Auth ve Tenant DB'ler için):

mysql://KULLANICI:SIFRE@localhost:3306/AuthApartmentDb
4

Uygulamayı Sunucuya Yükleyin

Deploy

Backend ve Frontend derlendikten sonra SSH veya File Manager ile yükleyin.

📁 backend/dist/
📁 frontend/.next/
📁 prisma/ ← prisma/schema.prisma VE prisma/auth.prisma
📄 .env ← aşağıdaki merkezi .env içeriği
5

.env Dosyasını Yapılandırın

Kritik

Uygulama kök dizinindeki .env dosyasını merkezi yapıya göre düzenleyin.

# ─────────────────────────────────────────────────────────
# VERİTABANI BAĞLANTILARI
# ─────────────────────────────────────────────────────────
AUTH_DATABASE_URL="mysql://engin:SIFRE@localhost:3306/AuthApartmentDb"

# Dinamik Veritabanları (Slug'a göre isimlendirin)
TENANT_DB_a="mysql://engin:SIFRE@localhost:3306/apartman_a"
TENANT_DB_b="mysql://engin:SIFRE@localhost:3306/apartman_b"

# ─────────────────────────────────────────────────────────
# JWT & GÜVENLİK
# ─────────────────────────────────────────────────────────
JWT_SECRET="guclu-bir-secret-buraya"
JWT_EXPIRES_IN="7d"

# ─────────────────────────────────────────────────────────
# API & UYGULAMA
# ─────────────────────────────────────────────────────────
NEXT_PUBLIC_API_URL="https://apartment-management.engcan.com.tr/api"
SUPER_ADMIN_DOMAIN="apartment-management.engcan.com.tr"
PORT=3001
7

Prisma ve Veritabanı Hazırlığı

SSH

SSH üzerinden Prisma şemalarını oluşturun ve veritabanlarına uygulayın:

# 1. Bağımlılıkları yükle
npm install --production

# 2. Prisma Client'ları oluştur (Auth ve Standart şemalar için)
npx prisma generate --schema=prisma/auth.prisma
npx prisma generate --schema=prisma/schema.prisma

# 3. Merkezi Auth veritabanını oluşturun
npx prisma db push --schema=prisma/auth.prisma

# 4. Apartman veritabanlarını (Tenant) oluşturun/güncelleyin
# Her apartman DB'si için DATABASE_URL'i ezerek çalıştırın
DATABASE_URL="mysql://.../apartment_managementA" npx prisma db push
DATABASE_URL="mysql://.../apartment_managementB" npx prisma db push

# 5. Mevcut verileri merkezi DB'e taşıyın (Eski subdomain yapısından geçişse)
npm run migrate:central
9

Sorun Giderme

Troubleshoot

Login olunca "Üzgünüz, henüz herhangi bir apartman için yetkilendirilmemişsiniz" uyarısı.

Kullanıcının AuthApartmentDb üzerindeki "UserTenant" tablosunda ilgili apartman (tenantId) ile eşleştiğinden emin olun. Süper Admin panelinden yetki verebilirsiniz.

Süper Admin girişi nereden yapılıyor?

/super-admin/login adresinden giriş yapabilirsiniz. Bu kullanıcıların Auth DB'de "isSuperAdmin" alanı true olmalıdır.