İlk sanal sunucunuzu aldınız, SSH ile bağlandınız ve karşınızda yalnızca bir komut istemi var. Amacınız birkaç WordPress sitesi yayınlamak, ama Nginx yapılandırmasını elle yazmak, PHP-FPM havuzlarını ayarlamak ve her alan adı için Certbot çalıştırmak istemiyorsunuz. cPanel lisansının aylık maliyeti ise tek bir kişisel projeye göre yüksek geliyor.
aaPanel tam olarak bu boşluğu doldurur: tarayıcıdan yönetilen, ücretsiz, tek komutla kurulan bir hosting kontrol panelidir. Web sunucusunu, veritabanını, PHP sürümlerini, SSL sertifikalarını, FTP hesaplarını ve zamanlanmış görevleri arayüzden yönetmenizi sağlar. İnternette bu kurulumu anlatan onlarca yazı var, ancak neredeyse hepsi tek bir wget komutunda bitiyor ve asıl kritik kısım, yani kurulumdan sonraki ilk on dakika, atlanıyor.
Bu rehberde kurulum komutunu da vereceğiz, ama ağırlığı sonrasına koyacağız: varsayılan portu ve güvenlik giriş yolunu neden hemen değiştirmeniz gerektiği, güvenlik duvarını kendinizi dışarıda bırakmadan nasıl kuracağınız, LNMP ile LAMP arasındaki seçimin sonuçları, ilk sitenin ve ücretsiz SSL'in doğru sırayla kurulması, gerçek bir yedekleme planı ve en önemlisi aaPanel'in nerede yetmeyeceği. Panel seçimi geri dönüşü zahmetli bir karardır; sınırları baştan bilmek sonradan taşınmaktan iyidir.
aaPanel Nedir ve cPanel'den Hangi Noktalarda Ayrılır?#
aaPanel, Linux sunucular için Python ile yazılmış açık erişimli bir kontrol panelidir. Kurulum betiği web sunucusunu, veritabanını ve PHP'yi kendi dizin yapısı altına (/www/) kurar; sistem paket yöneticisinden bağımsız, kendi kendine yeten bir yığın oluşturur. Bu yaklaşım kurulumu kolaylaştırır ama sistemin geri kalanıyla ilişkisini de değiştirir; birazdan buna döneceğiz.
Aradaki farkları görmek için doğrudan karşılaştıralım:
| Konu | aaPanel | cPanel / WHM |
|---|---|---|
| Lisans | Ücretsiz, bazı eklentiler ücretli | Aylık ücretli, hesap sayısına göre |
| Kullanıcı izolasyonu | Siteler ortak sistem kullanıcısı altında çalışır | Her hesap kendi Unix kullanıcısıyla ayrılır |
| Bayi (reseller) katmanı | Yok | WHM ile tam bayi yönetimi |
| E-posta sunucusu | Eklenti, temel düzeyde | Exim, Dovecot, spam filtresi dahil tam yığın |
| Web sunucusu seçimi | Nginx, Apache, OpenLiteSpeed | Apache tabanlı, LiteSpeed opsiyonel |
| Yedekleme | Yerel ve bulut hedefleri, kısmı eklentili | Olgun, hesap bazlı yedek/geri yükleme |
| Faturalandırma entegrasyonu | Üçüncü taraf modüllerle sınırlı | Sektör standardı, hazır modüller |
Buradaki en önemli satır kullanıcı izolasyonudur ve genellikle en son fark edilir. cPanel'de her hesap ayrı bir sistem kullanıcısına aittir; bir müşterinin sitesi ele geçirilirse saldırgan diğer hesapların dosyalarını okuyamaz. aaPanel'in varsayılan kurulumunda tüm siteler aynı web kullanıcısı altında çalışır. Kendi projeleriniz için bu tamamen kabul edilebilirdir. Müşterilerinize hosting satıyorsanız kabul edilemez. Bu ayrımı baştan yapın.
Panel dünyasına genel bir bakış istiyorsanız cPanel nedir ve cPanel ile Plesk karşılaştırması yazıları iyi bir zemin sunar; benzer felsefedeki bir başka ücretsiz seçenek için CyberPanel kurulumu yazısına bakabilirsiniz.
Kurulumdan Önce: Temiz Sistem, Doğru Kaynak#
aaPanel kurulum betiği temiz bir sistem bekler. Sunucuda daha önce elle kurulmuş Nginx, Apache veya MySQL varsa kurulum ya yarıda kalır ya da mevcut yapılandırmanızı ezer. Aynı şekilde başka bir kontrol paneli (CyberPanel, Webmin, Plesk) kuruluysa iki panel aynı portlar ve servisler üzerinde kavga eder.
Kurulum öncesi kontrol listesi:
- İşletim sistemi: Ubuntu 22.04/24.04 LTS veya Debian 12 önerilir. Sonradan bulacağınız çözümlerin çoğu bu dağıtımlar için yazılmıştır.
- Kaynak: Panel ve LNMP yığını için asgari 1 GB RAM çalışır ama sıkışıktır; WordPress ve veritabanı düşünüldüğünde 2 GB'dan başlamak gerçekçidir. Disk için 20 GB alt sınırdır.
- Temiz kurulum: Sunucuyu sıfırdan kurmuş olun. Şüpheniz varsa sağlayıcı panelinden yeniden kurulum yapmak, çakışmayı sonradan çözmeye çalışmaktan hızlıdır.
- Root erişimi: Betik root ile çalışır.
- Alan adı: DNS A kaydı sunucunuzun IP adresine yönlendirilmiş olsun. SSL adımında hazır olmasını isteyeceksiniz.
Sistemi güncelleyip zaman dilimini ayarlayarak başlayın:
sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone Europe/Istanbul
sudo apt install -y wget curl
Sunucu saatinin doğru olması göründüğünden önemlidir; SSL sertifikası doğrulaması ve zamanlanmış görevler saate bağlıdır. Yeni bir sunucuyu devralırken yapılacakların tam listesi için VDS satın alma sonrası ilk adımlar yazısına göz atın.
aaPanel Kurulum Komutu ve Çıktının Okunması#
Betiği doğrudan boruya vererek çalıştırmak yerine indirip çalıştırmayı tercih edin; böylece içeriğini görme şansınız olur.
cd /root
wget -O install.sh https://www.aapanel.com/script/install_7.0_en.sh
less install.sh # ne yaptığına bakmak isterseniz
sudo bash install.sh aapanel
Betik onay isteyecek, ardından bağımlılıkları derleyip kuracaktır. Sunucunun gücüne bağlı olarak 5 ile 20 dakika arasında sürer; bu sırada SSH oturumunun kopmaması için screen veya tmux kullanmanız iyi olur:
sudo apt install -y tmux
tmux new -s aapanel
Kurulum bittiğinde ekrana şu bilgiler basılır ve bu ekranı kaçırırsanız işiniz zorlaşır:
- Panel adresi (
http://SUNUCU_IP:PORT/RASTGELE_YOL) - Kullanıcı adı
- Parola
Yeni sürümler artık sabit 8888 portu ve tahmin edilebilir bir giriş yolu yerine rastgele bir port ve rastgele bir güvenlik giriş yolu üretir. Bu iyi bir gelişmedir: portu tarayan biri panelin varlığını görse bile giriş yolunu bilmeden giriş ekranına ulaşamaz.
Bilgileri kaçırdıysanız panik yapmayın, sunucuda her zaman geri okunabilir:
sudo bt default
Panelin servis durumunu ve otomatik başlatma ayarını da kontrol edin:
sudo systemctl status bt
sudo systemctl enable bt
İlk On Dakika: Port, Giriş Yolu ve Parola#
Panel arayüzüne ilk girişte sizi eklenti kurulum sihirbazı karşılar. Onu bir kenara bırakın; önce güvenlik ayarlarını yapın. aaPanel'in tüm yönetim işlemleri komut satırından da yapılabilir:
sudo bt
Bu komut numaralı bir menü açar. Menü başlıkları sürümden sürüme yer değiştirebildiği için numarayı ezberlemeyin, ekrandaki metni okuyun. İhtiyacınız olacak başlıklar şunlardır:
| Menü başlığı | Ne işe yarar |
|---|---|
| Change panel password | Panel parolasını sıfırlar |
| Change panel username | Kullanıcı adını değiştirir |
| Change panel port | Panelin dinlediği portu değiştirir |
| Cancel entrance limit | Güvenlik giriş yolu zorunluluğunu kaldırır |
| Cancel IP access limit | IP kısıtını kaldırır (kilitlenirseniz) |
| View panel default info | Adres, kullanıcı adı ve giriş yolunu gösterir |
Yapmanız gerekenler, bu sırayla:
- Kullanıcı adını değiştirin. Varsayılan bırakmayın; kaba kuvvet denemelerinin yarısı buradan elenir.
- Parolayı değiştirin. En az 16 karakter, parola yöneticisinden üretilmiş.
- Portu belirleyin. Kurulum rastgele bir port verdiyse dokunmanıza gerek yok.
8888gibi bilinen bir portta kaldıysanız 20000-60000 aralığından bir değer seçin ve not alın. - Güvenlik giriş yolunun açık olduğundan emin olun. Panel ayarlarındaki "Security entrance" alanı boşsa doldurun. Bu yol, panelin adresine eklenen gizli bir sonektir ve doğru yol olmadan giriş ekranı bile gösterilmez.
- İki adımlı doğrulamayı açın. Panel ayarlarında Google Authenticator desteği vardır; yönetim paneli için bu neredeyse zorunludur.
İsteğe bağlı ama çok etkili bir adım daha var: panele yalnızca kendi IP adresinizden erişime izin vermek. Sabit IP'niz varsa panel ayarlarındaki IP kısıtlaması alanını doldurun. Dinamik IP kullanıyorsanız bu ayar sizi dışarıda bırakabilir; o durumda SSH tüneli daha esnek bir çözümdür ve paneli internete hiç açmamanızı sağlar.
Güvenlik Duvarını Kurmak ve Kendinizi Kilitlememek#
Buradaki en yaygın kaza, ufw enable komutunu panel portunu izin listesine eklemeden çalıştırmaktır. Sonuç: panel erişilemez, bazen SSH bile kapanır.
Doğru sıra şudur; önce izinler, sonra etkinleştirme:
sudo ufw allow 22/tcp # SSH portunuzu değiştirdiyseniz onu yazın
sudo ufw allow 80,443/tcp # web trafiği
sudo ufw allow 34567/tcp # panel portunuz (kendi değerinizi yazın)
sudo ufw enable
sudo ufw status numbered
Bir noktayı atlamayın: bulut sağlayıcılarının çoğunda sunucunun dışında ayrı bir güvenlik duvarı katmanı vardır. Sunucu içinde portu açsanız bile sağlayıcı panelinde kapalıysa bağlantı kurulmaz. İki katmanı da kontrol edin. Kural yazımının ayrıntıları için UFW güvenlik duvarı yazısına bakabilirsiniz.
aaPanel'in kendi güvenlik duvarı modülü de sistem güvenlik duvarını yönetir. İkisini aynı anda karıştırmayın: kuralları ya panelden ya komut satırından yönetmeye karar verin, yoksa bir tarafta sildiğiniz kural diğerinde durmaya devam eder ve neyin açık olduğunu artık kimse bilmez.
Son olarak SSH tarafını sıkılaştırın. Parola girişini kapatıp anahtar tabanlı erişime geçmek, panel güvenliğinden bile önce gelir; SSH portunu değiştirme ve Fail2ban kurulumu yazıları bu iki adımı ayrıntılı anlatıyor.
LNMP mi LAMP mı? Yığın ve PHP Sürümü Seçimi#
Panele ilk girdiğinizde kurulum sihirbazı iki seçenek sunar:
- LNMP: Nginx + MySQL/MariaDB + PHP
- LAMP: Apache + MySQL/MariaDB + PHP
Pratik fark şudur: Nginx daha az bellek kullanır ve statik dosyalarda daha hızlıdır, ancak .htaccess dosyalarını okumaz. WordPress eklentilerinin bir kısmı, eski PHP betikleri ve bazı hazır scriptler yeniden yazma kurallarını .htaccess üzerinden dağıtır; Nginx'te bu kuralları sunucu yapılandırmasına elle taşımanız gerekir. Kaynağı kısıtlı bir sunucuda kendi projelerinizi yönetiyorsanız LNMP doğru seçimdir. Devraldığınız, .htaccess ile dolu eski bir sistem varsa LAMP ilk kurulumda başınızı daha az ağrıtır.
Kurulum türü olarak Fast (hazır ikili paket) ile Compile (kaynaktan derleme) arasında da seçim yaparsınız. Hızlı kurulum dakikalar, derleme yarım saati aşabilir; küçük sunucularda derleme sırasında belleğin dolup işlemin öldüğü de olur. Özel bir gereksiniminiz yoksa hızlı kurulumu seçin.
PHP sürümünde ise kural nettir: desteklenen en yeni sürümü seçin, ancak uygulamanızın uyumlu olduğundan emin olun. aaPanel birden çok PHP sürümünü yan yana kurmanıza ve her siteye ayrı sürüm atamanıza izin verir; bu, eski bir projeyi taşırken çok işinize yarar. PHP-FPM havuz ayarlarının bellek üzerindeki etkisini Nginx ve PHP-FPM yapılandırması yazısında ele aldık.
Veritabanı tarafında MariaDB'yi tercih edin ve kurulumdan sonra root parolasını mutlaka değiştirin; MariaDB kurulumu ve güvenliği yazısındaki sıkılaştırma adımları panel kurulumları için de geçerlidir.
İlk Siteyi Yayına Alma: Alan Adı, Veritabanı ve Ücretsiz SSL#
Sıralama önemlidir; SSL adımı DNS'e bağlı olduğu için en sona bırakılır.
1. Alan adını yönlendirin. Alan adınızın A kaydını sunucunun IP adresine yöneltin. Yayılmayı doğrulayın:
dig +short ornekalanadi.com
Çıktı sunucunuzun IP'sini vermiyorsa SSL adımı kesinlikle başarısız olur. Bekleyin.
2. Siteyi ekleyin. Panelde Website → Add site adımında alan adını girin. Aynı ekranda "Create database" ve "Create FTP" kutucukları vardır; veritabanını buradan oluşturmak, sonradan elle yetki vermekten pratiktir. Üretilen kullanıcı adı ve parolayı kaydedin. Site dizini varsayılan olarak /www/wwwroot/ornekalanadi.com altında oluşur.
3. Dosyaları yükleyin. Panelin dosya yöneticisinden yükleyebilir, FTP hesabı kullanabilir ya da doğrudan komut satırından çekebilirsiniz. WordPress gibi popüler uygulamalar için aaPanel'in tek tıkla kurulum bölümü de vardır.
4. SSL sertifikasını alın. Site ayarlarında SSL → Let's Encrypt sekmesine geçin, alan adını ve www alt alan adını işaretleyip başvurun. Doğrulama için:
- 80 portu dışarıya açık olmalıdır (HTTP doğrulaması bu portu kullanır),
- A kaydı bu sunucuyu göstermelidir,
- Cloudflare kullanıyorsanız doğrulama sırasında kaydı geçici olarak proxy dışına almak sorunu büyük ölçüde ortadan kaldırır.
Sertifika geldikten sonra Force HTTPS anahtarını açın. Let's Encrypt sertifikaları 90 gün geçerlidir ve panel yenilemeyi otomatik yapar; yine de ilk yenilemenin gerçekleştiğini bir kez kontrol edin. Sertifika mantığı ve sınırlar hakkında ayrıntı için Let's Encrypt ücretsiz SSL yazısına bakabilirsiniz.
Yedekleme Planı: Panelin İçindeki Yedek Yedek Değildir#
aaPanel, site ve veritabanı yedeklerini varsayılan olarak /www/backup/ altına, yani aynı diske alır. Disk bozulduğunda, sunucu silindiğinde veya fidye yazılımı bulaştığında bu yedekler de gider. Panel içi yedekleme yalnızca "yanlış dosyayı sildim" senaryosunu çözer.
Gerçek bir plan üç şey ister: yedeğin başka bir makinede olması, otomatik alınması ve geri yüklemenin denenmiş olması.
Panel tarafında zamanlanmış görev ekleyin: Cron → Add task ekranından "Backup site" ve "Backup database" görevlerini günlük olarak tanımlayın, saklama sayısını 7 gibi bir değerle sınırlayın (aksi hâlde diski yedekler doldurur). Ardından bu dizini sunucu dışına taşıyın:
# Uzak sunucuya günlük eşitleme
sudo apt install -y rsync
rsync -avz --delete /www/backup/ yedek@uzak-sunucu:/yedekler/aapanel/
Bunu bir zamanlanmış görev hâline getirin:
sudo crontab -e
# Her gece 04:30'da dışarı aktar
30 4 * * * rsync -az --delete /www/backup/ yedek@uzak-sunucu:/yedekler/aapanel/
Veritabanı yedeklerini ayrıca almak isterseniz mysqldump ile veritabanı yedekleme yazısındaki yöntem panel dışında da çalışır. Sürüm geçmişi ve şifreleme istiyorsanız Borg ile sunucu yedekleme daha güçlü bir çözümdür.
Ve en önemlisi: üç ayda bir bir yedeği boş bir sunucuya geri yükleyin. Denenmemiş yedek, yedek değil temennidir.
aaPanel Nerede Yetmez? Dürüst Sınırlar#
Panel seçiminde asıl maliyet lisans değil, yanlış seçimden sonraki taşıma işidir. aaPanel'in sınırlarını baştan bilin:
- Müşteriye hosting satamazsınız. Hesaplar arasında sistem düzeyinde izolasyon yoktur; bir sitenin ele geçirilmesi diğerlerinin dosyalarını riske atar. Bayilik yapacaksanız cPanel/WHM veya DirectAdmin tarafına bakın; karşılaştırma için DirectAdmin ile cPanel yazısı yardımcı olur.
- E-posta tarafı zayıftır. Mail eklentisi temel gönderim/alım yapar ama spam filtresi, kota yönetimi ve teslimat itibarı konularında cPanel'in yığınının gerisindedir. Kurumsal e-posta için ayrı bir çözüm düşünün.
- Faturalandırma entegrasyonu sınırlıdır. Otomatik hesap açma, süre bitiminde askıya alma gibi akışlar için hazır ve olgun modüller yoktur.
- Kendi dizin yapısını kullanır. Her şey
/www/altındadır ve sistem paket yöneticisinden bağımsızdır. Bu, panelin dışına çıkıp elle müdahale ettiğinizde standart dağıtım belgelerinin işinize yaramayacağı anlamına gelir. - Panel dışa açık kalırsa risk büyür. Panel, eklenti ve güncelleme için üretici sunucularıyla haberleşir. Yönetim arayüzünü herkese açık bırakmak yerine IP kısıtı veya SSH tüneli arkasına almak en sağlıklısıdır.
- Bazı özellikler ücretlidir. Gelişmiş güvenlik duvarı ve bazı bulut yedekleme hedefleri ücretli eklenti olarak sunulur; "tamamen ücretsiz" beklentisiyle girmeyin.
Bu maddeler aaPanel'i kötü yapmaz. Kendi projelerini, ajans müşterilerinin sitelerini veya birkaç WordPress kurulumunu tek sunucuda yöneten biri için fazlasıyla yeterlidir. Sınırın nerede olduğunu bilmek yeter.
Sık Karşılaşılan Sorunlar ve Çözümleri#
Belirti: Panel adresi açılmıyor, bağlantı zaman aşımına uğruyor.
Sebep: Panel portu güvenlik duvarında kapalı; genellikle sağlayıcı tarafındaki dış güvenlik duvarı unutulmuştur.
Çözüm: Sunucuda sudo ufw status ile portu doğrulayın, ardından sağlayıcı panelindeki kuralları kontrol edin. Portu hatırlamıyorsanız sudo bt default çıktısına bakın.
Belirti: Panel adresine gidiliyor ama 404 dönüyor.
Sebep: Güvenlik giriş yolu adrese eklenmemiş.
Çözüm: Adresin sonuna giriş yolunu ekleyin. Yolu bilmiyorsanız sudo bt default gösterir; kalıcı olarak kaldırmak isterseniz bt menüsündeki giriş kısıtını iptal eden seçeneği kullanın (güvenlik açısından önerilmez).
Belirti: Let's Encrypt sertifikası alınamıyor, doğrulama başarısız diyor.
Sebep: A kaydı başka bir IP'yi gösteriyor, 80 portu kapalı ya da Cloudflare proxy doğrulamayı engelliyor.
Çözüm: dig +short alanadi.com ile kaydı doğrulayın, 80 portunu açın, doğrulama sırasında proxy'yi geçici olarak devre dışı bırakın.
Belirti: Kurulum "port zaten kullanımda" veya web sunucusu çakışması hatası veriyor. Sebep: Sunucuda daha önce kurulmuş Apache/Nginx ya da başka bir panel var. Çözüm: Temiz kurulum yapın. Mevcut yapılandırmayı temizlemeye çalışmak, işletim sistemini yeniden kurmaktan uzun sürer.
Belirti: Site açılıyor ama beyaz sayfa veya 502 hatası veriyor.
Sebep: Siteye atanmış PHP sürümü uygulamayla uyumsuz ya da PHP-FPM süreci bellek yetersizliğinden düşmüş.
Çözüm: Site ayarlarından PHP sürümünü değiştirin, panelin günlük ekranından hata satırını okuyun ve sunucunun boş belleğini free -h ile kontrol edin.
Sıkça Sorulan Sorular#
aaPanel gerçekten ücretsiz mi, gizli bir maliyeti var mı?#
Panelin kendisi ve temel özellikleri (site ekleme, veritabanı, PHP sürüm yönetimi, Let's Encrypt SSL, dosya yöneticisi, zamanlanmış görevler, yerel yedekleme) ücretsizdir ve site sayısı sınırı yoktur. Gelişmiş güvenlik duvarı ve bazı bulut yedekleme hedefleri gibi eklentiler ücretlidir. Kişisel ve küçük ölçekli kullanım için ücretli bir eklentiye ihtiyaç duymadan çalışabilirsiniz.
aaPanel ile müşterilerime hosting satabilir miyim?#
Teknik olarak siteleri barındırabilirsiniz ama güvenlik açısından önerilmez. cPanel'de her hesap ayrı bir sistem kullanıcısıyla izole edilirken aaPanel'in varsayılan kurulumunda siteler ortak bir kullanıcı altında çalışır. Bir müşterinin sitesi ele geçirildiğinde saldırgan diğer sitelerin dosyalarına ulaşabilir. Bayilik yapacaksanız hesap izolasyonu sunan bir panel seçin.
Panel parolamı unuttum, ne yapmalıyım?#
SSH ile sunucuya bağlanıp sudo bt komutunu çalıştırın ve menüden parola değiştirme seçeneğini seçin. Kullanıcı adını da unuttuysanız aynı menüdeki varsayılan bilgileri gösteren seçenek ya da doğrudan sudo bt default komutu adres, kullanıcı adı ve güvenlik giriş yolunu ekrana basar.
Panel portunu değiştirdim ama artık giremiyorum, neden?#
Neredeyse her zaman güvenlik duvarı kaynaklıdır: yeni port izin listesine eklenmemiştir. Önce sunucu içindeki kuralları kontrol edin, sonra bulut sağlayıcınızın kendi güvenlik duvarı ayarlarına bakın. İki katman da açık olmalıdır. Portu hatırlamıyorsanız SSH üzerinden sudo bt default çıktısı size güncel adresi verir.
aaPanel kurulu bir sunucuda elle Nginx yapılandırması yapabilir miyim?#
Yapabilirsiniz ama dikkatli olmanız gerekir. aaPanel kendi Nginx kurulumunu /www/server/nginx/ altında tutar ve site yapılandırmalarını arayüzden yönettiği için, elle yaptığınız değişiklikler panelden bir ayar kaydettiğinizde üzerine yazılabilir. Kalıcı özel kurallar için panelin site ayarlarındaki yapılandırma alanını kullanmak daha güvenlidir.
Mevcut cPanel hesaplarımı aaPanel'e taşıyabilir miyim?#
Otomatik ve tek tıkla bir aktarım aracı yoktur; cPanel yedek dosyaları aaPanel tarafından doğrudan okunmaz. Taşıma elle yapılır: dosyaları arşivleyip yeni sunucuya kopyalarsınız, veritabanlarını dökümle aktarırsınız, e-posta hesaplarını ve DNS kayıtlarını yeniden oluşturursunuz. Az sayıda site için birkaç saatlik iştir; onlarca hesap söz konusuysa süreç uzar ve planlama gerektirir.