Ubuntu Serverを自宅ファイルサーバー化

古いノートPCに構築したUbuntu Serverを、Mac・iPhoneから使える自宅ファイルサーバーとして設定した。最終的に、自宅Wi-Fi内だけでなく4G/5G経由でも同じ名前で共有フォルダへアクセスできる状態まで構築できた。

## Phase 1:SMB / Sambaの準備 LinuxでWindows系のファイル共有プロトコルSMB(Server Message Block)を使うため、Sambaを利用した。 確認: smbd --version systemctl status smbd --no-pager Sambaがインストール済みで、smbdサービスも起動していることを確認した。 ポイント: - SMB = ファイル共有の通信方式 - Samba = LinuxでSMBを利用するためのソフトウェア - smbd = Sambaのファイル共有を担当するサービス

## Phase 2:共有フォルダを作成 共有用ディレクトリを作成。 sudo mkdir -p /srv/samba/shared sudo chown server-user:server-user /srv/samba/shared /srv/samba/sharedを実際の保存場所とした。 確認: ls -ld /srv/samba/shared ここでLinuxのパーミッションも復習した。 drwxr-xr-x d = directory r = read w = write x = execute rwx = 4+2+1 = 7なので、755はrwxr-xr-xとなる。

## Phase 3:Samba共有を設定 設定ファイルを編集。 sudo nano /etc/samba/smb.conf 共有設定を追加。 [shared] path = /srv/samba/shared browseable = yes read only = no guest ok = no 意味: - path = 実際の共有フォルダ - browseable = yes = 共有一覧に表示 - read only = no = 書き込み可能 - guest ok = no = 匿名アクセス禁止 設定確認: testparm 反映: sudo systemctl restart smbd

## Phase 4:SMB専用パスワードを設定 Samba用ユーザーを登録。 sudo smbpasswd -a server-user Linuxのログインパスワードとは別に、SMB接続用パスワードを設定できる。

## Phase 5:445番ポートとファイアウォール SMBはTCP 445番ポートを使用する。 確認: sudo ss -tlnp | grep :445 最初はMacから接続できなかったため、UFWを確認。LAN内からのみ445番を許可した。 sudo ufw allow from 192.168.X.0/24 to any port 445 proto tcp 重要: SMBの445番ポートをインターネットへ直接公開しない。外部接続にはTailscaleを使う。

## Phase 6:Macから接続 MacからSMBサーバーを確認。 smbutil view //server-user@192.168.X.X 共有一覧にsharedが表示された。 Finderからは、 smb://192.168.X.X/shared で接続。 画像ファイルをコピーし、Ubuntu側で確認。 ls -lah /srv/samba/shared/ Macから送ったファイルがUbuntu Server上へ実際に保存されていることを確認できた。

## Phase 7:iPhoneから接続 iPhoneの「ファイル」アプリから「サーバへ接続」を使用。 smb://192.168.X.X 登録済みユーザーとしてログインし、共有フォルダへアクセスできた。 これでiPhoneから自宅サーバーへファイル保存・閲覧が可能になった。

## Phase 8:.localで名前アクセスを試す IPアドレスを覚えなくて済むようにAvahiを導入。 sudo apt install avahi-daemon 確認: systemctl status avahi-daemon --no-pager Macでは、 ping ubuntu-server.local でUbuntu ServerのLAN IPへ正常に名前解決できた。 しかしiPhoneではubuntu-server.local経由のSMB接続が不安定になることがあった。 学んだこと: - .local = mDNS(Multicast DNS)によるLAN内向け名前解決 - UbuntuではAvahiが担当 - SMBとは別の仕組み - .localは基本的に同一LAN内向け

## Phase 9:接続障害を切り分け iPhoneから接続できない場面で通信を確認。 sudo tcpdump -ni any port 445 iPhone → Ubuntu Serverの445番への通信自体は到達していた。 Samba接続状況: sudo smbstatus ログ確認: sudo journalctl -u smbd --since "5 minutes ago" --no-pager sudo ls -lah /var/log/samba sudo cat /var/log/samba/log.smbd 一時的にSambaのログレベルも上げて調査した。 log level = 3 最終的にはSamba再起動後にiPhoneから再び接続できたため、SMBセッションや名前解決の一時的な状態が影響した可能性がある。 調査後はlog level = 3を削除して通常設定へ戻した。

## Phase 10:Tailscaleで外部アクセス 外出先から自宅サーバーへ安全に接続するためTailscaleを利用した。 iPhoneにもTailscaleをインストールし、Mac・iPhone・Ubuntu Serverを同じTailnetへ参加させた。 Tailscale IPを使えば4G/5Gからでも、 smb://100.x.x.x/shared で共有フォルダへ接続できた。 これにより、SMBの445番ポートをインターネットへ直接公開せずに外部アクセスできる。

## Phase 11:Tailscaleの一時的な接続不良 Ubuntu ServerがTailscale上で一時的にofflineになる現象も確認した。 確認に使用: tailscale status tailscale netcheck tailscale ping 100.x.x.x sudo systemctl status tailscaled --no-pager sudo journalctl -u tailscaled --since "10 minutes ago" --no-pager tailscaled自体はactive (running)で、LAN・インターネット通信も正常だったが、Tailscale側で一時的にUDPやDERP接続が不安定になることがあった。 時間経過後に自動復旧した。 学んだこと: サービスが起動していることと、実際にネットワーク通信できていることは別。

## Phase 12:MagicDNSで名前を統一 TailscaleのMagicDNSが有効になっていることを確認。 Macから、 ping ubuntu-server を実行すると、 ubuntu-server.<tailnet>.ts.net → 100.x.x.x へ名前解決された。 最終的にiPhoneの4G/5Gからも、 smb://ubuntu-server/shared で接続成功。 これによりLAN内・外出先とも同じ名前でアクセスできるようになった。

## 最終構成 Mac ─┐ ├─ Tailscale / MagicDNS ─ Ubuntu Server ─ /srv/samba/shared iPhone ┘ 利用時は基本的に、 smb://ubuntu-server/shared だけ覚えておけばよい。 自宅Wi-Fiでも4G/5Gでも、Tailscaleが接続されていれば同じ名前でアクセスできる。

## 今回学んだ主な技術 SMB / Samba / TCP 445 / UFW / Linuxパーミッション / smbstatus / tcpdump / journalctl / Avahi / mDNS / IPv4・IPv6 / Tailscale / DERP / MagicDNS 単にファイル共有を作っただけではなく、「サービス」「ポート」「ファイアウォール」「名前解決」「VPN」「ログ」「障害切り分け」がどうつながっているかを実機で確認できた。

一覧へ戻る