Otomatik kurulum

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.

Komutlardaki yer tutucu değerleri kendi değerlerinizle değiştirin: 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.
Tam paket (“Tam koruma”) yeni bir VPS için tasarlanmıştır. Temiz bir Ubuntu/Debian üzerinde güvenlik sistemini sıfırdan yapılandırır — Fail2ban (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.

01. Hesaptan otomatik kurulum komutu

Komutu hesabınızdan alırsınız: my.arciveo.com“Sunucu kurulumu” bölümü (Arcivéo 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):

  • Tam koruma (önerilir) — UFW (güvenlik duvarı), Fail2ban, CrowdSec + bouncer, ipsum (IP engelleme listesi), Suricata (IDS/IPS), Falco, ModSecurity + OWASP CRS (WAF), PSAD, mod_evasive (anti-DoS), AIDE (dosya bütünlüğü), debsums, ClamAV + maldet (antivirüs), Auditd, AppArmor, Monit, Lynis (denetim), Logwatch, otomatik güvenlik güncellemeleri.
  • Hafif — düşük RAM'li VPS için: ağır bileşenler olmadan temel set.
  • Kurulu sunucu (hosting paneli) — panel (HestiaCP vb.), siteler ve e-posta ile zaten çalışan bir sunucu için: yalnızca ekleyici değişiklikler (araçların ek kurulumu, cron, sudo kuralları), güvenlik duvarı, Fail2ban, e-posta, SSH ve sysctl olduğu gibi kalır. Panelli sunucuda betik bu modu kendi seçer.
Kuru çalıştırma. Hesapta “Kuru çalıştırma” kutusunu işaretleyebilirsiniz — o zaman komut yalnızca betiğin neyi kuracağını ve değiştireceğini gösterir ve hiçbir şeye dokunmadan sonlanır. Zaten kurulu bir sunucuda faydalıdır: önce kuru çalıştırma, sonra kutu işaretsiz gerçek başlatma.

2) Sunucuda root olarak hesaptaki komutu çalıştırın — şöyle görünür:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
Komutu gizli tutun — hesabınıza bağlıdır. Bağlantının geçerlilik süresi sınırlıdır; süresi dolduysa hesapta “Yeni bağlantı al” düğmesine tıklayın.
Otomatik kurulumdan sonra web sunucusu Apache + PHP-FPM olur, güvenlik araçları ve cron görevleri ise zaten kurulu ve kutudan çıktığı gibi çalışır — ek olarak hiçbir şey yapılandırmaya gerek yoktur.

02. Alan adı ve DNS

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:

Tür: A Ad: monitor (alt alan → monitor.example.com) veya @ (kök alan → example.com) Değer: 203.0.113.10 ← sunucunuzun IP adresi TTL: 3600

Birkaç dakika sonra (bazen bir saate kadar) alan adının sunucuya işaret ettiğini doğrulayın:

dig +short monitor.example.com # IP adresinizi döndürmelidir # veya dig yoksa: getent hosts monitor.example.com
SSL sertifikası (adım 06) yalnızca alan adına verilir — bu yüzden sertifika oluşturulmadan önce DNS'in sunucuya işaret etmesi gerekir.

03. Panel dosyalarını yükleyin

Otomatik kurulum panel dizinini /var/www/monitor zaten oluşturdu ve Apache sitesini yapılandırdı (DocumentRoot panel köküne, PHP-FPM, .htaccess için AllowOverride). Dizini ve vhost'u ayrıca oluşturmanıza gerek yok — sadece dosyaları yükleyin ve izinleri ayarlayın.
Panel dosyaları (dağıtım arşivi) satın alma sonrası 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:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
Vhost'a alan adınızın (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.
Dosya izinlerini ayarlayın — bu zorunlu bir adımdır. Dosyaları 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:
# Tüm web kökünün izinlerini normalleştiriyoruz: root tarafından oluşturulan dizin # web sunucusunca (www-data) erişilemezdir — bu olmadan panel boş sayfa ya da 403 döner. cd /var/www/monitor # Çalışma klasörlerini chown'dan ÖNCE oluşturuyoruz — yoksa yeni dizinler root:root kalır # ve chmod 750 ile web sunucusu (www-data) içlerine yazamaz. sudo mkdir -p data/lynis data/logwatch tmp logs sudo chown -R www-data:www-data /var/www/monitor sudo find /var/www/monitor -type d -exec chmod 755 {} \; sudo find /var/www/monitor -type f -exec chmod 644 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 750 data tmp logs

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:

sudo apt install -y acl # Kullanıcınıza panelin tüm dizini için yazma izni: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # Aynı kural varsayılan olarak — sonradan oluşturulacak dosya ve klasörler için: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

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:

sudo usermod -aG www-data deploy # Gruba yazma izni + setgid (2 biti): SFTP ile yüklenen dosyalar www-data # grubunda kalır — aksi hâlde panel onların üzerine yazamaz. sudo find /var/www/monitor -type d -exec chmod 2775 {} \; sudo find /var/www/monitor -type f -exec chmod 664 {} \; sudo chmod 640 /var/www/monitor/config.php sudo chmod 2750 /var/www/monitor/data /var/www/monitor/tmp /var/www/monitor/logs
B seçeneğinden sonra FileZilla'da yeniden bağlanın (Sunucu → Bağlantıyı kes, ardından yeniden giriş yapın) — yeni grup ancak yeni bir oturum açmada geçerli olur, o ana kadar yine izniniz olmaz. Kontrol: 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.

04. Veritabanı

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:

# 1. Veritabanı. Parola BİR kez DBPASS içinde belirlenir ve tüm satırlara yerleştirilir. # Blok terminale TÜMÜYLE yapıştırılır; sudo mysql unix soketiyle root olarak girer # (root parolası gerekmez). Kopyala-yapıştır ile interaktif `sudo mysql -u root -p` # KULLANMAYIN — yapıştırırken SQL satırları parola istemine gider ve kaybolur. DBPASS='CHOOSE_A_PASSWORD' # ← yalnızca bu satırı değiştirin sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS monitor_db CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS 'monitor_user'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON monitor_db.* TO 'monitor_user'@'localhost'; FLUSH PRIVILEGES; SQL # Doğrulama (monitor_db görünmeli): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # Aynı parolayı config.php → DB_PASS içine yazın.
Şemayı içe aktarmaya gerek yok — panel, veritabanı boşsa tabloları ve admin hesabını tarayıcıya ilk girişte kendisi oluşturur (database/db.sql içinden).
Web sunucusu için sudo otomatik kurulum tarafından zaten ayarlandı — modüller sistem verilerini hemen görür. sudo'yu ayrıca yalnızca PHP standart dışı bir kullanıcı altında (www-data değil) çalışıyorsa yapılandırmanız gerekir.

05. config.php yapılandırması

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:

sudo nano /var/www/monitor/config.php

Vurgulanan yerlere kendi değerlerinizi yazın; geri kalanı olduğu gibi bırakın:

// --- Veritabanı (adım 04'ten) --- define('DB_HOST', 'localhost'); // olduğu gibi bırakın define('DB_NAME', 'db_name'); // adım 04'te oluşturduğunuz define('DB_USER', 'user'); // adım 04'te oluşturduğunuz define('DB_PASS', 'db_password'); // adım 04'te belirlediğiniz define('DB_CHARSET', 'utf8mb4'); // olduğu gibi bırakın // --- Uygulama --- define('APP_URL', 'https://monitor.example.com'); // panel adresi, sonunda eğik çizgi olmadan define('TIMEZONE', 'Europe/Istanbul'); // saat diliminiz // --- Oturum süresi --- define('SESSION_LIFETIME', 28800); // yeniden girişe kadar atalet, sn (28800 = 8 sa)

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_URLhttps:// 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.
  • Hata günlükleme bloğu (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:

sudo systemctl restart php*-fpm
config.php — gizli bir dosyadır (içinde veritabanı parolası var). Panelin kök dizininde, yani web kökünde bulunur, ancak korumalıdır: 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.
Tüm parametrelerin ayrıntılı açıklaması SSS'de: “config.php dosyası — tüm panel ayarları”.

06. SSL (HTTPS) sertifikası oluştur

Panel yalnızca HTTPS üzerinden çalışır. Oturum girişi güvenli bir cookie kullanır ve WebAuthn (2FA) standart gereği yalnızca HTTPS üzerinde çalışır. http:// üzerinden giriş yapamazsınız.

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:

sudo certbot --apache -d monitor.example.com
certbot ne soracak:
  1. Enter email address — e-posta adresiniz (sertifika sona erme bildirimleri buraya gelir).
  2. Terms of Service … (Y)es/(N)oY.
  3. Share email with the EFF … (Y)es/(N)o — sizin tercihinize bağlı.
Ardından certbot sertifikayı kendi oluşturur, <VirtualHost *:443> girer, http→https yönlendirmesini ve otomatik yenilemeyi ayarlar. Sonunda — Successfully enabled HTTPS.
Oluşturma başarısız olursa — 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.

07. Giriş ve ilk kurulum

https://monitor.example.com adresini açın, admin / useradmin ile giriş yapın ve şu kontrol listesini uygulayın:

  1. admin parolasını değiştirin — menüdeki “Kullanıcılar” bölümü.
  2. WebAuthn (2FA) etkinleştirin — “WebAuthn Anahtarları” → anahtar/passkey kaydedin (HTTPS gerektirir). Hemen iki tane kaydedin: tek anahtarınızı kaybederseniz onunla giriş yapmanız imkânsız olur. Ayrıntılar.
  3. Erişimi IP ile kısıtlayın — “Ayarlar” → “IP ile erişim kısıtlaması” (etkinleştirmeden önce kendi IP adresinizi girin, aksi halde kendi erişiminizi kaparsınız).
  4. Lisans girin — hesaptaki 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.
  5. Bildirimleri yapılandırın — “Ayarlar” bölümünde Telegram ve/veya E-posta. Ayrıntılar.
  6. Kurulum betiğini silin 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.
Hazır. Güvenlik araçları çalışmaya başladı bile — kontrol paneli hemen durumlarını ve Güvenlik Puanını gösterir. Her araca ilişkin başvuru kılavuzu için FAQ.
Arcivéo - Security Monitor © 2026