File size: 2,994 Bytes
5f1bc5c
17d86c5
 
5f1bc5c
 
883ddea
 
17d86c5
883ddea
17d86c5
 
5f1bc5c
17d86c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5f1bc5c
 
883ddea
5f1bc5c
 
 
17d86c5
883ddea
17d86c5
 
5f1bc5c
17d86c5
5f1bc5c
17d86c5
 
883ddea
17d86c5
 
 
 
5f1bc5c
 
17d86c5
 
 
 
3a71d4c
17d86c5
 
ca2ba8b
17d86c5
 
cff6fad
17d86c5
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash

# エラーが出たら止まるように設定
set -e

echo "🚀 Starting custom VSCode environment..."

# ---------------------------------------------------------
# 1. 永続ストレージ (/data) のセットアップ
# ---------------------------------------------------------
# /data フォルダが存在するか確認(Persistent Storageが有効なら存在する)
if [ -d "/data" ]; then
    echo "💾 Persistent storage detected provided at /data"
    
    # ユーザー設定や拡張機能を保存するフォルダを /data 内に作成
    mkdir -p /data/User
    mkdir -p /data/extensions
    mkdir -p /data/workspace

    # 本来の保存場所から /data へリンクを貼る(これでデータが永続化される!)
    # .local/share/code-server は拡張機能など
    mkdir -p /home/user/.local/share
    rm -rf /home/user/.local/share/code-server
    ln -s /data/extensions /home/user/.local/share/code-server

    # .config/code-server は設定ファイルなど
    mkdir -p /home/user/.config
    rm -rf /home/user/.config/code-server
    ln -s /data/User /home/user/.config/code-server
    
    # ワークスペース(作業場)を /data/workspace に設定
    WORKING_DIR="/data/workspace"
else
    echo "⚠️ No persistent storage found. Using ephemeral storage."
    WORKING_DIR="/home/user"
fi

# ---------------------------------------------------------
# 2. SQLite データベースの準備
# ---------------------------------------------------------
# ユーザーごとのデータを保存するためのSQLite DBをセットアップ
DB_PATH="$WORKING_DIR/user_data.sqlite"

if [ ! -f "$DB_PATH" ]; then
    echo "📦 Initializing SQLite database at $DB_PATH..."
    # 新規作成時にテーブルを作っておく(例としてusersテーブルを作成)
    sqlite3 "$DB_PATH" "CREATE TABLE IF NOT EXISTS system_logs (id INTEGER PRIMARY KEY, message TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP);"
    sqlite3 "$DB_PATH" "INSERT INTO system_logs (message) VALUES ('System initialized');"
    echo "✅ SQLite database created."
else
    echo "📂 SQLite database found. Ready to use."
fi

# ---------------------------------------------------------
# 3. code-server (VSCode) の起動
# ---------------------------------------------------------
echo "💻 Launching VSCode Server on port 7860..."

# PASSWORD環境変数が設定されていない場合のデフォルト(必ずSpaceのSettingsで設定してね!)
if [ -z "$PASSWORD" ]; then
    export PASSWORD="123"
    echo "⚠️ WARNING: No password set. Using default: 'changeme123'"
fi

# VSCodeを起動
# --bind-addr: 外部からアクセスできるようにする
# --auth: パスワード認証を有効にする
# --user-data-dir: 設定ファイルの場所を指定(リンク済みだが念のため)
exec code-server \
    --bind-addr 0.0.0.0:7860 \
    --auth password \
    --disable-telemetry \
    "$WORKING_DIR"