5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Tailscale × AdGuard Home で作る「どこからでも自宅」環境

5
Last updated at Posted at 2025-12-24

はじめに

外出先から自宅のネットワークにアクセスしたい!...と思ったことはないでしょうか。

そう、この前書いた Proxmox ZFS × Immich(ROCm) で「我が家の Google Photos」を作ってみた で構築したフォトアルバムに外にいた時に見れないとなり、家に繋がる VPN 環境を作ろうと思いました。

従来の VPN 構築は設定が複雑でポート開放も必要でしたが、Tailscale を使うとその必要がなくなるようだったので、Tailscale を使用して VPN 構築をしてみました。
また、 AdGuard Home を組み合わせることで、広告ブロック環境が作れるようになったり、自宅内で引いているドメインがあれば DNS として使えるようになったりします。、、便利!

この記事では、Proxmox の LXC コンテナ内の Docker で、Tailscale と AdGuard Home を構築する手順を紹介します。

目次

  1. 構成概要
  2. 環境
  3. Tailscale のセットアップ
    3-1. docker-compose.yml の作成
    3-2. 起動と認証
    3-3. サブネットルーティングの設定
  4. AdGuard Home のセットアップ
    4-1. ポート 53 の解放 (systemd-resolved 無効化)
    4-2. docker-compose.yml の作成
    4-3. 初期設定
  5. Tailscale で AdGuard Home を使う設定
  6. 動作確認

構成概要

今回構築するシステムの全体像はこんな感じ。

ポイント:

  • Tailscale でポート開放なしに VPN 接続
  • サブネットルーティングで自宅 LAN 全体にアクセス可能
  • AdGuard Home で外出先でも広告ブロック

環境

  • Proxmox VE: 8.x
  • LXC コンテナ: Ubuntu 24.04 (Docker インストール済み)
  • Tailscale: Docker イメージ使用
  • AdGuard Home: Docker イメージ使用

Tailscale のセットアップ

まずは Tailscale にアカウントを作成する。Google アカウントなどで簡単にサインアップできる。

image.png

docker-compose.yml の作成

参考:

作業ディレクトリを作成して、docker-compose.yml を書いていく。

mkdir -p /opt/tailscale
cd /opt/tailscale
vi docker-compose.yml

以下の内容を記述:

version: "3.7"
services:
  tailscale:
    image: tailscale/tailscale:latest
    hostname: proxmox-tailscale
    environment:
      - TS_EXTRA_ARGS=--advertise-routes=192.168.1.0/24
      - TS_STATE_DIR=/var/lib/tailscale
      - TS_USERSPACE=true
    volumes:
      - tailscale-state:/var/lib/tailscale
    network_mode: host
    restart: unless-stopped

volumes:
  tailscale-state:

設定のポイント

設定 説明
TS_EXTRA_ARGS=--advertise-routes=192.168.1.0/24 自宅 LAN のサブネットを Tailscale ネットワークにアドバタイズ
TS_STATE_DIR Tailscale の状態を永続化するディレクトリ
TS_USERSPACE=true 重要! LXC コンテナでは TUN デバイスが使えないため、Userspace モードで動作させる
network_mode: host ホストネットワークを使用 (LAN へのルーティングに必要)

Userspace モード (TS_USERSPACE=true) について

LXC コンテナは軽量化のためにカーネル機能が制限されており、通常の TUN (Tunnel) デバイスが使えないことがある。Userspace モードはカーネルを使わずにアプリケーション内で VPN 処理を行うモード。

モード 仕組み 特徴
TUN (カーネル) カーネル内で処理 高速、低遅延
Userspace アプリ内で処理 TUN 不要、少し遅いが十分実用的

AI によると、スマホからの VPN 接続程度なら、Userspace モードで全く問題ないらしい。

起動と認証

docker compose up -d

起動後、ログを確認して認証 URL を取得する。

docker compose logs tailscale

ログに表示される URL (https://login.tailscale.com/...) にブラウザでアクセスして認証を完了させる。

サブネットルーティングの設定

Tailscale の管理画面 にアクセスすると、先ほど追加したマシンに「Subnets」の表示があるはず。

  1. マシンの ... メニューから Edit route settings を選択
    image.png

  2. 192.168.1.0/24 にチェックを入れて有効化
    image.png

これで Tailscale クライアントから自宅 LAN にアクセス可能になった!

AdGuard Home のセットアップ

次に、広告ブロック機能を持つ DNS サーバー AdGuard Home を構築する。

ポート 53 の解放 (systemd-resolved 無効化)

Ubuntu ではデフォルトで systemd-resolved がポート 53 を使用しているため、AdGuard Home で DNS を提供するには、これを無効化する必要がある。

# 設定ファイルを編集
vi /etc/systemd/resolved.conf

以下のように変更:

[Resolve]
DNSStubListener=no

保存後、サービスを再起動:

systemctl restart systemd-resolved

ポートが空いたか確認:

ss -tulpn | grep :53
# 何も表示されなければ OK!

docker-compose.yml の作成

mkdir -p /opt/adguardhome
cd /opt/adguardhome
vi docker-compose.yml

以下の内容を記述:

version: "3.7"

services:
  adguardhome:
    image: adguard/adguardhome:latest
    container_name: adguardhome
    hostname: adguardhome
    restart: unless-stopped
    volumes:
      - adguard-work:/opt/adguardhome/work
      - adguard-conf:/opt/adguardhome/conf
    ports:
      # DNS
      - "53:53/tcp"
      - "53:53/udp"
      # Web UI(初期設定用)
      - "3001:3000/tcp"
      # DNS-over-TLS(オプション)
      - "853:853/tcp"
      - "853:853/udp"

volumes:
  adguard-work:
  adguard-conf:

Web UI のポートを 3001:3000 としているのは、自環境で 3000 番ポートが他のサービスと競合していたため。
環境に応じて調整するとよい。

起動!

docker compose up -d

初期設定

ブラウザで http://[コンテナのIP]:3001 にアクセスして初期設定を行う。

  1. ウェルカム画面 - 「Get Started」をクリック
    image.png

  2. 管理インターフェース設定

    • 自環境では 80 番ポートが使えなかったため、3000 番に設定
    • Docker のポートマッピング (3001:3000) に合わせる
    • DNS サーバー設定 - デフォルト (0.0.0.0:53) のままで OK
      image.png
  3. 管理者アカウント作成 - ユーザー名とパスワードを設定
    image.png

  4. 完了!
    image.png

設定が完了したら http://[コンテナのIP]:3001 でダッシュボードにアクセス可能になった!

Tailscale で AdGuard Home を使う設定

ここからが本番!Tailscale 経由で AdGuard Home の DNS を使えるように設定する。

  1. Tailscale 管理画面 | DNS にアクセス

  2. DNS タブを開く

  3. Add nameserverCustom を選択

  4. AdGuard Home が動いているマシンの 自宅のローカル IP を入力
    image.png

  5. Override local DNSON に設定
    これを有効にすると、Tailscale に接続したデバイスは自動的に AdGuard Home の DNS を使うようになる。
    image.png

動作確認

設定が完了したら、実際に外出先 (モバイル回線など) から試してみる。

  1. スマホに Tailscale アプリをインストール
  2. 同じアカウントでログイン
  3. VPN を有効化
  4. 広告が多いサイトにアクセスしてブロックされるか確認

AdGuard Home のダッシュボードでクエリログを見ると、外出先のデバイスからの DNS クエリが記録されているはず。これでどこからでも自宅の環境が使えるようになった!

おわり

Tailscale と AdGuard Home の組み合わせ、いかがでしたでしょうか。

従来の VPN 構築といえば、ポート開放、ファイアウォール設定、などと面倒な作業がありましたが、Tailscale を使えばほぼ設定不要で VPN が構築できてしまいました。さらに AdGuard Home を組み合わせることで、VPN 接続中に広告ブロックができるようになりました。

構築自体は Docker のおかげもあり非常に簡単だったので、
自宅サーバーをお持ちの方、ぜひ「どこからでも自宅」環境、試してみてください!

それでは良き Tailscale & AdGuard Home ライフを!

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?