Google Driveの無制限が終了するという噂を聞き,やはりオンプレストレージを整えるしかないと確信しました.
というわけで,HDD買うお金がなくて眠っていたProLiand DL160 Gen9をついに本番投入することに.
注意: 研究が忙しすぎて各所で詰めが甘いです.
でもまあメモ書きにはなってるので公開…
写真も何枚か撮ったんですがちょっとまとめる気力が沸かないのでここに1枚供養します
あとWireGuardはこっちでIPが分からないことが判明したので没にしてます. まねしないでね.
アーキテクチャ
まあそんな大それた物ではないのですが…
今回は性能に余裕ありありなので積極的にコンテナ化していこうと思います.これまでの貧乏鯖では全て単一システムで動かしていたためアプデが恐怖とかそういった問題点がありましたが疎結合にして被害を最小限にしていきたいです.
(図を書く予定だったが余裕無いので割愛, nspawn用LANを作って流す感じです)
サーバーはこんな感じです.
シリーズ | ProLiant DL160 Gen9 |
CPU | Xeon E5-2650 v3 |
メモリ | 16GB ECC Registered |
NIC | I350(2ポート) |
VGA | Matrox G200EH(笑) |
遠隔 | iLO4 Advanced✨ |
ヤフオクで7千円ぐらいで買いました.送料入れても万超えてないです.
買ったときはメモリ8GB,HDD500GB(数万時間選手),Xeon E5-2603v3の貧弱構成だったのでヤフオクメモリとAliexpressのXeonに交換してあります.
今って2650v3が$29で買えるんですよ.凄すぎない
ProLiantのGen9シリーズでもCPUメモリなしのベアボーンみたいな状態の物が5000円以下で買えるので中華Xeonと適当なメモリ入れてサーバーにするのおすすめです.おそらく5年保守落ちで大量に出てきてるんだと思います.
まだEoLから1年経っていないので色々入手できますし,iLOはHTML5に対応した更新が出てるのでモダンなサーバーが体験できます.
ただしAdvancedなキー入ってないと遠隔KVMは使えなかったりするので注意.私が買った物はキー入ってるしFWが(当時の)最新になってるし良かったです.
ホストをUbuntuにする意味ですが,hp-amsがdeb系かrpm系にしか配布されておらず,またArchだと更新が多すぎてホストとして不適ではないかと考えたためです.
プロプラサーバーだとこういうのが面倒すぎて保守組む以外ありえない気がします…
あと,DL160で注意してほしいのがRAIDコントローラであるB140iが終わっている事です.公式パッケージはUbuntu14.04.1までのサポートしかなく,Ubuntu14系はサポートがありますがカーネルが4.xになっているため実質使用不可です.
こいつがないとファンが(メッチャ)煩くなる等の家サーバー的には割と致命的な状態になるので注意してください.ど田舎の鳥1匹に一部屋あるような家にはあまり関係ないですが…
まあ,B140iはドライバベースのソフトウェアRAIDらしいので,パフォーマンス的にはLinuxのmdとあまり変わらないんじゃないかなと思います.EFIの設定からAHCIモードにするとC610の標準SATAコントローラが見えるようになるため,特に問題なくセットアップできるはずです.RAIDモードにしておくとSMARTが見えなくなるのでそういう意味でも使用しない方がいいでしょう.普通はIntelligent Provisioningで"ちゃんと"見るんでしょうが…
OSインストール
普通にUbuntu20.04 LTSを入れます.RAIDはお好みで.
私は新品TOSHIBA+新品Seagate+3年選手Seagate(いずれも4TB)でRAID5としました.
Ubuntuのインストーラーからポチポチで設定できるので非常にお手軽ですね.トラブったときどうなるかわかりませんが…
セットアップ後やること
- netplanを止める
- systemd-networkd
- amsd
- Mirakurunインストール
- Nginxインストール
- WireGuardインストール
- systemd-nspawn構築
netplanを止める
nano /etc/netplan/00-installer-config.yaml
|
|
netplan generate
netplan apply
amsdインストール
ライセンスNGな気がするので大きく書かないですが,librpmを入れてrhel8用のパッケージをバラして入れると最新版が動きます.
WireGuard
v4でグローバルIPを使うと家からアクセスできないのでv4のみVPSを経由するようにします.
DNS設定はAをVPS,AAAAをサーバーのv6アドレスとしておきます.
VPS側
[Interface]
PrivateKey =
Address = 172.16.0.1/32
[Peer]
PublicKey =
Endpoint = 家のIP:ポート
AllowedIPs = 172.16.0.2/32
PersistentKeepalive = 25
家側
[Interface]
PrivateKey =
Address = 172.16.0.2/32
ListenPort = ポート
[Peer]
PublicKey =
AllowedIPs = 172.16.0.1/32
※VPS側にて,firewalld使用,外向きのzoneはpublic
|
|
これでWireGuardインターフェイスに転送されるようになります.
家側は普通にwg0にzoneを割り当てて許可すればOK.セキュリティを気にしないなら割り当てすら必要ないですが.
あとルーターでWireGuardを許可するのとv6を通過させる設定をお忘れなく.
curl -4 example.com
でつながったら大丈夫です.
余談:安いからといってWebArena indigoを使うと一瞬でDoS判定されて通信できなくなります.しかしUDP側は素通しなのでWireGuardは繋がったままという…
コンテナ構築
内部ネットワーク作成
ブリッジ作成
nano /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
nano /etc/systemd/network/br0.network
[Match]
Name=br0
[Network]
Address=10.0.100.1/24
#環境に合わせる
DNS=192.168.1.1
Gateway=192.168.1.1
systemctl restart systemd-networkd
でbr0が現れます.
firewalldでマスカレード設定
ルーターにつながっているインターフェイスをeno1
でzoneはpublic
,ブリッジのzoneはinternal
とします.
|
|
感謝: https://www.server-world.info/query?os=CentOS_7&p=firewalld&f=2
コンテナ作成
インストール
|
|
設定
|
|
nano /etc/pacman.conf
NoExtract = usr/share/factory/etc/securetty etc/securetty
nano /etc/systemd/network/10-host0.network
↑80-にhost0の設定があるのでそれより前にする
[Match]
Name=host0
[Network]
Address=10.0.100.2/24
Gateway=10.0.100.1
DNS=192.168.1.1
systemctl enable systemd-networkd
起動
(ホストで)
nano /etc/systemd/nspawn/arch.nspawn
[Files]
Bind=/var/data
[Network]
Bridge=br0
systemctl enable --now systemd-nspawn@arch
ちゃんと動いてるか確認してみます.
machinectl login arch
ログインしてちゃんと動いててたらOK.アプリケーションをインストールしましょう.
今のところGiteaとJellyfin入れてます。
めちゃめちゃおすすめです。