# cPanel Migration

Onoxsoft Panel'in cPanel Migration modülü, mevcut cPanel/WHM sunucularındaki hesapları kolayca Onoxsoft'a taşımanızı sağlar. pkgacct formatındaki yedek dosyalarını ayrıştırarak domain, veritabanı, e-posta, DNS kaydı ve SSL sertifikasını otomatik olarak geri yükler.

## Desteklenen Kaynak Formatlar

| Format | Açıklama |
|--------|----------|
| pkgacct .tar.gz | cPanel WHM'in standart yedek formatı |
| cPanel Full Backup | cPanel müşteri tam yedek dosyası |
| cPanel Account Backup | Hesap bazlı yedek |

::: info Sürüm Uyumluluğu
cPanel 76 ve üzeri test edilmiştir. Daha eski sürümler için destek ekibine danışın.
:::

## Adım Adım Migration

### 1. cPanel'de Yedek Oluştur

cPanel/WHM sunucunuzda yedek alın:

```bash
# WHM üzerinden — tek hesap
/scripts/pkgacct username /backup/

# WHM üzerinden — tüm hesaplar
/scripts/pkgacct_root /backup/

# SSH ile tek hesap
/usr/local/cpanel/scripts/pkgacct --backup username
```

Oluşturulan dosya adı: `cpmove-username.tar.gz`

### 2. Yedek Dosyasını Onoxsoft Sunucusuna Aktar

```bash
# SCP ile doğrudan aktarım
scp root@eski-sunucu:/backup/cpmove-username.tar.gz \
    root@yeni-sunucu:/tmp/migrations/

# rsync (büyük dosyalar için önerilir)
rsync -avz --progress \
    root@eski-sunucu:/backup/cpmove-username.tar.gz \
    root@yeni-sunucu:/tmp/migrations/
```

Ya da panel üzerinden: **Göç > cPanel Migration > Dosya Yükle** (max 10 GB, büyük dosyalar için SCP önerilir)

### 3. Onoxsoft Panel'de Migration Başlat

**Admin > Göç (Migration) > cPanel Migration** menüsüne gidin.

#### 3a. Dosya Yükleme veya Yol Belirtme

```
Yedek Kaynak:
  ○ Dosya Yükle (drag & drop, max 5 GB)
  ● Sunucu Yolu: /tmp/migrations/cpmove-username.tar.gz
  ○ Uzak URL: https://...
```

#### 3b. Analiz Aşaması

**Analiz Et** butonuna tıkladığınızda sistem yedek dosyasını ayrıştırır ve şunu gösterir:

```
Bulunan İçerik:
  ✓ Hesap: username (email@example.com)
  ✓ Ana domain: example.com
  ✓ Ek domain: 2 addon domain
  ✓ Subdomain: 5 subdomain
  ✓ DNS kayıtları: 18 kayıt
  ✓ E-posta hesabı: 12 hesap
  ✓ Veritabanı: 3 MySQL veritabanı
  ✓ SSL sertifikası: 1 aktif (Let's Encrypt)
  ✓ Dosya boyutu: 2.3 GB
  ✓ PHP sürümü: 7.4 (Onoxsoft'ta 8.1 olarak kurulacak)
  ⚠ Eklenti: Softaculous (Onoxsoft'ta desteklenmez, atlanır)
```

#### 3c. Migration Seçenekleri

```
Hedef Paket: [Silver ▼]
Hedef Sunucu: [Bu Sunucu ▼] (cluster varsa başka node seçilebilir)

Migration Kapsamı:
  ☑ Dosyalar (public_html ve alt dizinler)
  ☑ Veritabanları
  ☑ E-posta hesapları
  ☑ E-posta yönlendirmeleri
  ☑ DNS kayıtları
  ☑ SSL sertifikaları (mümkünse yeniden al)
  ☑ .htaccess dosyaları
  ☐ Cron jobs (manuel inceleme önerilir)
  ☑ PHP sürümünü koru (imkansızsa en yakın sürüm)

Çakışma Durumu:
  ○ Üzerine yaz (mevcut hesabı değiştir)
  ● Atla (hesap zaten varsa pas geç)
  ○ Yeni kullanıcı adıyla oluştur: username_2
```

#### 3d. Migration Başlat

**Migration Başlat** butonuna tıklayın. İşlem arka planda kuyruk üzerinden çalışır.

### 4. Migration İlerleme Takibi

Panel gerçek zamanlı ilerleme gösterir:

```
Migration: cpmove-username.tar.gz
Durum: Çalışıyor (Başlangıç: 14:23:05)

[████████████████░░░░] %82

Adımlar:
  ✓ Arşiv açma                    2s
  ✓ Hesap oluşturma               8s
  ✓ Dosya kopyalama               3m 12s
  ✓ Veritabanı aktarımı           45s
  ✓ E-posta hesapları             12s
  ✓ DNS kayıtları                 3s
  ✓ SSL sertifikası               ⏳ çalışıyor...
  ○ Son doğrulama                 bekliyor
```

### 5. Post-Migration Doğrulama

Migration tamamlandığında otomatik doğrulama çalışır:

```
Doğrulama Raporu:
  ✓ Hesap erişilebilir: panel.example.com
  ✓ Web sitesi yanıt veriyor: example.com → HTTP 200
  ✓ SSL geçerli: example.com (Let's Encrypt, 89 gün kaldı)
  ✓ Veritabanı bağlantısı: wp_config test başarılı
  ✓ E-posta gönderme: SMTP test geçti
  ✓ DNS TTL propagasyon beklemede: ~30 dakika

Uyarılar:
  ⚠ PHP 7.4 → 8.1 yükseltme yapıldı. wp-config.php
    kontrol edilmeli, deprecated fonksiyonlar olabilir.
  ⚠ 2 cron job kopyalanmadı — manuel ekleyin:
    Hosting > Cron Jobs menüsünden
```

## Toplu Migration (Birden Fazla Hesap)

Tüm hesapları aynı anda taşıyabilirsiniz:

```bash
# WHM'de tüm hesapları yedekle
for user in $(cat /etc/trueuserlist); do
    /scripts/pkgacct --backup "$user" /backup/cpanel-exports/
done

# Onoxsoft sunucusuna aktar
rsync -avz root@eski-sunucu:/backup/cpanel-exports/ \
      root@yeni-sunucu:/tmp/migrations/

# Onoxsoft CLI ile toplu import
php artisan onox:migrate:cpanel \
  --path=/tmp/migrations/ \
  --package-id=2 \
  --workers=3 \
  --skip-existing
```

CLI parametreleri:

| Parametre | Açıklama |
|-----------|----------|
| `--path` | Yedek dosyalarının bulunduğu dizin |
| `--package-id` | Hedef hosting paketi ID'si |
| `--workers` | Paralel işlem sayısı (1-5, önerilen: 2-3) |
| `--skip-existing` | Mevcut hesapları atla |
| `--dry-run` | Gerçekte taşımadan analiz yap |
| `--notify-email` | Tamamlanınca bildirim gönder |

```bash
# Kuru çalışma — ne yapılacağını göster
php artisan onox:migrate:cpanel \
  --path=/tmp/migrations/ \
  --dry-run
```

## DNS Değişikliği — Kesinti Süresi Sıfıra İndirme

DNS değişikliğinde kesinti süresi yaşamamak için:

1. Migration'ı tamamlayın (DNS kaydı oluşturuldu ama eski NS hâlâ aktif)
2. Eski sunucuda TTL'yi 300 saniyeye indirin (1-2 gün önce)
3. Onoxsoft'ta siteyi doğrulayın
4. Domain tescilcisinde nameserver'ları Onoxsoft'a çevirin
5. 5-30 dakika içinde propagasyon tamamlanır
6. Eski sunucuyu kapatın

::: tip TTL İpucu
Eğer eski sunucunuzda erişiminiz varsa, nameserver değişikliğinden önce TTL'yi düşürün. Böylece geri alma durumunda DNS çabuk propagasyon yapar.
:::

## Sık Karşılaşılan Sorunlar

### PHP Sürümü Uyumsuzluğu

Eski PHP 7.x kullanan siteler için:

```bash
# Migration sonrası PHP sürümünü değiştir
php artisan onox:account:set-php username 7.4

# Onoxsoft MultiPHP'de 7.4 kurulu mu kontrol et
php artisan onox:php:list-versions
```

Panel üzerinden: **Hesap > PHP Sürümü > 7.4**

### Veritabanı Karakter Seti Sorunu

```sql
-- Migration sonrası karakter seti kontrolü
SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME LIKE 'username_%';

-- Gerekirse dönüştür
ALTER DATABASE username_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```

### SSL Alınamıyor (DNS Henüz Yayılmadı)

Domain henüz Onoxsoft'a yönlendirilmediyse Let's Encrypt doğrulaması başarısız olur. Geçici çözüm:

```bash
# DNS yayılana kadar self-signed sertifika kullan
php artisan onox:ssl:self-signed username example.com

# DNS yayıldıktan sonra Let's Encrypt al
php artisan onox:ssl:issue example.com
```

### Büyük Dosya Transferi (>10 GB)

Panel yükleyici 10 GB ile sınırlıdır. Büyük hesaplar için:

```bash
# Doğrudan rsync ile kopyala
rsync -avz --progress --compress-level=9 \
      root@eski:/backup/cpmove-büyükhesap.tar.gz \
      root@yeni:/tmp/migrations/

# Panel CLI ile işle
php artisan onox:migrate:cpanel \
  --file=/tmp/migrations/cpmove-büyükhesap.tar.gz
```

## Migration Geçmişi

Tüm migration işlemleri **Göç > Import Geçmişi** menüsünde kayıt altındadır:

- Başlangıç / bitiş zamanı
- Kaynak dosya ve boyutu
- Başarı / hata durumu
- Doğrulama raporu
- Log dosyası indirme linki

## API ile Migration

```bash
# Migration başlat
curl -X POST https://panel.yourdomain.com/api/v1/migrations \
  -H "Authorization: Bearer onox_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "cpanel",
    "source_path": "/tmp/migrations/cpmove-username.tar.gz",
    "package_id": 2,
    "options": {
      "skip_existing": false,
      "overwrite": false,
      "notify_email": "admin@yourdomain.com"
    }
  }'

# Migration durumunu sorgula
curl https://panel.yourdomain.com/api/v1/migrations/123 \
  -H "Authorization: Bearer onox_live_xxxxx"
```

## Sonraki Adımlar

- [Hesap Yönetimi](/tr/admin/hesap-yonetimi)
- [MultiPHP Yapılandırması](/tr/admin/multiphp)
- [AutoSSL Kurulumu](/tr/admin/ssl-autossl)
- [DNS Yönetimi](/tr/api/dns)
