💭

Fedora40 検証サーバを作るときに最初にやること

2024/06/30に公開

お家の検証サーバ用の備忘録です。基本 root です。

Proxmox 上の仮想サーバとして構築します。

仮想マシンの設定

基本的に全て任意(既定値)ですが、QEMU エージェントは有効にしておきます。

また、CPUコアは 2 コアを割り当てておきます。

OSインストール設定

言語は 英語(English(United States)) を選択します。日本語だと FreeIPA サーバ(pki-tomcatd)のインストールが失敗したので。

LOCALIZATION は、日本語キーボードと日本語サポートを選択しておきます。Time & Date は自動的に Asia/Tokyo に設定されるはずです。

SOFTWARE では、ベースの環境を Fedora Server Edition を選択し、以下の項目を選択します。

  • Domain Membership: FreeIPA Client がインストールされます。
  • ゲストエージェント: Qemu Guest Agent がインストールされます。

SYSTEM では、インストール先をローカルドライブに自動構成とします。ネットワークとホスト名は、後ほど変更するのでデフォルトのままとします。

root は無効のままとし、wheel グループのユーザーを作成します。

アップデートとバックアップの作成

ローカルコンソールにてアップデートを実行します。

dnf -y update
poweroff

この時点で Proxmox でバックアップを取得しておき、ベースイメージとします。

公開鍵認証の設定

初回ログイン時はパスワードでログインし、以下のコマンドを実行します。※入力待ちになります

mkdir -m 700 .ssh
# 入力待ちになるので、公開鍵を貼り付けて Ctrl+D する
cat > .ssh/authorized_keys

操作端末で以下のコマンドを実行します。

Get-Content "$home\.ssh\id_ed25519.pub" | % { $_ + "`n" } | Set-Clipboard

入力待ちのコンソールに貼り付けて、Ctrl+D を押下します。※入力イメージです。

cat > .ssh/authorized_keys
ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxx username@hostname
chmod 600 .ssh/authorized_keys

sudo のパスワード省略設定

root になるときも初回はパスワード入力します。

sudo su -

wheel グループのユーザはパスワード無しで sudo できるように設定します。

echo '%wheel ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/wheel

必要に応じてパスワード認証を無効化する。

echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config
systemctl restart sshd

systemd-resolved の停止

NetworkManager で管理しますので、systemd-resolved は停止します。

systemctl stop systemd-resolved
systemctl disable systemd-resolved
rm -f /etc/resolv.conf
systemctl restart NetworkManager

ファイルシステムの拡張

インストール直後はファイルシステムに割り当てられている容量が少ないので拡張しておきます。

LVPath=$(lvdisplay -c | awk -F: '{print $1}')
lvextend -l +100%FREE $LVPath
xfs_growfs $LVPath

ホスト名とネットワークの設定

FreeIPA ドメインに参加する場合は FQDN 形式で設定する必要があります。ゲートウェイとDNSはホームルーターの初期値をそのまま使います。

ホスト名はIPアドレスを元に機械的に設定します(すぐ潰すことが多いので。。。)

read -p 'IP Address?> ' IP
read -p 'Domain?> ' Domain
GW=192.168.1.1
DNS=192.168.1.1
nmcli con mod ens18 ipv4.address ${IP}/24
nmcli con mod ens18 ipv4.gateway $GW
nmcli con mod ens18 ipv4.dns $DNS
nmcli con mod ens18 ipv4.method manual

VERSION_ID=$(cat /etc/os-release | awk -F= '/VERSION_ID/{print $2}')
Name=$(echo $IP | sed 's/.*\.//')-fedora$VERSION_ID
Domain=$Domain
hostnamectl hostname $Name.$Domain

reboot

hostsの設定

自分自身の名前解決をできるようにしておきます。

echo $(hostname -I) $(hostname) $(hostname -s) >> /etc/hosts
GitHubで編集を提案

Discussion