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?

サーバー × Docker × Tailscale × VS Code で「どこからでも開発できる環境」を構築する

0
Posted at

サーバーに、どこからでもアクセスしたいんや、、、

🎯 目的

以下の開発環境を実現することを目的とします。

  • サーバー上にDockerで開発環境を構築
  • VS Codeからリモート開発(Remote SSH)
  • Tailscaleを使って外部ネットワークから安全にアクセス
  • Python / Jupyter / Codex CLI を利用可能にする

🧠 全体構成

ネットワーク構成は以下の通りです。

[自分のPC]VS Code + SSHTailscale[サーバー]Docker [開発コンテナ]

📦 使用技術

  • Docker / Docker Compose: 環境の分離・管理
  • Tailscale: VPN構築(メッシュネットワーク)
  • VS Code Remote SSH: リモート開発
  • Python / Jupyter: 開発言語・対話型環境
  • Codex CLI: OpenAIのコード生成支援ツール

🛠 構築手順

1. プロジェクトディレクトリの作成

サーバーにSSH接続し、プロジェクト用のディレクトリを作成します。

mkdir -p ~/my-project
cd ~/my-project

2. ディレクトリ構成

以下のような構成でファイルを配置します。

my-project/
├── Dockerfile
├── docker-compose.yml
├── container-entrypoint.sh
├── smb.conf
├── requirements.txt
├── .env/
│   └── .env
└── .devcontainer/
    └── devcontainer.json

3. Dockerfile の作成

Python 3.12をベースに、TailscaleやNode.js、Sambaなどをインストールします。

FROM python:3.12-slim-bookworm

WORKDIR /workspace

# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    curl wget git build-essential samba iptables iproute2 \
    && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
    && apt-get install -y nodejs \
    && curl -fsSL https://tailscale.com/install.sh | sh \
    && rm -rf /var/lib/apt/lists/*

# Pythonライブラリのインストール
RUN pip install --no-cache-dir --upgrade pip
COPY requirements.txt /tmp/
RUN pip install --no-cache-dir -r /tmp/requirements.txt

# Codex CLIのインストール
RUN npm install -g @openai/codex

# TailscaleとSambaの設定
RUN mkdir -p /var/run/tailscale /var/lib/tailscale
COPY container-entrypoint.sh /usr/local/bin/
COPY smb.conf /etc/samba/smb.conf
RUN chmod +x /usr/local/bin/container-entrypoint.sh

CMD ["/usr/local/bin/container-entrypoint.sh"]

4. docker-compose.yml の作成

コンテナの設定を記述します。

services:
  dev-container:
    container_name: my_dev_container
    build: .
    hostname: dev-workspace
    volumes:
      - ./tailscale_data:/var/lib/tailscale # Tailscaleの状態を保持
      - .:/workspace # カレントディレクトリをマウント
    env_file:
      - .env/.env
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    devices:
      - /dev/net/tun:/dev/net/tun

5. .env フォルダと環境変数の設定

Tailscaleの管理画面で生成したAuthKeyを記述します。

.env/.env

TS_AUTHKEY=tskey-xxxxxxxxxxxxxxxx  # 自分のAuthKeyを入力
SMB_PASSWORD=your_password        # Samba用のパスワード

6. エントリーポイントスクリプトの作成

コンテナ起動時にTailscaleを立ち上げるスクリプトです。

container-entrypoint.sh

#!/bin/bash
set -e

# Tailscaleデーモンの起動
tailscaled &
sleep 3

# Tailscaleへのログイン
if [ -n "$TS_AUTHKEY" ]; then
    tailscale up --authkey="$TS_AUTHKEY" --ssh --hostname="dev-workspace"
fi

# Sambaの起動(必要に応じて)
smbd -D

# プロセスを維持
wait

🚀 コンテナの起動と確認

起動

cd ~/my-project
docker compose up -d --build

動作確認

コンテナが正常に動作し、Tailscaleにログインできているか確認します。

docker compose ps
docker logs my_dev_container
docker exec -it my_dev_container tailscale status

💻 ローカルPC(クライアント)側の設定

1. SSH接続確認

ローカルPCにもTailscaleをインストールし、コンテナに直接通信できるか確認します。

tailscale ping dev-workspace
ssh root@dev-workspace

2. SSH Config の設定

~/.ssh/config に以下の設定を追加して、VS Codeから接続しやすくします。

Host dev-server-ts
    HostName dev-workspace
    User root

3. VS Code から接続

  1. VS Codeで Remote-SSH: Connect to Host... を選択。
  2. dev-server-ts を選択して接続。
  3. フォルダを開くで /workspace を指定します。

🎉 完成

これで、外部ネットワークからでもサーバー上の隔離されたDocker環境へ、VS Codeを使って快適にアクセスできるようになります。

  • 隔離環境: Dockerで環境を汚さない
  • セキュア: TailscaleによりVPN経由で接続
  • 利便性: VS Codeの強力な補完やCodex CLIが利用可能
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?