2025年8月13日
個人的Ubuntu24.04 Serverセットアップメモ
前回 個人的Ubuntu24.04 Desktopセットアップメモ を書きましたが、結局 Ubuntu Server に切り替えたのでその時のメモ。
環境
- Ubuntu 24.04 Server
- Ryzen 7 3700X
- メモリ 32GB
- NVIDIA GeForce RTX 2070
なんで Server 版にしたのか
ローカル LLM とかを動かすサーバとして運用したくなった。Desktop 版のままでも良いかもとは思ったが、RDP 切断時に常時起動するはずの(ユーザ権限で動いている)systemd service が止まっちゃったり若干不安要素があったのと、GUI 環境は MacBook でいいやってことで、サーバ用途専用にしようと決めた。
やったこと
SSH 設定
いつもの。
内容としては cloud-init で実施する SSH サーバー設定まとめ #Ubuntu - Qiita に書いた内容と同じ。今回は手でやったけど。
ssh-import-id
: Server の初期起動時に聞かれたのでそこでやった- パスワード認証の禁止
- root ログインを禁止
- SSH のポート変更
Nvidia ドライバ導入
nouveau と nvidiafb を無効化して nvidia ドライバを導入。
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf echo "blacklist nvidiafb" | sudo tee /etc/modprobe.d/blacklist-nvidiafb.conf sudo update-initramfs -u ubuntu-drivers devices sudo apt update sudo apt install nvidia-driver-575
画面オフの時間の設定
/etc/default/grub
を編集して、画面オフまでの時間を10分に設定。
GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=600"
sudo update-grub sudo reboot cat /sys/module/kernel/parameters/consoleblank
LVM の拡張
Ubuntu Server のセットアップウィザードに従ってインストールした直後の状態だと LVM の論理ボリュームが 100 GB になっている。100 GB では少なすぎるのでいったん 200 GB にして、様子を見る。
sudo lvextend -L 200G /dev/ubuntu-vg/ubuntu-lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to 200.00 GiB (51200 extents). Logical volume ubuntu-vg/ubuntu-lv successfully resized.
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required old_desc_blocks = 13, new_desc_blocks = 25 The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 52428800 (4k) blocks long.
Nvidia Container Toolkit 導入
Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1 sudo apt install -y \ nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
K3s の設定
ラズパイで k3s で Kubernetes クラスタを組んでいるので、agent ノードとして参加させた。手順は ラズパイでK3sクラスター構築【24.04対応】 に書いてある内容とほぼ同じ。
Nvidia Container Runtime が認識されているかを確認しておく。
# k3sインストール後にNvidia Container Toolkitを入れた場合は再起動する # sudo systemctl restart k3s-agent sudo grep nvidia /var/lib/rancher/k3s/agent/etc/containerd/config.toml
次のように出力されれば大丈夫なはず(Nvidia Container Toolkitを入れる前は何も出なかった)。
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.'nvidia'] [plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.'nvidia'.options] BinaryName = "/usr/bin/nvidia-container-runtime"
Docker
本番環境用のワークロードとしての K3s とは別に、検証用途でコンテナをぽんと立てたい時は多々ある。 いつも通り Ubuntu | Docker Docs に従ってインストール。
# Add Docker's official GPG key: sudo apt update sudo apt install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
ツール系
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo >> /home/$USER/.bashrc echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/$USER/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
brew install volta volta install node@24 # nodeのパスが通っていなかったのでvolta setupしてターミナルを一回閉じる # volta setup # exit
node -v volta install corepack corepack enable pnpm pnpm -v
brew install ghq echo 'export GHQ_ROOT=~/projects' >> /home/$USER/.bashrc
brew install pipx brew install uv pipx install poetry
wget --content-disposition https://go.microsoft.com/fwlink/?LinkID=760868 sudo apt install ./<file>.deb
Remote tunnels の設定
code tunnel service install sudo loginctl enable-linger $USER
GitHub Actions をローカルで実行する
brew install act
開発環境用のオレオレ証明書発行するやつ
brew install mkcert # ルート証明書の発行 mkcert -install
AI 系
brew install gemini-cli brew install --cask claude-code
おわりに
ローカル LLM サーバ構築は別記事にまとめます。