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. 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).

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 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):

  • 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.

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:
    sudo ufw allow OpenSSH # standart dışı SSH portu: sudo ufw allow 2222/tcp sudo ufw allow 80,443/tcp sudo ufw enable
  • 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.
Denetim bloğunda her şey yolundaysa son satır 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: …).

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

Olağan durum (yeni VPS). 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). 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.
Vhost'un oluşturulMADIĞI iki durum — betik bunu çalışmasının sonunda açıkça bildirir. O zaman önce aşağıdaki uygun dalı uygulayın, dosyaları ancak ondan sonra yükleyin.

“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:

  1. Hosting panelinde (HestiaCP vb.) bir web alan adı oluşturun — panelin DocumentRoot değeri olduğu gibi kalır.
  2. Dağıtımı tümüyle bu alan adının 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.
  3. SSL, panelin kendisindeki Let's Encrypt anahtarıyla verilir — adım 06'yı atlayın.
  4. Sonrası — izinler (bu adımda aşağıda), veritabanı (adım 04) ve 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:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo bash -s -- monitor.example.com

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:

sudo mkdir -p /var/www/monitor # PHP-FPM soketini otomatik belirliyoruz — sunucularda PHP sürümü farklı olabilir. PHPSOCK=$(ls -1 /run/php/php*-fpm.sock 2>/dev/null | head -1) sudo tee /etc/apache2/sites-available/arciveo-monitor.conf > /dev/null <<'EOF' <VirtualHost *:80> ServerName monitor.example.com DocumentRoot /var/www/monitor <Directory /var/www/monitor> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> <FilesMatch "\.php$"> SetHandler "proxy:unix:__PHPSOCK__|fcgi://localhost" </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/arciveo-monitor_error.log CustomLog ${APACHE_LOG_DIR}/arciveo-monitor_requests.log combined </VirtualHost> EOF sudo sed -i "s#__PHPSOCK__#${PHPSOCK}#" /etc/apache2/sites-available/arciveo-monitor.conf sudo a2ensite arciveo-monitor.conf sudo apache2ctl configtest sudo systemctl reload apache2
Buradaki 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.
Apache'nin önünde Nginx varsa (çıktıda: ! 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:
include /etc/nginx/snippets/arciveo-deny.conf;
sudo nginx -t && sudo systemctl reload nginx # Doğrulama: dosya içeriği değil, 403 dönmelidir curl -sI https://monitor.example.com/config.php | head -1
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ı. Veritabanı adı, kullanıcı ve parola aşağıda BİR kez 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. DBNAME='monitor_db' # ← veritabanı adı, aynı kalabilir DBUSER='monitor_user' # ← veritabanı kullanıcısı, aynı kalabilir DBPASS='CHOOSE_A_PASSWORD' # ← parola, kendi parolanızı yazın sudo mysql <<SQL CREATE DATABASE IF NOT EXISTS $DBNAME CHARACTER SET utf8mb4; CREATE USER IF NOT EXISTS '$DBUSER'@'localhost' IDENTIFIED BY '$DBPASS'; GRANT ALL ON $DBNAME.* TO '$DBUSER'@'localhost'; FLUSH PRIVILEGES; SQL # Doğrulama ($DBNAME görünmeli): mysql -u "$DBUSER" -p"$DBPASS" -e "SHOW DATABASES;" # Aynı üç değeri config.php → DB_NAME, DB_USER, DB_PASS içine yazın.
Genellikle şemayı içe aktarmaya gerek yoktur — panel, veritabanı boşsa tabloları ve 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:

# Şemanın içe aktarılması: cd /var/www/monitor && mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" < database/db.sql # Doğrulama — tablo listesi görünmelidir: mysql -u "$DBUSER" -p"$DBPASS" "$DBNAME" -e "SHOW TABLES;"
$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.
Web sunucusu için sudo. Kurallar genellikle otomatik kurulum tarafından zaten yazılmıştır ve modüller sistem verilerini hemen görür. Ancak betiğin çıktısında 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:
curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN&profile=existing" | sudo ARCIVEO_USER=www-data bash -s -- monitor.example.com
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:
ps -o user= -C php-fpm8.3 | sort -u # sürümü kendinize göre değiştirin # veya: ps aux | grep -m3 '[p]hp-fpm'
Yeniden çalıştırmadan sonraki doğrulama: /etc/sudoers.d/monitor dosyası mevcut ve içinde sizin kullanıcınızla satırlar var.

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_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.
  • 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.
Hosting panelli bir sunucuda bu adıma gerek yoktur (betiğin çıktısında: 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:

sudo certbot --apache -d monitor.example.com

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:

sudo certbot --apache -d monitor.example.com -d www.monitor.example.com
İkinci adı yalnızca onun için de bu sunucuyu gösteren bir A kaydı varsa ekleyin (adım 02). Aksi halde Let's Encrypt onu doğrulayamaz ve sertifikayı tümüyle vermez — ana alan adı dâhil.
certbot ne soracak:
  1. Enter email address — e-posta adresiniz (sertifika sona erme bildirimleri buraya gelir).
  2. Terms of Service … (Y)es/(N)o — Y.
  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.
  7. İlk denetimleri elle çalıştırın — aksi halde bazı bölümler geceye kadar boş kalır (aşağıdaki bloğa bakın).
“Lynis denetimi” ve “Logwatch” neden hemen boş. Otomatik kurulum araçları kurdu ve cron görevlerini oluşturdu, ancak denetimlerin kendisini çalıştırmadı — bunlar zamanlamaya göre yapılacak: Lynis 03:00'te, Logwatch 06:00'da, debsums 04:30'da, ClamAV 01:30'da. O ana kadar bölümler dürüstçe henüz rapor olmadığını gösterir. Bir gün beklememek için onları bir kez elle çalıştırın:
# Lynis denetimi — ilk rapor (birkaç dakika): sudo /usr/local/bin/lynis-scan.sh # Bir günlük Logwatch raporu: sudo /usr/local/bin/logwatch_daily.sh # Paket bütünlüğü (debsums) — büyük bir sunucuda uzun sürer: sudo /usr/local/bin/debsums-scan.sh
Lynis'i doğrudan panelden de çalıştırabilirsiniz — “Lynis denetimi” sayfasındaki “Denetimi başlat” düğmesi: aynı betiği arka planda çalıştırır ve raporu kendisi günceller. Sonrası zamanlamaya göre ilerler, artık elle çalıştırmaya gerek yoktur.
İlk antivirüs taraması (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.
Hazır. Her araca ilişkin başvuru kılavuzu — FAQ içinde.
Bu sunucuda kendi alan adına sahip bir site daha barındırmanız gerekiyorsa SSS'ye bakın: “Bu sunucuda ikinci bir site (bir alan adı daha)”.