🐧
さくらのクラウドでNixOSを使う
概要
さくらのクラウドではNixOSのパブリックアーカイブを提供していませんが、 スタートアップスクリプト と nixos-infect を使って、NixOSのサーバを作成できます。
ここではNixOSについては説明しません。
興味のある方は https://nixos.org を参照してください。
スタートアップスクリプト
このスタートアップスクリプトをサーバ作成時に使用すると、作成したサーバでNixOSが起動します。
サーバ作成時はパブリックアーカイブから Ubuntu Server 20.04.1 LTS 64bit
を選択してください。
#!/bin/bash
# @sacloud-name "nixos-infect"
# @sacloud-once
# @sacloud-desc https://github.com/elitak/nixos-infect
# @sacloud-require-archive distro-ubuntu distro-ver-20.04*
# @sacloud-text required shellarg maxlen=20 default=nixos-21.05 nix_channel 'Nix Channel'
NIX_CHANNEL=@@@nix_channel@@@
export DEBIAN_FRONTEND=noninteractive
mkdir -p /root/.ssh
cat /home/ubuntu/.ssh/authorized_keys > /root/.ssh/authorized_keys
chmod 644 /root/.ssh/authorized_keys
keys=$(sed -E 's/^.*((ssh|ecdsa)-[^[:space:]]+)[[:space:]]+([^[:space:]]+)([[:space:]]*.*)$/\1 \3\4/' "/root/.ssh/authorized_keys")
mkdir -p /etc/nixos
cat <<EOF > /etc/nixos/host.nix
{pkgs, ...}:
{
environment.systemPackages = with pkgs; [ vim ];
users.groups.nixos = {
name = "nixos";
members = [ "nixos" ];
};
users.users.nixos = {
description = "NixOS User";
name = "nixos";
group = "nixos";
extraGroups = [ "users" "wheel" ];
password = "nixos";
home = "/home/nixos";
createHome = true;
useDefaultShell = true;
isNormalUser = true;
openssh.authorizedKeys.keys = [$(while read -r line; do echo -n "
\"$line\" "; done <<< "$keys")
];
};
}
EOF
chmod 644 /etc/nixos/host.nix
curl https://raw.githubusercontent.com/elitak/nixos-infect/master/nixos-infect | NIXOS_IMPORT=./host.nix NIX_CHANNEL=$NIX_CHANNEL bash
host.nix
を必要に応じて変更することで最初からWebサーバやデータベースなどのミドルウェアが起動した状態にすることもできます。
設定について詳しくは NixOS Manual - Part II. Configuration を参照してください。
Discussion