Ubuntu ホームサーバー完全構築2026 — 自宅NAS+VPN+メディアサーバー

サーバー構築

注意

本記事のコマンドは Ubuntu 24.04 LTS(Noble Numbat)で検証しています。バージョンが異なるとパッケージ名やオプションが変わる場合があります。docker.io 29.1.3Samba 4.19.5WireGuard 1.0.20210914Jellyfin 最新版(2026-06-13 時点)を使用しています。

自宅に余ったPCやミニPCがあるなら、Ubuntu を入れてホームサーバーにしてみませんか。

ひとつのマシンに NAS(ファイル共有)・VPN(外出先からのアクセス)・メディアサーバー(動画ストリーミング) を同居させることは、今の Ubuntu 24.04 LTS と Docker の組み合わせで現実的に実現できます。月額のクラウドストレージ代もVPNサービス代も、まとめてゼロにできるのが自宅サーバーの最大の魅力です。

本記事では、Ubuntu 24.04.4 LTS で実際にパッケージをインストールして取得したバージョン情報・コマンド出力を記事の核にしています。「手順通りにやったら動いた」という体験をそのまま伝えることを目標にしました。

この記事のポイント

  • Ubuntu 24.04.4 LTS で実測:docker.io 29.1.3Samba 4.19.5WireGuard 1.0.20210914 がaptで一発導入可能
  • NASは Samba(Windows/Mac向け)か NFS(Linux向け)を用途で使い分ける
  • VPNは WireGuard が圧倒的に設定が簡単。鍵ペアを生成してconfを書くだけ
  • メディアサーバー Jellyfin は Docker 1コマンドで起動し、ブラウザから初期設定できる
  • UFW でポートを絞ってから外に公開する手順も解説

動作確認済み環境

項目 詳細
OS Ubuntu 24.04.4 LTS(Noble Numbat)— docker run –rm ubuntu:24.04 で実確認
Docker docker.io 29.1.3-0ubuntu3~24.04.2(apt リポジトリから取得)
Samba 2:4.19.5+dfsg-4ubuntu9.6(smbd –version で 4.19.5-Ubuntu を確認)
NFS nfs-kernel-server 1:2.6.4-3ubuntu5.1
WireGuard 1.0.20210914-1ubuntu4(wireguard-tools)
Jellyfin 公式 Docker イメージ(sha256:aefb67e6a7ff1debdd…)2026-06-13 取得
検証日 2026-06-13
Ubuntu 24.04 ホームサーバー主要パッケージ バージョン確認(実測)
Ubuntu 24.04 ホームサーバー主要パッケージ バージョン確認(実測)

自宅サーバーに必要なもの

まずはハードウェアと回線について整理します。「何でも最新スペックが必要」ということはなく、RAM 4GB 以上・ストレージ 500GB 以上のミニPC があれば今回紹介する構成は十分動きます。

推奨ハードウェアスペック

役割 最低スペック 快適スペック 補足
NAS(ファイル共有) CPU 2コア / RAM 2GB RAM 4GB+ Sambaは軽量。同時接続5台程度なら2GBで十分
VPN(WireGuard) CPU 1コア / RAM 512MB どんなPCでも可 WireGuardはカーネルレベルで動くため非常に軽い
メディアサーバー(Jellyfin) CPU 4コア / RAM 4GB CPU 8コア / RAM 8GB+ ソフトウェアトランスコードは重い。H.264ダイレクト再生なら軽量
全機能同居 RAM 8GB / SSD 256GB RAM 16GB / HDD 2TB+ ミニPC(Intel N100等)でも動作可能

回線について

  • LAN(有線)は 1 Gbps 推奨。Wi-Fiでも動くが、NASのファイル転送が遅くなる
  • 外出先から VPN でアクセスするなら、プロバイダーからグローバルIPが割り当てられているか確認する
  • 固定グローバルIPがない場合は DDNS(Dynamic DNS)サービスを使う

Ubuntu Server 24.04 LTS のインストール

デスクトップ版でも構いませんが、サーバー用途なら Ubuntu Server 24.04 LTS がおすすめです。GUIがない分メモリ消費が少なく、起動も早いです。

手順1:USBブートメディアを作成する

公式サイト(ubuntu.com)から Ubuntu Server 24.04 LTS の ISO をダウンロードし、balenaEtcherRufus(Windows)でUSBに書き込みます。サーバーPCのBIOSでUSBブートを優先にして起動してください。

手順2:インストールウィザードを進める

インストーラーの途中で「OpenSSH server をインストールする」にチェックを入れます。これで インストール直後からSSH接続が可能 になり、あとの作業はすべてリモートから行えます。

ストレージ設定の注意点

「Use an entire disk」(ディスク全体を使う)を選ぶ場合、既存のデータはすべて消えます。ストレージの中身をあらかじめバックアップしてから作業してください。

手順3:SSHで接続し初期設定をする

インストール完了後、別のPCのターミナルから SSH 接続します。




あなたのPC: ~
$ ssh ubuntu@192.168.1.100
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-60-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
Last login: Fri Jun 13 12:00:00 2026 from 192.168.1.50
ubuntu@homeserver:~$ sudo apt update && sudo apt upgrade -y
Get:1 http://jp.archive.ubuntu.com/ubuntu noble InRelease [256 kB]
Reading package lists… Done
0 upgraded, 0 newly installed, 0 to remove and 0 not changed.

SSH鍵認証の設定(セキュリティの最優先事項)

パスワード認証のままサーバーをインターネットに公開すると、ブルートフォース攻撃を受けます。鍵認証に切り替えてパスワード認証を無効化するのを最初にやることです。

ホームサーバー SSH鍵生成(Ubuntu 24.04 LTS 実測)
ホームサーバー SSH鍵生成(Ubuntu 24.04 LTS 実測)

実際に Ubuntu 24.04 コンテナで ssh-keygen -t ed25519 を実行すると、OpenSSH_9.6p1 Ubuntu-3ubuntu13.16 が使用されます。ED25519 鍵は RSA より短く・安全で、現在の標準的な選択肢です。




あなたのPC: ~ (手元PCで実行)
$ ssh-keygen -t ed25519 -C “homeserver@linuxlab”
Generating public/private ed25519 key pair.
Enter file in which to save the key: ~/.ssh/homeserver_key
Your identification has been saved in /home/user/.ssh/homeserver_key
$ ssh-copy-id -i ~/.ssh/homeserver_key.pub ubuntu@192.168.1.100
Number of key(s) added: 1
Now try logging into the machine, with: “ssh ubuntu@192.168.1.100”

鍵をサーバーに登録したら、パスワード認証を無効化します。




ubuntu@homeserver: ~
$ echo ‘PasswordAuthentication no’ | sudo tee /etc/ssh/sshd_config.d/hardening.conf
PasswordAuthentication no
$ sudo systemctl reload ssh
# パスワード認証が無効になりました

Docker のセットアップ

Jellyfin をはじめ、今回の構成ではコンテナを活用します。Ubuntu 24.04 では docker.io パッケージが apt で直接インストールできます。

docker.io インストール実ログ(Ubuntu 24.04 LTS 実測)
docker.io インストール実ログ(Ubuntu 24.04 LTS 実測)

Ubuntu 24.04 コンテナで実際に apt-get install -y docker.io を実行すると、Docker version 29.1.3, build 29.1.3-0ubuntu3~24.04.2 がインストールされます。




ubuntu@homeserver: ~
$ sudo apt update && sudo apt install -y docker.io
Setting up docker.io (29.1.3-0ubuntu3~24.04.2) …
info: Adding group ‘docker’ (GID 103) …
$ sudo systemctl enable –now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service
$ sudo usermod -aG docker $USER
$ docker –version
Docker version 29.1.3, build 29.1.3-0ubuntu3~24.04.2

グループ変更の反映について

sudo usermod -aG docker $USER を実行した後、一度ログアウト・ログインし直すことでグループ変更が反映されます。これをやらないと sudo なしで docker コマンドが動きません。

NAS構築:Samba でファイル共有(Windows/Mac対応)

Ubuntu 24.04 には Samba 4.19.5 が apt で提供されています。Windows のエクスプローラーや Mac の Finder からそのまま接続できる SMB プロトコルでファイル共有ができます。

手順1:Samba をインストールする




ubuntu@homeserver: ~
$ sudo apt install -y samba
Setting up samba (2:4.19.5+dfsg-4ubuntu9.6) …
Processing triggers for man-db (2.12.0-4build2) …
$ smbd –version
Version 4.19.5-Ubuntu

手順2:共有フォルダを作成・設定する




ubuntu@homeserver: ~
$ sudo mkdir -p /srv/nas/shared
$ sudo chown -R ubuntu:ubuntu /srv/nas
$ sudo chmod 2775 /srv/nas/shared
$ sudo nano /etc/samba/smb.conf
# 以下を末尾に追加
[Shared]
path = /srv/nas/shared
browseable = yes
read only = no
valid users = ubuntu
$ sudo smbpasswd -a ubuntu
New SMB password: (パスワードを設定)
Added user ubuntu.
$ sudo systemctl restart smbd nmbd

手順3:Windows/Mac から接続する

Windows の場合:エクスプローラーのアドレスバーに \\192.168.1.100\Shared と入力します。

Mac の場合:Finder で「移動」→「サーバーへ接続」→ smb://192.168.1.100/Shared と入力します。

NFS(Linux to Linux)の場合

  • sudo apt install nfs-kernel-server(候補バージョン: 1:2.6.4-3ubuntu5.1
  • /etc/exports にディレクトリと許可するIPを記述
  • Linux クライアントから mount -t nfs 192.168.1.100:/srv/nas /mnt/nas でマウント
  • Windows/Mac クライアントがない環境なら NFS の方がパフォーマンスが上

ストレージ速度の実測

Samba/NFS の速度は最終的にネットワーク(1 Gbps = 理論上 125 MB/s)とストレージの速度に依存します。実際に Ubuntu 24.04 コンテナで dd コマンドを実行して計測したところ、以下の結果が出ました。

ホームサーバー ストレージ速度 実測(Ubuntu 24.04 LTS)
ホームサーバー ストレージ速度 実測(Ubuntu 24.04 LTS)

書き込み 337 MB/s・読み込み 192 MB/s(512 MiB ファイル、dd oflag=direct)でした。書き込み・読み込みともに 1 Gbps LAN(約 125 MB/s)を上回っているので、自宅NASではストレージ速度よりネットワーク速度の方が先に詰まります。自宅内転送なら SSD でも HDD でも体感差はほぼありません。

VPN構築:WireGuard で外出先からアクセス

WireGuard は、従来の OpenVPN に比べてコードが少なく・設定が簡単で、パフォーマンスも優れています。Ubuntu 24.04 ではカーネルに組み込まれており、wireguard-tools を入れるだけで動きます。

手順1:WireGuard をインストールする




ubuntu@homeserver: ~
$ sudo apt install -y wireguard wireguard-tools
Setting up wireguard-tools (1.0.20210914-1ubuntu4) …
wireguard-tools が正常にインストールされました
$ wg –version
wireguard-tools v1.0.20210914 – https://git.zx2c4.com/wireguard-tools/

手順2:鍵ペアを生成する




ubuntu@homeserver: ~
$ wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
$ chmod 600 /etc/wireguard/server_private.key
$ cat /etc/wireguard/server_public.key
(サーバー公開鍵が表示されます — クライアント設定に使用)

手順3:サーバー設定ファイルを作成する




ubuntu@homeserver: ~
$ sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = (server_private.key の中身)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer] # スマホやノートPC(クライアント)の設定
PublicKey = (クライアント公開鍵)
AllowedIPs = 10.0.0.2/32
$ sudo wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
$ sudo systemctl enable wg-quick@wg0
Created symlink … → 起動時に自動起動

IPフォワーディングを有効にする

VPN経由でインターネットにも出たい場合、サーバー側でIPフォワーディングを有効にする必要があります。echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p で設定してください。

メディアサーバー:Jellyfin を Docker で起動する

Jellyfin は完全無料・オープンソースのメディアサーバーです。NASに保存した動画・音楽・写真を、ブラウザやスマホのJellyfinアプリからストリーミング再生できます。Plex と違い、有料プランなしで全機能が使えるのが特徴です。

手順1:Docker コンポーズで Jellyfin を起動する




ubuntu@homeserver: ~
$ mkdir -p ~/jellyfin/{config,cache} /srv/nas/media
$ docker run -d \
–name jellyfin \
–restart unless-stopped \
-v ~/jellyfin/config:/config \
-v ~/jellyfin/cache:/cache \
-v /srv/nas/media:/media \
-p 8096:8096 \
jellyfin/jellyfin:latest
2ff21b21ed94b8d47988906975a085b4d2e657675442cb3abaf8d3674465b115
$ docker ps | grep jellyfin
2ff21b21ed94 jellyfin/jellyfin “/jellyfin/jellyfin” Up 30 seconds 0.0.0.0:8096->8096/tcp jellyfin

手順2:ブラウザでセットアップウィザードを開く

Jellyfin が起動したら、ブラウザで http://192.168.1.100:8096(サーバーのIPアドレス)を開きます。最初にサーバー名と表示言語を設定するウィザードが表示されます。

Jellyfin セットアップウィザード(
Jellyfin セットアップウィザード(”Welcome to Jellyfin!” — Docker で起動後の初回アクセス画面)

実際に Docker で起動した Jellyfin(公式イメージ sha256:aefb67e6a7ff1debdd…)にアクセスすると、上のようなセットアップウィザードが表示されます。「Server name」にホームサーバーの名前を入力し、言語は「English」のまま「Next」を押します。

手順3:管理者アカウントを作成する

次のステップで管理者ユーザー名とパスワードを設定します。このアカウントで Jellyfin の全設定を管理します。

Jellyfin 管理者アカウント作成ステップ(
Jellyfin 管理者アカウント作成ステップ(”Tell us about yourself”)

正直、ここで詰まる人が多いポイントです。「A password is required for admin accounts.」と書いてある通り、管理者アカウントにはパスワードが必須です。空のままにしておくと Next ボタンを押しても進みません。

手順4:メディアライブラリを追加する

Jellyfin ウィザード(ユーザー作成フォーム — 管理者名入力)
Jellyfin ウィザード(ユーザー作成フォーム — 管理者名入力)

ユーザー設定の後、メディアライブラリ(動画・音楽・写真のフォルダ)を追加します。先ほど Docker の -v オプションでマウントした /media ディレクトリを指定すれば、NASの共有フォルダと連携できます。

構成コンポーネント全体確認

今回インストールするすべてのパッケージを Ubuntu 24.04 コンテナで実際に確認した結果を以下にまとめます。

Ubuntu ホームサーバー構成コンポーネント一覧(実測)
Ubuntu ホームサーバー構成コンポーネント一覧(実測)

Docker・Samba・NFS・WireGuard・UFW のすべてが apt コマンド一発で取得でき、Jellyfin は Docker 公式イメージが 2026年6月時点でも活発にメンテナンスされていることを確認しました。

ファイアウォール設定(UFW)

ポートを最小限にしぼってから外部に公開するのが基本です。UFW(Uncomplicated Firewall)は Ubuntu に標準で入っており、コマンドが直感的で設定ミスが起きにくいです。




ubuntu@homeserver: ~
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
$ sudo ufw allow 22/tcp # SSH
Rule added
$ sudo ufw allow 445/tcp # Samba (SMB)
Rule added
$ sudo ufw allow 51820/udp # WireGuard VPN
Rule added
$ sudo ufw allow 8096/tcp # Jellyfin(LAN内限定推奨)
Rule added
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
$ sudo ufw status verbose
Status: active
To Action From
— —— —-
22/tcp ALLOW IN Anywhere
445/tcp ALLOW IN Anywhere
51820/udp ALLOW IN Anywhere
8096/tcp ALLOW IN Anywhere

Jellyfin を外部公開するなら逆プロキシを使う

Jellyfin のポート(8096)を直接外部に公開するより、Nginx や Caddy を使ったリバースプロキシ + Let’s Encrypt の HTTPS 化 が推奨です。ポート 443(HTTPS)だけを外に開ければ、8096 は LAN 内に閉じておけます。

自動起動・メンテナンスの設定

せっかく構築したサーバーが停電後に起動しなければ意味がありません。各サービスの自動起動を確認します。




ubuntu@homeserver: ~
$ sudo systemctl is-enabled docker smbd nmbd ssh ufw
enabled
enabled
enabled
enabled
enabled
$ sudo systemctl is-enabled wg-quick@wg0
enabled
$ docker inspect jellyfin –format ‘{{.HostConfig.RestartPolicy.Name}}’
unless-stopped
# → すべてのサービスが自動起動に設定されています

加えて、OS の自動セキュリティアップデートも有効にしておくと安心です。




ubuntu@homeserver: ~
$ sudo apt install -y unattended-upgrades
$ sudo dpkg-reconfigure –priority=low unattended-upgrades
(ダイアログで「Yes」を選択)
Enabled unattended-upgrades

自宅サーバーとVPSの比較

「自宅サーバーじゃなくてVPSを使えばいいのでは?」という疑問も当然あります。用途によって向き不向きがあるので整理します。

比較項目 自宅サーバー VPS(Vultr等)
月額費用 電気代のみ(10〜30W機で約200〜600円/月) $5〜/月(東京リージョン)
ストレージ容量 HDDを増設して数十TBも可能 プランに依存(高容量は高額)
転送速度(LAN内) 1 Gbps(125 MB/s) インターネット越しで遅延あり
外出先からのアクセス WireGuard VPN 経由で可能 常時インターネット接続で簡単
停電・メンテナンス 停電時は止まる(UPS推奨) データセンターが管理
プライバシー データが自宅から出ない クラウド業者の管理下
おすすめ用途 NAS・メディアサーバー・家族共有 Webサーバー・公開APIサービス

正直、NASや動画ストリーミングのような大容量データを扱う用途は自宅サーバーの方が圧倒的に有利です。一方、外部からアクセスされるWebサービスを立てるなら、VPSの方が固定IPがあり管理も楽です。

著者アイコン
著者アイコン

自分もはじめは「自宅サーバーって難しそう」と思っていましたが、Ubuntu 24.04 + Docker の組み合わせは本当に楽です。Jellyfinは起動してウィザードを進めるだけなので、コマンドが苦手な人でも設定できます。まずはミニPCで試してみてください。

本格的にWebサービスも公開したい・固定IPが欲しいという方は、VPSとの組み合わせもありです。

まとめ

Ubuntu 24.04.4 LTS を使った自宅ホームサーバーの構築手順をまとめました。

  • Ubuntu 24.04 で 2026-06-13 実測:docker.io 29.1.3Samba 4.19.5WireGuard 1.0.20210914NFS 2.6.4 がすべて apt 一発で導入可能
  • NAS は Samba(SMB)で Windows/Mac 両対応。NFS は Linux クライアント向け
  • WireGuard は鍵ペア生成 → conf ファイル作成 → wg-quick up の3ステップで VPN 完成
  • Jellyfin は docker run 1コマンドで起動し、ブラウザのウィザードで初期設定できる(完全無料)
  • UFW でポートを最小限に絞ってから外部に公開すること
  • dd 実測では書き込み 337 MB/s・読み込み 192 MB/s。LAN(1 Gbps = 125 MB/s)がボトルネックになるため NAS 用途には十分

VPS でもっと手軽にLinuxサーバーを体験したい方は、こちらの比較記事も参考にしてください。

コメント

タイトルとURLをコピーしました