Self-hosting
Instalación
byox se instala con un script y se administra con docker compose. Esta página detalla lo que ocurre durante la instalación y cómo comprobar que quedó bien.
Requisitos
| Qué | Detalle |
|---|---|
| Docker y Compose | Docker Desktop en Windows y macOS; Docker Engine y el plugin de Compose en Linux. |
| Git y bash | En Windows, Git Bash o WSL. El script no funciona desde PowerShell ni CMD. |
| Puertos libres | 3000 (Forgejo), 3333 (app y MCP) y 2222 (SSH de Git). |
| Disco | Las imágenes de cada lenguaje (Rust, Go, Python…) se descargan la primera vez que corre un curso y pueden pesar cientos de MB cada una. |
| Acceso al socket de Docker | El runner y el servicio de byox montan /var/run/docker.sock para ejecutar los tests. |
Montar el socket de Docker equivale a dar acceso de administrador a la máquina a todo lo que corre en esos contenedores. Es necesario para ejecutar los tests, y es la razón por la que conviene instalar byox en una máquina dedicada si vas a darle cuentas a otras personas. Lo desarrolla la página de Seguridad.
Instalar
git clone https://github.com/romancitodev/byox.git byox
cd byox
bash setup.sh
Qué hace setup.sh
- Levanta Forgejo y espera a que responda en
http://localhost:3000. - Crea tu usuario administrador (
BYOX_USER, por defectoadmin) con una contraseña aleatoria de 24 caracteres. - Crea el usuario bot
byox, que ejecuta el CI y publica las pistas. No puede iniciar sesión en la app. - Genera un token de acceso para el administrador (lo usa el servicio de byox) y otro para el bot (va como secreto de Actions en cada repositorio de alumno).
- Crea la organización
cursos, donde viven los repositorios fuente. - Registra el runner y escribe su configuración en
data/runner/config.yml. - Escribe las credenciales en
.env(permiso 600) y levanta todo condocker compose up -d --build.
El script es idempotente. Si vuelves a ejecutarlo, salta lo que ya existe y conserva las variables que hayas agregado a mano en .env. Solo reescribe las que genera él: BYOX_USER, BYOX_PASSWORD, BYOX_TOKEN, BYOX_BOT, BYOX_BOT_TOKEN y BYOX_ORG.
Qué queda instalado
byox/
├── docker-compose.yml los tres servicios
├── .env credenciales y configuración (no lo subas a Git)
├── setup.sh instalación idempotente
├── data/runner/ configuración y registro del runner
├── mcp/ la app: servidor, API y web (se compila en Docker)
├── cli/ el CLI de byox, en Rust
└── courses/ cursos de ejemplo
| Servicio | Imagen | Puerto en el host |
|---|---|---|
forgejo |
Forgejo 16 | 127.0.0.1:3000 y 127.0.0.1:2222 |
runner |
Forgejo Runner 13 | ninguno |
mcp |
Se compila desde mcp/ |
127.0.0.1:3333 |
Los puertos se publican solo en 127.0.0.1. Para exponerlos a otras personas hace falta un proxy inverso con HTTPS; ver Llevarlo a producción.
Comprobar la instalación
docker compose ps
Los tres servicios deben figurar como running, y forgejo además como healthy. También puedes consultar el endpoint de salud, que responde ok sin autenticación:
curl -s http://localhost:3333/health
Dentro de la app, la barra lateral muestra el estado de Forgejo y del runner. Si el runner figura «sin conexión», revisa Solución de problemas.
Operar el día a día
| Acción | Comando |
|---|---|
| Ver los logs de la app | docker compose logs -f mcp |
| Reiniciar un servicio | docker compose restart mcp |
Aplicar un cambio de .env |
docker compose up -d |
| Reconstruir tras actualizar el código | docker compose up -d --build |
| Detener todo, conservando los datos | docker compose stop |
Desinstalar
docker compose down
Detiene y elimina los contenedores, pero conserva los volúmenes, es decir, tus repositorios y cuentas.
docker compose down -v elimina también los volúmenes: todos los repositorios, usuarios y el progreso de todos los alumnos. No se puede deshacer. Haz antes una copia de seguridad.