Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f1c93b81d1 | |||
| d078bb1c44 | |||
| 56c648187a | |||
| 8870d60ccc | |||
| d54515244c | |||
| 2918cfde25 |
+5
-3
@@ -37,8 +37,8 @@ RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \
|
|||||||
apt-get install -y nodejs && \
|
apt-get install -y nodejs && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install Happy Coder globally
|
# Install Happy Coder and Claude Code globally
|
||||||
RUN npm install -g happy-coder
|
RUN npm install -g happy-coder @anthropic-ai/claude-code
|
||||||
|
|
||||||
# Install Antigravity (Google's Project IDX / Cloud Code alternative)
|
# Install Antigravity (Google's Project IDX / Cloud Code alternative)
|
||||||
# Note: Antigravity might be packaged differently - adjust as needed
|
# Note: Antigravity might be packaged differently - adjust as needed
|
||||||
@@ -58,9 +58,11 @@ RUN groupadd -g 1000 user && \
|
|||||||
RUN mkdir -p /workspace && \
|
RUN mkdir -p /workspace && \
|
||||||
chown -R user:user /workspace
|
chown -R user:user /workspace
|
||||||
|
|
||||||
# Copy startup script
|
# Copy startup scripts
|
||||||
COPY --chmod=755 scripts/startapp.sh /startapp.sh
|
COPY --chmod=755 scripts/startapp.sh /startapp.sh
|
||||||
COPY --chmod=755 scripts/init-repo.sh /usr/local/bin/init-repo
|
COPY --chmod=755 scripts/init-repo.sh /usr/local/bin/init-repo
|
||||||
|
# Fix app user shell after baseimage-gui creates it at runtime
|
||||||
|
COPY --chmod=755 scripts/cont-init-user.sh /etc/cont-init.d/20-fix-user-shell.sh
|
||||||
|
|
||||||
# Set working directory
|
# Set working directory
|
||||||
WORKDIR /workspace
|
WORKDIR /workspace
|
||||||
|
|||||||
+13
-3
@@ -59,9 +59,18 @@ These MUST be configured before deployment:
|
|||||||
- **Format:** `ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
|
- **Format:** `ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
|
||||||
- **Scopes:** `repo`
|
- **Scopes:** `repo`
|
||||||
|
|
||||||
|
### Anthropic API Key
|
||||||
|
- **Variable:** `ANTHROPIC_API_KEY`
|
||||||
|
- **File:** Kubernetes Secret (referenced by `envSecretName`)
|
||||||
|
- **Type:** String (Anthropic API key)
|
||||||
|
- **Description:** API key for Claude Code / Happy Coder authentication. Browser-based OAuth login does not work inside the VNC session, so this key is **required** for Happy Coder to function.
|
||||||
|
- **Required:** Yes (for Happy Coder / Claude Code)
|
||||||
|
- **Format:** `sk-ant-api03-...`
|
||||||
|
- **How to get:** https://console.anthropic.com/settings/keys
|
||||||
|
|
||||||
### VNC Password
|
### VNC Password
|
||||||
- **Variable:** `vnc-password`
|
- **Variable:** `vnc-password`
|
||||||
- **File:** Sealed Secret
|
- **File:** Kubernetes Secret (referenced by `envSecretName`)
|
||||||
- **Type:** String
|
- **Type:** String
|
||||||
- **Description:** Password for VNC web interface
|
- **Description:** Password for VNC web interface
|
||||||
- **Required:** Recommended for security
|
- **Required:** Recommended for security
|
||||||
@@ -286,8 +295,9 @@ hostnames:
|
|||||||
### With Secrets
|
### With Secrets
|
||||||
```bash
|
```bash
|
||||||
kubectl create secret generic antigravity-secrets \
|
kubectl create secret generic antigravity-secrets \
|
||||||
--from-literal=github-token='CHANGE_ME' \
|
--from-literal=GITHUB_TOKEN='CHANGE_ME' \
|
||||||
--from-literal=vnc-password='CHANGE_ME' \
|
--from-literal=VNC_PASSWORD='CHANGE_ME' \
|
||||||
|
--from-literal=ANTHROPIC_API_KEY='sk-ant-api03-...' \
|
||||||
--dry-run=client -o yaml | \
|
--dry-run=client -o yaml | \
|
||||||
kubeseal --format=yaml > k8s/sealedsecrets.yaml
|
kubeseal --format=yaml > k8s/sealedsecrets.yaml
|
||||||
```
|
```
|
||||||
|
|||||||
+5
-2
@@ -38,6 +38,9 @@ resources:
|
|||||||
memory: "8Gi"
|
memory: "8Gi"
|
||||||
cpu: "4000m"
|
cpu: "4000m"
|
||||||
|
|
||||||
# Name of existing Secret containing env vars (GITHUB_TOKEN, VNC_PASSWORD, etc.)
|
# Name of existing Secret containing env vars. Defaults to: devcontainer-{name}-secrets-env
|
||||||
# Defaults to: devcontainer-{name}-secrets-env
|
# Recognized keys:
|
||||||
|
# GITHUB_TOKEN — PAT for private repo access
|
||||||
|
# VNC_PASSWORD — password for the VNC web UI
|
||||||
|
# ANTHROPIC_API_KEY — required for Claude Code / Happy Coder auth (browser login won't work in VNC)
|
||||||
envSecretName: ""
|
envSecretName: ""
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Fix the app user (UID 1000) created by baseimage-gui at runtime.
|
||||||
|
# baseimage-gui sets shell=/sbin/nologin and home=/dev/null, which
|
||||||
|
# prevents VSCode from opening terminals.
|
||||||
|
usermod -s /bin/bash app
|
||||||
|
usermod -d /home/user app
|
||||||
@@ -59,6 +59,13 @@ chown -R "$RUN_UID:$RUN_GID" "$WORKSPACE_DIR"
|
|||||||
mkdir -p "$HOME"
|
mkdir -p "$HOME"
|
||||||
chown "$RUN_UID:$RUN_GID" "$HOME"
|
chown "$RUN_UID:$RUN_GID" "$HOME"
|
||||||
|
|
||||||
|
# Warn if ANTHROPIC_API_KEY is not set — browser-based Claude login won't work in VNC
|
||||||
|
if [ -z "$ANTHROPIC_API_KEY" ]; then
|
||||||
|
echo "WARNING: ANTHROPIC_API_KEY is not set."
|
||||||
|
echo " Claude Code cannot authenticate via browser inside this container."
|
||||||
|
echo " Add ANTHROPIC_API_KEY to your Kubernetes secret to enable Happy Coder."
|
||||||
|
fi
|
||||||
|
|
||||||
# Start Happy Coder daemon
|
# Start Happy Coder daemon
|
||||||
echo "Starting Happy Coder..."
|
echo "Starting Happy Coder..."
|
||||||
cd "$WORKSPACE_DIR"
|
cd "$WORKSPACE_DIR"
|
||||||
|
|||||||
Reference in New Issue
Block a user