Multiusuario VSCode Web + Copilot Chat y Repositorios: ¡Desarrolla en la nube con IA!
¿Te imaginas tener tu propio entorno VSCode Web multiusuario, con acceso a GitHub Copilot Chat, gestión de repositorios git privada y totalmente desplegable en cualquier VPS? Hoy te enseño un docker-compose que agrupa exactamente eso, ideal para grupos de desarrollo, talleres online o centros educativos. Todo accesible desde el navegador, con integración de chat IA para autocompletar y explicaciones de código… ¡la oficina del futuro, pero sin dependencias complejas!
¿Qué aporta este proyecto?
- Entorno de desarrollo completo en la nube (VSCode Web con code-server).
- Multiusuario seguro: cada persona con su login, compartiendo acceso solo a sus proyectos.
- Copilot Chat (vía copilot y extensiones compatibles), para sugerencias y chat de ayuda con IA.
- Servidor Gitea para repositorios privados y gestión de código propia.
- Base de datos PostgreSQL para Gitea y para proyectos que la precisen.
- Todo bajo HTTPS automático con Traefik (certificados SSL gratuitos para todos los servicios).
El Docker Compose completo
Copia este fichero como docker-compose.yml
y personalízalo donde veas comentarios. Para facilitar el arranque, todos los datos vitales se montan como volúmenes:
version: '3.9'
services:
traefik:
image: traefik:v3.0
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.email=admin@tu-dominio.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.letsencrypt.acme.tlschallenge=true"
- "--log.level=INFO"
ports:
- "80:80"
- "443:443"
- "8080:8080" # Panel de Traefik
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
restart: always
gitea:
image: gitea/gitea:1.21.10
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=giteapassword
- GITEA__server__DOMAIN=git.tu-dominio.com
- GITEA__server__ROOT_URL=https://git.tu-dominio.com/
- [email protected]
volumes:
- ./gitea/data:/data
depends_on:
- db
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`git.tu-dominio.com`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls.certresolver=letsencrypt"
restart: always
db:
image: postgres:16
environment:
- POSTGRES_DB=gitea
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=giteapassword
volumes:
- ./postgres:/var/lib/postgresql/data
restart: always
vscode:
image: codercom/code-server:latest
environment:
- PASSWORD=cambiame
- TZ=Europe/Madrid
- GIT_EXTENSION_AUTO_UPDATE=true
volumes:
- ./code-server:/home/coder/project
- ./data/vscode-settings:/home/coder/.local/share/code-server/User
- ./data/vscode-extensions:/home/coder/.local/share/code-server/extensions
labels:
- "traefik.enable=true"
- "traefik.http.routers.vscode.rule=Host(`vscode.tu-dominio.com`)"
- "traefik.http.routers.vscode.entrypoints=websecure"
- "traefik.http.routers.vscode.tls.certresolver=letsencrypt"
restart: always
copilot:
image: ghcr.io/kohya-ss/copilot-server:latest
environment:
- OPENAI_API_KEY=tu_clave_openaid
labels:
- "traefik.enable=true"
- "traefik.http.routers.copilot.rule=Host(`copilot.tu-dominio.com`)"
- "traefik.http.routers.copilot.entrypoints=websecure"
- "traefik.http.routers.copilot.tls.certresolver=letsencrypt"
restart: always
networks:
default:
name: development
¿Cómo funciona y qué puedes hacer?
- Traefik expone tus servicios por HTTPS en subdominios:
vscode.tu-dominio.com
ygit.tu-dominio.com
. ¡Seguro y sin complicaciones de certificados! - Gitea te permite gestionar repositorios git privados, issues, wikis y mucho más, sin depender de GitHub.
- VSCode Web es multiusuario; si quieres autenticación por usuario, revisa la documentación y amplía la sección de usuarios (doc oficial).
- Copilot Chat se enlaza mediante la extensión adecuada o en el panel a
copilot.tu-dominio.com
usando tu clave de OpenAI (o del proveedor LLM que prefieras). - La base de datos PostgreSQL sirve tanto para Gitea como para tus propios proyectos en VSCode.
Instalación rápida
- Establece los subdominios y claves (“tu-dominio.com”, claves de OpenAI, contraseñas banales, etcétera… cámbialo por los valores reales que vayas a usar).
- Lanza el stack con
docker compose up -d
. - Accede a los servicios:
- https://vscode.tu-dominio.com — desarrollo en la nube.
- https://git.tu-dominio.com — repositorios privados.
- https://copilot.tu-dominio.com — chat IA/autocompletar.
- https://tu-dominio.com:8080 — panel Traefik (opcional).
Consejos extra y troubleshooting
-
Si algún contenedor muere con frecuencia: revisa los logs con
docker compose logs {servicio}
. - El primer arranque puede tardar, especialmente Gitea (inicializa la base de datos). Vas a poder ver los progresos en los logs.
-
Puedes añadir más servicios y volúmenes (por ejemplo, Redis, almacenamiento extra, runners de CI…), ampliando el
docker-compose.yml
. - ¿Quieres hacerlo plug & play? Puedes integrar Portainer o Watchtower para la gestión y actualización de contenedores.
- ¡Ojo con las credenciales por defecto! Es importante cambiarlas antes del despliegue real.
-
Si quieres limitar el uso de recursos, añade secciones
deploy.resources.limits
a cada servicio. - Puedes conectar extensiones de VSCode para depuración remota, Docker, Kubernetes, etc. ¡El límite lo pone tu imaginación!
¿Ideas para más servicios? ¿Quieres añadir un runner de CI, gestor de tareas, o incluso un stack con IA más potente? ¡Déjalo en los comentarios!