Skip to content

Commit 0bed2e3

Browse files
committed
- ✅ Profiles persist to ./chromium-data by default
- ✅ Chrome version and all 41 profile files persist across restarts - ✅ Can customize location with CHROMIUM_DATA_HOST - ✅ Can disable with CHROMIUM_DATA_HOST="" - ✅ Docker-compose works with env var or default
1 parent 7848f38 commit 0bed2e3

File tree

4 files changed

+34
-22
lines changed

4 files changed

+34
-22
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,7 @@ service-account-key.json
5151

5252
# Backup files
5353
*.bak
54-
*.backup
54+
*.backup
55+
56+
# Chromium persistent data
57+
chromium-data/

Makefile

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ help: ## Show this help message
1212
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " %-15s %s\n", $$1, $$2}'
1313
@echo ""
1414
@echo "Chromium Data Persistence:"
15-
@echo " - Set CHROMIUM_DATA_HOST=./chromium-data for persistent browser data"
16-
@echo " - Example: CHROMIUM_DATA_HOST=./chromium-data make run"
17-
@echo " - For docker-compose, uncomment the ./chromium-data:/data volume"
15+
@echo " - Browser data persists to ./chromium-data by default"
16+
@echo " - Customize location: CHROMIUM_DATA_HOST=/path/to/data make run"
17+
@echo " - Disable persistence: CHROMIUM_DATA_HOST=\"\" make run"
1818

1919
init: ## Initialize submodules (run this first)
2020
git submodule update --init --recursive
@@ -28,8 +28,7 @@ build: init ## Build extended image with DevTools frontend
2828
run: ## Run extended container with DevTools (interactive)
2929
@echo "🚀 Starting extended kernel-browser with DevTools..."
3030
@if [ -n "$(URLS)" ]; then echo "📄 Opening URLs: $(URLS)"; fi
31-
@if [ -n "$(CHROMIUM_DATA_HOST)" ]; then echo "🗂️ Using persistent data: $(CHROMIUM_DATA_HOST)"; fi
32-
CHROMIUM_DATA_HOST='$(CHROMIUM_DATA_HOST)' URLS='$(URLS)' ./run-local.sh
31+
@./run-local.sh
3332

3433
compose-up: build ## Start with docker-compose (background)
3534
@echo "🚀 Starting with docker-compose..."

docker-compose.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ services:
3030
- NEKO_WEBRTC_NAT1TO1=127.0.0.1
3131
# Run as kernel user (not root)
3232
- RUN_AS_ROOT=false
33-
# Mount Chromium flags (user-data-dir will be set automatically by start-chromium.sh using CHROMIUM_DATA_DIR)
34-
- CHROMIUM_FLAGS=--disable-dev-shm-usage --start-maximized --remote-allow-origins=* --no-sandbox --disable-setuid-sandbox
33+
# Chromium flags with persistent data directory
34+
- CHROMIUM_FLAGS=--user-data-dir=/data/user-data --disable-dev-shm-usage --start-maximized --remote-allow-origins=* --no-sandbox --disable-setuid-sandbox
3535
volumes:
3636
# Persist recordings in local directory
3737
- "./recordings:/recordings"
3838
# Mount Chromium flags file (will be created by run script)
3939
- "./kernel-images/images/chromium-headful/.tmp/chromium/flags:/chromium/flags:ro"
40-
# Optional: Uncomment to persist Chromium data across container restarts
41-
# - "./chromium-data:/data"
40+
# Persist Chromium data across container restarts (set CHROMIUM_DATA_HOST env var to customize path)
41+
- "${CHROMIUM_DATA_HOST:-./chromium-data}:/data"
4242
tmpfs:
4343
- /dev/shm:size=2g
4444
restart: unless-stopped

run-local.sh

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ export UKC_METRO="dummy-metro-for-local-run"
3737

3838

3939
# Local-friendly Chrome flags (less restrictive than cloud) + custom DevTools frontend
40-
# Note: --user-data-dir will be set automatically by start-chromium.sh using CHROMIUM_DATA_DIR
41-
export CHROMIUM_FLAGS="--disable-dev-shm-usage --start-maximized --remote-allow-origins=* --no-sandbox --disable-setuid-sandbox --custom-devtools-frontend=http://localhost:8001/"
40+
export CHROMIUM_FLAGS="--user-data-dir=/data/user-data --disable-dev-shm-usage --start-maximized --remote-allow-origins=* --no-sandbox --disable-setuid-sandbox --custom-devtools-frontend=http://localhost:8001/"
4241

4342
echo "🔧 Configuration:"
4443
echo " Image: $IMAGE"
@@ -61,20 +60,31 @@ source ../../shared/ensure-common-build-run-vars.sh chromium-headful
6160
HOST_RECORDINGS_DIR="$SCRIPT_DIR/recordings"
6261
mkdir -p "$HOST_RECORDINGS_DIR"
6362

64-
# Optional Chromium data directory for persistence
65-
# Set CHROMIUM_DATA_HOST to enable volume mounting (e.g., ./chromium-data)
66-
if [[ -n "${CHROMIUM_DATA_HOST:-}" ]]; then
67-
echo "🗂️ Using persistent Chromium data directory: $CHROMIUM_DATA_HOST"
68-
mkdir -p "$CHROMIUM_DATA_HOST"
69-
CHROMIUM_DATA_VOLUME="-v $(realpath "$CHROMIUM_DATA_HOST"):/data"
70-
else
63+
# Chromium data directory for persistence
64+
# Set CHROMIUM_DATA_HOST to customize location (default: ./chromium-data)
65+
# Set CHROMIUM_DATA_HOST="" to disable persistence (ephemeral mode)
66+
if [[ "${CHROMIUM_DATA_HOST+set}" == "set" && -z "$CHROMIUM_DATA_HOST" ]]; then
7167
echo "🔄 Using ephemeral Chromium data (no persistence)"
7268
CHROMIUM_DATA_VOLUME=""
69+
else
70+
# Default to ./chromium-data if not specified
71+
CHROMIUM_DATA_HOST="${CHROMIUM_DATA_HOST:-$SCRIPT_DIR/chromium-data}"
72+
echo "🗂️ Using persistent Chromium data directory: $CHROMIUM_DATA_HOST"
73+
CHROMIUM_DATA_REAL=$(realpath "$CHROMIUM_DATA_HOST" 2>/dev/null || echo "")
74+
if [[ -z "$CHROMIUM_DATA_REAL" ]]; then
75+
# Path doesn't exist yet, try to create it first
76+
mkdir -p "$CHROMIUM_DATA_HOST"
77+
CHROMIUM_DATA_REAL=$(realpath "$CHROMIUM_DATA_HOST" 2>/dev/null || echo "")
78+
if [[ -z "$CHROMIUM_DATA_REAL" ]]; then
79+
echo "❌ Error: Invalid path $CHROMIUM_DATA_HOST"
80+
exit 1
81+
fi
82+
fi
83+
CHROMIUM_DATA_VOLUME="${CHROMIUM_DATA_REAL}:/data"
7384
fi
7485

7586
# Build Chromium flags file and mount
76-
# Note: --user-data-dir will be set automatically by start-chromium.sh using CHROMIUM_DATA_DIR
77-
CHROMIUM_FLAGS_DEFAULT="--disable-dev-shm-usage --disable-gpu --start-maximized --disable-software-rasterizer --remote-allow-origins=*"
87+
CHROMIUM_FLAGS_DEFAULT="--user-data-dir=/data/user-data --disable-dev-shm-usage --disable-gpu --start-maximized --disable-software-rasterizer --remote-allow-origins=*"
7888
if [[ "$RUN_AS_ROOT" == "true" ]]; then
7989
CHROMIUM_FLAGS_DEFAULT="$CHROMIUM_FLAGS_DEFAULT --no-sandbox --no-zygote"
8090
fi
@@ -107,7 +117,7 @@ RUN_ARGS=(
107117

108118
# Add Chromium data volume if specified
109119
if [[ -n "$CHROMIUM_DATA_VOLUME" ]]; then
110-
RUN_ARGS+=( $CHROMIUM_DATA_VOLUME )
120+
RUN_ARGS+=( -v "${CHROMIUM_DATA_VOLUME}" )
111121
fi
112122

113123
# Add URLS environment variable if provided

0 commit comments

Comments
 (0)