開発環境としてテキストエディタもWebブラウザから使えると便利です。
これにはVS Code(Visual Studio Code)をWebブラウザ上で動作させるオープンソースのツール「code-server」がベストでしょう。
Dockerでインストールする
以下を実行し、セットアップスクリプトを貼り付けてインストールします。
mkdir -p /opt/docker/codeserver
cd /opt/docker/codeserver
nano setup-codeserver-docker.sh
sudo bash setup-codeserver-docker.sh
#!/bin/bash
# ============================================================
# Code-Server Docker版 セットアップ
# 対象OS: Ubuntu 25.10
# 実行方法: sudo bash setup-codeserver-docker.sh
#
# 起動後にブラウザで Japanese Language Pack をインストール後、
# Ctrl+Shift+R でリロードすれば日本語UIになります。
# ============================================================
set -euo pipefail
INSTALL_DIR="/opt/docker/codeserver"
GREEN='\033[0;32m'; CYAN='\033[0;36m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
info() { echo -e "${CYAN}[INFO]${NC} $*"; }
success() { echo -e "${GREEN}[OK]${NC} $*"; }
error() { echo -e "${RED}[ERR]${NC} $*"; exit 1; }
[[ $EUID -ne 0 ]] && error "root権限で実行してください: sudo bash $0"
docker compose version &>/dev/null || error "docker compose が見つかりません。"
REAL_USER="${SUDO_USER:-$(logname 2>/dev/null || echo $USER)}"
PUID=$(id -u "$REAL_USER" 2>/dev/null || echo 1000)
PGID=$(id -g "$REAL_USER" 2>/dev/null || echo 1000)
# --- パスワード自動生成 ---
info "パスワードを自動生成中..."
PASSWORD=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 32)
HASHED_PASSWORD=$(echo -n "$PASSWORD" | sha256sum | cut -d' ' -f1)
# --- ディレクトリ作成 ---
info "ディレクトリを作成中: $INSTALL_DIR"
mkdir -p "$INSTALL_DIR"/{config,workspace}
# コンテナ内ユーザー (PUID/PGID=1000) が書き込めるよう権限を設定
chown -R 1000:1000 "$INSTALL_DIR/config" "$INSTALL_DIR/workspace"
success "ディレクトリ権限設定完了"
# --- argv.json: 日本語化のキモ ---
info "argv.json を配置中..."
mkdir -p "$INSTALL_DIR/config/data/User"
cat > "$INSTALL_DIR/config/data/User/argv.json" <<'EOF'
{
"locale": "ja"
}
EOF
chown -R 1000:1000 "$INSTALL_DIR/config"
success "argv.json 配置完了"
# --- .env 生成 ---
info ".env を生成中..."
cat > "$INSTALL_DIR/.env" <<EOF
# 自動生成: $(date '+%Y-%m-%d %H:%M:%S')
HASHED_PASSWORD=${HASHED_PASSWORD}
HOST_PORT=8080
TZ=Asia/Tokyo
PUID=${PUID}
PGID=${PGID}
EOF
chmod 600 "$INSTALL_DIR/.env"
success ".env 生成完了"
# --- docker-compose.yml 生成 ---
info "docker-compose.yml を生成中..."
cat > "$INSTALL_DIR/docker-compose.yml" <<'COMPOSE'
services:
code-server:
image: lscr.io/linuxserver/code-server:latest
container_name: code-server
restart: unless-stopped
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- HASHED_PASSWORD=${HASHED_PASSWORD}
- DEFAULT_WORKSPACE=/workspace
- LANG=ja_JP.UTF-8
- LC_ALL=ja_JP.UTF-8
ports:
- "${HOST_PORT}:8443"
volumes:
- ./config:/config
- ./workspace:/workspace
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8443"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
COMPOSE
success "docker-compose.yml 生成完了"
# --- ファイアウォール ---
if ufw status 2>/dev/null | grep -q "Status: active"; then
info "ufw でポート 8080 を開放中..."
ufw allow 8080/tcp
success "ポート開放済み"
fi
# --- 起動 ---
info "コンテナを起動中..."
cd "$INSTALL_DIR"
docker compose pull
docker compose up -d
# --- 起動確認 ---
info "起動確認中 (最大40秒)..."
for i in $(seq 1 13); do
curl -sf http://localhost:8080 &>/dev/null && { success "起動確認完了"; break; }
echo -n "."; sleep 3
done
echo ""
# --- 完了メッセージ ---
HOST_IP=$(hostname -I | awk '{print $1}')
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} Code-Server セットアップ完了!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e " 🌐 アクセスURL : ${CYAN}http://${HOST_IP}:8080${NC}"
echo -e " 🔑 パスワード : ${YELLOW}${PASSWORD}${NC}"
echo ""
echo -e " 日本語化手順:"
echo -e " 1. Extensions で 'Japanese Language Pack' をインストール"
echo -e " 2. Ctrl+Shift+R でリロード → 日本語UIになります"
echo ""
echo -e " 停止 : ${CYAN}cd $INSTALL_DIR && docker compose down${NC}"
echo -e " ログ確認: ${CYAN}cd $INSTALL_DIR && docker compose logs -f${NC}"
echo ""
http://ホスト名:8080にアクセスしてパスワードを入力したら使えます。
左のメニューからブロックみたいなマークをクリックして日本語パッケージをインストールすれば日本語化されます。
Japanese Language Pack
テーマの変更は、左上のメニューから「ファイル」-「ユーザー設定」-「テーマ」-「配色テーマ」から行えます。もしくは左下の「設定」-「テーマ」-「配色テーマ」から。
既存のフォルダ内のファイルを編集したいならボリュームに追加したあと
sudo nano /opt/docker/codeserver/docker-compose.yml
volumes:
- ./config:/config
- ./workspace:/workspace
- /opt/docker/test/:opt/docker/test/
権限を変更して編集できるようにしておきましょう(必要に応じて-Rオプションなども)
sudo chown 1000:1000 /opt/docker/test/
設定したらコンテナを再起動します。
cd /opt/docker/codeserver
sudo docker compose restart

パスワード変更手順
1. .env を編集
HASHED_PASSWORD はSHA256ハッシュなので、新しいパスワードのハッシュを生成して書き換えます。
# 新しいパスワードのハッシュを生成
echo -n '新しいパスワード' | sha256sum | cut -d' ' -f1
出力されたハッシュを .env の HASHED_PASSWORD= に貼り付けます。
sudo nano /opt/docker/codeserver/.env
2. コンテナを再起動して反映
cd /opt/docker/codeserver
sudo docker compose up -d
ハッシュ生成が面倒な場合
ハッシュパスワードの代わりに平文のパスワードを使う方法もあります。.env を下記のように変更すれば、ハッシュ不要です。
PASSWORD=新しいパスワード
docker-compose.ymlのenvironmentも変更します。
sudo nano /opt/docker/codeserver/docker-compose.yml
- PASSWORD=${PASSWORD}
(HASHED_PASSWORD の行を PASSWORD に変更)
ただしハッシュ方式の方がセキュリティ的には無難です。
Dockerを使わず直接インストールする
ローカルファイルを扱ったりするなら、直接インストールしておいたほうが良いですね。
nano install-codeserver.sh
sudo bash install-codeserver.sh
#!/bin/bash
# ============================================================
# Code-Server ネイティブインストール
# 対象OS: Ubuntu 25.10 (Docker不使用)
# 実行方法: sudo bash install-codeserver.sh
#
# 起動後にブラウザで Japanese Language Pack をインストール後、
# Ctrl+Shift+R でリロードすれば日本語UIになります。
# ============================================================
set -euo pipefail
GREEN='\033[0;32m'; CYAN='\033[0;36m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
info() { echo -e "${CYAN}[INFO]${NC} $*"; }
success() { echo -e "${GREEN}[OK]${NC} $*"; }
error() { echo -e "${RED}[ERR]${NC} $*"; exit 1; }
[[ $EUID -ne 0 ]] && error "root権限で実行してください: sudo bash $0"
REAL_USER="${SUDO_USER:-$(logname 2>/dev/null || echo $USER)}"
REAL_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6)
info "インストール対象ユーザー: $REAL_USER ($REAL_HOME)"
# --- パスワード自動生成 ---
info "パスワードを自動生成中..."
PASSWORD=$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 32)
# --- 依存パッケージ ---
info "依存パッケージをインストール中..."
apt-get update -qq
apt-get install -y -qq curl wget locales
# --- 日本語ロケール ---
info "日本語ロケールを設定中..."
locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8
success "日本語ロケール設定完了"
# --- 最新バージョン取得 ---
info "最新バージョンを確認中..."
LATEST=$(curl -fsSL https://api.github.com/repos/coder/code-server/releases/latest \
| grep '"tag_name"' | sed 's/.*"v\([^"]*\)".*/\1/')
info "最新バージョン: v${LATEST}"
# --- ダウンロード & インストール ---
DEB_URL="https://github.com/coder/code-server/releases/download/v${LATEST}/code-server_${LATEST}_amd64.deb"
info "ダウンロード中..."
wget -q --show-progress -O /tmp/code-server.deb "$DEB_URL"
dpkg -i /tmp/code-server.deb
rm /tmp/code-server.deb
success "code-server v${LATEST} インストール完了"
# --- config.yaml 生成 ---
CONFIG_DIR="$REAL_HOME/.config/code-server"
mkdir -p "$CONFIG_DIR"
cat > "$CONFIG_DIR/config.yaml" <<EOF
bind-addr: 0.0.0.0:8080
auth: password
password: ${PASSWORD}
cert: false
EOF
chown -R "$REAL_USER:$REAL_USER" "$CONFIG_DIR"
chmod 600 "$CONFIG_DIR/config.yaml"
success "config.yaml 生成完了"
# --- argv.json: 日本語化のキモ ---
info "argv.json を配置中..."
VSCODE_DIR="$REAL_HOME/.local/share/code-server/User"
mkdir -p "$VSCODE_DIR"
cat > "$VSCODE_DIR/argv.json" <<'EOF'
{
"locale": "ja"
}
EOF
chown -R "$REAL_USER:$REAL_USER" "$REAL_HOME/.local/share/code-server"
success "argv.json 配置完了"
# --- systemd サービス登録 ---
info "systemd サービスを登録中..."
cat > /etc/systemd/system/code-server.service <<EOF
[Unit]
Description=code-server (VS Code in Browser)
After=network.target
[Service]
Type=exec
User=${REAL_USER}
WorkingDirectory=${REAL_HOME}
ExecStart=/usr/bin/code-server
Restart=always
RestartSec=5
Environment=LANG=ja_JP.UTF-8
Environment=LC_ALL=ja_JP.UTF-8
Environment=HOME=${REAL_HOME}
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable code-server
systemctl restart code-server
success "systemd サービス登録・起動完了"
# --- ファイアウォール ---
if ufw status 2>/dev/null | grep -q "Status: active"; then
info "ufw でポート 8080 を開放中..."
ufw allow 8080/tcp
success "ポート開放済み"
fi
# --- 起動確認 ---
info "起動確認中..."
sleep 4
systemctl is-active --quiet code-server && success "code-server 正常起動" \
|| { echo ""; journalctl -u code-server -n 20 --no-pager; }
# --- 完了メッセージ ---
HOST_IP=$(hostname -I | awk '{print $1}')
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} Code-Server インストール完了!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e " 🌐 アクセスURL : ${CYAN}http://${HOST_IP}:8080${NC}"
echo -e " 🔑 パスワード : ${YELLOW}${PASSWORD}${NC}"
echo ""
echo -e " 日本語化手順:"
echo -e " 1. Extensions で 'Japanese Language Pack' をインストール"
echo -e " 2. Ctrl+Shift+R でリロード → 日本語UIになります"
echo ""
echo -e " 起動 : ${CYAN}sudo systemctl start code-server${NC}"
echo -e " 停止 : ${CYAN}sudo systemctl stop code-server${NC}"
echo -e " ログ確認: ${CYAN}journalctl -u code-server -f${NC}"
echo ""
echo -e "${YELLOW} ⚠ 本番公開時はリバースプロキシ + HTTPS を推奨します${NC}"
echo ""
こちらも起動後に日本語化しましょう。
パスワードを変更したい場合は下記ファイルを編集してリスタートします。
nano ~/.config/code-server/config.yaml
sudo systemctl restart code-server



