7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxmoxで作った超便利な自宅サーバーのその後

Last updated at Posted at 2024-12-11

はじめに

約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

IMG_20220304_151521_387.jpg

スペック自体はあまり変えていません。変えた点としては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一覧

image.png
はい。増えました。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ゾーンを設定できます。
image.png
image.png
image.png

構築したサービスの紹介

構築したサーバーをVMID順に紹介していきます。以前紹介したものは省きます。

Cloudflare Tunnel

以前、省いたCloudflare Tunnelの構築方法を紹介します。Cloudflare Tunnelを使用すれば、ポート開放をせずにVPN接続やウェブサイトの公開ができます。

アカウント設定

  1. CloudflareのダッシュボードからZero Trustにアクセスします。アカウントがない場合は作成してください。
  2. 初めてZero Trustにアクセスする場合は、チーム名などの各種設定を済ませてください。プランはFreeで問題ありませんが、Freeでもクレカ情報を求められます。
  3. ユーザー設定を行います。「Setting」→「WARP Client」を選択し、「Device enrollment permissions」の「Manage」を選択します。
  4. 「Add a rule」を選択し、VPNにログインさせるユーザーのメールアドレスを登録します。「Rule name」には適当なルールの名前を入力し、「Rule action」は「Allow」にします。「Include Selector」は「Emails」を選択し、「Value」にメールアドレスを入力します。複数入力も可能です。
    image.png

トンネル構築

  1. ProxmoxのCTを用意します。
  2. Cloudflare Zero Trust ダッシュボードにアクセスします。
  3. 「Networks」→「Tunnels」にある「Create a tunnel」をクリックします。
  4. 「Select your connector」はそのまま「Cloudflared」を選択して「Next」をクリックします。
  5. 「Name your tunnel」にお好きなトンネルの名前を入力し「Save Tunnel」をクリックします。名前は適当に「Tunnel」でも構いません。
  6. 「Choose your environment」は1. で用意したマシンの環境を選択します。UbuntuテンプレートでCTを作成した場合は「Debian」→「64-bit」です。
    image.png
  7. 表示された「Install and run a connector」の「If you don’t have cloudflared installed on your machine」と書かれたコマンドをすべてコピーし、1. で作成したマシンにまるまるコピペして実行します。
  8. 少し時間がかかりますが、エラーが表示されなければ成功です。
  9. 「Next」をクリックして、公開および共有設定を行います。「Public hostnames」はWebサイト公開、「Private networks」はVPNのネットワーク設定です。どちらか一つのみの設定もでき、あとから変更できます。

サイト公開(Public hostnames)

サイト公開にはCloudflareにドメインが登録されている必要があります。
写真のように、サブドメインとドメインを入力し、ローカルネットワークにあるサービスのタイプとIPを入力すればOKです。
image.png

トンネル除外設定

  1. ここままでは何もVPN接続できないので、許可するIPを設定します。
  2. 「Setting」→「WARP Client」→「Device setting」の中に「Default」が作成されているはずです。それをクリックし、「Configure」を選択します。
    image.png
  3. 「Split Tunnels」の欄で「Include IPs and domains」が選択されているかを確認して、「Manage」をクリックします。
  4. 「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に関しては、書かなくとも自動で指定されます。)
    image.png

VPN設定(Private networks)

  1. VPN接続するネットワークIPアドレス範囲を「CIDR」に入力します。トンネルサーバーが「192.168.1.100」にあり、範囲(サブネットマスク)が「/24」の場合は、「CIDR」に「192.168.1.0/24」と書きます。
  2. VPN接続したいマシンのブラウザのアドレスバーに1.1.1.1と入力してアクセスし、アプリケーションをインストールします。
  3. アプリの設定を開き、歯車マークから環境設定、アカウントにある「Zero Trustにログイン」を選択します。
    image.png
  4. 開いたウィンドウにチーム名を入力し、開いたブラウザに設定したメールアドレスを入力し、ワンタイムパスワードを取得します。
  5. メールが届いたら、メールに記載されているワンタイムパスワードをブラウザに入力すれば、アプリが起動します。
  6. アプリの「WARP」という表記が「Zero Trust」になるので、スイッチをオンにすればVPN接続が完了し、外出先からでもサーバーにアクセスできます。
    image.png

PowerDNS

DNSサーバーです。フルリゾルバを入れており、データベースにない場合は1.1.1.1へ接続されるようにしています。構築方法は、他の方の記事がわかりやすいので省きます。PowerDNSにした理由は、SDNとPowerDNSを接続して、自動でドメイン生成ができるからです。

Portfolio

僕のポートフォリオサイトです。WordPressで構築しました。ProxmoxのCTテンプレートの中には「Turnkey Linux」というサーバーのパッケージの入ったテンプレートがあります。その中にWordPressがあったのでそれにしました。理由は単純で楽だから。
構築方法は、Proxmoxのテンプレートから「turnkey-wordpress」というテンプレートがあるので、これでCTを構築するだけです。注意点としては、初回起動時に設定するDBとwordpressパスワードは、数字、英字の大文字、小文字、記号のうち3つを使う必要があるので注意してください。
image.png
image.png
もし、Cloudflare Tunnelを使用してサイトを公開する場合は、画像がうまく反映されないので設定を変更します。構築後、ブラウザのアドレスバーにServer-IP/wp-admin/options.phpと入力しアクセスします。すると、普段は変更できない裏設定が表示されるので、以下の点を変更してください。

  • 「upload_path」を「./wp-content/uploads」に変更してください。
  • 「upload_url_path」にYour-Domainをサイト公開で設定したものに変更してhttps://Your-Domain/wp-content/uploadsと入力してください。
    image.png

Website.Wordpress

サークルのウェブサイトです。実は以前はシステム工学研究会として活動していましたが、技術同人誌プロジェクトの参加者が2人のみだったので、独立してサークルを作りました。これはそのウェブサイトです。これもWordPressのテンプレートから作成しました。ただし、ローカルIP以外は管理画面へ行けないようにしています。見てくれると嬉しいです。

Nextcloud

NextcloudはOSSのクラウドストレージです。Dockerを使えば簡単に作れるので面白いです。LDAPでユーザ管理を行い、Cloudflare Tunnelで公開しています。Nextcloudの構築方法、および設定方法は長くなりそうなので、別の機会で紹介します。
image.png

ONLYOFFICE

OSSのオンラインオフィスソフトウェアです。Nextcloud上でオフィスソフトをいじれるようにしています。実は、Nextcloudにはオフィスソフトが入ってはいます。ですが、使える機能が少なく、正直使いづらいです。サークルメンバーから、これだけは入れてほしいとせがまれて頑張っていれました。入れてよかったです。これも別の機会に
image.png

PowerDNS-Admin

PowerDNSをGUIで操作できるツールです。なぜかDNSサーバーと同じマシンで使うと認識しなかったので、仕方なくCTを分けています。Dockerで構築しました。

LDAP

LDAPはLightweight Directory Access Protocolの略で、ネットワーク機器やユーザーID、パスワードを一括で管理してくれるツールです。これもTurnkey Linuxのテンプレートから作成できます。特徴として、テンプレートにはLDAPをGUIで編集するツールがすでに入っているので、楽ではあります(日本語に対応していませんが・・・)。
スクリーンショット 2024-12-09 125108.png

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が起動しません。
image.png

インストール

  1. ProxmoxでVMを作成し、ストレージ設定まで設定します。ストレージは64GB以上が推奨です。(32でやったらすぐに埋まりました。)
  2. CPUの設定の種別を「x86-64-v3」に変更して2コア以上割り当てます。
  3. OSをインストールします。
  4. DockerとDocker Composeをインストールします。Ubuntu Serverは以下のコマンドでインストールできます。
$ sudo snap install docker docker-compose
  1. 以下のコマンドらを使ってGROWIをインストールし、アクセスできるように設定を変更します。gitクローンしたあと、ファイルに移動し、設定ファイルをnanoでもvimでもいいので開きます。
$ git clone https://github.com/weseek/growi-docker-compose.git growi
$ cd growi/
$ sudo nano docker-compose.yml
  1. 開いたファイルを以下のように変更します。
ports:
- 127.0.0.1:3000:3000    # localhost only by default

《↓↓変更後》
ports:
- 3000:3000
  1. 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

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?