Install NixOS on a Free Oracle Cloud VM

Michael Lynch

無料のOracle Cloud VMにNixOSをインストールする

Oracleは、クラウドホスティングサービスとしてはあまり人気がありません。しかし、非常に魅力的な無料ティアを提供しています。次の2台のVMを、24時間365日無料で動かせます。

  • 2 CPU/12 GB RAMのAmpere A1 ARM VM
  • 1 CPU/1 GB RAMのAMD CPU VM

更新(2026-07-04):これを最初に書いた2025年当時、OracleはARM CPUを4基、RAMを24 GB提供していました。その後、半分に減らされてしまったため、以前ほどお得な話ではありません。

課題:Oracle Cloud VMにNixOSをインストールする

OracleはVM用OSの選択肢としてNixOSを提供していません。また、NixOSのイメージをアップロードしても動作しないという報告も読んでいます。

OracleのARM VMにNixOSをインストールするチュートリアルいくつか見つけましたが、どれも複雑で、手作業がかなり必要に見えました。

Prithu Goswamiは、netboot経由でNixOSインストーラーを使うという巧妙な近道を考案しました。これなら作業が簡単になります。Prithuの説明はかなり簡潔だったので、ここではその方法を最初から最後まで詳しく紹介することにしました。

更新(2026-03-04):Erik Parawellがガイドを書いており、私のガイドで必要だった手作業の一部を省けます。ただし、私はまだ彼の方法を自分では試していません。

必要なもの

前提条件は特にありません。ローカルシステムにSSHクライアントがあれば大丈夫です。

  • ssh

ステップ1:Oracle Cloudアカウントを取得する

このステップについては、残念ながらあまりお手伝いできません。数か月前に済ませたため、手順を覚えていないのです。

ただ、クラウドサービスを使おうとする前から、Oracleが不透明な理由で私のアカウントを何度も閉鎖してきたことは覚えています。アカウントを復旧してもらうには、サポートにメールを送らなければなりませんでした。

無料ティアのVMを作成できるのはホームリージョンだけです。また、どのリージョンに最も多くのキャパシティがあるのかは分かりません。

私はホームリージョンとしてUS-ASHBURNを選びました。ここでは無料ティアのVMを利用できます。

ステップ2:無料ティアのVMを作成する

Oracle Cloudアカウントにログインしたら、無料VMを作成します。

  1. Create compute instanceに移動します。
  2. 名前を好きなものに変更します。
  3. 「Image and shape」で、イメージとしてUbuntu > Canonical Ubuntu 24.04 Minimal aarch64を選びます。
  4. 「Image and shape」でシェイプにVM.Standard.A1.Flexを選び、OCPUの数を2に増やします。RAMは自動的に12 GBへ更新されるはずです。

イメージとシェイプの画面は、次のようになります。

「Shape」の表示料金が$0になっていることを確認します。

:Oracleはブートボリュームに月額2ドルかかると表示します。しかし、私が読んだ情報によると、無料ティアには200 GBのブートボリュームストレージが含まれているため、この見積もりはバグです。とはいえ、これほど高性能なVMなら、月2ドル払っても構いません。

「Add SSH keys」で、SSH公開鍵をアップロードします。

最後に「Create」をクリックしてVMを作成します。

ステップ3:SSHでログインする

VMの状態がrunningになるまで待ちます。

VMが起動したら、ローカルシステムでターミナルを開きます。

VMのパブリックIPアドレスをコピーします。

VM_IP='1.2.3.4' # Replace with your VM's IP.

SSH鍵を使って、作成したばかりのVMにSSH接続します。

ssh "ubuntu@${VM_IP}"

ステップ4:netbootをダウンロードする

VMへのSSHセッションから、他のOSをインストールするための最小構成のメタOSであるnetbootをダウンロードします。

まず、rootユーザーに切り替えます。

sudo su

netbootのARM64イメージを/boot/efi/netboot.efiにダウンロードします。

wget https://boot.netboot.xyz/ipxe/netboot.xyz-arm64.efi && \
  sudo install \
    --owner=root \
    --group=root \
    --mode=664 \
    netboot.xyz-arm64.efi \
    /boot/efi/netboot.efi

ステップ5:Cloud Shellを使ってEFIブートマネージャーを起動する

WebブラウザーでOracle CloudのインスタンスのVMページに戻ります。

「OS management」をクリックします。

下へスクロールして、「Launch Cloud Shell connection」をクリックします。

Cloud Shellの初期化が完了すると、次の行が表示されます。

Instance Console Connection reached state: ACTIVE

:次の2つの手順は、続けて素早く実行する必要があります。間に合わなくても、SSHでログインしてもう一度試せます。

SSHセッションからVMを再起動します。

reboot

すぐにブラウザーのCloud Shellへ切り替えます。リモート画面をクリックし、システムの再起動中にキーボードのEscapeキーを何度も押し続けます。

うまくいけば、EFIブートマネージャーが表示されます。

ブート画面で、Boot Manager > EFI Internal Shellへ移動します。

任意のキーを押してstartup.nshをスキップします。

EFI Shellのプロンプトで、次のように入力します。

fs0:netboot.efi

netbootが起動したら、次のオプションを選びます。

  1. Distributions > Linux Network Installs (arm64)
  2. NixOS
  3. NixOS nixos-24.11

するとnetbootがNixOSのライブインストーラーを起動します。

ステップ7:NixOSインストーラーへのSSHアクセスを設定する

netbootでNixOSを選ぶと、パスワード入力なしで自動的にnixosユーザーとしてログインするはずです。

残りの手順はCloud Shellからでも実行できますが、普段使っているターミナルからSSH接続できるほうが簡単でしょう。

残念ながら、NixOSインストーラーはVM作成時にアップロードしたSSH公開鍵を認識しません。そのため、SSH鍵をもう一度VMに配置する必要があります。

SSH鍵をGitHubに登録しているなら、次のコマンドを実行するのが簡単です。

GITHUB_USERNAME='your-github-username'
mkdir -p ~/.ssh && \
  curl "https://github.com/${GITHUB_USERNAME}.keys" > ~/.ssh/authorized_keys

あるいは、SSH公開鍵を~/.ssh/authorized_keysに直接貼り付けても構いません。

SSH鍵を配置できたら、普段使っているターミナルに戻り、今度はNixOSのインストール環境へSSH接続します。

ssh "nixos@${VM_IP}"

ステップ8:クラウドVMのディスクを再パーティションする

ここまででNixOSのインストーラーに入っていますが、ディスクにはまだUbuntuがインストールされています。NixOS用にディスクを消去して、パーティションを切り直す必要があります。

VMへのSSHセッションからrootに切り替えます。

sudo su

次に、一時ディレクトリへ移動します。

cd "$(mktemp --directory)"

ここで、私が作成したディスク設定ファイルをダウンロードします。この設定では、ブートパーティションに500 MBを確保し、残りのディスクをNixOSに使用します。

curl \
  --show-error \
  --fail \
  https://mtlynch.io/notes/nix-oracle-cloud/disk-config.nix \
  > disk-config.nix

次に、diskoを使って、ディスクのパーティション設定をVMのディスクに適用します。

nix \
  --experimental-features 'nix-command flakes' \
  run \
  github:nix-community/disko/v1.11.0 \
  -- \
  --mode destroy,format,mount \
  disk-config.nix

確認を求められたら、すべてのデータを削除することに「yes」と答えます。

ステップ9:NixOSをインストールする

これでディスクのパーティションが新しく作成されました。NixOSをインストールする準備が整っています。

まず、仮の設定を生成します。

nixos-generate-config --no-filesystems --root /mnt

前のステップで作成したディスク設定を、他のNixOS設定ファイルがある/mnt/etc/nixos/へ移動します。

mv disk-config.nix /mnt/etc/nixos/

次に、このOracle Cloud VM用に私が用意したNix設定ファイルをダウンロードします。

curl \
  --show-error \
  --fail \
  https://mtlynch.io/notes/nix-oracle-cloud/configuration.nix \
  > /mnt/etc/nixos/configuration.nix && \
  curl \
    --show-error \
    --fail \
    https://mtlynch.io/notes/nix-oracle-cloud/vars.nix \
    > /mnt/etc/nixos/vars.nix

変更する可能性が高い値は、vars.nixというファイルに分離しています。

{
  hostname = "cloudnix";        # Replace with your desired hostname.
  username = "mike";            # Replace with your desired username.
  sshKey = "ssh-rsa AAAAB3..."; # Replace with your SSH public key.
  locale = "en_US.UTF-8";
  timezone = "America/New_York";
}

vars.nixをダウンロード

vars.nixを開き、希望する値に変更します。

nano /mnt/etc/nixos/vars.nix

configuration.nixも自由に編集して構いません。初回のインストールが終わってからファイルを変更することもできます。

configuration.nixvars.nixをカスタマイズしたら、NixOSのインストールを開始します。

nixos-install --no-root-password

インストールが完了したら、VMを再起動します。

shutdown --reboot now

ステップ10:新しいNixOSシステムにログインする

初回起動には1分ほどかかります。準備ができたらターミナルを開き、先ほどと同じIPアドレスを使ってSSH接続します。

ssh "${VM_IP}"

これで完了です。Oracleのクラウド上で動作する無料の4 CPU VMに、NixOSをインストールできました。

neofetchを実行すると、次のスクリーンショットのような出力が表示されるはずです。

nix-shell -p neofetch --command neofetch

ステップ11:(オプション)パッケージをインストールする

ここまでで作業はすべて完了していますが、NixOSの設定が正常な状態か確認するために、何か試してみてもよいでしょう。

テキストエディターでconfiguration.nixを開きます。

sudo nano /etc/nixos/configuration.nix

environment.systemPackagesの設定を探し、リストにffmpegを追加してみます。

curl
ffmpeg  # Add this line
git
vim

次に、nixos-rebuildで設定を適用します。

sudo nixos-rebuild switch

これで、システム上でffmpegを利用できることが確認できます。

$ ffmpeg -version | head -n 2
ffmpeg version 7.1 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 13.3.0 (GCC)

原文は Michael Lynch により に公開されました。

この記事は「gpt-5.6-terra」を使用して翻訳されました。