- ホーム
- マニュアル
- セットアップスクリプト
- Webmin
Webminセットアップスクリプトを利用する
対象
1.Webminについて
1-1.Webminとは
Webminは、WebブラウザからLinuxサーバーを管理できるアプリケーションです。
コマンド操作が苦手な方でも、管理画面からユーザー管理、サービス設定、パッケージ管理などを簡単に行えます。
1-2.特徴
| 特徴 | 説明 |
|---|---|
| GUIによる操作 | Webブラウザを通じて、ユーザー管理、サービス設定、パッケージ管理などを直感的に操作できます。 |
| リモート管理 | インターネット経由でサーバーの管理が可能です。1つのWebminから複数のサーバーを一元的に管理することもできます。 |
| ユーザーアクセス制御 | Webmin専用のユーザーアカウントを作成し、アクセス権限を細かく設定できます。 |
| 日本語対応 | 管理画面は日本語に対応しているため、簡単に操作できます。 |
1-3.活用例
- Linux初心者の支援ツール
CLI操作に不慣れな学生や新人インフラ担当者でも、GUI操作で簡単にLinuxサーバーを設定できます。
また、Linuxの設定や仕組みを視覚的に学ぶことができます。 - 小規模オフィスでの社内サーバー管理
専門的なLinux知識を持つエンジニアがいない場合でも、ユーザーの追加やアクセス権の設定などを簡単に行え、ファイルサーバーやメールサーバーを社内で運用できます。
- リモート環境でのサーバーメンテナンス
SSH接続が難しい環境でも、Webブラウザ経由で再起動や設定変更が行うことができます。
クラウド上の検証用サーバーの一時的な保守などにも有効です。
2.Webminセットアップスクリプトの利用手順
2-1.Webminを始める前に
SSL/TLSを設定する場合は、以下を事前に準備してください。
- AレコードにVPSのIPアドレスが指定されたドメイン
- 証明書取得用のメールアドレス
※「XServerのサブドメイン」を使用する場合、選択したVPSのIPアドレスが、自動的に「Aレコード」に設定されます。
※ドメインへのIPアドレスの設定方法は「DNSレコードの編集」をご参照ください。
2-2.セットアップスクリプトの選択
本手順ではサーバーを契約してWebminの仮想マシンを構築することを前提とします。
既存のサーバーをWebminに置き換える場合は、「OS再インストール」からWebminのセットアップスクリプトを利用してください。
1.「お申し込み」をクリック
XServerアカウントへログインし、「お申し込み」をクリックしてください。

2.セットアップスクリプトを選択
「お申し込み」一覧の「VPS(Linux系サーバー)」をクリックしてください。

「OSを選択してインストール」をクリックし、対応する以下のOS・バージョンを選択してください。
その後、「セットアップスクリプト」から「Webmin」を選択してください。

お申し込み・お支払いを完了することで、選択したスクリプトがサーバー構築時に自動実行されます。
本セットアップスクリプトで実行される処理は以下のとおりです。
スクリプトを表示
# Webmin
set -euo pipefail
for i in {1..5}; do
DEBIAN_FRONTEND=noninteractive apt update -y && \
DEBIAN_FRONTEND=noninteractive apt install -y \
apache2 \
mariadb-server \
mariadb-client \
curl \
bzip2 \
unzip \
openssl && \
break
[[ "$i" -eq 5 ]] && exit 1 || sleep 5
done
## PHP
PHP_VERSION="8.1"
for i in {1..5}; do
DEBIAN_FRONTEND=noninteractive apt install -y software-properties-common gnupg2 \
&& DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:ondrej/php -y \
&& DEBIAN_FRONTEND=noninteractive apt update -y \
&& DEBIAN_FRONTEND=noninteractive apt install -y \
php${PHP_VERSION} \
php${PHP_VERSION}-mysql \
libapache2-mod-php${PHP_VERSION} \
php${PHP_VERSION}-curl \
php${PHP_VERSION}-gd \
php${PHP_VERSION}-imap \
php${PHP_VERSION}-intl \
php${PHP_VERSION}-mbstring \
php${PHP_VERSION}-xml \
php${PHP_VERSION}-xmlrpc \
php${PHP_VERSION}-zip \
php${PHP_VERSION}-imagick \
php${PHP_VERSION}-bcmath \
php${PHP_VERSION}-gmp \
php${PHP_VERSION}-apcu \
php${PHP_VERSION}-redis \
&& break
[[ "$i" -eq 5 ]] && exit 1 || sleep 5
done
systemctl enable --now mariadb
for i in {1..10}; do
systemctl is-active --quiet mariadb.service && break
sleep 3
done
systemctl enable --now apache2
for i in {1..10}; do
systemctl is-active --quiet apache2.service && break
sleep 3
done
### wait for mysql-setup succeed
maria_pass=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1 || true`
for i in {1..10}; do
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${maria_pass}'; FLUSH PRIVILEGES;" && break
[[ "$i" -eq 10 ]] && exit 1 || sleep 3
done
## phpinfo
cat <<EOF > /var/www/html/phpinfo.php
<?php
phpinfo();
?>
EOF
## Install
WEBMIN_VER="2.641"
cd /tmp
curl -fL \
--retry 10 \
--retry-delay 5 \
--retry-connrefused \
--retry-all-errors \
-o "webmin_${WEBMIN_VER}_all.deb" \
"https://prdownloads.sourceforge.net/webadmin/webmin_${WEBMIN_VER}_all.deb" \
--fail
DEBIAN_FRONTEND=noninteractive apt install -y /tmp/webmin_${WEBMIN_VER}_all.deb
## Wait
for i in {1..30}; do
if systemctl is-active --quiet webmin; then
break
fi
sleep 2
done
## Script
cat <<'EOF' > /root/setup.sh
#!/bin/bash
# check_arg
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <domain> <email>"
exit 1
fi
# parameter set
DOMAIN="$1"
EMAIL="$2"
APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
# install
apt install -y certbot python3-certbot-apache
# Domain check
for i in {1..10}; do
curl -s -o /dev/null http://"${DOMAIN}"
if [[ $? -eq 0 ]]; then
break
fi
if [[ ${i} -lt 10 ]]; then
sleep 60
fi
done
# Config Apache2
if ! grep -q "ServerName $DOMAIN" "$APACHE_CONF"; then
sed -i "/<VirtualHost.*:80>/a \ \ \ \ \ \ \ \ ServerName $DOMAIN" "$APACHE_CONF"
echo "Added ServerName $DOMAIN to $APACHE_CONF."
systemctl reload apache2
fi
# SSL cert
certbot --apache -d "$DOMAIN" --agree-tos --email "$EMAIL" --non-interactive
if [[ $? -ne 0 ]]; then
echo "Certbot failed to get certificate." | logger -t certbot-error
exit 1
fi
# Config webmin
sed -i "/^keyfile/d" /etc/webmin/miniserv.conf
echo "keyfile=/etc/letsencrypt/live/${DOMAIN}/privkey.pem" >> /etc/webmin/miniserv.conf
echo "certfile=/etc/letsencrypt/live/${DOMAIN}/fullchain.pem" >> /etc/webmin/miniserv.conf
systemctl restart webmin
# Config motd
if [ -f /etc/motd ]; then
sed -i -E "s|http://[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/|https://$DOMAIN/|g" /etc/motd
#webmin
sed -i -E "s|https://[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:10000/|https://$DOMAIN:10000/|g" /etc/motd
fi
EOF
mkdir -p /opt/auto_ssl
cat <<'EOF' > /opt/auto_ssl/setup.sh
#!/bin/bash
# check_arg
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <domain> <email>"
exit 1
fi
# parameter set
DOMAIN="$1"
EMAIL="$2"
APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
# install
apt install -y certbot python3-certbot-apache
# Domain check
for i in {1..10}; do
curl -s -o /dev/null http://"${DOMAIN}"
if [[ $? -eq 0 ]]; then
break
fi
if [[ ${i} -lt 10 ]]; then
sleep 60
fi
done
# Config Apache2
if ! grep -q "ServerName $DOMAIN" "$APACHE_CONF"; then
sed -i "/<VirtualHost.*:80>/a \ \ \ \ \ \ \ \ ServerName $DOMAIN" "$APACHE_CONF"
echo "Added ServerName $DOMAIN to $APACHE_CONF."
systemctl reload apache2
fi
# SSL cert
certbot --apache -d "$DOMAIN" --agree-tos --email "$EMAIL" --non-interactive
if [[ $? -ne 0 ]]; then
echo "Certbot failed to get certificate." | logger -t certbot-error
exit 1
fi
# Config webmin
sed -i "/^keyfile/d" /etc/webmin/miniserv.conf
echo "keyfile=/etc/letsencrypt/live/${DOMAIN}/privkey.pem" >> /etc/webmin/miniserv.conf
echo "certfile=/etc/letsencrypt/live/${DOMAIN}/fullchain.pem" >> /etc/webmin/miniserv.conf
systemctl restart webmin
# Config motd
if [ -f /etc/motd ]; then
sed -i -E "s|http://[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/|https://$DOMAIN/|g" /etc/motd
#webmin
sed -i -E "s|https://[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:10000/|https://$DOMAIN:10000/|g" /etc/motd
fi
EOF
## MOTD
cat <<EOF > /etc/motd
==========================================================
Webmin Application
Webmin URL https://${IPADDR}:10000/
DocumentRoot: /var/www/html
WebServer URL: http://${IPADDR}/
phpinfo: http://${IPADDR}/phpinfo.php
MySQL root password: ${maria_pass}
To delete this message: unlink /etc/motd
==========================================================
EOF
3.事前準備
3-1.パケットフィルターの設定
Webminを利用するには、使用する機能に応じて、以下のポートを開放する必要があります。
必須ポートについては必ず開放するよう設定してください。
コントロールパネルの「パケットフィルター設定」画面から、該当のポートを許可するルールを追加してください。
必須ポート
| 用途 | ポート番号 | 目的 |
|---|---|---|
| SSH | TCP 22 | Tera TermなどのSSHクライアントを使ってサーバーに接続するため。 |
| HTTP | TCP 80 | Let's EncryptでSSL/TLSを設定する際に、SSL証明書の取得・更新に使用するため。 |
| HTTPS | TCP 10000 | WebブラウザからWebmin管理画面に接続するため。 |
※セキュリティのため、TCP 22とTCP 10000はアクセス元IPを制限することを推奨します。
パケットフィルターの設定は下記マニュアルからご確認ください。
パケットフィルターの設定について
3-2.Webminサーバー情報の確認
4.Webminセットアップ手順
4-1.Webminセットアップ
1.コマンドを実行
VPSに「SSH」、または「コンソール」からログイン後、下記のコマンドを実行してください。
bash /opt/auto_ssl/setup.sh <ドメイン> <メールアドレス>
※「<ドメイン>」「<メールアドレス>」には「2-1.Webminを始める前に」で準備したものを利用してください。
※「<ドメイン>」の前後には半角スペースを入力してください。
2.セットアップ完了
下記のような画面が表示され、プロンプトが返ってきたらセットアップは完了です。

4-2.Webminログイン方法
1.ログイン情報を入力
「3-2.Webminサーバー情報の確認」で確認した「Webmin URL」にアクセスしてください。
「ユーザー名」に「root」、「パスワード」にOS再インストール時に設定したrootパスワードを入力し、「Sign in」ボタンをクリックしてください。

2.ログイン完了
Webminダッシュボードが表示されます。

5.Webminの基本操作
表示言語を変更する
サイドバーの「Webmin」から「Webmin Configuration」を選択し、「Language and Locate」をクリックしてください。

「Language」を「日本語」に変更し、「Change Languages」ボタンをクリックすることで日本語表示になります。

Webファイルを編集する
Webmin上でWeb公開しているファイルの編集ができます。
サイドバーの「Tools」から「File Manager」をクリックし、 対象のディレクトリ、ファイルを選択して「Edit」をクリックすると編集画面が開きます。

Cronを設定する
コマンドを自動実行するCronの設定ができます。
サイドバー「システム」の「cron ジョブのスケジュール」から設定を行ってください。



