Skip to content

feat(containers): create VSCode user container image #25

@FL-AntoineDurand

Description

@FL-AntoineDurand

Description

Create a VSCode user container image for Holistix Forge. This will allow users to run VSCode Server as a user container service, accessible through the gateway's two-stage Nginx setup.

Context

Holistix Forge supports user containers for various services (JupyterLab, pgAdmin, n8n, etc.). VSCode Server would be a valuable addition, allowing users to:

  • Edit code directly in the browser
  • Access files in their organization/project
  • Use VSCode extensions
  • Collaborate on code

Current State

User Containers:

  • Location: packages/modules/user-containers/
  • Supported services: JupyterLab, pgAdmin, n8n
  • Integration: Services accessible via gateway Nginx

No VSCode Image:

  • No VSCode Server container image exists
  • Users cannot run VSCode as a user container

Requirements

1. VSCode Server Image

Create Docker image with VSCode Server:

  • Base image: Use official VSCode Server or code-server
  • Configuration: Configure for Holistix Forge integration
  • OAuth: Support OAuth2 authentication via gateway
  • File access: Access to organization/project files
  • Extensions: Support VSCode extensions

2. Integration

Integrate with user containers module:

  • Container type: Add VSCode as container type
  • Service registration: Register VSCode service with gateway
  • URL routing: Route VSCode requests through Nginx
  • OAuth flow: Integrate with gateway OAuth

3. Configuration

Make VSCode configurable:

  • Port: Configurable port (default: 8080)
  • Workspace: Configurable workspace directory
  • Extensions: Pre-install common extensions (optional)
  • Settings: Default VSCode settings

4. Documentation

Document VSCode container:

  • Usage: How to create/use VSCode container
  • Configuration: Configuration options
  • Troubleshooting: Common issues and solutions

Implementation Plan

Phase 1: Image Creation

  1. Create Dockerfile for VSCode Server
  2. Base on code-server or official VSCode Server
  3. Configure OAuth integration
  4. Test image build

Phase 2: Integration

  1. Add VSCode to user containers module
  2. Register VSCode service type
  3. Configure Nginx routing
  4. Test OAuth flow

Phase 3: Testing

  1. Test VSCode container creation
  2. Test VSCode access via gateway
  3. Test OAuth authentication
  4. Test file access
  5. Test extensions

Phase 4: Documentation

  1. Document VSCode container usage
  2. Document configuration options
  3. Add troubleshooting guide
  4. Update user containers documentation

Related Files

  • docker-images/user-containers/ - User container images
  • packages/modules/user-containers/ - User containers module
  • packages/app-gateway/src/routes/ - Gateway routes

Acceptance Criteria

  • VSCode Server Docker image created
  • Image builds successfully
  • VSCode accessible via gateway
  • OAuth authentication working
  • File access working
  • Extensions support working
  • Integration with user containers module
  • Documentation created
  • Tested and working

Questions to Resolve

  1. Use code-server or official VSCode Server?
  2. What extensions should be pre-installed?
  3. How should workspace be configured? (Organization root? Project root?)
  4. Should we support multiple VSCode instances per user?
  5. What port should VSCode use?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions