注意
本記事のコマンドは Ubuntu 24.04 LTS(Noble Numbat)で検証しています。バージョンが異なるとパッケージ名やオプションが変わる場合があります。docker.io 29.1.3・Samba 4.19.5・WireGuard 1.0.20210914・Jellyfin 最新版(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.3、Samba 4.19.5、WireGuard 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 |

自宅サーバーに必要なもの
まずはハードウェアと回線について整理します。「何でも最新スペックが必要」ということはなく、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 をダウンロードし、balenaEtcher や Rufus(Windows)でUSBに書き込みます。サーバーPCのBIOSでUSBブートを優先にして起動してください。
手順2:インストールウィザードを進める
インストーラーの途中で「OpenSSH server をインストールする」にチェックを入れます。これで インストール直後からSSH接続が可能 になり、あとの作業はすべてリモートから行えます。
ストレージ設定の注意点
「Use an entire disk」(ディスク全体を使う)を選ぶ場合、既存のデータはすべて消えます。ストレージの中身をあらかじめバックアップしてから作業してください。
手順3:SSHで接続し初期設定をする
インストール完了後、別のPCのターミナルから SSH 接続します。
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鍵認証の設定(セキュリティの最優先事項)
パスワード認証のままサーバーをインターネットに公開すると、ブルートフォース攻撃を受けます。鍵認証に切り替えてパスワード認証を無効化するのを最初にやることです。

実際に Ubuntu 24.04 コンテナで ssh-keygen -t ed25519 を実行すると、OpenSSH_9.6p1 Ubuntu-3ubuntu13.16 が使用されます。ED25519 鍵は RSA より短く・安全で、現在の標準的な選択肢です。
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”
鍵をサーバーに登録したら、パスワード認証を無効化します。
PasswordAuthentication no
$ sudo systemctl reload ssh
# パスワード認証が無効になりました
Docker のセットアップ
Jellyfin をはじめ、今回の構成ではコンテナを活用します。Ubuntu 24.04 では docker.io パッケージが apt で直接インストールできます。

Ubuntu 24.04 コンテナで実際に apt-get install -y docker.io を実行すると、Docker version 29.1.3, build 29.1.3-0ubuntu3~24.04.2 がインストールされます。
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 をインストールする
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:共有フォルダを作成・設定する
$ 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 コマンドを実行して計測したところ、以下の結果が出ました。

書き込み 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 をインストールする
Setting up wireguard-tools (1.0.20210914-1ubuntu4) …
wireguard-tools が正常にインストールされました
$ wg –version
wireguard-tools v1.0.20210914 – https://git.zx2c4.com/wireguard-tools/
手順2:鍵ペアを生成する
$ chmod 600 /etc/wireguard/server_private.key
$ cat /etc/wireguard/server_public.key
(サーバー公開鍵が表示されます — クライアント設定に使用)
手順3:サーバー設定ファイルを作成する
[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 を起動する
$ 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アドレス)を開きます。最初にサーバー名と表示言語を設定するウィザードが表示されます。

実際に Docker で起動した Jellyfin(公式イメージ sha256:aefb67e6a7ff1debdd…)にアクセスすると、上のようなセットアップウィザードが表示されます。「Server name」にホームサーバーの名前を入力し、言語は「English」のまま「Next」を押します。
手順3:管理者アカウントを作成する
次のステップで管理者ユーザー名とパスワードを設定します。このアカウントで Jellyfin の全設定を管理します。

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

ユーザー設定の後、メディアライブラリ(動画・音楽・写真のフォルダ)を追加します。先ほど Docker の -v オプションでマウントした /media ディレクトリを指定すれば、NASの共有フォルダと連携できます。
構成コンポーネント全体確認
今回インストールするすべてのパッケージを Ubuntu 24.04 コンテナで実際に確認した結果を以下にまとめます。

Docker・Samba・NFS・WireGuard・UFW のすべてが apt コマンド一発で取得でき、Jellyfin は Docker 公式イメージが 2026年6月時点でも活発にメンテナンスされていることを確認しました。
ファイアウォール設定(UFW)
ポートを最小限にしぼってから外部に公開するのが基本です。UFW(Uncomplicated Firewall)は Ubuntu に標準で入っており、コマンドが直感的で設定ミスが起きにくいです。
$ 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 内に閉じておけます。
自動起動・メンテナンスの設定
せっかく構築したサーバーが停電後に起動しなければ意味がありません。各サービスの自動起動を確認します。
enabled
enabled
enabled
enabled
enabled
$ sudo systemctl is-enabled wg-quick@wg0
enabled
$ docker inspect jellyfin –format ‘{{.HostConfig.RestartPolicy.Name}}’
unless-stopped
# → すべてのサービスが自動起動に設定されています
加えて、OS の自動セキュリティアップデートも有効にしておくと安心です。
$ 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があり管理も楽です。
本格的にWebサービスも公開したい・固定IPが欲しいという方は、VPSとの組み合わせもありです。
まとめ
Ubuntu 24.04.4 LTS を使った自宅ホームサーバーの構築手順をまとめました。
- Ubuntu 24.04 で 2026-06-13 実測:
docker.io 29.1.3・Samba 4.19.5・WireGuard 1.0.20210914・NFS 2.6.4がすべて apt 一発で導入可能 - NAS は Samba(SMB)で Windows/Mac 両対応。NFS は Linux クライアント向け
- WireGuard は鍵ペア生成 → conf ファイル作成 →
wg-quick upの3ステップで VPN 完成 - Jellyfin は
docker run1コマンドで起動し、ブラウザのウィザードで初期設定できる(完全無料) - UFW でポートを最小限に絞ってから外部に公開すること
- dd 実測では書き込み 337 MB/s・読み込み 192 MB/s。LAN(1 Gbps = 125 MB/s)がボトルネックになるため NAS 用途には十分
VPS でもっと手軽にLinuxサーバーを体験したい方は、こちらの比較記事も参考にしてください。



コメント