初めに
運営している Minecraft サーバーの情報をまとめる Wiki のセットアップをしたので、振り返りがてら書いてみました。
環境
- OS: Ubuntu 22.04 (Proxmox 上の LXC コンテナ)
- Web サーバー: Nginx (1.18)
- Wiki ソフト: MediaWiki (1.42.1)
- プロキシ: Cloudflared (2024.8.3)
- データベース: Maria DB
- PHP: version 8.1
パッケージのインストール、セットアップ
インストール
apt update
, apt upgrade
などで普通に更新しつつ、 nginx
, mariadb
, php
関連のパッケージもインストールする。
apt install mariadb-server php php-intl php-mbstring php-xml php-apcu php-curl php-mysql
apt install php-intl php-mbstring php-xml php-apcu php-curl
apt install git unzip # unzip は必要な場合のみ
落として来たら nginx と mariadb を自動的で起動するようにする。
systemctl enable nginx
systemctl enable mariadb
Maria DB
mariadb はここからデータベースの設定を行う。
mysql_secure_installation
# パスワードは変更しないので Enter キーを押して次へ
Enter current password for root (enter for none):
# unix_socket に変更すると面倒らしい[1]ので n を入力して次へ
Switch to unix_socket authentication [Y/n]: n
# 変更しない方が良いと思います。n を入力して次へ
Change the root password? [Y/n]: n
# 匿名ユーザーは必要ないので y を入力して次へ
Remove anonymous users? [Y/n]: y
# 今回は DB と Nginx を同じマシンで動かすのでリモートからのルートログインを許可しない。 y を入力して次へ。
Disallow root login remotely? [Y/n]: y
# テスト用のデータベースを削除するので y を入力して次へ。
Remove test database and access to it? [Y/n]: y
# 設定を反映するために今すぐリロードするので y を入力して終わり
Reload privilege tables now? [Y/n]: y
Maria DB のデータベース、データベースユーザーを作成する。
mysql -u root -p
CREATE DATABASE データベース名;
CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'localhost';
FLUSH PRIVILEGES;
EXIT;
今回は Nginx と Maria DB を同じマシンで動かすので、場所を 'localhost' にする。
Nginx
MediaWiki 用の Nginx サーバーブロックを設定する。
/etc/nginx/sites-available/
に mediawiki
を作成する。
(/etc/nginx/sites-available/mediawiki
)
# mediawiki
server {
listen 80;
server_name ドメインかIP; # 例: wiki.example.com
root /var/www/html/mediawiki;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
try_files $uri /index.php;
expires max;
log_not_found off;
}
}
保存して終了し、/etc/nginx/sites-enabled/
にシンボリックリンクを作成、作成したコンフィグのテストを行いエラーが出なければ Nginx をリロードする。
ln -s /etc/nginx/sites-available/mediawiki /etc/nginx/sites-enabled/
nginx -t # コンフィグのテスト
systemctl reload nginx
コンフィグのテストで [warn]
や [emerg]
と表示されたら構文ミスや記載事項に過不足があるので、それらが表示されなくなるまで修正とテストを繰り返す。
Nginx その 2
ここまでの設定では、 Nginx のログに利用者の IP アドレスではなくループバックアドレスが記録されてしまう。そこで以下の設定を /etc/nginx/nginx.conf
に追記し、正しいアドレスを記録するようにする。
http {
# http ディレクティブに追記する
## cloudflared settings
set_real_ip_from 127.0.0.1/32;
set_real_ip_from ::1/64;
real_ip_header CF-Connecting-IP;
}
追記したら、保存して Nginx を再起動する。
Cloudflared
ここ から利用するサーバーマシンのアーキテクチャに合ったパッケージをダウンロードする。今回は Intel CPU を搭載した Linux マシンで動かすので、cloudflared-linux-amd64.deb
を落とす。
ディレクトリはどこでもよい。
wget https://github.com/cloudflare/cloudflared/releases/download/2024.8.3/cloudflared-linux-amd64.deb
.deb ファイルを落として来たら apt install
を実行してインストールする。
apt install ./cloudflared-linux-amd64.deb
インストールしたら Cloudflare のアカウントと紐づける。
cloudflared tunnel login
上記のコマンドを実行すると認証用の URL が表示されるので、クリックして認証を済ませる。
次に Cloudflare Zero trust のダッシュボードでトンネルを作成する。
"+ Create tunnel" をクリック。
ホスト名はご自由に(例: wiki.example.com
)
サービスは http://localhost:80
とする。
作成すると起動スクリプトを cloudflared に登録するコマンドが表示されるので、コピーして実行する。
(clouflared は既にインストールしてあるので、インストールスクリプトが省かれた小さいボックスの方をコピる)
自動で起動してくるように設定される。
MediaWiki
ここ から tar ファイル、もしくは zip ファイルをダウンロードして、 /var/www
に配置し、解凍する。
(バージョン
はその時の Mediawiki のバージョン)
# tar
tar -zxvf mediawiki-バージョン.tar
# zip
unzip mediawiki-バージョン.zip
mediawiki-バージョン
を mediawiki
に改名する。
mv mediawiki-バージョン mediawiki
/var/www/mediawiki 配下のコンテンツを全てデフォルトの Web サーバー用ユーザー www-data
が所有するようにする。
chown -R www-data:www-data /var/www/mediawiki
/var/www/mediawiki 配下のすべてのコンテンツのパーミッションを 755 にする。(オーナー以外の書き込みを禁止)
chmod -R 755 /var/www/mediawiki
ここまで来てようやく MediaWiki の設定に取り掛かることができる。
http://設定したドメイン
へアクセスして初期設定を行う。
手順など
すべての設定が終了すると、設定していたブラウザで LocalSettings.php
がダウンロードされるのでサーバーの /var/www/mediawiki/
に配置する。
(touch LocalSettings.php
でファイルを作成して内容をコピペするなど)
この際、所有権を www-data:www-data
に、パーミッションを 600
に設定しておく。
chown www-data:www-data LocalSettings.php
chmod 600 LocalSettings.php
終わりに
1 日溶かしました。403, 503, 1033......
参考ページ
[1]