Merge pull request #4208 from okxlin/pr/codex-claude-workstation

add: codex-claude-workstation (Codex + Claude AI workstation)
This commit is contained in:
okxlin
2026-06-15 09:36:26 +08:00
committed by GitHub
9 changed files with 314 additions and 0 deletions
+113
View File
@@ -0,0 +1,113 @@
# Codex Claude Workstation
## 产品介绍
浏览器可访问的 Codex AI 编程工作站,集成 code-server (VS Code) 和丰富的开发工具链。
## 主要功能
- **code-server (VS Code)** — 浏览器内完整 VS Code 体验
- **Codex CLI** — OpenAI Codex AI 编程助手
- **Claude Code** — Anthropic Claude Code CLI
- **开发工具链** — Go, Rust, Bun, Docker CLI, yq, gh, shellcheck 等 30+ 工具
- **代理支持** — 通过 supervisord 按需启用 Clash.Meta/sing-box/Xray
## Introduction
Browser-accessible Codex AI development workstation with code-server (VS Code) and rich dev toolchain.
## Features
- **code-server (VS Code)** — Full VS Code experience in browser
- **Codex CLI** — OpenAI Codex AI coding assistant
- **Claude Code** — Anthropic Claude Code CLI
- **Dev Toolchain** — Go, Rust, Bun, Docker CLI, yq, gh, shellcheck, 30+ tools
- **Proxy Support** — On-demand Clash.Meta/sing-box/Xray via supervisord
## 安装说明
镜像由 `codex-claude-workstation-builder` 预先编译,发布在:
```
ghcr.io/okxlin/codex-claude-workstation:latest
```
1Panel 安装时自动拉取,无需手动构建。
## 参数填写指南
### 必填参数
**`PANEL_APP_PORT_HTTP`** — Web 访问端口
- code-server 对外暴露的访问端口
- 默认 `8080`,可改为任意未占用端口
- 安装后通过 `http://你的IP:此端口` 访问
**`CODE_SERVER_PASSWORD`** — code-server 密码
- 登录 code-server 时使用的密码
- 默认 `change-me`,请务必修改
**`ROOT_PASSWORD`** — Root 用户密码
- 容器 root 用户的密码(可通过 `su - root` 切换登录)
- 默认 `codex2024`,建议修改为更强的密码
**`APP_DATA_DIR`** — 数据目录
- 工作区文件存放的宿主机目录
- 默认 `./data`,建议填写绝对路径如 `/data/codex-workstation
### 可选参数
**`DOCKER_SOCK_SRC`** — Docker 套接字路径
- 挂载宿主机 Docker Socket 到容器内 `/var/run/docker.sock`
- 默认 `/var/run/docker.sock`,留空则禁用 Docker CLI
- 必须先通过 ROOT_PASSWORD 切换至 root 才可使用 Docker CLI
**`TZ`** — 时区
- 默认 `Asia/Shanghai`
- 可选,留空使用系统默认
### 不在安装表单中的参数
**`PROXY_ENABLED`** — 代理 (手动启用)
- 默认不启动;内置 clash-meta / sing-box / xray 二进制
- 通过 `supervisorctl start clash-meta|sing-box|xray` 按需启用
- 代理配置文件放入 `/home/dev/proxy/`(持久化),如 `clash-meta.yaml` / `sing-box.json` / `xray.json`
## 访问说明
安装完成后通过分配的端口访问:
- `http://IP:端口` — code-server (VS Code),集成终端在 VS Code 内使用
## 首次登录
安装完成后进入容器执行 Codex 登录:
```bash
docker exec -it ${CONTAINER_NAME} bash
codex login --device-auth
```
## 认证说明
code-server 密码认证(单层):
1. **code-server 密码** — VS Code 登录时使用的密码
## 数据持久化
| 数据 | 路径 | 持久化方式 |
|------|------|-----------|
| 工作区 | `/workspace` | 绑定挂载到数据目录 |
| Codex 配置 | `/home/dev/.codex` | Named volume `codex-home` |
| 代理配置 | `/home/dev/proxy/` | Named volume `codex-home` |
| code-server 配置 | `/home/dev/.config/code-server/` | Named volume `codex-home` |
| 本地二进制 | `/home/dev/.local/bin/` | Named volume `codex-home` |
## 注意事项
- 不支持 Chat Completions-only API(必须支持 OpenAI Responses API
- 首次安装后需在 code-server 终端执行 `codex login` 认证
- 不默认启动 Codex App Server
- 容器以 `dev` 用户运行(非 root),可通过 ROOT_PASSWORD 切换至 root
- 代理默认不启动,按需通过 `supervisorctl start clash-meta|sing-box|xray` 启用
+29
View File
@@ -0,0 +1,29 @@
name: Codex Claude Workstation
tags:
- Tool
title: Codex Claude Workstation
description: 浏览器可访问的 Codex + Claude AI 编程工作站
additionalProperties:
key: codex-claude-workstation
name: Codex Claude Workstation
tags:
- Tool
type: tool
website: https://github.com/openai/codex
document: https://github.com/openai/codex
architectures:
- amd64
github: https://github.com/okxlin/release-factory
shortDescZh: 浏览器可访问的 Codex + Claude AI 编程工作站
shortDescEn: Browser-accessible Codex + Claude AI workstation
description:
en: Browser-accessible Codex + Claude AI workstation with code-server (VS Code)
zh: 浏览器可访问的 Codex + Claude AI 编程工作站,集成 code-server (VS Code)
zh-Hant: 瀏覽器可訪問的 Codex + Claude AI 編程工作站,集成 code-server (VS Code)
ja: ブラウザからアクセス可能な Codex + Claude AI 開発ワークステーション
ko: 브라우저에서 접근 가능한 Codex + Claude AI 개발 워크스테이션
ru: Доступная через браузер рабочая станция Codex + Claude AI
ms: Stesen kerja pembangunan Codex + Claude AI yang boleh diakses melalui pelayar
pt-br: Estação de trabalho Codex + Claude AI acessível pelo navegador
crossVersionUpdate: false
limit: 1
@@ -0,0 +1,8 @@
# codex-claude-workstation 1Panel environment variables
PANEL_APP_PORT_HTTP=8080
CODE_SERVER_PASSWORD=change-me
ROOT_PASSWORD=codex2024
DOCKER_SOCK_SRC=/var/run/docker.sock
APP_DATA_DIR=./data
CONTAINER_NAME=codex-claude-workstation
TZ=Asia/Shanghai
@@ -0,0 +1,101 @@
additionalProperties:
formFields:
- envKey: PANEL_APP_PORT_HTTP
type: number
required: true
default: 8080
rule: paramPort
labelZh: Web 访问端口
labelEn: Web Port
label:
en: Web Port
zh: Web 访问端口
zh-Hant: Web 訪問端口
ja: Web ポート
ko: 웹 포트
ru: Веб-порт
ms: Port Web
pt-br: Porta Web
edit: true
- envKey: CODE_SERVER_PASSWORD
type: password
required: true
random: true
default: change-me
labelZh: code-server 密码
labelEn: Code-server Password
label:
en: Code-server Password
zh: code-server 密码
zh-Hant: code-server 密碼
ja: code-server パスワード
ko: code-server 비밀번호
ru: Пароль code-server
ms: Kata Laluan code-server
pt-br: Senha do code-server
edit: true
- envKey: ROOT_PASSWORD
type: password
required: false
random: true
default: codex2024
labelZh: Root 密码
labelEn: Root Password
label:
en: Root Password
zh: Root 密码
zh-Hant: Root 密碼
ja: Root パスワード
ko: Root 비밀번호
ru: Пароль Root
ms: Kata Laluan Root
pt-br: Senha do Root
edit: true
- default: /var/run/docker.sock
edit: true
envKey: DOCKER_SOCK_SRC
type: text
required: false
labelEn: Docker Socket Path (leave empty to disable)
labelZh: Docker 套接字路径(留空禁用)
label:
en: Docker Socket Path (leave empty to disable)
zh: Docker 套接字路径(留空禁用)
zh-Hant: Docker 套接字路徑(留空禁用)
ja: Docker ソケットパス(空欄で無効)
ko: Docker 소켓 경로 (비우면 비활성화)
ru: Путь к Docker-сокету (оставьте пустым для отключения)
ms: Laluan soket Docker (kosongkan untuk lumpuhkan)
pt-br: Caminho do socket Docker (deixe em branco para desabilitar)
- envKey: APP_DATA_DIR
type: text
required: true
default: ./data
labelZh: 数据目录
labelEn: Data Directory
label:
en: Data Directory
zh: 数据目录
zh-Hant: 數據目錄
ja: データディレクトリ
ko: 데이터 디렉토리
ru: Каталог данных
ms: Direktori Data
pt-br: Diretório de Dados
edit: true
- envKey: TZ
type: text
required: false
default: Asia/Shanghai
labelZh: 时区
labelEn: Timezone
label:
en: Timezone
zh: 时区
zh-Hant: 時區
ja: タイムゾーン
ko: 시간대
ru: Часовой пояс
ms: Zon Waktu
pt-br: Fuso Horário
edit: true
@@ -0,0 +1,34 @@
services:
workstation:
image: "ghcr.io/okxlin/codex-claude-workstation:latest"
container_name: ${CONTAINER_NAME}
hostname: workstation
restart: always
labels:
createdBy: "Apps"
environment:
- TZ=${TZ:-Asia/Shanghai}
- PASSWORD=${CODE_SERVER_PASSWORD:-change-me}
- ROOT_PASSWORD=${ROOT_PASSWORD:-codex2024}
volumes:
- ${APP_DATA_DIR:-./data}/workspace:/workspace
- codex-home:/home/dev
- ${DOCKER_SOCK_SRC:-/var/run/docker.sock}:/var/run/docker.sock
ports:
- ${PANEL_APP_PORT_HTTP}:8080
healthcheck:
test: ["CMD", "/usr/local/bin/healthcheck.sh"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
networks:
- 1panel-network
volumes:
codex-home:
name: codex-home
networks:
1panel-network:
external: true
+22
View File
@@ -0,0 +1,22 @@
#!/bin/bash
# init.sh — codex-claude-workstation 1Panel 初始化脚本
set -eo pipefail
echo "Codex Claude Workstation installed successfully."
echo ""
echo "Access:"
echo " http://<server-ip>:${PANEL_APP_PORT_HTTP}"
echo " Login: code-server password"
echo " Switch to root: su - root (password: ${ROOT_PASSWORD:-codex2024})"
echo ""
echo "AI Tools (run in code-server terminal):"
echo " codex --help OpenAI Codex CLI"
echo " claude --help Anthropic Claude Code"
echo ""
echo "Docker CLI (if DOCKER_SOCK_SRC set):"
echo " su - root"
echo " docker ps"
echo ""
echo "Proxy (manual enable):"
echo " supervisorctl start clash-meta # or sing-box, xray"
echo " Configs: ~/proxy/"
@@ -0,0 +1,3 @@
#!/bin/bash
# uninstall.sh — codex-claude-workstation cleanup
docker-compose down --volumes
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
# upgrade.sh — codex-claude-workstation upgrade placeholder
set -eo pipefail
echo "Upgrade placeholder: docker compose pull && docker compose up -d"
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB