vultr - Tokyo-NixOS/Tokyo-NixOS-Meetup-Wiki GitHub Wiki

NixOSをVultrにインストール

ISOの準備

VULTRでのアカウントを作ってから管理画面にログインします。

「Servers」の「ISO」タブに入ります。

「Add ISO」をクリックします、「Upload ISO from remote machine」画面に移動します。

テキストインプットにNixOSのISOへのリンク、https://nixos.org/releases/nixos/latest-iso-minimal-x86_64-linux、を入力し、「Upload」ボタンを押します。

アップロードが完成するには数分かかります。

VPSの準備

「Servers」の「deploy one」リンクをクリックします。

Server Location

利用するデータセンターを選択できます。

Server Type

「Custom ISO」の「My ISOs」からNixOSのISOを選択します。

Server Size

サーバのスペックによって価格が異なります。 「20 GB SSD」でもNixOSを十分使えます。

Additional Features

追加機能、変更なしで問題ないです。

Server Hostname & Label

nixosに設定するとわかりやすいです。

最後は「Deploy Now」をクリックして、VPSを作成します。

サーバーリストに戻って、「Status」が「Running」になるまで待ちます。

サーバー名をクリックして、サーバーの詳細ページを閲覧できます。

インストール

バーチャルコンソールでインストールできます。 サーバ詳細ページの「view the console」をクリックします。

ISOの読み込みが終わったら、自動的にrootアカウントに自動的ログインされます。

注意: ブラウザ内バーチャルコンソール、「noVNC」は特定なキーボードとバグをもっていて、打てない文字が発生する可能性があります。 ブラウザを実行するOS側にキーボードをアメリカキーボードに設定すれば問題なくすべての時を打てます。 リナックスの場合はsetxkbmap usコマンドでアメリカキーボードを設定できます、インストール終わりましたらsetxkbmap jpで日本語キーボードを戻せます。

パーティショニング

パーティショニングをシンプルにします:

  • スワップ: 2GB
  • /: 残りの領域

※ ニーズに合わせて調整できます。

ディスクは/dev/vdaになります。fdiskコマンドでパーティショニングを開始できます。

$ fdisk /dev/vda

パーティションテーブルを作成:

  • oを入力して、enterキーを押します

スワップの作成:

  • nを入力して、enterキーを押します(パーティションを新しく作る)
  • pを入力して、enterキーを押します(種類をprimary)
  • enterキーを押します(パーティション番号、デフォルトのまま)
  • enterキーを押します(初めてのセクター、デフォルトのまま)
  • +2Gを入力して、enterキーを押します
  • tを入力して、enterキーを押します(パーティション種類変更)
  • 82を入力して、enterキーを押します(swapに設定)

/パーティションの作成

  • nを入力して、enterキーを押します(パーティションを新しく作る)

  • pを入力して、enterキーを押します(種類をprimary)

  • enterキーを押します(パーティション番号、デフォルトのまま)

  • enterキーを押します(初めてのセクター、デフォルトのまま)

  • enterキーを押します(残り領域をすべて利用する)

  • pを入力して、enterキーを押して、パーティションテーブルを確認します

問題がなければ

  • wを入力して、enterキーを押して、パーティションテーブルを記録します

fdisk -lパーティションテーブルを確認できます。

ファイルシステムの作成

スワップの作成:

# mkswap /dev/vda1
# swapon /dev/vda1

メインパーティションにext4ファイルシステムを作成:

# mkfs.ext4 -L nixos /dev/vda2

/mntにマウント:

# mount /dev/disk/by-label/nixos /mnt

設定

NixOSの設定ファイルを生成します。

# nixos-generate-config --root /mnt

このコマンドでファイルは2つ生成されます

  • /mnt/etc/nixos/hardware-configuration.nix
  • /mnt/etc/nixos/configuration.nix

/mnt/etc/nixos/configuration.nixはNixOSのメイン設定ファイルとなります。

configuration.nix

自動的に生成されてファイル、インストールする前に編集します。

nanoで編集します:

# nano /mnt/etc/nixos/configuration.nix

ブートローダー

ブートローダーのインストール先を指定。

 # boot.loader.grub.device = "/dev/sda";

を下記に変更します:

 boot.loader.grub.device = "/dev/vda";

ホスト名

ホスト名の設定。

 # networking.hostName = "nixos"; # Define your hostname

を下記に変更します: (コメントを外す)

 networking.hostName = "nixos";

タイムゾーン

タイムゾーンを東京にします。

 # time.timeZone = "Europe/Amsterdam";

を下記に変更します:

 time.timeZone = "Asia/Tokyo";

SSH

SSHを有効にし、SSHキーアップロードするためにrootのログインを許可する。

 # services.openssh.enable = true;

を下記に変更します:

 services.openssh.enable = true;
 services.openssh.permitRootLogin = "yes";

インストール

次のコマンドでインストールを開始できます。

$ nixos-install

インストールが終わりますとrootユーザのパスワードを設定できます。 うまく設定できなかった場合は再度nixos-installを実行すれば大丈夫。

インストールが成功すれば、VULTRの管理画面のVPS詳細ページの「Settings」タブの「Remove ISO」ボタンをクリックして、ISOを取り出します。

ISO

自動でVPSが再起動されます。

インストール後

ssh-copy-idでSSHキーをアップロードします。

$ ssh-copy-id -i ./公開鍵へのパス  root@サーバIP

例:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub  [email protected]

NixOpsで管理

NixOpsはNixOSサーバ向けのDevOpsツールであります ChefやTerraformに似ているツールですが、NixOSの個性を活かして宣言型で再現性をもったデプロイメントを簡単にできます。

VPSと連動

サーバのコンフィグファイルをローカルマシンにコピーする:

$ scp [email protected]:/etc/nixos/configuration.nix ./
$ scp [email protected]:/etc/nixos/hardware-configuration.nix ./

ローカルのconfiguration.nixservices.openssh.permitRootLogin = "yes";をコメントアウトします。

none.logical.nixファイルを作成:

{
  network.description = "vultr vps";

  webserver = { config, pkgs, ... }: { 
    imports = [ 
      ./configuration.nix
    ];  
  };
}

none.physical.nixを作成:

{
  webserver =
    { config, pkgs, ... }:
    { 
      deployment = { 
        targetEnv  = "none";
        # サーバのIPに設定する
        targetHost = "1.2.3.4";
      };
    };
}

NixOpsのデプロイを作成

$ nixops create -d vultr none.logical.nix none.physical.nix

デプロイメントを開始

$ nixops deploy -d vultr
⚠️ **GitHub.com Fallback** ⚠️