自动安装

自动方式:从个人中心运行一个脚本即可完成整台服务器的准备工作 (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 后即可使用)。它与您的账户绑定,并包含专属令牌。

该脚本会准备好整台服务器:Web 栈(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、安全自动更新。
  • 精简版——适用于内存较小的 VPS:基础组件,不含重量级模块。
  • 已配置服务器(主机面板)——适用于已在运行、带面板(HestiaCP 等)、网站和邮件的服务器:仅做增量式改动(补装工具、cron、sudo 规则),而防火墙、Fail2ban、邮件、SSH 和 sysctl 保持原样。在带面板的服务器上,脚本会自动选择此模式。
试运行。在个人中心中可勾选“试运行”——此时命令只会显示脚本将安装和更改的内容,然后结束,不做任何改动。在已配置好的服务器上很有用:先试运行,再取消勾选进行实际运行。

2)在服务器上以 root 身份执行个人中心中的命令——它形如:

curl -fsSL "https://my.arciveo.com/install.php?token=YOUR_TOKEN" | sudo bash
妥善保密该命令——它与您的账户绑定。链接有效期有限;若已过期,请在个人中心中点击“获取新链接”
自动配置完成后,Web 服务器为 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)。无需另行创建目录和虚拟主机——只需上传文件并设置权限。
购买后可在 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/
若想让虚拟主机中立即写入您的域名(ServerName),可在步骤 01 就将其传入自动配置命令:… | sudo bash -s -- monitor.example.com(或在个人中心的“面板域名”字段中填写域名)。若未传入域名——面板会响应任意主机和 IP 访问,而 ServerName 将在签发 SSL 时由 certbot 写入(步骤 06);无需重新安装任何内容。
请设置文件权限——这是必需步骤。若以 root 身份或通过 SFTP 上传,文件将归 root 所有,Web 服务器(www-data)将无法读取——面板会打开为空白页或出现 403 错误(日志中:.htaccess unreadable / directory not executable)。下面的命令可修复此问题:
# 规范化整个 web 根目录的权限:由 root 创建的目录 # Web 服务器(www-data)无法访问——否则面板会返回空白页或 403。 cd /var/www/monitor # 请在 chown 之前创建工作目录——否则新目录仍归 root:root 所有, # 在 chmod 750 时 Web 服务器(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_DENIEDPermission denied)。请从以下两种方案中选择一种。

方案 A——仅为您的用户设置 ACL(推荐)。只有您获得写入权限,Web 服务器仍然无法覆盖面板代码:

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 组。更简单,但 Web 服务器同样获得对面板文件的写入权限:一旦 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-datals -ld /var/www/monitor,权限为 drwxrwsr-x,用 s 代替 x 表示 setgid 已设置。

04. 数据库

请先创建数据库和用户,然后导入表结构。数据库代码块整体粘贴到终端即可(sudo mysql 通过 unix 套接字以 root 身份登录——无需 root 密码)。monitor_dbmonitor_user 仅为示例名称,您可自定义;请记住数据库名、用户名和密码——下一步需要填入 config.php

# 1. 数据库。密码只需在 DBPASS 中设置一次,并会自动代入所有语句。 # 整块粘贴到终端;sudo mysql 通过 unix 套接字以 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)。
Web 服务器的 sudo 自动配置已完成设置——各模块可直接读取系统数据。仅当 PHP 以非标准用户(而非 www-data)运行时,才需要单独配置 sudo。

05. 配置 config.php

面板根目录下的 config.php/var/www/monitor/config.php)是唯一需要手动编辑的文件。面板的所有设置都以 define() 常量的形式定义在其中。用编辑器打开它:

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/Shanghai'); // 您的时区 // --- 会话时长 --- define('SESSION_LIFETIME', 28800); // 重新登录前的空闲时间,秒(28800 = 8 小时)

需要修改的内容:

  • DB_NAMEDB_USERDB_PASS —— 与您在第 04 步创建数据库时设置的库名、用户和密码完全一致(若保留了示例值 —— monitor_db / monitor_user)。请勿改动 DB_HOSTDB_CHARSET
  • APP_URL —— 面板的完整地址,带 https://,末尾不加斜杠,也不带 www。必须与您激活许可证所用的域名一致(第 07 步),否则密钥将被拒绝。
  • TIMEZONE —— 您的时区(列表见 timedatectl list-timezones)。它只影响面板显示日期的方式;对 cron 任务的启动时间没有影响(那里使用系统时区)。
  • SESSION_LIFETIME —— 空闲多少秒后面板要求重新登录(默认 8 小时)。例如 3600 = 1 小时,86400 = 一天。
  • 错误日志相关部分(display_errorslog_errorserror_log)—— 保持默认即可。

保存文件(Ctrl+OEnter,再按 Ctrl+X)并重启 PHP-FPM —— 否则由于 OPcache,改动不会生效:

sudo systemctl restart php*-fpm
config.php 是机密文件(其中含数据库密码)。它位于面板根目录,也就是网站根目录,但已被保护:权限为 640(在第 03 步设置)并在根 .htaccess 中明确禁止访问。请勿将其上传到公开仓库,也不要带着真实密码发给支持团队。
所有参数的详细说明见 FAQ:“config.php 文件 —— 面板的全部设置”

06. 签发 SSL 证书(HTTPS)

面板仅支持通过 HTTPS 访问。 登录会话使用安全 cookie,而 WebAuthn(2FA)按标准也只在 HTTPS 下工作。通过 http:// 您将无法登录。

certbot 及其 Apache 插件已在自动配置时安装完成。域名的 DNS 应已指向本服务器(步骤 02)。一条命令即可签发:

sudo certbot --apache -d monitor.example.com
certbot 会询问:
  1. Enter email address — 您的电子邮箱(证书到期通知将发送至此)。
  2. Terms of Service … (Y)es/(N)o — 输入 Y
  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