はじめに
約1年前に自宅サーバーの紹介をしました。なんといいね数は170超えと大反響でした。実はProxmoxの本なんかも書いて同人誌として販売もしていました。今回は、その後サーバーがどうなったのか、今後どうしていくのかを紹介します。
《1年前のサーバー》
https://qiita.com/stLuciano/items/49652543192f2402e7c8
スペック
メインマシン
項目 | 搭載品 |
---|---|
CPU | Intel Core i5-10400F (6C12T) |
RAM | DDR4-2666MHz 16x2=32GB |
GPU | NVIDIA GeForce GTX 1660 Super |
M/B | ASRock H570M-ITX/ac |
SSD | 128(boot) + 500(VM) + 512(Windows)GB (256GBを500GBに交換) |
HDD | 1TB + 4TB + 4TB (500GBと4TBに交換) |
Case | Fractal design Era-ITX silver |
PSU | SFX-L 600W |
スペック自体はあまり変えていません。変えた点としてはSSD、HDD、PSUです。以前、VM用に使用していた256GBのSSDは、破損率が16%になったため500GBの新品に交換。500GBのHDDは2010年からつかっており、ついにセクタ不良が発生したため、4TBのNAS用HDDに交換。冷却性能を上げるために電源をATXから小型のSFXに交換しました。
バックアップサーバー
項目 | 搭載品 |
---|---|
Model | DELL OptiPlex 3050 Micro |
CPU | Intel Core i3-7100T (2C4T) |
RAM | DDR4-2400MHz 4x2=8GB |
GPU | Intel HD 630 |
SSD | 128(boot) |
HDD | 4TB |
あれからバックアップサーバーを購入しました。メルカリで8000円でした。普通に使えてますし、消費電力が低いので結構あり。
サーバーの中身
CT/VM一覧
はい。増えました。1年たち、様々なサーバーを構築してきました。
廃止したCT/VM
名前 | 廃止理由 |
---|---|
Suricata | CloudflareのゼロトラストとProxmoxのファイアウォールでカバーできると判断したため |
hugo | WordPressにしたため |
SoftEther | 新しく買ったノートPCとの相性が悪く、使えないため |
camera | pve v8.2からCTへのハードウェアパススルーに対応したため |
正直、Suricataとhugoに関しては面倒だったからが強いです。cameraについてはProxmoxのアップデートで問題が解消できたので、単純に使う理由がなくなりました。
SDN
SDNはSoftware Defined Networkingの略で、直訳するとソフトウェアで定義されたネットワークです。Proxmox内部に仮想的なルーターとスイッチを用意して、疑似的なVLANを作成しました。詳しい説明は公式ドキュメントをご覧ください。
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#chapter_pvesdn
一応、以下の手順に操作してsimpleゾーンを設定できます。
構築したサービスの紹介
構築したサーバーをVMID順に紹介していきます。以前紹介したものは省きます。
Cloudflare Tunnel
以前、省いたCloudflare Tunnelの構築方法を紹介します。Cloudflare Tunnelを使用すれば、ポート開放をせずにVPN接続やウェブサイトの公開ができます。
アカウント設定
- CloudflareのダッシュボードからZero Trustにアクセスします。アカウントがない場合は作成してください。
- 初めてZero Trustにアクセスする場合は、チーム名などの各種設定を済ませてください。プランはFreeで問題ありませんが、Freeでもクレカ情報を求められます。
- ユーザー設定を行います。「Setting」→「WARP Client」を選択し、「Device enrollment permissions」の「Manage」を選択します。
- 「Add a rule」を選択し、VPNにログインさせるユーザーのメールアドレスを登録します。「Rule name」には適当なルールの名前を入力し、「Rule action」は「Allow」にします。「Include Selector」は「Emails」を選択し、「Value」にメールアドレスを入力します。複数入力も可能です。
トンネル構築
- ProxmoxのCTを用意します。
- Cloudflare Zero Trust ダッシュボードにアクセスします。
- 「Networks」→「Tunnels」にある「Create a tunnel」をクリックします。
- 「Select your connector」はそのまま「Cloudflared」を選択して「Next」をクリックします。
- 「Name your tunnel」にお好きなトンネルの名前を入力し「Save Tunnel」をクリックします。名前は適当に「Tunnel」でも構いません。
- 「Choose your environment」は1. で用意したマシンの環境を選択します。UbuntuテンプレートでCTを作成した場合は「Debian」→「64-bit」です。
- 表示された「Install and run a connector」の「If you don’t have cloudflared installed on your machine」と書かれたコマンドをすべてコピーし、1. で作成したマシンにまるまるコピペして実行します。
- 少し時間がかかりますが、エラーが表示されなければ成功です。
- 「Next」をクリックして、公開および共有設定を行います。「Public hostnames」はWebサイト公開、「Private networks」はVPNのネットワーク設定です。どちらか一つのみの設定もでき、あとから変更できます。
サイト公開(Public hostnames)
サイト公開にはCloudflareにドメインが登録されている必要があります。
写真のように、サブドメインとドメインを入力し、ローカルネットワークにあるサービスのタイプとIPを入力すればOKです。
トンネル除外設定
- ここままでは何もVPN接続できないので、許可するIPを設定します。
- 「Setting」→「WARP Client」→「Device setting」の中に「Default」が作成されているはずです。それをクリックし、「Configure」を選択します。
- 「Split Tunnels」の欄で「Include IPs and domains」が選択されているかを確認して、「Manage」をクリックします。
- 「Selector」を「IP Address」にして、公開およびVPNを許可するIPアドレスを入力します。「Value」にIPアドレス、もしくはIPアドレス範囲を指定します。
例えば、192.168.10.5だけを許可する場合は192.168.10.5/32、192.168.10.1~255まで許可する場合は192.168.10.0/24と入力します。「Save destination」を押せば設定完了です。
(/32に関しては、書かなくとも自動で指定されます。)
VPN設定(Private networks)
- VPN接続するネットワークIPアドレス範囲を「CIDR」に入力します。トンネルサーバーが「192.168.1.100」にあり、範囲(サブネットマスク)が「/24」の場合は、「CIDR」に「192.168.1.0/24」と書きます。
- VPN接続したいマシンのブラウザのアドレスバーに
1.1.1.1
と入力してアクセスし、アプリケーションをインストールします。 - アプリの設定を開き、歯車マークから環境設定、アカウントにある「Zero Trustにログイン」を選択します。
- 開いたウィンドウにチーム名を入力し、開いたブラウザに設定したメールアドレスを入力し、ワンタイムパスワードを取得します。
- メールが届いたら、メールに記載されているワンタイムパスワードをブラウザに入力すれば、アプリが起動します。
- アプリの「WARP」という表記が「Zero Trust」になるので、スイッチをオンにすればVPN接続が完了し、外出先からでもサーバーにアクセスできます。
PowerDNS
DNSサーバーです。フルリゾルバを入れており、データベースにない場合は1.1.1.1へ接続されるようにしています。構築方法は、他の方の記事がわかりやすいので省きます。PowerDNSにした理由は、SDNとPowerDNSを接続して、自動でドメイン生成ができるからです。
Portfolio
僕のポートフォリオサイトです。WordPressで構築しました。ProxmoxのCTテンプレートの中には「Turnkey Linux」というサーバーのパッケージの入ったテンプレートがあります。その中にWordPressがあったのでそれにしました。理由は単純で楽だから。
構築方法は、Proxmoxのテンプレートから「turnkey-wordpress」というテンプレートがあるので、これでCTを構築するだけです。注意点としては、初回起動時に設定するDBとwordpressパスワードは、数字、英字の大文字、小文字、記号のうち3つを使う必要があるので注意してください。
もし、Cloudflare Tunnelを使用してサイトを公開する場合は、画像がうまく反映されないので設定を変更します。構築後、ブラウザのアドレスバーにServer-IP/wp-admin/options.php
と入力しアクセスします。すると、普段は変更できない裏設定が表示されるので、以下の点を変更してください。
- 「upload_path」を「./wp-content/uploads」に変更してください。
- 「upload_url_path」にYour-Domainをサイト公開で設定したものに変更して
https://Your-Domain/wp-content/uploads
と入力してください。
Website.Wordpress
サークルのウェブサイトです。実は以前はシステム工学研究会として活動していましたが、技術同人誌プロジェクトの参加者が2人のみだったので、独立してサークルを作りました。これはそのウェブサイトです。これもWordPressのテンプレートから作成しました。ただし、ローカルIP以外は管理画面へ行けないようにしています。見てくれると嬉しいです。
Nextcloud
NextcloudはOSSのクラウドストレージです。Dockerを使えば簡単に作れるので面白いです。LDAPでユーザ管理を行い、Cloudflare Tunnelで公開しています。Nextcloudの構築方法、および設定方法は長くなりそうなので、別の機会で紹介します。
ONLYOFFICE
OSSのオンラインオフィスソフトウェアです。Nextcloud上でオフィスソフトをいじれるようにしています。実は、Nextcloudにはオフィスソフトが入ってはいます。ですが、使える機能が少なく、正直使いづらいです。サークルメンバーから、これだけは入れてほしいとせがまれて頑張っていれました。入れてよかったです。これも別の機会に
PowerDNS-Admin
PowerDNSをGUIで操作できるツールです。なぜかDNSサーバーと同じマシンで使うと認識しなかったので、仕方なくCTを分けています。Dockerで構築しました。
LDAP
LDAPはLightweight Directory Access Protocolの略で、ネットワーク機器やユーザーID、パスワードを一括で管理してくれるツールです。これもTurnkey Linuxのテンプレートから作成できます。特徴として、テンプレートにはLDAPをGUIで編集するツールがすでに入っているので、楽ではあります(日本語に対応していませんが・・・)。
mino31web
サークルメンバーが構築した実験CTです。
GROWI
GROWIはOSSのウィキソフトウェアです。いわゆるesaです。サークル内で使用するために構築しました。注意事項として、CPUがAVXに対応している必要があり、CTでは構築できず、VMも物理マシンが古すぎると構築できませんでした(CTは方法あるかも?)。
AVXはIntel第2世代CPUから導入された、対応アプリケーションの処理能力を高める拡張命令です。GROWIはMongo DBを使用しており、このDBはAVXを使用します。ProxmoxはIntel第5世代CPUのエミュレートができるので問題ありませんが、物理CPUが古すぎるとQEMUがCPUをエミュレートできず、VMが起動しません。
インストール
- ProxmoxでVMを作成し、ストレージ設定まで設定します。ストレージは64GB以上が推奨です。(32でやったらすぐに埋まりました。)
- CPUの設定の種別を「x86-64-v3」に変更して2コア以上割り当てます。
- OSをインストールします。
- DockerとDocker Composeをインストールします。Ubuntu Serverは以下のコマンドでインストールできます。
$ sudo snap install docker docker-compose
- 以下のコマンドらを使ってGROWIをインストールし、アクセスできるように設定を変更します。gitクローンしたあと、ファイルに移動し、設定ファイルをnanoでもvimでもいいので開きます。
$ git clone https://github.com/weseek/growi-docker-compose.git growi
$ cd growi/
$ sudo nano docker-compose.yml
- 開いたファイルを以下のように変更します。
ports:
- 127.0.0.1:3000:3000 # localhost only by default
《↓↓変更後》
ports:
- 3000:3000
- compose upをして起動させ、Webブラウザを開いて
Server-IP:3000
でアクセスしログインできれば成功です。
$ sudo docker-compose up
NAS.N-data
ユーザーが共有するNASです。個人用のNASと分けるために構築しました。容量は1TBです。
サーバーの予定
実は1月にサーバーのアップグレードを予定しています。スペックは以下の通りです。
メインノード
項目 | 搭載品 |
---|---|
CPU | Intel Core i5-10400F (6C12T) |
RAM | DDR4-3200MHz 16x2=32GB |
GPU | NVIDIA GeForce GTX 1660 Super |
M/B | ASRock H570M-ITX/ac |
SSD | 128(boot) + 500(VM) + 512(Windows)GB |
HDD | 1TB + 4TB |
Case | Fractal design Era-ITX silver |
PSU | Fractal design L-SFX 650W GOLD |
用途 | Proxmox メインクラスタノード |
セカンドノード
項目 | 搭載品 |
---|---|
CPU | Intel Core i9-10900F (10C20T) |
RAM | DDR4-2666MHz 8x4=32GB |
GPU | NVIDIA GeForce RTX 3060Ti |
M/B | ASRock H470m Pro4 |
SSD | 1TB(boot) + 512GB(VM) |
HDD | 4TB |
Case | Antec CX200M |
PSU | ATX 600W Bronze |
用途 | Proxmox セカンドクラスタノード |
メインノードについては変わりません。大きな違いは、マシンを1機追加します。
スペックはCore i9-10900FでGPUはRTX 3060Tiとかなりの高スペックです。これを使って、サークルメンバーが使えるVDIや画像生成AIサーバーなどを構築していきたいと考えています。
おわりに
今の構成はこんな感じです。今後は、Cephまでは使えないですが、Corosyncクラスタを活用していきたいなと思っています。それ用にルーターを先輩からいただきました(1GbEなので足りるか不安ですが・・・)。そして、画像生成AIサーバーだったり、Active Directoryで動作するリモートWindows11を用意したいなと思っています。今後も逸般の誤家庭を目指していきますw