自动方式:从个人中心运行一个脚本即可完成整台服务器的准备工作
(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_DENIED(Permission 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-data;ls -ld /var/www/monitor,权限为 drwxrwsr-x,用 s 代替 x 表示 setgid 已设置。
04. 数据库
请先创建数据库和用户,然后导入表结构。数据库代码块整体 粘贴到终端即可(sudo mysql 通过 unix 套接字以 root 身份登录——无需 root 密码)。monitor_db 和 monitor_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_NAME、DB_USER、DB_PASS —— 与您在第 04 步创建数据库时设置的库名、用户和密码完全一致(若保留了示例值 —— monitor_db / monitor_user)。请勿改动 DB_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 中明确禁止访问。请勿将其上传到公开仓库,也不要带着真实密码发给支持团队。
06. 签发 SSL 证书(HTTPS)
面板仅支持通过 HTTPS 访问。 登录会话使用安全 cookie,而 WebAuthn(2FA)按标准也只在 HTTPS 下工作。通过 http:// 您将无法登录。
certbot 及其 Apache 插件已在自动配置时安装完成。域名的 DNS 应已指向本服务器(步骤 02)。一条命令即可签发:
sudo certbot --apache -d monitor.example.com 复制
certbot 会询问:
Enter email address — 您的电子邮箱(证书到期通知将发送至此)。
Terms of Service … (Y)es/(N)o — 输入 Y。
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 登录并完成以下清单:
修改 admin 密码 — 菜单中的“用户”板块。
启用 WebAuthn(2FA) — “WebAuthn 密钥”→ 注册安全密钥/passkey(需要 HTTPS)。请一次注册两个:若唯一的密钥丢失,将无法用它登录。了解更多 。
按 IP 限制访问 — “设置”→“按 IP 限制访问”(启用前请先填入您自己的 IP,否则会将自己拒之门外)。
输入许可证 — 将个人中心中的激活码 ARCIVEO-… 激活到您的域名,并将密钥填入“设置”→“许可证”。了解更多 。
配置通知 — 在“设置”中配置 Telegram 和/或 Email。了解更多 。
删除安装程序 public/start_db.php(如仍存在):它允许无需授权即可重建数据库。只要该文件仍位于面板根目录或 public/ 中,面板就会以红色横幅提示您。
完成。安全工具已在运行 — 仪表盘会立即显示其状态和安全评分。各工具的说明请见
FAQ 。