# Onoxsoft — Türkiye Pazarına Özel Hosting Kontrol Paneli

cPanel/Plesk rakibi, Laravel tabanlı, Türkiye-öncelikli ticari hosting kontrol paneli.

[![Tests](https://img.shields.io/badge/tests-265%20passed-brightgreen)]() [![PHP](https://img.shields.io/badge/PHP-8.2+-blue)]() [![Laravel](https://img.shields.io/badge/Laravel-11.51-red)]() [![License](https://img.shields.io/badge/license-Commercial-orange)]()

---

## 📦 Stack Özeti

| Katman | Teknoloji |
|---|---|
| **Backend** | Laravel 11.51, PHP 8.2+, Inertia.js |
| **Frontend** | Vue 3, Tailwind CSS 3, vue-i18n (TR + EN) |
| **DB** | MariaDB 10.11+ (üretim), SQLite (test) |
| **Cache/Queue** | Redis + Laravel Horizon |
| **Auth** | Laravel Fortify, Spatie Permission, 2FA (TOTP) |
| **API** | Laravel Sanctum + REST v1 (opsiyonel paket) |
| **Hedef OS** | AlmaLinux 9 · Rocky 9 · RHEL 9 · CentOS Stream 9 · Oracle Linux 9 · Debian 11/12 · Ubuntu 22.04/24.04 |
| **Web stack** | Apache 2.4 event + PHP-FPM (multi-version 7.4-8.3) + MariaDB + PowerDNS + Pure-FTPd + acme.sh |

---

## 🚀 Hızlı Başlangıç (Production)

### Tek Komut Kurulum

```bash
# Sıfır sunucu (root erişimi gerekli):
ssh root@server-ip
curl -fsSL https://onox.com.tr/install.sh | bash -s -- \
    --hostname panel.example.com \
    --admin-email admin@example.com

# Veya yerel kaynak ile:
git clone https://github.com/onoxsoft/panel.git /opt/onox-source
sudo bash /opt/onox-source/install.sh --hostname panel.example.com --admin-email admin@example.com
```

15-20 dakika içinde tam stack hazır:
1. ✅ Apache + PHP 7.4/8.1/8.2/8.3 (multi-version FPM)
2. ✅ MariaDB + PowerDNS (gmysql backend)
3. ✅ Redis (Horizon queue)
4. ✅ Pure-FTPd + acme.sh (Let's Encrypt)
5. ✅ 94 onx-* sysapi script (`/usr/local/onoxsoft/bin/`)
6. ✅ Panel deploy (composer + npm + migrate + key:generate)
7. ✅ Apache vhost + SSL otomatik

OS otomatik algılanır — RHEL ailesi için `dnf+firewalld+SELinux`, Debian ailesi için `apt+ufw+AppArmor`.

---

## 🔧 Geliştirme Ortamı (Local)

```bash
git clone <repo-url>
cd PANELTR
composer install
npm install
cp .env.example .env
php artisan key:generate
touch database/database.sqlite          # veya MariaDB ayarla
php artisan migrate --seed
npm run build                            # veya: npm run dev
php artisan serve                        # http://localhost:8000
```

İlk giriş için seeder default password: `password`

---

## 🧪 Testler

```bash
./vendor/bin/pest                                    # tüm suite
./vendor/bin/pest tests/Feature/Scenarios            # E2E senaryolar
./vendor/bin/pest tests/Feature/Smoke                # 140 route smoke
./vendor/bin/pest --parallel                         # paralel mod
./vendor/bin/pest --coverage --min=60                # coverage (xdebug)
bash scripts/test-install-detect-os.sh               # OS detection testi
```

### Mevcut Test Durumu

| Suite | Test | Durum |
|---|---|---|
| Unit | tests/Unit/ | ✅ green |
| Feature/Account | Account model + provisioner | ✅ green |
| Feature/Domain | Domain model + provisioner | ✅ green |
| Feature/Scenarios | 9 E2E senaryo (admin lifecycle, customer, WHMCS, vd.) | ✅ green |
| Feature/Smoke | 80 admin + 60 customer GET route | ✅ green |
| Feature/Api/V1 | REST API (Sanctum) | ⏸ skipped (composer require laravel/sanctum gerekli) |

**Toplam: 265 passed, 31 skipped, 0 failed (835 assertions)**

---

## 🛠️ CLI Komutları

```bash
php artisan onox:status                # Sistem genel durum
php artisan onox:health                # 8-noktada sağlık taraması
php artisan onox:accounts              # Hesap listesi
php artisan onox:create-account        # Yeni hesap (admin yokken)
php artisan onox:check-quota           # Disk quota threshold check
php artisan onox:check-ssl-expiring    # SSL renewal alerts (30/14/7/3/1 gün)
php artisan onox:prune                 # KVKK retention cleanup
php artisan onox:secrets-audit         # .env + hassas alan denetimi
php artisan onox:install-stack         # AlmaLinux 9 stack playbook
php artisan onox:benchmark             # DB query p50/p95/p99
php artisan onox:replication-health    # Multi-server lag check
php artisan onox:status-check          # Public status page components
php artisan onox:license-heartbeat     # Lisans server ping (Phase 5)
php artisan onox:query-audit           # N+1 detection per URL
php artisan schedule:list              # Tüm scheduled tasks (6 adet)
```

---

## 📚 Dokümantasyon

| Klasör | İçerik |
|---|---|
| [docs/architecture.md](docs/architecture.md) | Teknik mimari (servis topolojisi, sysapi, schema) |
| [docs/glossary.md](docs/glossary.md) | TR-EN terminoloji sözlüğü |
| [docs/master-plan-ref.md](docs/master-plan-ref.md) | Master plan özet referansı |
| [docs/kvkk/](docs/kvkk/) | KVKK uyum (aydınlatma metni, veri envanteri, 72-saat runbook) |
| [docs/security/](docs/security/) | Güvenlik (incident response, pentest scope, threat model) |
| [docs/performance/](docs/performance/) | Performans (Octane, query optimization) |
| [docs/monitoring/](docs/monitoring/) | Prometheus + Grafana entegrasyonu |
| [docs/plugin-sdk/](docs/plugin-sdk/) | Plugin SDK (marketplace için 3. taraf eklentiler) |
| [docs/grafana/](docs/grafana/) | Hazır 3 dashboard JSON (overview, cluster, customer-experience) |
| [docs/prometheus/](docs/prometheus/) | Prometheus config + alert rules |

---

## 🏗️ Proje Durumu (2026-05-13)

| Phase | Durum |
|---|---|
| **Phase 0** Sysadmin Curriculum | ⏳ Kullanıcı eylemi (4 ay AlmaLinux 9 hands-on) |
| **Phase 1** Yalın MVP | ✅ Kod tamam — 18 epic |
| **Phase 1.5** Plan recovery (ertelenen özellikler) | ✅ Kod tamam |
| **Phase 2** Mail + Reseller + cPanel migration + e-Fatura | ✅ Kod tamam |
| **Phase 3** REST API + Multi-server + Monitoring + HA + Mobile PWA | ✅ Kod tamam |
| **Phase 4** AI + Mobile + Marketplace + E2E tests + Ansible + Security | ✅ Kod tamam |
| **Phase 5** Beta launch polish — email templates + status page + KB + tour + license + i18n | ✅ Kod tamam |
| **Hetzner deployment test** | ⏳ Henüz hiç çalıştırılmadı |
| **TPMK marka kaydı** | ⏳ Kullanıcı eylemi |
| **KVKK avukat onayı** | ⏳ Kullanıcı eylemi (docs/kvkk şablonları hazır) |
| **Composer Sanctum kurulumu** | ⏳ `composer require laravel/sanctum` (31 test bunu bekliyor) |

---

## 🔐 Güvenlik

- **Bug bounty:** `security@onox.com.tr` (RFC 9116 [security.txt](public/.well-known/security.txt))
- **2FA:** Admin için zorunlu, customer için opsiyonel (TOTP + 10 recovery code)
- **CSRF:** Tüm form'larda Laravel default
- **CSP:** Strict (`script-src 'self'`)
- **HSTS:** max-age=63072000 + includeSubDomains
- **Rate limit:** login 5/15dk, API 120/dk, password-reset 3/saat
- **fail2ban:** sshd + panel-login + pure-ftpd
- **Audit log:** Tüm destructive action için before/after JSON
- **Sysapi whitelist:** Sadece `/usr/local/onoxsoft/bin/onx-*` script'leri root yetkisiyle çalışabilir
- **Detaylı incident response:** [docs/security/incident-response.md](docs/security/incident-response.md)

---

## 🇹🇷 Türkiye Pazarı

- **Pazar:** Türkiye hosting yıllık ~₺3.2-4.8 milyar (cPanel %70, Plesk %20)
- **Farklılaştırıcılar:**
  - 🟢 **Türkçe SLA destek** (cPanel'in zayıf yönü)
  - 🟢 **e-Fatura/e-Arşiv** entegrasyonu (Paraşüt/Foriba, Phase 2)
  - 🟢 **.com.tr otomasyonu** (Natro/İsimTescil reseller API, Phase 2)
  - 🟢 **KVKK uyumu** (aydınlatma, 72-saat runbook, VERBİS hazır)
- **Pricing (USD bazlı, TL'ye anlık dönüşüm):**
  - Lite: 30 hesap / $7/ay
  - Pro: 100 hesap / $15/ay
  - Unlimited: ∞ / $25/ay
  - Enterprise: ∞ + multi-server white-label / $79/ay
- **Beta program (Phase 1 GA - 6 ay):** 12 ay ücretsiz + Founding Member rozeti

---

## 📋 Yapılacaklar (Production Öncesi)

### Kullanıcı Eylemleri (kod dışı)
- [ ] **TPMK marka araması** ([turkpatent.gov.tr](https://www.turkpatent.gov.tr)) → ONOX/ONOXSOFT çakışma kontrolü
- [ ] **Domain alımı** (onox.com.tr + .com.tr + .net + .tr)
- [ ] **Hetzner Cloud hesabı** + CX22 (€4/ay) sipariş
- [ ] **Limited şirket** kuruluşu (~₺15-25K)
- [ ] **E&O sigortası** poliçesi (Allianz/AXA/Anadolu, ~₺8-25K/yıl)
- [ ] **KVKK avukat retainer** (₺3-5K/ay)
- [ ] **Discord topluluk server** kur
- [ ] **Sander van Vugt RHCSA 9 Cert Guide** sipariş (Phase 0 curriculum)

### Kod Tarafı (tek `composer require` ile çözülür)
- [ ] `composer require laravel/sanctum` → 31 skipped test yeşile döner, API tokens canlı

### İlk Deployment Testi
- [ ] Hetzner CX22 üzerinde `bash install.sh` (tek komut full stack)
- [ ] DNS A kaydı `panel.onox.com.tr → server-ip`
- [ ] SSL otomatik (acme.sh HTTP-01)
- [ ] İlk admin login + 5-dk smoke test

### Phase 0 — Sysadmin Curriculum (4 ay)
Bkz. [lab-notes/](lab-notes/) — haftalık RHCSA pratik, hafta 16 master milestone'da:
- 60 dk altı manuel: account + vhost + FPM + DB + DNS + SSL + SFTP + backup

---

## 🤝 Lisans

Phase 1 GA öncesi: **Commercial closed-source** (önerilen). ionCube obfuscation + lisans server activation.

Geçici geliştirme aşamasında repo private. Beta dönemi: lisans verme şartlarıyla seçili partnerlere.

---

## 📞 İletişim

- **Genel:** info@onox.com.tr
- **Satış:** sales@onox.com.tr
- **Destek:** support@onox.com.tr
- **KVKK başvuruları:** kvkk@onox.com.tr
- **Güvenlik açığı bildirimi:** security@onox.com.tr ([security.txt](public/.well-known/security.txt))
- **Web:** https://onox.com.tr

**Marka:** ONOXSOFT — TPMK marka tescili sürecinde (fallback isimler: HostNova, Yapıt, Paneltum)
