Sitio estático (HTML)
Objetivo: desplegar un repo con un
index.htmldesde GitLab, con dominio y HTTPS. Requiere: Conectar GitLab hecho. Resultado:https://testnormalhtml.inmersys.devsirviendo el HTML.Conceptos generales (jerarquía, botones, webhooks, errores) están en Conceptos y glosario — aquí solo lo propio de un estático.
1. DNS (hazlo primero — tarda en propagar)
Registro A para testnormalhtml → IP del droplet (ver DNS):
dig +short testnormalhtml.inmersys.dev
2. El repositorio
Repo (privado, para validar que el OAuth accede a privados) con un solo index.html en la raíz. Anotar la branch (ej. build/normal) — es dato obligatorio después.
3. Crear Project y Service
Projects → Create Project (Name: Pruebas). Entrar → Create Service → Application (Name: test-html).
4. General → Provider
Cambiar a la tab Gitlab 🦊 (por defecto abre en Github, que dirá "configure your account first" — normal):
| Campo | Valor |
|---|---|
| Gitlab Account | Dokploy DEV |
| Repository | dokploy-test |
| Branch | build/normal |
| Enable Submodules | OFF |
Save.
✅ Si el dropdown de Repository carga tus repos, el OAuth quedó bien. Si sale vacío, el problema está en Conectar GitLab.
5. General → Build Type
| Campo | Valor |
|---|---|
| Build Type | Static |
| Single Page Application (SPA) | ❌ Desmarcado |
Static levanta un NGINX que sirve los archivos directo — no hay build que ejecutar.
SPA desmarcado: el checkbox activa el fallback try_files $uri /index.html, que solo se necesita con routing de cliente (React Router, Vue Router). Un HTML suelto no lo usa. (En Vite ese fallback lo resuelve nuestro propio nginx.conf dentro del Dockerfile, no este checkbox.)
6. Domains → Add Domain
| Campo | Valor |
|---|---|
| Host | testnormalhtml.inmersys.dev (exacto, igual al DNS) |
| Path | / |
| Container Port | 80 ⚠️ viene 3000 por default |
| HTTPS | ON |
| Certificate | Let's Encrypt |
⚠️ El default
3000es para Node. Con Static corre NGINX, que escucha en el 80 (ver Container Port).
7. Desplegar
General → Deploy Settings → Deploy. Se abre el log en vivo: clone → arranque del contenedor (sin fase de build).
Para activar auto-deploy, ver Auto-deploy con webhooks. Un estático puro no tiene errores propios más allá de los errores comunes.