خودکار انسٹالیشن

خودکار طریقہ: ذاتی اکاؤنٹ سے ایک اسکرپٹ پورا سرور تیار کر دیتا ہے (ویب اسٹیک Apache + PHP، ڈیٹابیس، سیکیورٹی ٹولز، cron)۔ اس کے بعد — پینل تعینات کریں، SSL جاری کریں اور لائسنس درج کریں۔ یہ Ubuntu/Debian پر چلتا ہے: نئے VPS پر سب کچھ صفر سے سیٹ کرتا ہے، پہلے سے سیٹ سرور پر — صرف اضافی طور پر (پروفائل “سیٹ شدہ سرور”، مرحلہ 01)۔ نیچے دی گئی تمام کمانڈز ترتیب سے ہیں، بس اوپر سے نیچے اسکرول کریں۔

کمانڈز میں پلیس ہولڈر اقدار اپنی اقدار سے بدل دیں: monitor.example.com — آپ کا ڈومین؛ 203.0.113.10 — سرور کا حقیقی IP؛ /var/www/monitor — پینل کا روٹ (جہاں public/، assets/، config.php موجود ہیں)؛ ڈیٹابیس کا پاس ورڈ اپنا بنائیں۔
مکمل سیٹ (“مکمل تحفظ”) نئے VPS کے لیے ہے۔ صاف Ubuntu/Debian پر یہ سیکیورٹی سسٹم صفر سے سیٹ کرتا ہے — Fail2ban (jail.local)، root-crontab، UFW قواعد، Apache کانفیگ۔ اگر سرور پہلے سے سیٹ ہے (کام کرتا پینل، سائٹس، میل، اپنے jail) — تو “سیٹ شدہ سرور” پروفائل منتخب کریں: یہ صرف اضافی تبدیلیاں کرتا ہے اور آپ کے فائروال، Fail2ban، میل، SSH اور sysctl کو نہیں چھیڑتا۔ ہوسٹنگ پینل کا پتہ چلنے پر اسکرپٹ خود اسی موڈ میں چلا جاتا ہے۔ پہلی بار چلانے سے پہلے آپ ڈرائی رن آن کر سکتے ہیں (اکاؤنٹ میں چیک باکس) — یہ بغیر کچھ بدلے دکھاتا ہے کہ کیا کیا جائے گا۔ کام کرتے سرور پر احتیاطاً ایک snapshot بنا لیں۔

01. اکاؤنٹ سے خودکار سیٹ اپ کمانڈ

کمانڈ آپ اپنے ذاتی اکاؤنٹ my.arciveo.com ← سیکشن “سرور سیٹ اپ” سے لیتے ہیں (Arcivéo Monitor کی خریداری کے بعد دستیاب)۔ یہ آپ کے اکاؤنٹ سے منسلک ہے اور ذاتی ٹوکن رکھتی ہے۔

اسکرپٹ پورے سرور کو تیار کرتا ہے: ویب اسٹیک (Apache + PHP)، ڈیٹابیس، SSL کے اوزار، تحفظ کے آلات کا مکمل سیٹ اور cron-جابز (Lynis، SMART، debsums، Logwatch، روزانہ رپورٹ، ipsum اپ ڈیٹ)۔

1) تحفظ کی سطح منتخب کریں (اکاؤنٹ میں، کمانڈ کاپی کرنے سے پہلے):

  • مکمل تحفظ (تجویز کردہ) — UFW (فائر وال)، Fail2ban، CrowdSec + bouncer، ipsum (IP بلاک لسٹ)، Suricata (IDS/IPS)، Falco، ModSecurity + OWASP CRS (WAF)، PSAD، mod_evasive (اینٹی-DoS)، AIDE (فائل انٹیگریٹی)، debsums، ClamAV + maldet (اینٹی وائرس)، Auditd، AppArmor، Monit، Lynis (آڈٹ)، Logwatch، خودکار سیکیورٹی اپ ڈیٹس۔
  • ہلکا — کم RAM والے VPS کے لیے: بھاری اجزا کے بغیر بنیادی سیٹ۔
  • ترتیب شدہ سرور (ہوسٹنگ پینل) — کسی پہلے سے چل رہے پینل والے سرور (HestiaCP وغیرہ)، سائٹس اور میل کے لیے: صرف اضافی تبدیلیاں (اوزار کی اضافی تنصیب، cron، sudo-قواعد)، جبکہ فائر وال، Fail2ban، میل، SSH اور sysctl جوں کے توں رہتے ہیں۔ پینل والے سرور پر اسکرپٹ خود یہ موڈ منتخب کر لیتا ہے۔
خشک آزمائش۔ اکاؤنٹ میں “خشک آزمائش” کا خانہ لگایا جا سکتا ہے — تب کمانڈ صرف دکھائے گی کہ اسکرپٹ کیا انسٹال اور تبدیل کرے گا، اور کچھ چھوئے بغیر مکمل ہو جائے گی۔ پہلے سے ترتیب شدہ سرور پر مفید ہے: پہلے آزمائش، پھر خانہ لگائے بغیر اصل رن۔

2) سرور پر root کے تحت چلائیں اکاؤنٹ سے حاصل کردہ کمانڈ — یہ اس طرح دکھتی ہے:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
کمانڈ کو خفیہ رکھیں — یہ آپ کے اکاؤنٹ سے منسلک ہے۔ لنک کی مدت محدود ہے؛ اگر ختم ہو جائے تو اکاؤنٹ میں “نیا لنک حاصل کریں” دبائیں۔
خودکار سیٹ اپ کے بعد ویب سرور — Apache + PHP-FPM ہوتا ہے، اور سیکیورٹی اوزار اور cron-جابز پہلے سے انسٹال اور “آؤٹ آف دی باکس” چل رہے ہوتے ہیں — کسی اضافی ترتیب کی ضرورت نہیں۔

02. ڈومین اور DNS

پینل کو monitor.example.com جیسے پتے پر کھولنے اور مفت SSL حاصل کرنے کے لیے، ڈومین کا سرور کی طرف اشارہ ہونا ضروری ہے۔ DNS کنٹرول پینل میں (رجسٹرار یا ہوسٹر کے پاس) ایک A-ریکارڈ بنائیں:

قسم: A نام: monitor (سب ڈومین → monitor.example.com) یا @ (ڈومین کی جڑ → example.com) قدر: 203.0.113.10 ← آپ کے سرور کا IP TTL: 3600

چند منٹ بعد (کبھی کبھار ایک گھنٹے تک) جانچیں کہ ڈومین سرور کی طرف اشارہ کر رہا ہے:

dig +short monitor.example.com # آپ کا IP واپس کرنا چاہیے # یا، اگر dig نہ ہو: getent hosts monitor.example.com
SSL سرٹیفکیٹ (مرحلہ 06) صرف ڈومین پر جاری ہوتا ہے — اسی لیے سرٹیفکیٹ کے اجرا سے پہلے DNS کا سرور کی طرف اشارہ ہونا ضروری ہے۔

03. پینل کی فائلیں اپلوڈ کریں

خودکار سیٹ اپ پہلے ہی پینل کی ڈائریکٹری /var/www/monitor بنا چکا ہے اور Apache سائٹ ترتیب دے چکا ہے (DocumentRoot پینل کے روٹ پر، PHP-FPM، .htaccess کے لیے AllowOverride)۔ الگ سے ڈائریکٹری اور vhost بنانے کی ضرورت نہیں — بس فائلیں اپلوڈ کریں اور اجازتیں سیٹ کریں۔
پینل کی فائلیں (ڈسٹری بیوشن آرکائیو) خریداری کے بعد my.arciveo.com اکاؤنٹ میں → “ڈاؤن لوڈز” سے ڈاؤن لوڈ ہوتی ہیں۔ سرور پر اپلوڈ کرنے سے پہلے آرکائیو کھول لیں۔

ڈسٹری بیوشن کا مواد اپلوڈ کریں /var/www/monitor میں (تاکہ اندر public/, assets/, config.php وغیرہ آ جائیں) — SFTP/SCP (FileZilla / WinSCP) کے ذریعے یا مقامی کمپیوٹر سے scp کمانڈ سے:

scp -r ./monitor/* deploy@203.0.113.10:/var/www/monitor/
vhost میں آپ کا ڈومین فوراً درج ہو جائے (ServerName) اس کے لیے اسے خودکار سیٹ اپ کمانڈ میں مرحلہ 01 پر ہی دیا جاتا ہے: … | sudo bash -s -- monitor.example.com (یا اکاؤنٹ میں “پینل ڈومین” فیلڈ میں ڈومین درج کریں)۔ اگر ڈومین نہیں دیا — پینل ہر ہوسٹ اور IP پر جواب دیتا ہے، اور SSL جاری کرتے وقت certbot خود ServerName درج کر دے گا (مرحلہ 06)؛ دوبارہ کچھ انسٹال کرنے کی ضرورت نہیں۔
فائلوں پر اجازتیں سیٹ کریں — یہ لازمی مرحلہ ہے۔ اگر آپ نے root کے تحت یا SFTP کے ذریعے اپلوڈ کیا، تو فائلیں root کی ملکیت ہیں، اور ویب سرور (www-data) انہیں پڑھ نہیں سکے گا — پینل خالی یا 403 خرابی کے ساتھ کھلے گا (لاگ میں: .htaccess unreadable / directory not executable)۔ نیچے دی گئی کمانڈ اسے ٹھیک کر دیتی ہے:
# پورے ویب روٹ کی اجازتیں معمول پر لاتے ہیں: root کی بنائی ڈائریکٹری # ویب سرور (www-data) کے لیے قابلِ رسائی نہیں — اس کے بغیر پینل خالی صفحہ یا 403 دیتا ہے۔ cd /var/www/monitor # کام کی فولڈرز chown سے پہلے بناتے ہیں — ورنہ نئی ڈائریکٹریاں root:root رہیں گی # اور chmod 750 پر ویب سرور (www-data) ان میں لکھ نہیں سکے گا۔ 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 سے فائل اپلوڈ کھولیں۔ اوپر والی کمانڈ کے بعد تمام فائلیں www-data کی ملکیت ہوتی ہیں، جبکہ FileZilla / WinSCP آپ کے اپنے صارف سے جڑتے ہیں — تب اپلوڈ SSH_FX_PERMISSION_DENIED (Permission denied) کے ساتھ ناکام ہوگا۔ دو میں سے ایک طریقہ منتخب کریں۔

طریقہ A — صرف آپ کے صارف کے لیے ACL (تجویز کردہ)۔ لکھنے کا اختیار صرف آپ کو ملتا ہے؛ ویب سرور اب بھی پینل کا کوڈ تبدیل نہیں کر سکتا:

sudo apt install -y acl # پینل کی پوری ڈائریکٹری پر آپ کے صارف کو لکھنے کا اختیار: sudo setfacl -R -m u:deploy:rwX /var/www/monitor # وہی اصول بطورِ ڈیفالٹ — بعد میں بننے والی فائلوں اور فولڈروں کے لیے: sudo setfacl -R -d -m u:deploy:rwX /var/www/monitor

طریقہ B — www-data گروپ کے ذریعے۔ آسان ہے، مگر پینل کی فائلوں پر لکھنے کا اختیار ویب سرور کو بھی مل جاتا ہے: PHP میں کوئی خامی ہو تو کوڈ بدلا جا سکتا ہے۔ کمانڈز کی ترتیب اہم ہے — config.php اور کام کے فولڈر سب سے آخر میں بند کیے جاتے ہیں:

sudo usermod -aG www-data deploy # گروپ کے لیے لکھنے کا اختیار + setgid (بٹ 2): SFTP سے اپلوڈ کی گئی فائلیں # www-data گروپ ہی میں رہتی ہیں — ورنہ پینل انہیں دوبارہ نہیں لکھ سکے گا۔ 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 کے بعد FileZilla میں دوبارہ کنیکٹ کریں (سرور ← منقطع کریں، پھر نئے سرے سے لاگ اِن) — نیا گروپ صرف نئے لاگ اِن پر لاگو ہوتا ہے، اس سے پہلے اختیارات پھر بھی نہیں ہوں گے۔ جانچ: id deploy — گروپوں کی فہرست میں www-data نظر آنا چاہیے؛ ls -ld /var/www/monitor — اجازتیں drwxrwsr-x، اور x کی جگہ s کا مطلب ہے کہ setgid لگا ہوا ہے۔

04. ڈیٹابیس

ایک ڈیٹابیس اور صارف بنائیں، پھر اسکیما امپورٹ کریں۔ ڈیٹابیس والا بلاک ٹرمینل میں مکمل طور پر پیسٹ ہوتا ہے (sudo mysql unix-socket کے ذریعے root کے طور پر داخل ہوتا ہے — root پاس ورڈ کی ضرورت نہیں)۔ monitor_db اور monitor_user مثال کے نام ہیں، آپ اپنی مرضی کے کوئی بھی رکھ سکتے ہیں؛ ڈیٹابیس کا نام، صارف اور پاس ورڈ یاد رکھیں — اگلے مرحلے میں انہیں config.php میں درج کریں گے:

# 1. ڈیٹابیس۔ پاس ورڈ ایک ہی بار DBPASS میں طے ہوتا ہے اور تمام سطروں میں لگتا ہے۔ # بلاک ٹرمینل میں مکمل طور پر پیسٹ ہوتا ہے؛ sudo mysql unix-socket کے ذریعے root کے طور پر داخل ہوتا ہے # (root پاس ورڈ کی ضرورت نہیں)۔ انٹرایکٹو `sudo mysql -u root -p` # کاپی پیسٹ کے ساتھ استعمال نہ کریں — پیسٹ پر SQL سطریں پاس ورڈ کے پرامپٹ میں چلی جائیں گی اور ضائع ہو جائیں گی۔ DBPASS='CHOOSE_A_PASSWORD' # ← صرف یہی سطر تبدیل کریں 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 # تصدیق (monitor_db دکھانا چاہیے): mysql -u monitor_user -p"$DBPASS" -e "SHOW DATABASES;" # یہی پاس ورڈ config.php → DB_PASS میں درج کریں۔
اسکیما امپورٹ کرنے کی ضرورت نہیں — براؤزر میں پہلی بار داخلے پر پینل خود ہی ٹیبلز اور admin اکاؤنٹ بناتا ہے (database/db.sql سے)، اگر ڈیٹابیس خالی ہو۔
ویب سرور کے لیے sudo خودکار سیٹ اپ پہلے ہی طے کر چکا ہے — ماڈیول سسٹم ڈیٹا فوراً دیکھتے ہیں۔ sudo الگ سے صرف تب ترتیب دینا ضروری ہے جب PHP کسی غیر معیاری صارف کے تحت چل رہا ہو (www-data کے علاوہ)۔

05. config.php کی ترتیب

config.php پینل کی جڑ میں (/var/www/monitor/config.php) — واحد فائل ہے جسے ہاتھ سے ترمیم کرنا ضروری ہے۔ پینل کی تمام ترتیبات اس میں define() constants کے ذریعے دی گئی ہیں۔ اسے کسی ایڈیٹر میں کھولیں:

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

اپنی قدریں نمایاں جگہوں پر ڈالیں؛ باقی جوں کا توں رہنے دیں:

// --- ڈیٹابیس (مرحلہ 04 سے) --- define('DB_HOST', 'localhost'); // برقرار رکھیں define('DB_NAME', 'db_name'); // جو مرحلہ 04 میں بنایا define('DB_USER', 'user'); // جو مرحلہ 04 میں بنایا define('DB_PASS', 'db_password'); // جو مرحلہ 04 میں مقرر کیا define('DB_CHARSET', 'utf8mb4'); // برقرار رکھیں // --- ایپلیکیشن --- define('APP_URL', 'https://monitor.example.com'); // پینل کا پتہ، آخر میں سلیش کے بغیر define('TIMEZONE', 'Asia/Karachi'); // آپ کا ٹائم زون // --- سیشن کا دورانیہ --- define('SESSION_LIFETIME', 28800); // دوبارہ لاگ اِن تک بلا حرکت وقت، سیکنڈ (28800 = 8 گھنٹے)

کیا تبدیل کرنا ہے:

  • DB_NAME، DB_USER، DB_PASS — بالکل وہی ڈیٹابیس نام، صارف اور پاس ورڈ جو آپ نے مرحلہ 04 میں ڈیٹابیس بناتے وقت مقرر کیے (اگر مثالیں رہنے دیں تو — monitor_db / monitor_userDB_HOST اور DB_CHARSET کو نہ چھیڑیں۔
  • APP_URL — پینل کا مکمل پتہ https:// کے ساتھ، آخر میں سلیش کے بغیر اور www کے بغیر۔ اسے اُس ڈومین سے مطابقت رکھنی چاہیے جس پر آپ لائسنس فعال کرتے ہیں (مرحلہ 07)، ورنہ کلید مسترد ہو جائے گی۔
  • TIMEZONE — آپ کا ٹائم زون (فہرست — timedatectl list-timezones)۔ یہ صرف اس پر اثر ڈالتا ہے کہ پینل تاریخیں کیسے دکھاتا ہے؛ cron کاموں کے شروع ہونے کے وقت پر اثر نہیں ڈالتا (وہاں سسٹم کا ٹائم زون لاگو ہوتا ہے)۔
  • SESSION_LIFETIME — کتنے سیکنڈ کی بے عملی کے بعد پینل دوبارہ لاگ اِن کرنے کو کہے گا (طے شدہ 8 گھنٹے)۔ مثلاً 3600 = 1 گھنٹہ، 86400 = ایک دن۔
  • خرابیوں کی لاگنگ کا بلاک (display_errors، log_errors، error_log) — طے شدہ حالت میں رہنے دیں۔

فائل محفوظ کریں (Ctrl+O، Enter، پھر Ctrl+X) اور PHP-FPM دوبارہ چالو کریں — ورنہ OPcache کی وجہ سے تبدیلیاں لاگو نہیں ہوں گی:

sudo systemctl restart php*-fpm
config.php — خفیہ فائل ہے (اس میں ڈیٹابیس کا پاس ورڈ ہے)۔ یہ پینل کی جڑ میں ہے، جو ویب روٹ بھی ہے، مگر محفوظ ہے: اجازتیں 640 (مرحلہ 03 میں مقرر) اور جڑ کے .htaccess میں واضح ممانعت۔ اسے عوامی repositories میں نہ رکھیں اور اصل پاس ورڈ کے ساتھ سپورٹ کو نہ بھیجیں۔
تمام پیرامیٹرز کی تفصیلی وضاحت — FAQ میں: “فائل config.php — پینل کی تمام ترتیبات”۔

06. SSL جاری کریں (HTTPS)

ڈیش بورڈ صرف HTTPS پر کام کرتا ہے۔ لاگ اِن سیشن ایک محفوظ کوکی استعمال کرتا ہے، اور WebAuthn (2FA) معیار کے مطابق صرف HTTPS پر کام کرتا ہے۔ http:// پر آپ لاگ اِن نہیں کر سکیں گے۔

certbot اور Apache کا پلگ اِن آٹو سیٹ اپ کے ذریعے پہلے ہی انسٹال ہو چکے ہیں۔ ڈومین کا DNS پہلے ہی سرور کی طرف اشارہ کر رہا ہونا چاہیے (مرحلہ 02)۔ ایک ہی کمانڈ سے اجرا:

sudo certbot --apache -d monitor.example.com
certbot کیا پوچھے گا:
  1. Enter email address — آپ کا e-mail (سرٹیفکیٹ کی میعاد ختم ہونے کی اطلاعات وہیں آئیں گی)۔
  2. Terms of Service … (Y)es/(N)oY۔
  3. Share email with the EFF … (Y)es/(N)o — آپ کی صوابدید پر۔
اس کے بعد certbot خود سرٹیفکیٹ جاری کرے گا، <VirtualHost *:443> لکھے گا، http→https ری ڈائریکٹ اور خودکار تجدید سیٹ کرے گا۔ آخر میں — Successfully enabled HTTPS۔
اگر اجرا ناکام ہو جائے — تو دیکھیں کہ dig +short monitor.example.com سرور کا IP واپس کرتا ہے اور پورٹ 80/443 کھلے ہیں (sudo ufw allow 80,443/tcp

اجرا کے بعد: https://monitor.example.com تالے کے ساتھ کھلتا ہے، http:// https:// پر ری ڈائریکٹ کرتا ہے۔

07. لاگ اِن اور ابتدائی سیٹنگ

https://monitor.example.com کھولیں، admin / useradmin سے لاگ اِن کریں اور یہ چیک لسٹ مکمل کریں:

  1. admin کا پاس ورڈ تبدیل کریں — مینو میں “صارفین” سیکشن۔
  2. WebAuthn (2FA) فعال کریں — “WebAuthn کلیدیں” → کلید/passkey رجسٹر کریں (HTTPS درکار ہے)۔ فوراً دو رجسٹر کریں: واحد کلید گم ہونے پر اُس سے لاگ اِن ناممکن ہو جائے گا۔ مزید تفصیل۔
  3. IP کے ذریعے رسائی محدود کریں — “سیٹنگز” → “IP کے ذریعے رسائی کی پابندی” (فعال کرنے سے پہلے اپنا IP درج کریں، ورنہ اپنی رسائی بند کر لیں گے)۔
  4. لائسنس درج کریں — ذاتی اکاؤنٹ سے ARCIVEO-… ایکٹیویشن کوڈ اپنے ڈومین پر ایکٹیویٹ کریں اور کلید “سیٹنگز” → “لائسنس” میں چسپاں کریں۔ مزید تفصیل۔
  5. اطلاعات سیٹ کریں — “سیٹنگز” میں Telegram اور/یا Email۔ مزید تفصیل۔
  6. انسٹالر حذف کریں public/start_db.php، اگر باقی ہو: یہ بغیر اجازت کے ڈیٹابیس دوبارہ بنانے کی اجازت دیتا ہے۔ جب تک فائل پینل کی جڑ میں یا public/ میں موجود ہے، پینل سرخ بینر کے ذریعے اس کے بارے میں خبردار کرتا ہے۔
تیار۔ سیکیورٹی ٹولز پہلے ہی کام کر رہے ہیں — ڈیش بورڈ فوراً اُن کی حیثیت اور سیکیورٹی سکور دکھا دے گا۔ ہر ٹول کے لیے رہنمائی FAQ میں ہے۔
Arcivéo - Security Monitor © 2026