# VoccoTalk — Reseller Hosting (cPanel) Kurulumu

Bu dosya, projeyi Node.js destekli bir reseller/hosting paketine
(cPanel + CloudLinux "Setup Node.js App") kurmak içindir.
Önce `README.md` dosyasını okuyun; burada sadece hosting adımları var.

> ÖNEMLİ: Hosting paketinizde **Node.js App Selector** (CloudLinux)
> yoksa bu proje paylaşımlı hostingde çalışmaz. Önce hosting
> panelinizde "Setup Node.js App" menüsünün olduğunu doğrulayın.
> Socket.IO websocket + polling kullanır; Apache/Nginx arkasında
> polling ile de çalışır, websocket upgrade açıksa daha verimli olur.

## 1. Dosyaları yükleyin

1. `voccotalk.zip` içeriğini bilgisayarınıza çıkarın.
2. Hostingde **2 ayrı klasör** oluşturun (örnek):
   - `voccotalk-frontend` (site dosyaları)
   - `voccotalk-backend` (sinyal sunucusu)
3. Zip içindeki dosyaları ilgili klasöre FTP ile atın:
   - Kökteki `app/`, `components/`, `hooks/`, `lib/`, `types/`,
     `scripts/`, `package.json`, `next.config.js`, `tailwind.config.js`,
     `postcss.config.js`, `tsconfig.json`, `.env.example`
     → `voccotalk-frontend/`
   - `server/` klasörünün İÇİNDEKİLER (`src/`, `package.json`, `tsconfig.json`)
     → `voccotalk-backend/`
   - `node_modules/`, `.next/`, `dist/` klasörlerini YÜKLEMEYİN
     (sunucuda kurulacak).
   - `.env.local` dosyasını YÜKLEMEYİN (localhost ayarı içerir).

## 2. Backend Node.js uygulaması

cPanel → **Setup Node.js App** → **Create Application**:

| Alan                  | Değer                                              |
| --------------------- | -------------------------------------------------- |
| Node.js version       | 18 veya üzeri (mevcut en günceli seçin)            |
| Application mode      | Production                                         |
| Application root      | `voccotalk-backend`                                |
| Application startup file | `dist/index.js`                                 |
| Custom startup file   | (boş — varsayılan `npm start` KULLANILMAYACAK)     |

> Not: cPanel önce `dist/` olmadığı için hata verebilir. Önce
> terminalden kurulum yapıp (adım 4) sonra uygulamayı oluşturun
> ya da startup dosyasını geçici verip sonra düzeltin.

Environment variables (uygulama ekranından ekleyin):

```text
PORT=3001
CLIENT_ORIGIN=https://siteniz.com
```

`CLIENT_ORIGIN` = frontend'in yayınlanacağı gerçek adres.
Birden fazla adres varsa virgülle ayırın.

## 3. Frontend Node.js uygulaması

cPanel → **Setup Node.js App** → ikinci uygulama:

| Alan                     | Değer                           |
| ------------------------ | ------------------------------- |
| Node.js version          | 18 veya üzeri                   |
| Application mode         | Production                      |
| Application root         | `voccotalk-frontend`            |
| Application startup file | `node_modules/next/dist/bin/next` |
| Custom startup file      | işaretli değil                  |

Başlangıç komutu olarak cPanel'e şunu verin (Application startup
alanı dosya ister; komut için "Custom startup" yerine terminal kullanın):

```bash
node node_modules/next/dist/bin/next start -p 3000
```

Bazı paneller "Startup File" + "Arguments" ayırır; arguments kısmına
`start -p 3000` yazın. Paneliniz buna izin vermiyorsa köke şu
`next-start.js` dosyasını ekleyip startup file olarak onu seçin:

```js
process.argv = [process.argv[0], "next", "start", "-p", "3000"];
require("next/dist/bin/next");
```

Environment variables:

```text
NEXT_PUBLIC_SOCKET_URL=https://sinyal-siteniz.com
NEXT_PUBLIC_STUN_SERVER=stun:stun.l.google.com:19302
```

> `NEXT_PUBLIC_*` değerleri **build anında** gömülür. Bu yüzden
> env değişkenlerini ekledikten sonra mutlaka `npm run build`
> çalıştırın (adım 4).

## 4. Kurulum + build (terminal)

cPanel → **Terminal** (yoksa SSH):

```bash
cd ~/voccotalk-backend
npm install --omit=dev --no-audit --no-fund
# typescript build için gerekli → dev olmadan kurulmazsa:
npm install --no-audit --no-fund
npm run build

cd ~/voccotalk-frontend
npm install --no-audit --no-fund
npm run build
```

> `--omit=dev` backendde sorun çıkarırsa (tsc bulunamazsa) düz
> `npm install` yapın; diskte biraz fazla yer kaplar ama çalışır.

Sonra Node.js App ekranından iki uygulamayı da **Restart** edin.

## 5. Domain yönlendirme

- Siteniz (`siteniz.com`) → frontend uygulamasına (cPanel otomatik proxy'ler).
- Backend için bir subdomain açın (örn. `sinyal.siteniz.com`) →
  backend uygulamasına yönlendirin.
- İkisine de **SSL (Let's Encrypt)** kurun. Mikrofon + WebRTC
  için HTTPS zorunludur; HTTP'de çalışmaz.

## 6. Kontrol listesi

- [ ] `https://sinyal.siteniz.com/health` → `{"ok":true,...}`
- [ ] Ana sayfa açılıyor, oda oluşturuluyor
- [ ] İki farklı tarayıcıda aynı odaya girilip ses test ediliyor
- [ ] `room-full` / `room-not-found` mesajları düzgün geliyor

## Sık karşılaşılan sorunlar

| Sorun | Çözüm |
| ----- | ----- |
| `npm install` çok yavaş / zaman aşımı | `--no-audit --no-fund` ekleyin, tekrar deneyin |
| Build sonrası eski env değeri görünüyor | `NEXT_PUBLIC_*` build anında gömülür → rebuild + restart şart |
| Socket bağlanmıyor | `NEXT_PUBLIC_SOCKET_URL` HTTPS mi? `CLIENT_ORIGIN` frontend adresini içeriyor mu? Backend restart edildi mi? |
| Websocket hatası ama site çalışıyor | Polling fallback devrededir; çalışıyorsa sorun yok. İsterseniz hostinge websocket upgrade'i açtırın |
| Port zaten kullanımda | Her uygulamaya farklı port verin (3000 / 3001) |
