Back

Create VM on Proxmox

ISOイメージの取得

Ubuntu24.04 ServerのISOのURLを公式ページから取得し、ノードのlocalという名のストレージからISOイメージのURLを入力し、マシンにISOイメージをダウンロード

VM作成

スペックや先ほど取得したISOイメージを入力し、VMを作成。

OS初期設定

VMを起動し、コンソールページから指示に従って設定。基本的にデフォルトの設定を登録する。OpenSSHはinstallしておく。また、dockerなど一部のソフトウェアはこのタイミングでインストールできる。 LANに繋がれた状態であれば内部IPアドレスなどはこの設定時に表示されるので、後ほどラップトップからsshするときのために覚えておく。

Setup NFS to access files on NAS server

NASサーバー側の設定

現在はSynology NASを利用しており、公式ドキュメントに従って設定を行う。基本的なstepとしては

  • NSAサービスの有効化
  • NASサーバー側にNFSで利用するディレクトリの作成とNFS権限の付与

NFS権限付与後はマウントパス(e.g., /volume1/nfs)が設定されるのでこの値をコントロールパネルから控えておく。(コントロールパネル -> 共有フォルダ -> NFSで使うディレクトリの編集 -> NFS権限のパネルに表示される)

NFSクライアントの設定

ローカルのファイルシステムからアクセスできるようにマウントする。

Terminal window
$ sudo apt update
$ sudo apt install nfs-common
$ sudo mount IP_ADDRESS_NAS:MOUNT_PATH /PATH/TO/DESTINATION # e.g., sudo mount 192.168.0.13:/volume1/nfs /mnt/nfs

Setup Object Store on NAS server

minioを使ったオブジェクトストレージをNASサーバーに構築する。例えば、権限管理やコスト面でGCSなどのパブリッククライド上でなくプライベートネットワーク内でオブジェクトストレージが欲しいユースケースで使える(e.g., quickwitのバックエンドストレージ)。

Container Managerのセットアップ

Synology NASのPackage CenterからContainer Managerをinstallする。 Container ManagerのRegistryからminio/minioのimageをdownloadし、Imageから起動設定をする。

  • auto-restartはonにしておく。
  • minoは9000, 9001番ポートをそれぞれAPIとコンソール向けに利用する(参考)ので、Port SettingでLocal Portに繋いでおく。
  • (optional)環境変数にユーザー設定を記入。特に設定しなければユーザー名, パスワードはminioadminでログインできる
    • MINIO_ROOT_USER: ルートユーザーのユーザー名
    • MINIO_ROOT_PASSWORD: ルートユーザーのパスワード

動作確認

ブラウザから http://<NASのIP>:9001/ でアクセスできる。

参考: https://ik.am/entries/441

Setup DNS at homelab

DNSサーバーの作成

unboundを使ってhomelab向けのDNSサーバーを構築する。 作成はansibleによって管理されており、以下の手順で構築可能。

Terminal window
$ cd /path/to/repo/infra/ansible
$ ansible-playbook -i inventry.yaml --ask-become-pass setup_dns.yaml

DNSクライアントの設定

自宅サーバーの作業VM向けにDNSサーバーを利用するようにする。 この設定もansibleで管理している。

Terminal window
$ ansible-playbook -i inventry.yaml --ask-become-pass setup_dns_client.yaml

ラップトップ(macos)からは公式から提供されている手順(参考)で設定を行う。設定後はtailscaleのconnectionを一旦切って再接続かmacを再起動。

Expose API on public

自宅でホスティングしているAPIをインターネット公開する

ngrokの設定

Terminal window
$ # install
$ curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
| sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
&& echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
| sudo tee /etc/apt/sources.list.d/ngrok.list \
&& sudo apt update \
&& sudo apt install ngrok
$ # set token
$ ngrok config add-authtoken DUMMY

デプロイ

Terminal window
$ ngrok http http://YOUR_INTERNAL_API_DOMAIN --domain YOUR_NGROK_DOMAIN

Tips

Increase the size of disk

以下の記事を参考にディスクサイズを増やす。 https://malsan.hatenablog.com/entry/2024/06/15/010435