さくらVPSの初期設定(AlmaLinux編)

CentOS 7 のサポートが2024年7月で終了するということなので、さくらVPSで運用している kobalab.net のOSを AlmaLinux 9 に乗り換えます。ついでにVPSも交換することにしました。メモリ1GのモデルでSSDは100Gに増設します。

も参考に設定していきます。

起動とログイン

ネットから利用申請すると即座に VPSコントロールパネル からも見えるようになるので、早速起動します。

ユーザ alma と申請時に指定したパスワードでログインします。申請時に公開鍵暗号によるログインを指定していれば、ssh で(パスワードなしに)リモートログインすることもできます。

作業用ユーザの作成

ログインの際に使用したユーザ alma ですが、root の別名という訳ではなく「sudo 可能な作業用ユーザ」です。なのでこのまま作業を開始してもいいのですが、私の場合、長年ユーザ koba で作業していたので、このユーザを作成します。*1

$ sudo useradd koba
$ sudo passwd koba
$ sudo usermod -G wheel koba

公開鍵の登録

作成したユーザ koba でログインし直し、ssh の公開鍵を登録します。id_ed25519.pub に公開鍵を保存しているとすると以下のような操作となります。

$ mkdir ~/.ssh
$ cat id_ed25519.pub >> ~/.ssh/authorized_keys
$ chmod -R go-wrx ~/.ssh
$ rm id_ed25519.pub

ssh でのパスワードによるログインを禁止します。/etc/ssh/sshd_config の以下の行が有効になるよう修正します。

PasswordAuthentication no

sshd を再起動します。

$ sudo systemctl restart sshd

ユーザ alma の無効化

これでもはや初期ユーザの alma は不要となったので、ログインを禁止します。

$ sudo passwd -l alma

ユーザごと削除してもよいでしょう。

$ sudo userdel -r alma

visudo コマンドで設定を編集し、以下の行の alma を koba に置き換えます。これで alma のようにパスワードなしで sudo が使えるようになります。

alma    ALL=(ALL)       NOPASSWD: ALL

ファイアウォールの起動

さくらVPSの提供する「パケットフィルター」は使わず、OSのファイアウォール機能を使います。まず、firewalld を常駐させます。

$ sudo systemctl enable firewalld
$ sudo systemctl restart firewalld

現在のファイアウォールの設定を確認します。

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

ネットワークインタフェース名が eth0 → ens3 に変更されたようです。cockpit*2、dhcpv6-client、ssh のためのポートが開けられています。

swap領域の確保

さくらVPSの提供する AlmaLinux 9 ではswap領域は確保しておらず、利用者が自分の必要に応じた容量で確保する必要があります*3swapfileの追加 — さくらの VPS マニュアル を参考に設定を行います。

swap領域がとられていないことを確認します。

$ sudo swapon --show
$ free -h
               total        used        free      shared  buff/cache   available
Mem:           963Mi       273Mi       670Mi       5.0Mi       159Mi       690Mi
Swap:             0B          0B          0B

swapファイルを作成します。容量は 4G (= 4,096 M)としました。

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
$ sudo chmod go-wrx /swapfile
$ sudo mkswap /swapfile

swap領域として組み込みます。

$ sudo swapon /swapfile
$ free -h
               total        used        free      shared  buff/cache   available
Mem:           963Mi       281Mi        58Mi       5.0Mi       775Mi       681Mi
Swap:          4.0Gi          0B       4.0Gi

再起動時も /swapfile を有効とするために、/etc/fstab に以下の1行を追加します。

/swapfile none swap sw 0 0

再起動し、swap領域が有効なことを確認しておきましょう。

リポジトリの追加

EPEL からもパッケージをインストールできるようにしておきます。パッケージマネージャは yum の後継の dnf を使ってみます。

$ sudo dnf install -y epel-release

入力補完機能の導入

CentOSのときと比べてコマンド補完機能が劣っているので、入力補完のパッケージをインストールします。

$ sudo dnf install -y bash-completion

パッケージの最新化

運用開始後は機会がなくなるので、パッケージを全て最新化しておきます*4

$ sudo dnf update -y

終わったら再起動できることを確認しておきましょう。

*1:ユーザ名変更でもよかったかも

*2:Web画面でサーバー管理操作を行うツールだそうです

*3:これをやっておかないとメモリ不足で簡単にプロセスが死ぬのでお話になりません

*4:なぜかこの作業に失敗することが多いので、やり直しの効くタイミングでやっておきたいのです