[Virtualmin]ホスティングサービス構築を爆速でしてみよう

5 min読了の目安(約4600字TECH技術記事

はじめに

Life is Tech! Members Advent Calender 2020 Day5の記事です.
もともと書いてたやつのデータ飛んだついでに,みんなZennで書いてたからZennにしてみました.

自己紹介

なとです.みねらるとかとかnilnilとか,そういう名前でも呼ばれます.名古屋・関東方面のキャンプに数年前まで参加していました.
普段は🐤のほかMastodon(MisskyとかとあわせてFediverseともいいますが)方面にいます.今はCoderDojo Konanというところでプログラミングを教えたりしてます.
登録してね(Friends.cafe)
(ちなみにラマーズP・あほくすさんが運営してます)

本来私は映像メンバーなので,映像とかデザインとかそっち系の話をした方がいいような気もするんですが,むしろWEBとかサーバーとかDjangoとかRailsとかそっち方面の方が得意になってしまいました.この間文化祭向けに映像作ってたら技術落ちまくっててびっくりした...

閑話休題,このアドカレはサーバー構築関係の記事にしたいと思います.

レンタルサーバーの嫌なところ(動機)

僕はWordpress制作もするのでレンタルサーバーにはお世話になるのですが,CoreServer(主に自作サイト)とかさくらのレンタルサーバー(会社様ですのでスタンダードで契約してる先があります)とかを使ってPHPコードを動かしてるんですが,自分が作ってるCMS(Rails製)を動かしたくなることがあります.ところがRailsが動きません.それもそのはず,sudoがないので一部のOS側で必要なソフトやgemが入らなかったりするんですね.

だったらsudo権限出せるレンタルサーバー作ればいいじゃんとか頭おかしいことを思い始めてしまいました!!

この記事ですること/準備物

  1. この記事でやること

    • Virtualmin環境構築(ホスティング・DNS・DB他もろもろ)
    • Webmin系サーバーを立ててDNSも使えるようにする
  2. 準備物

  3. 諸々の事情説明

    • 今回はUbuntu 18.04 LTSで構築しました.CentOSや20.04も確かサポートされてたと思うけど僕はBionicが好きです.
    • VPS・サーバーは2台使います.レジストリの仕様で2台以上に分散しないとDNSサーバー(ドメイン名とIPアドレスを紐づけてくれるやつ)を登録させてくれません.
    • ブラウザ・ドメイン関係ですが,理由としては証明書の設定が非常に面倒だからです.全ドメイン対象ワイルドカードオレオレ証明書(*に対する自己署名証明書)が発行されるのでHSTSとかでかつChromiumブラウザだと死にかけるからです...
    • ブラウザも同様の理由でFirefox推奨です.
    • 英語/CLI/GUIについて,インストールまではCLIなんですが(シェルスクリプト走らせるだけだけど),それ以降がほぼ全てGUIとなります.当然スクリプトは英語ばっかですし,Virtualmin部分は大半まだ英語なので英語が嫌いすぎて死にそうな人は消しとばしていいと思います.

つくる

1台目

CLI編

Digitaloceanで作業していきます.Droplet(VPS)立ち上げは,他のサーバー会社の方は各自でお願いします.

  1. Dropletを追加する
    Droplet(VPSサーバーのこと)をココから追加します.まずは1台でOK!
    OSはUbuntu 18.04LTS
    プランは月$10~のをおすすめします.僕は今は$15のです.
    IPv6を有効化します.
    SSHキーの作成とかについてはこの辺とかGitHubの公式ドキュメント(あっちの方が軽いのは軽い)読んでください.
    .ssh/configでの紐付け(IdentityFile)も忘れないでね!
  2. SSH接続する
    $ ssh root@(VPSのipアドレス)
    
  3. パッケージマネージャーとかを最新版にする
    $ apt update && apt upgrade -y
    
  4. シェルスクリプトを動かす
    $ wget http://software.virtualmin.com/gpl/scripts/install.sh
    $ sudo /bin/bash install.sh
    
  5. 画面に出たアドレスをメモしておいて,再起動の許可を求められるのでyを入力する.

GUI編

(ipアドレス):10000 にいくとログイン認証を求められます.IDはroot,パスワードはrootのパスワードです.パスワードがわからない場合はpasswdコマンドを使いましょう.
GUI側では言われるがままで基本的に大丈夫ですが,メモリ少なめの場合はスパムフィルターをオンデマンドフィルターに,SQLサーバーをMySQLのみに,その他メモリ少なめ用の設定を選べるところは適宜選んでいく.
この辺はあとから変えられるはずなんで,そのつもりでいきましょう.

日本語化は横のメニューからWebmin→Languages的なのからできます.

2台目

2台目CLI

インストールします.こっちはaptレポジトリがあるので,そこからインストール.ついでにBind9もインストールしておく.

$ echo "deb http://download.webmin.com/download/repository sarge contrib" | \
  sudo tee /etc/apt/sources.list.d/webmin.list
$ wget http://www.webmin.com/jcameron-key.asc -O - | sudo apt-key add -
$ sudo apt update -y
$ sudo apt install -y webmin
$ sudo apt install -y bind9

2台目GUI

1台目同様にセットアップ.パスワードも同様に.

1台目GUI

  1. 横のメニューからWebmin→サーバーの索引
    サーバーの索引
  2. 新規のサーバーの登録
  3. URLをいれ,SSLサーバーですかにははいに◯を入れる.
  4. 完了

とりあえずここまででDNS含めてサーバー構築は完了しました.

DNSの設定

ここでDNSサーバー設定時の問題なのですが,フリーのドメイン(.tkとか)でもいいので何かしらそれぞれにドメインを割り当てておいてください.そこからDNSを解決させます.

私の場合は

sv01.(私物ドメイン) IN A (マスターサーバー(1台目))
sv02.(私物ドメイン) IN A (スレイブサーバー(2台目))

を設定しました.

次に,ドメインレジストリのサイトに行き,DNSサーバーを設定してあげます.上の2つを設定しておきましょう.

それから、Virtualmin内部よりNSレコードを編集したりとかその辺の作業が必要になります.わたしはDNS周りに詳しくないのでよくわかってませんが

(本番ドメイン) IN NS sv01.(私物ドメイン)
(本番ドメイン) IN NS sv02.(私物ドメイン)

で何とかなってます.

証明書関係

メインサーバーについては特にLet's encryptで証明書を出しておきましょう.Webmin→サーバー→Apache→SSLに発行メニューがあります.設定しておいたら1時間くらいで普通のSSL(Chromiumでも使える)になるはずです.

なんかいいことあった?

個人的に思うのは

  1. WEBサーバーが専用なので早い
  2. DNSサーバーが専用なので気楽
  3. DKIM対応最高
  4. Usermin((メインのドメイン):20000)が割と使える
  5. RailsはApacheでできる限りいろいろやったけど結局面倒なのでMastodon参考にNginxホスティングしてます.

以上です.
何か質問があったら私の新しいメールまで!!

ありがとうございました.

明日はYゆたYさんの「ゴースト機能のデータファイル運用」関係のお話だそうです.ゴースト機能というとZenlyの位置情報を隠す機能が最初に浮かびます().Unityも久しぶりに挑戦してみたいところです.

追伸
Maskbookのロケールとかフォント制作の話とか、ネタはいっぱいあるので枠が余ってたりよそのアドベントカレンダーの枠が有り余っているとかだったら呼んでください.