kakuremichi のエッジクライアント。Control と WebSocket で接続し、指示された Gateway へ WireGuard で閉域網を張り、ローカル HTTP サービスをトンネル公開する。
- Control からの設定更新を受信し、WireGuard 仮想 NIC を生成・更新
- netstack 上のローカルリバースプロキシで、ドメインごとに内部サービスへ転送
- API キーによる認証、WireGuard 鍵の自動生成と永続化(
wireguard.key)
- Go 1.24.x
- Control サーバーが起動済みで API キーを発行できること
.env.exampleをコピーして値を入れる:cp .env.example .env # CONTROL_URL, API_KEY を設定- 実行:
go run ./cmd/agent \ --control-url=ws://localhost:3001 \ --api-key=agt_your_api_key_here
WIREGUARD_PRIVATE_KEYを指定しない場合、起動時にwireguard.keyとして生成・保存。- 初回に Control から Gateway/トンネル設定を受け取ると WireGuard デバイスとローカルプロキシが立ち上がる。
CONTROL_URL/--control-url: Control への WebSocket URL(例:ws://localhost:3001)API_KEY/--api-key: Control で発行したエージェント用 API キー(必須)WIREGUARD_PRIVATE_KEY/--wireguard-private-key: 既存キーを使いたい場合に指定DOCKER_ENABLED/--docker-enabled: Docker 連携を有効にするフラグ(デフォルト false)DOCKER_SOCKET/--docker-socket: Docker ソケットパス(デフォルト/var/run/docker.sock)
- Dev Containerを推奨
- テスト:
go test ./... - ローカルビルド:
go build ./cmd/agent - Docker イメージ:
docker build -f Dockerfile.dev -t kakuremichi-agent-dev .
cmd/agent: エントリポイントinternal/config: フラグ/環境変数ロードinternal/ws: Control との WebSocket クライアントinternal/wireguard: デバイス設定と鍵管理internal/proxy: netstack 上のローカル HTTP リバースプロキシ
- WireGuard キーはリポジトリ直下に保存されるため、共有したくない場合は
.gitignore等で除外するか、パスを変えて運用してください。