計算に使っていた古いPCのSSDが「Offline_Uncorrectable」を表示されるようになり、SSDの寿命かも・・・という状況に陥った。色々と値段が高騰している時期にとボヤキながら、出来る限り安いSSDを買ってきてOSからセットアップしたのでメモ。他にもファイヤーウォール設定あたりもありますが、まずは最低限の開発環境を構築しました。
- 対象OS
- SSHをインストール
- Docker & Docker Compose のインストール
- NVIDIA Container Toolkit のインストール
- Dockerのランタイム設定
- Dockerの動作確認
- SSHのパスフレーズを一度だけ入力するようにする。
- Node.jsをnvmで
対象OS
Ubuntu 26.04 LTS
SSHをインストール
sudo apt update
sudo apt -y install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl sutatus ssh
Windows側(クライアント側)
ssh-keygen -t ed25519 -C "your_email@example.com"
pubキーを作ります。秘密キーは所定の場所に保存します。
Ubuntu側(サーバー)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
pubキーを追記します。
パスワード無効化も必要ならば。
Docker & Docker Compose のインストール
公式リポジトリから入れます。# 古いバージョンを削除(念のため)
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done# セットアップ
sudo apt-get update
sudo apt-get install -y 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# リポジトリ追加
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# sudoなしで実行できるように設定(要再ログイン)
sudo usermod -aG docker $USER
uv (Python Package Manager) のインストール
# uvのインストール
curl -LsSf https://astral.sh/uv/install.sh | sh
特定のバージョン(例: 3.12)をインストールしテスト
# テスト用の適当なディレクトリでuv python install 3.12uv venv # 仮想環境の作成
自動化ワンライナー(まとめ)
例えば、一気に実行したい場合は、以下の内容を setup.sh として保存して実行。#!/bin/bash
set -eecho "Updating system..."
sudo apt update && sudo apt upgrade -yecho "Installing Docker..."
sudo apt install -y 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
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USERecho "Installing uv..."
curl -LsSf https://astral.sh/uv/install.sh | shecho "Setup complete. Please logout and login again to reflect Docker group changes."
NVIDIA Container Toolkit のインストール
NVIDIAドライバの確認
ツールキットを入れる前に、ホスト側にドライバが入っている必要があります。
nvidia-smi
sudo ubuntu-drivers install
sudo reboot
NVIDIA Container Toolkit のインストール
# リポジトリのGPGキーとリストを追加
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /etc/apt/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=/etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list# インストール
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
Dockerのランタイム設定
DockerがNVIDIA GPUを認識できるように設定を書き換えます。# Dockerのランタイムとしてnvidiaを構成sudo nvidia-ctk runtime configure --runtime=docker# 設定を反映させるためにDockerを再起動sudo systemctl restart docker
Dockerの動作確認
最後に、コンテナ内からGPUが見えるかテストします。docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
NVIDIA Dockerの「デフォルト化」
毎回 --runtime=nvidia を打つのは手間なので、daemon.json を書き換えて、常にNVIDIAを使うようにしてみる。
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
sudo systemctl restart docker
SSHのパスフレーズを一度だけ入力するようにする。
Windows側ssh-addで
ssh-add C:\{Users\myusername}\.ssh\id_ed25519"
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent
sudo apt install keychain -y
if command -v keychain >/dev/null 2>&1; then
eval $(keychain --eval --quiet ~/.ssh/id_ed25519)
fi
Node.jsをnvmで
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash