Variante Alpine. Base image actualizada a Alpine Linux.
Contenedor único con:
nginxpara reverse proxy y TLSlighttpd + PHPpara el panel mínimocertbotpara emitir y renovar certificados
- publica
panel.tecnologica.arcomo panel HTTPS - guarda la configuración en
./data/config/sites.json - guarda los certificados en
./data/letsencrypt - atiende
/.well-known/acme-challenge/por HTTP - cuando agregás un dominio nuevo, intenta emitir el certificado automáticamente
- renueva certificados cada 12 horas
data/config→ sitios y usuariosdata/acme-challenge→ desafío ACMEdata/letsencrypt→ certificados
- Editá
docker-compose.ymlPANEL_DOMAINCERTBOT_EMAILPANEL_USERPANEL_PASSWORD
- Asegurate de que el DNS de
panel.tecnologica.arapunte al servidor. - Levantá el proyecto:
docker compose up -d --buildPrimero va a responder por HTTP en cuanto levante nginx. Cuando certbot pueda emitir el certificado, va a quedar también por HTTPS.
http://panel.tecnologica.arhttps://panel.tecnologica.ar
Cada sitio se guarda así:
[
{
"domain": "tecnologica.ar",
"aliases": ["www.tecnologica.ar"],
"target": "host.docker.internal:8040"
}
]localhostdentro del contenedor no es el host. Para apuntar al host usáhost.docker.internal:PUERTO.- El compose ya incluye:
extra_hosts:
- "host.docker.internal:host-gateway"- Si querés compartir certificados con otro contenedor, montá
./data/letsencrypttambién en ese otro contenedor.
La primera vez se crea data/config/users.json con el usuario y contraseña del compose.
Si querés cambiarla después, podés regenerar el hash así:
docker exec -it web-proxy php -r 'echo password_hash("NUEVA_CLAVE", PASSWORD_BCRYPT), PHP_EOL;'Luego reemplazás el hash en data/config/users.json.
En otro host solo necesitás copiar:
docker-compose.ymldata/configdata/acme-challengedata/letsencrypt
Luego:
docker compose up -d