Proxmox에서 NixOS 실행하기
NixOS를 처음 사용해 보면서 겪은 난관 중 하나는 제가 주로 사용하는 가상 머신 서버인 Proxmox에서 실행할 수 없다는 점이었습니다.
여러 차례 시행착오 끝에 Proxmox 컨테이너로 NixOS를 설치하는 방법을 알아냈습니다.
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 서버 시스템이 준비되었으며, 원하는 대로 자유롭게 설정할 수 있습니다.
참고 자료
글을 무작위로 읽기