Skip to content
Merged
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ This is a Docker base image for Coder workspaces, built on top of `codercom/ente
- Graphite CLI for stacked PRs
- GitHub CLI extensions: `gh stack` (github/gh-stack) and `gh actions-lock` (github/gh-actions-lock)
- AWS CLI, Google Cloud CLI, and Qodana CLI
- cloudflared (Cloudflare Tunnel client) from Cloudflare's apt repository
- Custom Nerd Fonts for terminal display

## Repository Structure
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ A comprehensive Docker base image for [Coder](https://coder.com/) workspaces, bu
- **GitHub CLI extensions**: `gh stack` (native stacked PRs) and `gh actions-lock` (lock and verify GitHub Actions dependencies)
- **GitHub CLI (gh)**: GitHub operations from terminal
- **AWS CLI**: Amazon Web Services command line interface
- **cloudflared**: Cloudflare Tunnel client (official Cloudflare apt repository)
- **Qodana CLI**: JetBrains code quality platform

## Quick Start
Expand Down Expand Up @@ -101,6 +102,7 @@ All installation scripts are located in the `scripts/` directory:
|--------|-------------|------|
| `install-fonts.sh` | System fonts installation | root |
| `install-root-sdk.sh` | Qodana CLI, AWS CLI | root |
| `install-cloudflared.sh` | cloudflared (Cloudflare apt repository) | root |
| `install-docker.sh` | Docker Engine | root |
| `install-sdk.sh` | fnm, SDKMAN, Bun, Deno, Claude Code, FVM | coder |
| `install-prompt.sh` | Zimfw modules (`.zimrc`), Powerlevel10k prompt, Orca history | coder |
Expand Down
16 changes: 15 additions & 1 deletion images/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ images/
├── install-fonts.sh # 시스템 폰트 설치 (Root)
├── install-root-sdk.sh # Root 레벨 도구 (Qodana, AWS CLI)
├── install-mise.sh # mise 버전 매니저 설치 (Root, apt)
├── install-cloudflared.sh # cloudflared 설치 (Root, apt)
├── install-docker.sh # Docker Engine 설치 (Root)
├── install-sdk.sh # 사용자 개발 도구 (mise 글로벌 런타임, Claude Code)
├── install-prompt.sh # Zimfw 모듈 + Powerlevel10k 프롬프트
Expand Down Expand Up @@ -48,6 +49,7 @@ images/
- AWS CLI
- Google Cloud CLI
- GitHub CLI
- cloudflared (Cloudflare Tunnel 클라이언트)
- Docker (coder 사용자가 docker 그룹에 포함)

**기타:**
Expand Down Expand Up @@ -79,7 +81,10 @@ images/
- Qodana CLI
- AWS CLI

5. **Docker 설치**
5. **cloudflared 설치** (`install-cloudflared.sh`)
- Cloudflare 공식 apt repository

6. **Docker 설치**
- Docker Engine 설치
- coder 사용자를 docker 그룹에 추가

Expand Down Expand Up @@ -174,6 +179,13 @@ Root 레벨 개발 도구:
- Qodana CLI (JetBrains 코드 분석)
- AWS CLI v2

#### install-cloudflared.sh (Root)

cloudflared 설치:
- Cloudflare 공식 apt repository 사용 (`https://pkg.cloudflare.com/cloudflared any main`)
- 서명 키: `/usr/share/keyrings/cloudflare-public-v2.gpg`
Comment thread
seon-yunjae marked this conversation as resolved.
Resolved
- 바이너리만 설치하며 터널·서비스·인증 정보는 구성하지 않음 (워크스페이스별로 설정)

#### install-docker.sh (Root)

Docker Engine 설치:
Expand Down Expand Up @@ -249,6 +261,8 @@ GitHub CLI 확장 설치:

**Root Phase (mise):** Docker 직전에 mise 바이너리를 apt로 시스템 설치 (`install-mise.sh`)

**Root Phase (cloudflared):** mise 다음, Docker 직전에 cloudflared를 apt로 설치 (`install-cloudflared.sh`)

**Coder User Phase:**
1. SDK (`install-sdk.sh`) - mise 글로벌 런타임(node/bun/deno/java), npm 전역 패키지, Claude Code
2. 프롬프트 (`install-prompt.sh`) - Zimfw 설치 이후
Expand Down
6 changes: 6 additions & 0 deletions images/base/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,12 @@ RUN chmod +x /tmp/install-mise.sh && \
/tmp/install-mise.sh && \
rm /tmp/install-mise.sh

# cloudflared 설치
COPY --chown=root:root scripts/install-cloudflared.sh /tmp/install-cloudflared.sh
RUN chmod +x /tmp/install-cloudflared.sh && \
/tmp/install-cloudflared.sh && \
rm /tmp/install-cloudflared.sh

# Docker 설치
COPY --chown=root:root scripts/install-docker.sh /tmp/install-docker.sh
RUN chmod +x /tmp/install-docker.sh && \
Expand Down
20 changes: 20 additions & 0 deletions images/base/scripts/install-cloudflared.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash
set -euo pipefail

echo "Installing cloudflared..."

# Cloudflare GPG key 설치
mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL --retry 5 --retry-connrefused --retry-delay 2 -o /usr/share/keyrings/cloudflare-public-v2.gpg https://pkg.cloudflare.com/cloudflare-public-v2.gpg
Comment thread
seon-yunjae marked this conversation as resolved.
Resolved
chmod 0644 /usr/share/keyrings/cloudflare-public-v2.gpg
Comment thread
seon-yunjae marked this conversation as resolved.
Resolved

# cloudflared apt repository 추가
echo "deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main" > /etc/apt/sources.list.d/cloudflared.list
Comment thread
seon-yunjae marked this conversation as resolved.
Resolved

# cloudflared 설치
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends cloudflared
apt-get clean
rm -rf /var/lib/apt/lists/*
Comment thread
seon-yunjae marked this conversation as resolved.
Resolved

echo "cloudflared installed successfully: $(cloudflared --version)"
Loading