自動インストール方法:アカウントから取得したスクリプト1本でサーバー全体を準備します (Apache + PHP のウェブスタック、データベース、セキュリティツール、cron)。あとは パネルを配置し、SSL を発行してライセンスを入力するだけです。Ubuntu/Debian で動作します。新しい VPS ではすべてをゼロから構築し、構築済みのサーバーでは追加のみを行います(プロファイル「構築済みサーバー」、ステップ 01)。 以下のコマンドはすべて順番どおりです。上から下へ読み進めてください。新しい VPS であれば、各ステップをそのまま順に実行できます。 サーバーがすでに構築済みの場合や、ホスティングパネルが入っている場合は、作業の一部をスクリプトが意図的にお客様に残します。 その内容はスクリプトが実行の最後に出力します(出力の読み方はステップ 01 をご覧ください)。
monitor.example.com はあなたのドメイン、203.0.113.10 はサーバーの実際の IP、/var/www/monitor はパネルのルート(public/、assets/、config.php が置かれる場所)です。DB のパスワードはご自身で決めてください。
jail.local)、root の crontab、UFW ルール、Apache 設定。サーバーがすでに構築済みの場合(稼働中のパネル、サイト、メール、独自の jail)は、プロファイル「構築済みサーバー」を選んでください。追加的な変更のみを行い、ファイアウォール、Fail2ban、メール、SSH、sysctl には手を加えません。ホスティングパネルを検出すると、スクリプトは自動的にこのモードへ切り替わります。初回実行の前にドライラン(アカウントのチェックボックス)を有効にできます。何も変更せずに、実行される内容を表示します。稼働中のサーバーでは念のためスナップショット(snapshot)を取得してください。
my.arciveo.com → 「サーバー設定」セクション(Arcivéo Security Monitor のお申し込み後に利用可能)で取得します。コマンドはお客様のアカウントに紐づき、個人用トークンを含みます。
このスクリプトはサーバー全体を準備します。ウェブスタック(Apache + PHP)、データベース、SSL 用ツール、保護ツール一式および cron ジョブ(Lynis、SMART、debsums、Logwatch、日次レポート、ipsum の更新)。
1) 保護レベルを選択(コマンドをコピーする前に、アカウントで):
2) サーバー上で root として実行してください。アカウントのコマンドは次のようになります:
3) 最後の出力をお読みください。お客様に残された作業がそこに書かれています。 スクリプトはチェックのブロックと「次はパネルのインストール」という一覧で処理を終えます。一部のステップはスクリプトが意図的に実行しません。何が残るかは、選んだプロファイルと、スクリプトがサーバー上で見つけた内容によって変わります。以下の一覧と照らし合わせ、ご自身の出力に現れた行に対応する項目だけを実行してください。
Control panel detected (…) — サイトはホスティングパネル自身の機能で作成するため、スクリプトは vhost を作りません。ステップ 03 の「ホスティングパネル付きサーバー」の分岐へ。No vhost created (no domain given) — ドメインを指定しない「構築済みサーバー」プロファイルです。名前のない vhost は既定のサイトになり、お客様自身のサイトへのアクセスを横取りしてしまうため、作成されていません。ステップ 03 の「vhost を手動で作成」の分岐へ。sudo rules NOT written — スクリプトは、パネルがどのアカウントで動作しているかを判別できませんでした。これはよくある状況です。パネルのファイルは自動設定より後にアップロードされるため、判別する材料がまだ無かったのです。このルールが無いと、モジュールはシステムデータを参照できません。ステップ 04 の「ウェブサーバー用の sudo」のブロックへ。! Nginx does not read .htaccess — Apache の前段に Nginx があり、その設定に拒否ルールを自動で書き込めませんでした。必ず対応してください。そうしないと data/、keys/、database/、config.php が .htaccess を迂回して外部へ公開されます。ステップ 03 の「Apache の前段に Nginx がある場合」のブロックへ。UFW installed but inactive — ファイアウォールはインストール済みですが無効です。構築済みサーバーでは、お客様のアクセスを遮断しないよう、スクリプトは自動で有効化しません。ご自身の SSH ポートを必ず許可したうえで、手動で有効化してください:
Fail2ban installed but not running — 起動してください:sudo systemctl enable --now fail2ban。Database server present … but not running — ステップ 04 の前に DBMS を起動してください:sudo systemctl enable --now mariadb(インストールされているものに応じて mysql)。Certbot skipped — issue SSL in … — 証明書はホスティングパネルの Let's Encrypt のスイッチで発行します。ステップ 06 は不要です。All checks passed になります。! の付いた項目は対応が必要です。詳細はログに記録され、そのパスはスクリプトが最後に出力します(Log: …)。
パネルを monitor.example.com のようなアドレスで開き、無料のSSLを取得するには、ドメインがサーバーを指している必要があります。DNS管理パネル(レジストラまたはホスティング事業者)でAレコードを作成してください:
数分後(場合によっては1時間ほど)に、ドメインがサーバーを指しているか確認してください:
/var/www/monitor はすでに作成済みで、Apache サイトも設定済みです(DocumentRoot はパネルのルート、PHP-FPM、.htaccess 用の AllowOverride)。スクリプトの出力では vhost … → DocumentRoot … の行がこれにあたります。ディレクトリや vhost を別途作成する必要はありません。ファイルをアップロードして権限を設定するだけです。
分岐「ホスティングパネル付きサーバー」(出力:Control panel detected (…))。このようなサーバーではサイトをパネルが管理するため、スクリプトは独自の vhost を意図的に作成しません。パネルが設定を再生成した最初のタイミングで上書きされてしまうからです。手順は次のとおりです:
public_html へアップロードします。index.php、api/、assets/ と並んで、内部用の config.php、includes/、data/、tmp/、logs/、keys/、cron/、database/ も置く必要があります。ウェブルートより上へ出す必要はありません。内部用フォルダーは配布物の .htaccess で保護され、Nginx 配下ではスクリプトがドメインの設定に書き込んだ拒否ルールで保護されます。config.php(ステップ 05)です。コマンド内のパスは /home/アカウント/web/ドメイン/public_html に、所有者は www-data ではなくそのドメインのユーザーに置き換えてください。分岐「vhost を手動で作成」(出力:No vhost created (no domain given))。これは「構築済みサーバー」プロファイルでドメインを渡さなかった場合にのみ起こります。もっとも簡単なのは、ドメインを指定してアカウントのコマンドを再実行することです:
再実行は安全です。すでに完了している処理が重複することはありません。vhost を手作業で作成したい場合は、インストーラーが書き込むものと同じ設定を以下に示します:
ServerName は必須です。名前のない vhost は Apache の既定サイトになり、同じサーバー上の他のドメイン宛のリクエストにも応答し始めます。同じ理由から、構築済みサーバーでは 000-default.conf を無効化しないでください。このサイトは誰かの稼働中のサイト用に作り替えられている可能性があります。新しい VPS ではインストーラーが自動で無効化しますが、ここではその必要はありません。
! Nginx does not read .htaccess)。Nginx は静的ファイルをディスクから直接返し、.htaccess を読みません。そのため Apache は正しく保護していても、内部用フォルダーが外部へ公開されてしまいます。スクリプトが拒否ルールのファイルをあらかじめ用意していますので、ご自身のサイトの server{} ブロックで読み込み、Nginx を再読み込みしてください:
my.arciveo.com → 「ダウンロード」から取得できます。サーバーへアップロードする前にアーカイブを展開してください。
配布物の中身をアップロードしてください。展開先は /var/www/monitor(内部に public/、assets/、config.php などが入るように)。SFTP/SCP(FileZilla / WinSCP)またはローカル PC からの scp コマンドを使います:
ServerName)をすぐ反映させるには、ステップ 01 の時点で自動設定コマンドに渡します: … | sudo bash -s -- monitor.example.com(またはアカウントの「パネルのドメイン」欄で指定)。ドメインを渡さなかった場合、パネルは任意のホストおよび IP で応答し、ServerName は SSL 発行時(ステップ 06)に certbot が書き込みます。再インストールは不要です。
root でアップロードしたり SFTP を使った場合、ファイルの所有者は root となり、Web サーバー(www-data)が読み取れず、パネルは空白または 403 エラーになります(ログ: .htaccess unreadable / directory not executable)。以下のコマンドで修正できます:
SFTP でのアップロードを自分に開放してください。 上のコマンドの後はすべてのファイルが www-data の所有になりますが、FileZilla / WinSCP はご自身のユーザーで接続するため、アップロードは SSH_FX_PERMISSION_DENIED(Permission denied)で失敗します。次の 2 つの方法のどちらかを選んでください。
方法 A — 自分のユーザーだけに ACL を付与(推奨)。 書き込み権限を得るのはご自身だけで、Web サーバーは引き続きパネルのコードを上書きできません:
方法 B — www-data グループ経由。 より簡単ですが、パネルのファイルへの書き込み権限は Web サーバーにも渡ります。PHP に脆弱性があればコードを差し替えられてしまいます。コマンドの順序は重要です — config.php と作業フォルダーは最後に閉じます:
id deploy — グループ一覧に www-data が表示されるはずです。ls -ld /var/www/monitor — 権限は drwxrwsr-x で、x の代わりの s は setgid が設定されていることを示します。
データベースとユーザーを作成し、スキーマをインポートします。DBブロックはまるごとターミナルに貼り付けます(sudo mysql はunixソケットでrootログインするため、rootのパスワードは不要です)。monitor_db と monitor_user は例の名前で、任意に設定できます。データベース名・ユーザー・パスワードは控えておき、次のステップで config.php に記入します:
admin アカウントを自動作成します(database/db.sql から)。
テーブルが作成されなかった場合(パネルが DB 接続エラーを表示する、またはログインフォームの代わりに空白の画面になる)は、スキーマを手動でインポートしてください。コマンドはパネルのルートで実行し、値は上のブロックのものを使います:
$DBNAME / $DBUSER / $DBPASS がすでに失われている場合(ターミナルのセッションが新しくなった場合)は、値をコマンドに直接書くか、上のブロックの同じ 3 行でもう一度設定してください。
sudo rules NOT written の行があった場合は、パネルのアカウントを判別する材料が無く(ファイルがまだアップロードされていないため)、ルールが作成されていません。ルールが無いと、ファイアウォール、Fail2ban、CrowdSec などのセクションは空のままになります。ファイルが配置された今、アカウントを明示してアカウントのコマンドをもう一度実行してください:
www-data は、ご自身のサイトの PHP が動作しているユーザーに置き換えてください(ホスティングパネルでは通常そのドメインの所有者です)。次のコマンドで確認できます:
/etc/sudoers.d/monitor が存在し、その中にご自身のユーザーを含む行があること。
パネルのルートにある config.php(/var/www/monitor/config.php)は、手動で編集する必要がある唯一のファイルです。パネルのすべての設定は define() 定数として記述されています。エディタで開いてください:
ハイライトされた箇所を自分の値に置き換えてください。それ以外はそのままにします:
変更する項目:
DB_NAME、DB_USER、DB_PASS — ステップ 04 でDBを作成した際に設定したデータベース名、ユーザー、パスワードと全く同じもの(例をそのまま使った場合は monitor_db / monitor_user)。DB_HOST と DB_CHARSET は触れないでください。APP_URL — https:// を含むパネルの完全なアドレス。末尾のスラッシュなし、www もなし。ライセンスを有効化するドメイン(ステップ 07)と一致している必要があります。一致しないとキーが拒否されます。TIMEZONE — あなたのタイムゾーン(一覧は timedatectl list-timezones)。パネルの日付表示にのみ影響します。cron ジョブの実行時刻には影響しません(そちらはシステムのタイムゾーンに従います)。SESSION_LIFETIME — 何秒間無操作でパネルが再ログインを求めるか(デフォルトは 8 時間)。例: 3600 = 1時間、86400 = 1日。display_errors、log_errors、error_log)はデフォルトのままにしてください。ファイルを保存し(Ctrl+O、Enter、続けて Ctrl+X)、PHP-FPM を再起動してください。そうしないと OPcache のせいで変更が反映されません:
640(ステップ 03 で設定)で、ルートの .htaccess で明示的に拒否されています。公開リポジトリに載せたり、実際のパスワードを含めてサポートに送ったりしないでください。
http:// ではログインできません。
Certbot skipped — issue SSL in …)。証明書はパネル内のウェブドメインにある Let's Encrypt のスイッチで発行します。更新もパネルが行います。
certbot とApache用プラグインは自動セットアップで既にインストール済みです。ドメインのDNSは既にサーバーを指している必要があります(ステップ02)。発行は1コマンドで完了します:
パネルを www. 付きでも開けるようにする場合は、両方の名前を 1 つのコマンドに列挙してください。そうしないと、もう一方のアドレスでブラウザが証明書の警告を表示します:
Y。<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:// にリダイレクトされます。
https://monitor.example.com を開き、admin / useradmin でログインしてチェックリストを進めます:
ARCIVEO-… を自分のドメインで有効化し、キーを「設定」→「ライセンス」に貼り付けます。詳細。public/start_db.php が残っている場合:認証なしでデータベースを再作成できてしまいます。ファイルがパネルのルートまたは public/ にある間、パネルは赤いバナーで警告します。sudo /usr/local/bin/clamav-scan.sh)はディスクと CPU に大きな負荷をかけ、1 時間以上かかることもあります。稼働中のサーバーでは 01:30 の夜間実行を待つほうがよいでしょう。「ディスク(SMART)」「パフォーマンス」「セキュリティ更新」の各セクションは自動的に埋まります。それぞれ 30 分ごと、5 分ごと、1 時間ごとです。