Otomatik yöntem: hesabınızdaki tek bir betik tüm sunucuyu hazırlar (Apache + PHP web yığını, veritabanı, güvenlik araçları, cron). Sonrası — paneli kurmak, SSL çıkarmak ve lisansı girmek. Ubuntu/Debian üzerinde çalışır: yeni bir VPS'te her şeyi sıfırdan yapılandırır, halihazırda yapılandırılmış bir sunucuda ise yalnızca ekleme yapar (“Yapılandırılmış sunucu” profili, adım 01). Aşağıdaki tüm komutlar sırayla; yukarıdan aşağıya doğru ilerleyin. Yeni bir VPS'te her adım sırasıyla uygulanır; sunucu zaten yapılandırılmışsa ya da üzerinde bir hosting paneli varsa, işin bir kısmını betik bilerek size bırakır — bunun tam olarak ne olduğunu çalışmasının sonunda yazar (çıktının çözümlemesi — adım 01).
monitor.example.com — alan adınız; 203.0.113.10 — sunucunun gerçek IP adresi; /var/www/monitor — panel kök dizini (public/, assets/, config.php dosyalarının bulunduğu yer); veritabanı parolasını kendiniz belirleyin.
jail.local), root-crontab, UFW kuralları, Apache yapılandırması. Sunucu halihazırda yapılandırılmışsa (çalışan panel, siteler, e-posta, kendi jail'leriniz) — “Yapılandırılmış sunucu” profilini seçin: yalnızca ekleyici değişiklikler yapar ve güvenlik duvarınıza, Fail2ban'a, e-postaya, SSH'ye ve sysctl'ye dokunmaz. Bir hosting paneli tespit edildiğinde betik bu moda kendisi geçer. İlk çalıştırmadan önce kuru çalıştırmayı etkinleştirebilirsiniz (hesaptaki onay kutusu) — hiçbir şeyi değiştirmeden ne yapılacağını gösterir. Çalışan bir sunucuda her ihtimale karşı bir anlık görüntü (snapshot) alın.
my.arciveo.com → “Sunucu kurulumu” bölümü (Arcivéo Security Monitor edinildikten sonra kullanılabilir). Komut hesabınıza bağlıdır ve kişisel bir token içerir.
Betik tüm sunucuyu hazırlar: web yığını (Apache + PHP), veritabanı, SSL araçları, tam koruma araçları seti ve cron görevleri (Lynis, SMART, debsums, Logwatch, günlük rapor, ipsum güncellemesi).
1) Koruma seviyesini seçin (komutu kopyalamadan önce, hesapta):
2) Sunucuda root olarak hesaptaki komutu çalıştırın — şöyle görünür:
3) Sonundaki çıktıyı okuyun — orada size ne kaldığı yazar. Betik, çalışmasını bir denetim bloğuyla ve “Sırada — panel kurulumu” listesiyle bitirir. Bazı adımları bilerek yapmaz: bunun tam olarak ne olduğu, seçtiğiniz profile ve sunucuda ne bulduğuna bağlıdır. Aşağıdaki listeyle karşılaştırın — yalnızca satırları sizin çıktınızda görünen maddeleri uygulamanız gerekir.
Control panel detected (…) — site, hosting panelinin kendi araçlarıyla oluşturulur, vhost'u betik yapmaz. Adım 03, “Hosting panelli sunucu” dalı.No vhost created (no domain given) — alan adı verilmemiş “Yapılandırılmış sunucu” profili: adsız bir vhost varsayılan site hâline gelir ve kendi sitelerinizi yakalardı, bu yüzden oluşturulmadı. Adım 03, “Vhost'u elle oluşturma” dalı.sudo rules NOT written — betik, panelin hangi hesap altında çalıştığını belirleyemedi. Bu olağan bir durumdur: panel dosyaları otomatik kurulumdan sonra yüklenir, dolayısıyla belirlenecek bir şey henüz yoktu. Bu kurallar olmadan modüller sistem verilerini göremez. Adım 04, “Web sunucusu için sudo” bloğu.! Nginx does not read .htaccess — Apache'nin önünde Nginx var ve yasağı yapılandırmasına otomatik yazmak mümkün olmadı. Bunu mutlaka yapın: aksi hâlde data/, keys/, database/ ve config.php, .htaccess baypas edilerek dışarıya verilir. Adım 03, “Apache'nin önünde Nginx varsa” bloğu.UFW installed but inactive — güvenlik duvarı kurulu ama kapalı: yapılandırılmış bir sunucuda betik erişiminizi kesmemek için onu kendisi açmaz. Kendi SSH portunuza mutlaka izin vererek onu kendiniz açın:
Fail2ban installed but not running — başlatın: sudo systemctl enable --now fail2ban.Database server present … but not running — veritabanı sunucusunu adım 04'ten önce başlatın: sudo systemctl enable --now mariadb (ya da kurulu olana göre mysql).Certbot skipped — issue SSL in … — sertifika, hosting panelindeki Let's Encrypt anahtarıyla verilir; adım 06 size gerekmez.All checks passed olur. ! işaretli maddeler dikkat gerektirir; ayrıntılar günlüğe yazılır, yolunu betik en sonda yazdırır (Log: …).
Paneli monitor.example.com gibi bir adresten açmak ve ücretsiz SSL almak için alan adının sunucuya işaret etmesi gerekir. DNS yönetim panelinde (kayıt firmanızda veya barındırma sağlayıcınızda) bir A kaydı oluşturun:
Birkaç dakika sonra (bazen bir saate kadar) alan adının sunucuya işaret ettiğini doğrulayın:
/var/www/monitor zaten oluşturdu ve Apache sitesini yapılandırdı (DocumentRoot panel köküne, PHP-FPM, .htaccess için AllowOverride). Betiğin çıktısında bu, vhost … → DocumentRoot … satırıdır. Dizini ve vhost'u ayrıca oluşturmanıza gerek yok — sadece dosyaları yükleyin ve izinleri ayarlayın.
“Hosting panelli sunucu” dalı (çıktıda: Control panel detected (…)). Böyle bir sunucudaki siteleri panel yönetir ve betik kendi vhost'unu bilerek oluşturmaz — panel yapılandırmaları ilk kez yeniden ürettiğinde üzerine yazılırdı. Sıra şöyledir:
public_html dizinine yükleyin: index.php, api/, assets/ ile birlikte servis klasörleri config.php, includes/, data/, tmp/, logs/, keys/, cron/, database/ de orada bulunmalıdır. Web kökünün üstüne hiçbir şey taşımaya gerek yok: servis klasörleri dağıtımdaki .htaccess dosyasıyla, Nginx altında ise betiğin alan adı yapılandırmasına yazdığı yasakla kapatılmıştır.config.php (adım 05). Komutlardaki yolları /home/hesap/web/alanadi/public_html ile, sahibi ise www-data yerine bu alan adının kullanıcısıyla değiştirin.“Vhost'u elle oluşturma” dalı (çıktıda: No vhost created (no domain given)). Bu yalnızca “Yapılandırılmış sunucu” profilinde, alan adı iletilmediğinde olur. En kolayı — hesaptaki komutu alan adını belirterek yeniden çalıştırmaktır:
Yeniden çalıştırmak güvenlidir: zaten yapılmış olanlar tekrarlanmaz. Vhost'u yine de elle oluşturmanız gerekiyorsa — kurulumun yazdığı yapılandırmanın aynısı şudur:
ServerName zorunludur. Adsız bir vhost, Apache'nin varsayılan sitesi hâline gelir ve aynı sunucudaki başka alan adlarına yanıt vermeye başlar. Aynı nedenle yapılandırılmış bir sunucuda 000-default.conf dosyasını devre dışı bırakmayın: bu site birinin çalışan sitesine dönüştürülmüş olabilir — yeni bir VPS'te kurulum onu kendisi kaldırır, burada bunu yapmaya gerek yoktur.
! Nginx does not read .htaccess). Nginx statik dosyaları doğrudan diskten verir ve .htaccess okumaz — Apache onları doğru şekilde kapatsa bile servis klasörleri dışarıya açık kalır. Betik yasakları içeren dosyayı önceden hazırladı; bunu sitenizin server{} bloğunda dahil etmeniz ve Nginx'i yeniden yüklemeniz gerekir:
my.arciveo.com hesabınızdan → “İndirmeler” indirilir. Sunucuya yüklemeden önce arşivi çıkarın.
Dağıtım içeriğini /var/www/monitor dizinine yükleyin (böylece içinde public/, assets/, config.php vb. bulunur) — SFTP/SCP (FileZilla / WinSCP) ile ya da yerel bilgisayardan scp komutuyla:
ServerName) hemen yazılması için, 01. adımda otomatik kurulum komutuna iletilir: … | sudo bash -s -- monitor.example.com (ya da hesabınızdaki “Panel alan adı” alanında belirtilir). Alan adı iletilmezse — panel herhangi bir hosta ve IP üzerinden yanıt verir, ServerName ise SSL verilirken (06. adım) certbot tarafından yazılır; hiçbir şeyi yeniden kurmanıza gerek yok.
root ile ya da SFTP üzerinden yüklediyseniz, dosyalar root sahipliğindedir ve web sunucusu (www-data) onları okuyamaz — panel boş açılır ya da 403 hatası verir (günlükte: .htaccess unreadable / directory not executable). Aşağıdaki komut bunu düzeltir:
SFTP ile dosya yüklemeyi kendinize açın. Yukarıdaki komuttan sonra tüm dosyalar www-data sahipliğindedir, oysa FileZilla / WinSCP kendi kullanıcınızla bağlanır — yükleme o zaman SSH_FX_PERMISSION_DENIED (Permission denied) hatasıyla başarısız olur. İki seçenekten birini tercih edin.
Seçenek A — yalnızca kendi kullanıcınız için ACL (önerilir). Yazma iznini yalnızca siz alırsınız; web sunucusu panel kodunun üzerine hâlâ yazamaz:
Seçenek B — www-data grubu üzerinden. Daha basit, ama panel dosyalarına yazma iznini web sunucusu da alır: PHP'de bir açık olması durumunda kod değiştirilebilir. Komutların sırası önemlidir — config.php ve çalışma klasörleri en sona kapatılır:
id deploy — grup listesinde www-data görünmelidir; ls -ld /var/www/monitor — izinler drwxrwsr-x, x yerine gelen s harfi setgid'in ayarlandığı anlamına gelir.
Bir veritabanı ve kullanıcı oluşturun, ardından şemayı içe aktarın. Veritabanı bloğu terminale tümüyle yapıştırılır (sudo mysql unix soketiyle root olarak girer — root parolası gerekmez). monitor_db ve monitor_user örnek adlardır, istediğinizi belirleyebilirsiniz; veritabanı adını, kullanıcıyı ve parolayı aklınızda tutun — bir sonraki adımda bunları config.php dosyasına yazacaksınız:
admin hesabını tarayıcıya ilk girişte kendisi oluşturur (database/db.sql içinden).
Tablolar oluşmadıysa (panel veritabanı bağlantı hatası gösteriyorsa ya da giriş formu yerine boş bir ekran çıkıyorsa) — şemayı elle içe aktarın. Komut panelin kök dizininde çalıştırılır, değerler yukarıdaki bloktan alınır:
$DBNAME / $DBUSER / $DBPASS değişkenleri artık “unutulduysa” (yeni bir terminal oturumu) — değerleri komuta elle yazın ya da yukarıdaki bloktaki aynı üç satırla yeniden tanımlayın.
sudo rules NOT written satırı varsa — panel hesabını belirleyecek bir şey yoktu (dosyalar henüz yüklenmemişti) ve kurallar oluşturulmadı. Onlar olmadan güvenlik duvarı, Fail2ban ve CrowdSec gibi bölümler boş kalır. Dosyalar yerine geldiğine göre, hesabı açıkça belirterek hesaptaki komutu bir kez daha çalıştırın:
www-data yerine sitenizin PHP'sinin çalıştığı kullanıcıyı yazın (hosting panelinde bu genellikle alan adının sahibidir). Onu şöyle görebilirsiniz:
/etc/sudoers.d/monitor dosyası mevcut ve içinde sizin kullanıcınızla satırlar var.
Panel kök dizinindeki config.php (/var/www/monitor/config.php), elle düzenlemeniz gereken tek dosyadır. Tüm panel ayarları burada define() sabitleriyle tanımlanmıştır. Dosyayı bir düzenleyicide açın:
Vurgulanan yerlere kendi değerlerinizi yazın; geri kalanı olduğu gibi bırakın:
Neyi değiştirmeli:
DB_NAME, DB_USER, DB_PASS — adım 04'te veritabanını oluştururken belirlediğiniz veritabanı adı, kullanıcı ve parolanın tam aynısı (örnekleri bıraktıysanız — monitor_db / monitor_user). DB_HOST ve DB_CHARSET değerlerine dokunmayın.APP_URL — https:// ile panelin tam adresi, sonunda eğik çizgi olmadan ve www olmadan. Lisansı etkinleştirdiğiniz alan adıyla (adım 07) aynı olmalı, aksi halde anahtar reddedilir.TIMEZONE — saat diliminiz (liste — timedatectl list-timezones). Yalnızca panelin tarihleri nasıl gösterdiğini etkiler; cron görevlerinin çalışma zamanını etkilemez (orada sistemin dilimi geçerlidir).SESSION_LIFETIME — kaç saniye hareketsizlikten sonra panelin yeniden giriş isteyeceği (varsayılan 8 saat). Örn. 3600 = 1 saat, 86400 = bir gün.display_errors, log_errors, error_log) — varsayılan olarak bırakın.Dosyayı kaydedin (Ctrl+O, Enter, sonra Ctrl+X) ve PHP-FPM'i yeniden başlatın — aksi halde OPcache nedeniyle değişiklikler uygulanmaz:
640 izinleri (adım 03'te ayarlandı) ve kök .htaccess içinde açık bir yasak. Bunu herkese açık depolara koymayın ve gerçek parolayla desteğe göndermeyin.
http:// üzerinden giriş yapamazsınız.
Certbot skipped — issue SSL in …). Sertifika, panelin kendisindeki web alan adında Let's Encrypt anahtarıyla verilir — böylece yenilenmesiyle de panel ilgilenir.
certbot ve Apache eklentisi otomatik kurulumla zaten yüklendi. Alan adının DNS kaydı sunucuyu göstermelidir (adım 02). Tek komutla oluşturma:
Panelin ayrıca www. ile de açılması gerekiyorsa — her iki adı tek komutta listeleyin, aksi halde ikinci adreste tarayıcı sertifika uyarısı gösterir:
Y.<VirtualHost *:443> girer, http→https yönlendirmesini ve otomatik yenilemeyi ayarlar. Sonunda — Successfully enabled HTTPS.
dig +short monitor.example.com komutunun sunucunun IP adresini döndürdüğünü ve 80/443 portlarının açık olduğunu kontrol edin (sudo ufw allow 80,443/tcp).
Oluşturmadan sonra: https://monitor.example.com kilit simgesiyle açılır, http:// ise https:// adresine yönlendirir.
https://monitor.example.com adresini açın, admin / useradmin ile giriş yapın ve şu kontrol listesini uygulayın:
ARCIVEO-… etkinleştirme kodunu kendi alan adınızda etkinleştirin ve anahtarı “Ayarlar” → “Lisans” bölümüne yapıştırın. Ayrıntılar.public/start_db.php, hâlâ duruyorsa: bu dosya yetkilendirme olmadan veritabanını yeniden oluşturmaya izin verir. Dosya panelin kök dizininde veya public/ içinde durduğu sürece, panel kırmızı bir bannerla bu konuda uyarır.sudo /usr/local/bin/clamav-scan.sh) diski ve işlemciyi ciddi şekilde yükler ve bir saat veya daha uzun sürebilir — çalışan bir sunucuda 01:30'daki gece çalıştırmasını beklemek daha iyidir. “Diskler (SMART)”, “Performans” ve “Güvenlik güncellemeleri” bölümleri kendiliğinden dolar: sırasıyla her 30 dakikada, 5 dakikada ve saatte bir.