|
1 | 1 | --- |
2 | 2 | title: "Module: VIBE" |
3 | 3 | weight: 4800 |
4 | | -description: Deploy AI coding sandbox with Pigsty, including Code-Server, JupyterLab, and Claude Code. |
| 4 | +description: Deploy an AI coding sandbox with Pigsty: Code-Server, JupyterLab, Node.js, and Claude Code. |
5 | 5 | icon: fas fa-laptop-code |
6 | 6 | module: [VIBE] |
7 | 7 | categories: [Reference] |
8 | 8 | --- |
9 | 9 |
|
10 | | -VIBE module provides a complete **cloud development environment**, integrating browser-based VS Code, interactive computing platform JupyterLab, and AI coding assistant Claude Code. |
11 | | -Combined with JuiceFS distributed filesystem and feature-rich PostgreSQL, it creates a ready-to-use **AI coding sandbox**. |
| 10 | +The VIBE module provides a **browser-based dev environment** with Code-Server, JupyterLab, Node.js, and Claude Code, |
| 11 | +and can work with [`JUICE`](/docs/juice) shared storage and [`PGSQL`](/docs/pgsql) database capabilities. |
12 | 12 |
|
| 13 | +VIBE depends on [`NODE`](/docs/node) and [`INFRA`](/docs/infra): |
| 14 | + |
| 15 | +- `NODE` provides base software and Python `uv` environment |
| 16 | +- `INFRA` provides Nginx reverse proxy, Grafana and portal entry |
13 | 17 |
|
14 | 18 | -------- |
15 | 19 |
|
16 | 20 | ## Components |
17 | 21 |
|
18 | | -VIBE module includes three core components: |
19 | | - |
20 | | -| Component | Description | Default Port | Access Path | |
21 | | -|:----------------|:------------------------------------------------|:-------------|:-----------------| |
22 | | -| **Code-Server** | VS Code in browser, full cloud IDE experience | 8443 | `/code/` | |
23 | | -| **JupyterLab** | Interactive computing, Notebook/terminal/editor | 8888 | `/jupyter/` | |
24 | | -| **Claude Code** | Anthropic's AI coding assistant CLI with observability | - | CLI / Dashboard | |
| 22 | +| Component | Description | Local Port | Access Path | |
| 23 | +|:-----|:-----|:--------:|:---------| |
| 24 | +| Code-Server | VS Code in browser | 8443 | `/code/` | |
| 25 | +| JupyterLab | Interactive notebooks | 8888 | `/jupyter/` | |
| 26 | +| Node.js | Runtime and npm | - | CLI | |
| 27 | +| Claude Code | CLI + observability config | - | CLI / Grafana | |
25 | 28 | {.full-width} |
26 | 29 |
|
| 30 | +Notes: |
27 | 31 |
|
28 | | --------- |
29 | | - |
30 | | -## Architecture |
31 | | - |
32 | | -VIBE components deploy as systemd services, exposed via Nginx reverse proxy with HTTPS: |
33 | | - |
34 | | -``` |
35 | | -User Browser |
36 | | - │ |
37 | | - ├── https://h.pigsty/code/ ─────► Code-Server (127.0.0.1:8443) |
38 | | - ├── https://h.pigsty/jupyter/ ─────► JupyterLab (127.0.0.1:8888) |
39 | | - └── https://h.pigsty:3000/d/claude-code ──► Grafana Dashboard |
40 | | -
|
41 | | -Command Line |
42 | | - └── ssh user@h.pigsty ──► Claude Code CLI |
43 | | -
|
44 | | -Shared Storage |
45 | | - └── JuiceFS (/fs) ─────► PostgreSQL (metadata + data) |
46 | | -``` |
47 | | - |
48 | | - |
49 | | --------- |
50 | | - |
51 | | -## Features |
52 | | - |
53 | | -- **Cloud IDE**: Access full VS Code dev environment via browser, code anywhere |
54 | | -- **Interactive Computing**: JupyterLab provides Notebook, terminal, editor multi-functional interface |
55 | | -- **AI Assistant**: Claude Code CLI with OpenTelemetry observability for monitoring and analysis |
56 | | -- **Shared Storage**: JuiceFS enables filesystem sharing with point-in-time recovery (PITR) |
57 | | -- **Rich PostgreSQL**: 400+ extensions pre-installed covering vector, timeseries, geo, analytics |
58 | | -- **One-Click Deploy**: Automated installation via Ansible playbooks, ready out-of-box |
59 | | - |
| 32 | +- Code-Server listens on `127.0.0.1:8443`, exposed via Nginx |
| 33 | +- JupyterLab listens on `0.0.0.0:8888`, base path `/jupyter/` |
60 | 34 |
|
61 | 35 | -------- |
62 | 36 |
|
63 | 37 | ## Quick Start |
64 | 38 |
|
65 | | -### 1. Prepare Config |
66 | | - |
67 | | -Use `vibe` config template: |
68 | | - |
69 | 39 | ```bash |
70 | 40 | ./configure -c vibe |
| 41 | +./deploy.yml # NODE + INFRA + PGSQL |
| 42 | +./juice.yml # optional shared storage |
| 43 | +./vibe.yml # VIBE |
71 | 44 | ``` |
72 | 45 |
|
73 | | -### 2. Deploy Infrastructure |
74 | | - |
75 | | -```bash |
76 | | -./deploy.yml # Deploy INFRA + PGSQL |
77 | | -./juice.yml # Deploy JuiceFS shared storage (optional) |
78 | | -``` |
79 | | - |
80 | | -### 3. Deploy VIBE Module |
81 | | - |
82 | | -```bash |
83 | | -./vibe.yml # Deploy Code-Server + JupyterLab + Claude Code |
84 | | -``` |
85 | | - |
86 | | -### 4. Access Services |
87 | | - |
88 | | -| Service | URL | Default Credential | |
89 | | -|:-------------|:----------------------------------|:-------------------| |
90 | | -| Code-Server | `https://<ip>/code/` | `Code.Server` | |
91 | | -| JupyterLab | `https://<ip>/jupyter/` | `Jupyter.Lab` | |
92 | | -| Claude Monitor | `https://<ip>:3000/d/claude-code` | Grafana creds | |
93 | | -{.full-width} |
94 | | - |
95 | | - |
96 | | --------- |
97 | | - |
98 | | -## Config Example |
99 | | - |
100 | | -Typical VIBE configuration (see [`conf/vibe.yml`](/docs/conf/vibe/)): |
101 | | - |
102 | | -```yaml |
103 | | -all: |
104 | | - children: |
105 | | - infra: |
106 | | - hosts: |
107 | | - 10.10.10.10: |
108 | | - # VIBE component config |
109 | | - vibe_data: /fs # Working directory (JuiceFS mount) |
110 | | - code_enabled: true # Enable Code-Server |
111 | | - code_password: 'Code.Server' # Code-Server password |
112 | | - jupyter_enabled: true # Enable JupyterLab |
113 | | - jupyter_password: 'Jupyter.Lab' # JupyterLab Token |
114 | | - claude_enabled: true # Enable Claude Code |
115 | | - |
116 | | - # JuiceFS shared storage |
117 | | - juice_instances: |
118 | | - jfs: |
119 | | - path: /fs |
120 | | - meta: postgres://dbuser_meta:DBUser.Meta@10.10.10.10:5432/meta |
121 | | - data: --storage postgres --bucket postgres://dbuser_meta:DBUser.Meta@10.10.10.10:5432/meta?prefix=juice |
122 | | -``` |
| 46 | +Default entry points (via `infra_portal.home`): |
123 | 47 |
|
| 48 | +- Code-Server: `https://<domain>/code/` |
| 49 | +- JupyterLab: `https://<domain>/jupyter/` |
| 50 | +- Claude Dashboard: `https://<domain>/ui/d/claude-code` |
124 | 51 |
|
125 | 52 | -------- |
126 | 53 |
|
127 | | -## Pre-installed Tools |
128 | | -
|
129 | | -VIBE config template includes these development tools: |
130 | | -
|
131 | | -| Tool | Description | |
132 | | -|:---------------|:---------------------------------| |
133 | | -| `claude` | Anthropic Claude Code CLI | |
134 | | -| `opencode` | Open-source AI coding assistant | |
135 | | -| `code-server` | VS Code in browser | |
136 | | -| `golang` | Go language toolchain | |
137 | | -| `nodejs` | Node.js runtime | |
138 | | -| `uv` | High-performance Python package manager | |
139 | | -| `postgrest` | PostgreSQL RESTful API service | |
140 | | -| `genai-toolbox`| Google GenAI Toolbox MCP service | |
141 | | -| `restic` | Incremental backup tool | |
142 | | -| `rclone` | Cloud storage sync tool | |
143 | | -| `asciinema` | Terminal recording tool | |
144 | | -{.full-width} |
145 | | - |
146 | | - |
147 | | --------- |
148 | | - |
149 | | -## PostgreSQL Extensions |
150 | | - |
151 | | -VIBE template PostgreSQL includes rich extensions: |
152 | | - |
153 | | -- **Vector Search**: `pgvector`, `pgvectorscale` |
154 | | -- **Time Series**: `timescaledb`, `pg_timeseries` |
155 | | -- **Geospatial**: `postgis`, `h3`, `pgrouting` |
156 | | -- **Analytics**: `pg_duckdb`, `pg_analytics`, `hydra` |
157 | | -- **Full-text Search**: `pg_search`, `zhparser` |
158 | | -- **Security**: `pg_tde`, `supabase_vault`, `pgsodium` |
159 | | -- **More**: See [Extension Catalog](https://pgext.cloud) |
160 | | - |
161 | | - |
162 | | --------- |
163 | | - |
164 | | -## Use Cases |
165 | | - |
166 | | -- **AI-Assisted Dev**: Use Claude Code for intelligent coding, boost productivity |
167 | | -- **Data Science**: JupyterLab + PostgreSQL + vector/timeseries extensions for analytics platform |
168 | | -- **Remote Dev**: Access full dev environment via browser on any device |
169 | | -- **Training**: Quickly setup standardized learning environments |
170 | | -- **Prototyping**: Rapidly build PoC environments, validate technical solutions |
171 | | - |
172 | | - |
173 | | --------- |
174 | | - |
175 | | -## Notes |
176 | | - |
177 | | -{{% alert title="Security Warning" color="warning" %}} |
178 | | -- Always change default passwords (`code_password`, `jupyter_password`) |
179 | | -- Production: configure firewall to restrict access sources |
180 | | -- Claude Code requires API Key configuration |
181 | | -{{% /alert %}} |
| 54 | +## Features |
182 | 55 |
|
| 56 | +- **Unified workspace**: `vibe_data` as root for Code-Server and Jupyter |
| 57 | +- **Optional shared storage**: work with `JUICE` for multi-node sharing |
| 58 | +- **Observability**: Claude Code OpenTelemetry integrates with VictoriaMetrics/VictoriaLogs |
| 59 | +- **Composable**: enable Code/Jupyter/Node.js/Claude as needed |
183 | 60 |
|
184 | 61 | -------- |
185 | 62 |
|
186 | 63 | ## Documentation |
187 | 64 |
|
188 | | -- [**Configuration**](/docs/vibe/config/): How to configure VIBE module components |
189 | | -- [**Parameters**](/docs/vibe/param/): All VIBE module config parameters |
190 | | -- [**Playbook**](/docs/vibe/playbook/): Deploy and manage VIBE with Ansible playbooks |
191 | | -- [**Administration**](/docs/vibe/admin/): Daily management and operations guide |
192 | | -- [**Monitoring**](/docs/vibe/monitor/): Monitoring metrics and Dashboard guide |
193 | | -- [**FAQ**](/docs/vibe/faq/): Common questions and answers |
194 | | - |
195 | | - |
| 65 | +- [**Configuration**](config): component config and workspace settings |
| 66 | +- [**Parameters**](param): VIBE parameter list and defaults |
| 67 | +- [**Playbook**](playbook): `vibe.yml` usage and tags |
| 68 | +- [**Administration**](admin): operations, passwords, and extensions |
| 69 | +- [**Monitoring**](monitor): Claude Code metrics and logs |
| 70 | +- [**FAQ**](faq): common questions |
0 commit comments