vultr - Tokyo-NixOS/Tokyo-NixOS-Meetup-Wiki GitHub Wiki
VULTRでのアカウントを作ってから管理画面にログインします。
「Servers」の「ISO」タブに入ります。
「Add ISO」をクリックします、「Upload ISO from remote machine」画面に移動します。
テキストインプットにNixOSのISOへのリンク、https://nixos.org/releases/nixos/latest-iso-minimal-x86_64-linux
、を入力し、「Upload」ボタンを押します。
アップロードが完成するには数分かかります。
「Servers」の「deploy one」リンクをクリックします。
利用するデータセンターを選択できます。
「Custom ISO」の「My ISOs」からNixOSのISOを選択します。
サーバのスペックによって価格が異なります。 「20 GB SSD」でもNixOSを十分使えます。
追加機能、変更なしで問題ないです。
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のメイン設定ファイルとなります。
自動的に生成されてファイル、インストールする前に編集します。
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キーアップロードするためにrootのログインを許可する。
# services.openssh.enable = true;
を下記に変更します:
services.openssh.enable = true;
services.openssh.permitRootLogin = "yes";
次のコマンドでインストールを開始できます。
$ nixos-install
インストールが終わりますとrootユーザのパスワードを設定できます。
うまく設定できなかった場合は再度nixos-install
を実行すれば大丈夫。
インストールが成功すれば、VULTRの管理画面のVPS詳細ページの「Settings」タブの「Remove ISO」ボタンをクリックして、ISOを取り出します。
自動でVPSが再起動されます。
ssh-copy-id
でSSHキーをアップロードします。
$ ssh-copy-id -i ./公開鍵へのパス root@サーバIP
例:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
NixOpsはNixOSサーバ向けのDevOpsツールであります ChefやTerraformに似ているツールですが、NixOSの個性を活かして宣言型で再現性をもったデプロイメントを簡単にできます。
サーバのコンフィグファイルをローカルマシンにコピーする:
$ scp [email protected]:/etc/nixos/configuration.nix ./
$ scp [email protected]:/etc/nixos/hardware-configuration.nix ./
ローカルのconfiguration.nix
のservices.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