0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

メモ

0
Last updated at Posted at 2026-08-11

AIと対話してポート開放できない自宅からゲームサーバーを建てた時のメモ

※AIに書かせたので検証しながら進めてください

低速クラウド — 自宅サーバー間 複合インフラ構成 & ゲームサーバー転送 構築手順書

1. 概要・システム構成

本システムは、低速クラウド(VPS等)上に配置した Coolify(管理画面) から、自宅サーバー上のリソースを統合管理・デプロイしつつ、ゲームサーバーの高速通信を実現するハイブリッド構成です。

通信の性質(TCP/Web管理 vs UDPゲーム通信)に応じて Cloudflare TunnelWireGuard Tunnel を使い分けています。

                               【 インターネット / 管理者 】
                                      │
               ┌──────────────────────┴──────────────────────┐
               │ (Web / SSH / HTTP 通信)                     │ (ゲーム用 UDP/TCP 通信)
               ▼                                             ▼
     【 Cloudflare Edge 】                        【 低速クラウド (10.200.0.1) 】
               │                                             │
               │ Cloudflare Tunnel                           │ WireGuard Tunnel
               │ (cloudflared)                               │ (iptables DNAT)
               │                                             │
               └──────────────────────┬──────────────────────┘
                                      ▼
                        【 自宅サーバー (10.200.0.2) 】
                          ・ Coolify Worker / コンテナ群
                          ・ cloudflared デーモン
                          ・ ゲームサーバー (パルワールド等)


2. 役割分担とネットワーク設計

役割 採用技術 対象通信 / ポート 目的・理由
Web アプリ公開 Cloudflare Tunnel HTTP / HTTPS (80, 443) SSL自動化、DDoS保護、IP非公開化
Coolify ↔ 自宅 SSH管理 Cloudflare Tunnel SSH (22) 外部ポート開放なしで Coolify から自宅サーバーを制御
ゲームサーバー通信 WireGuard Tunnel 8211/UDP, TCP
27015/UDP, TCP
Cloudflare が非対応(または有料)の UDP 通信を低速クラウド経由で直通化
  • VPN 内 IP 帯域: 10.200.0.0/24(※ Docker 標準ブリッジ docker0: 10.0.0.0/16 との衝突を避けるため 10.200 帯を使用)

3. Cloudflare Tunnel による SSH 制御 & Coolify 連携設定

Coolify(低速クラウド上)から自宅サーバーへ安全に SSH 接続・デプロイを行うため、自宅サーバー側で手動の cloudflared 設定および Coolify コンテナ内での SSH プロキシ設定を行います。

① 自宅サーバー側:cloudflared の手動セットアップ

  1. cloudflared インストール & 認証:
# インストール後、ログイン
cloudflared tunnel login
# トンネル作成
cloudflared tunnel create home-server-tunnel

  1. ~/.cloudflare/config.yml の作成:
tunnel: <TUNNEL_ID>
credentials-file: /root/.cloudflare/<TUNNEL_ID>.json

ingress:
  # SSH 接続用ホスト名
  - hostname: ssh-home.your-domain.com
    service: ssh://localhost:22
  # デプロイ後の Web アプリ用(ワイルドカードや個別ドメイン)
  - hostname: "*.your-domain.com"
    service: http://localhost:80
  - service: http_status:404

  1. DNS レコード割り当て & サービス化:
cloudflared tunnel route dns home-server-tunnel ssh-home.your-domain.com
sudo cloudflared service install
sudo systemctl start cloudflared

② Cloudflare Zero Trust:アクセスポリシーの設定

  1. Cloudflare Zero Trust 管理画面 ➔ AccessApplications を開きます。
  2. ssh-home.your-domain.com に対する Self-hosted Application を作成。
  3. Access Policy を設定し、Coolify からのアクセス認証を有効化(Service Token または特定アクセス制限の付与)。

③ Coolify(コンテナ内)側:SSH プロキシ設定

低速クラウド側の Coolify(coolify のコンテナに入って操作)が ssh-home.your-domain.com 経由で自宅サーバーにアクセスできるよう、SSH クライアント設定(~/.ssh/config)に cloudflared プロキシを組み込みます。

Coolify サーバー内の SSH 設定ファイル(または Coolify の Server 設定パネル)に以下を記述:

Host home-server
ProxyCommand cloudflared access ssh --hostname %h

そしてssh home-serverをしておきcloudflareのアクセス認証を通しておく(ポリシーによる)

またcoolifyにおいてcloudflare tunnelのタブからhereを押してenabledにしておく

これにより、Coolify 管理画面から「自宅サーバー」を宛先として正常に SSH 疎通・コントロールが可能になります。


4. 低速クラウド側:WireGuard & iptables 設定 (10.200.0.1)

UDP ポート(ゲームサーバー等)を通すための WireGuard および転送設定です。

① OS パケット転送の有効化

sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

/etc/wireguard/wg0.conf

[Interface]
Address = 10.200.0.1/24
PrivateKey = <クラウド側の秘密鍵>
ListenPort = 51820

# --- 起動時に 8211 / 27015 (UDP/TCP) を自宅サーバー(10.200.0.2)へ転送 ---
PostUp = iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 10.200.0.2:27015
PostUp = iptables -t nat -A PREROUTING -p tcp --dport 27015 -j DNAT --to-destination 10.200.0.2:27015
PostUp = iptables -t nat -A PREROUTING -p udp --dport 8211 -j DNAT --to-destination 10.200.0.2:8211
PostUp = iptables -t nat -A PREROUTING -p tcp --dport 8211 -j DNAT --to-destination 10.200.0.2:8211
PostUp = iptables -A FORWARD -d 10.200.0.2 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

# --- 停止時にルール削除 ---
PostDown = iptables -t nat -D PREROUTING -p udp --dport 27015 -j DNAT --to-destination 10.200.0.2:27015
PostDown = iptables -t nat -D PREROUTING -p tcp --dport 27015 -j DNAT --to-destination 10.200.0.2:27015
PostDown = iptables -t nat -D PREROUTING -p udp --dport 8211 -j DNAT --to-destination 10.200.0.2:8211
PostDown = iptables -t nat -D PREROUTING -p tcp --dport 8211 -j DNAT --to-destination 10.200.0.2:8211
PostDown = iptables -D FORWARD -d 10.200.0.2 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE

[Peer]
PublicKey = <自宅サーバー側の公開鍵>
AllowedIPs = 10.200.0.2/32


5. 自宅サーバー側:WireGuard 設定 (10.200.0.2)

/etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.0.2/24
PrivateKey = <自宅サーバー側の秘密鍵>

[Peer]
PublicKey = <クラウド側の公開鍵>
Endpoint = <低速クラウドのパブリックIP>:51820
AllowedIPs = 10.200.0.0/24
PersistentKeepalive = 25


6. はまりポイント・ナレッジ集

  1. Docker (docker0) と VPN 空間の IP 衝突
  • 10.0.0.x を VPN に使うと Docker の標準ブリッジ帯域と重複し、ip route get 10.0.0.2dev docker0 を向いて通信不可になる。VPN は 10.200.0.x 等で構築すること。
  1. Coolify からの Cloudflare 経由 SSH
  • 自宅サーバーで cloudflared を立てるだけでなく、Coolify 側(SSH クライアント側)にも ProxyCommand cloudflared access ssh ... の設定が入っていないと SSH ハンドシェイクに失敗する。
  1. ゲーム用 UDP 転送における TCP ルールの必須化
  • パルワールド等のゲームサーバーは UDP 通信だけでなく、サーバーブラウザ一覧やセッション確立(クエリ)に TCP を使用するため、iptables では UDP と TCP の両方を DNAT 転送する必要がある。
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?