ProxmoxでNixOSを動かす
原文は Michael Lynch により に公開されました。 このブログを購読する
NixOSを試そうとした際にぶつかった壁の一つが、愛用している仮想マシンサーバーであるProxmox上で動かせないことでした。
試行錯誤の末、NixOSをProxmoxコンテナとしてインストールする方法を見つけました。
NixOSコンテナイメージをダウンロードする
まず、最新のNixOS x86_x64 lxdContainerImageイメージをダウンロードします。別のハードウェアアーキテクチャの場合は、こちらのGitHubコメントを参照してください。
proxmoxLXC.x86_64-linuxというビルドもあります。Proxmoxでよりうまく動くことを期待しましたが、こちらは壊れているようです。NixOS自体は起動するものの、標準的なNixOSの認証情報(nixos、root)ではログインできません。執筆時点での最新のNixOSコンテナビルドは275970650ですが、読んでいる時点での最新ビルドをクリックすれば問題ありません。

ビルド結果ページで、nixos-system-x86_64-linux.tar.xzと表示されたリンクをクリックしてイメージをダウンロードします。

イメージをProxmoxにアップロードする
次に、イメージをProxmoxにアップロードします。Proxmoxのストレージノードのいずれかまでスクロールしてください。
使用したいストレージノードをクリックします。デフォルトはlocalですが、他にもあるかもしれません。

ストレージノードの画面で「CT Templates」をクリックし、次に「Download from URL」をクリックします。

NixOSコンテナイメージのダウンロードにはバージョンや日付の情報が含まれていません。整理のために、私はイメージファイルを次のようにリネームしました。
nixos-2024-10-21-lxdContainerImage.x86_64-linux.tar.xz
リネームしておくと、後でProxmox上でこのNixOSのバージョンを識別しやすくなりますが、この手順は任意です。

「Download」をクリックして、テンプレートをProxmoxにダウンロードします。
NixOSコンテナを作成する
次のステップでは、ProxmoxシステムにSSHで接続し、rootユーザーに切り替えます。
ssh root@pveProxmoxのSSHセッションから、新しいNixOSコンテナの設定を選択します。
# Where the template file is located
TEMPLATE_STORAGE='local'
# Name of the template file downloaded from Hydra.
TEMPLATE_FILE='nixos-2024-10-21-lxdContainerImage.x86_64-linux.tar.xz'
# Name to assign to new NixOS container.
CONTAINER_HOSTNAME='nixos'
# Which storage location to place the new NixOS container.
CONTAINER_STORAGE='local'
# How much RAM to assign the new container.
CONTAINER_RAM_IN_MB='8192'
# How much disk space to assign the new container.
CONTAINER_DISK_SIZE_IN_GB='80'これらの設定ができたら、pct createで新しいNixOSコンテナを作成します。
pct create "$(pvesh get /cluster/nextid)" \
--arch amd64 \
"${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE_FILE}" \
--ostype unmanaged \
--description nixos \
--hostname "${CONTAINER_HOSTNAME}" \
--net0 name=eth0,bridge=vmbr0,ip=dhcp,firewall=1 \
--storage "${CONTAINER_STORAGE}" \
--memory "${CONTAINER_RAM_IN_MB}" \
--rootfs ${CONTAINER_STORAGE}:${CONTAINER_DISK_SIZE_IN_GB} \
--unprivileged 1 \
--features nesting=1 \
--cmode console \
--onboot 1 \
--start 1NixOSにログインする
NixOSコンテナの設定が完了し、実行されているはずです。
戸惑うかもしれませんが、新しいコンテナのConsoleタブを開いても、黒い画面が表示されるだけです。

「Enter」キーを押すと、通常のNixOSプロンプトが表示されるはずです。ユーザー名rootで、パスワードなしでログインできます。

NixOSへのSSHアクセスを取得する
奇妙なことに、NixOSコンテナイメージに付属のconfiguration.nixファイルは正常に動作しません。nixos-rebuildを実行しようとすると、lxd.nixファイルが見つからないというエラーが表示されます。仮にそれを修正しても、他にもsystemd関連のエラーが発生します。
それらを修正する前に、SSHアクセスを確保しておくと作業が楽になります。私が見つけた最も簡単な方法は、SSHキーをシステムにダウンロードすることです。SSHキーを登録したGitHubアカウントをお持ちの場合は、次のように実行できます。
GITHUB_USERNAME='your-github-username' # Replace this.
mkdir -p ~/.ssh && \
curl "https://github.com/${GITHUB_USERNAME}.keys" > ~/.ssh/authorized_keysこれで、ssh root@nixosでNixOSシステムにSSH接続できるようになるはずです。
NixOSを設定する
Proxmoxコンテナ用のNixOSサーバーシステム向けの基本的な設定を用意しました。次のコマンドを実行すると、この設定をダウンロードできます。
curl \
--show-error \
--fail \
https://mtlynch.io/notes/nixos-proxmox/configuration.nix \
> /etc/nixos/configuration.nix次のコマンドを実行して、新しい設定を適用します。
nix-channel --update && \
nixos-rebuild switch --upgrade && \
echo "install complete, rebooting..." && \
poweroff --rebootこれで基本的なNixOSサーバーシステムが用意できました。あとはお好みに合わせて自由に設定できます。
参考文献
記事をランダムに読む
コメント
ログインしてコメントする