Despliegue
Preparación de carpetas
Inicia sesión en nuestro repositorio de imágenes de docker:
docker login gitea.entorno.es:3000Clona el repositorio:
git clone https://gitea.entorno.es:3000/CertGuardian/certguardian-docker-imagesEntra a la carpeta del repositorio:
cd certguardian-docker-imagesPreparación de subdominios
Prepara 3 subdominios que apunten a la IP del servidor:
- backoffice.tu-dominio.es
- backend.tu-dominio.es
- reverb.tu-dominio.es
Configuración backoffice(dejar por defecto)
cp backoffice/config.js.example backoffice/config.jsvi backoffice/config.jsRellena los valores de configuración necesarios en el archivo config.js
API_BASE_URL: Pon la URL del backend incluyendo https y añade al final "/api". Si el subdominio de backend es: backend.tu-dominio.es, entonces la configuración será: "https://backend.tu-dominio.es/api",LOGIN_ROUTE: (dejar por defecto)REVERB_HOST: Pon el subdominio de reverb.tu-dominio.es, sin ningún protocolo.REVERB_PORT: (dejar por defecto)REVERB_KEY: Genera una clave conopenssl rand -hex 16, guárdala para más adelante

Configuración backend y base de datos
cp docker-compose.yml.example docker-compose.ymlvi docker-compose.ymlRellena esta variables en el enviroment del servicio certguardian del docker-compose:
- BACKOFFICE_URL="https://backoffice.tu-dominio.es" // URL del backoffice
- CERTBOT_MAIL="mail@tu-dominio.es" // Email de notificaciones de certbot https://community.letsencrypt.org/t/what-is-the-email-used-for-when-i-run-certbot-at-the-first-time/119911/2
- CERTBOT_MAIL_PRIORITY=1
- DAYS_EXPIRY_RENEW=5 // Numero de días que para que caduque un certificado para que certguardian empiece a renovar
- DB_USERNAME=root
- DB_PASSWORD=password // Genera una contreseña segura con `tr -cd [:graph:] < /dev/random | head -c15`
- APP_KEY=base64:<salida de `openssl rand -base64 32`> # Añade el prefijo `base64:` delante del valor generado
- REVERB_APP_ID=12345
- REVERB_APP_KEY=xxxxx // Usa el valor de REVERB_KEY que generaste anteriormente
- REVERB_APP_SECRET=xxxxx_secret // Ggenerála con `openssl rand -hex 32`
- MAIL_ADDRESS_FOR_NOTIFICATIONS="mail@tu-dominio.es" // Dirección de correo que recibirá las notificaciones de errores de la aplicacion (error al emitir, error al instalar un certificado...)
// configuración de la cuenta de correo que enviara los correos de la aplicación (hooks de correo y notificaciones de error de la aplicación)
- MAIL_DRIVER=smtp
- MAIL_MAILER=smtp
- MAIL_SCHEME=smtp
- MAIL_HOST=mail.tu-dominio.es
- MAIL_PORT=587
- MAIL_USERNAME=mail@tu-dominio.es
- MAIL_PASSWORD="xxxxx"
- MAIL_FROM_ADDRESS="mail@tu-dominio.es"Ve al servicio db and rellena el MYSQL_ROOT_PASSWORD en la sección de enviroment con el valor del paso anterior.
db:
image: mysql:8.0
container_name: certguardian_db
restart: unless-stopped
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: certguardian // <---- aquí
MYSQL_DATABASE: certguardian
MYSQL_ROOT_HOST: '%'Configuración NGINX
Crea una copia del fichero de configuración de nginx
cp nginx/conf.d/nginx.conf.example nginx/conf.d/nginx.confY sustituye los subdominios por los que creaste
sed -i \
-e 's/backend\.dominio\.es/backend.tu-dominio.es/g' \
-e 's/reverb\.dominio\.es/reverb.tu-dominio.es/g' \
-e 's/backoffice\.dominio\.es/backoffice.tu-dominio.es/g' \
nginx/conf.d/nginx.confSustituye "tu-dominio.es" por el dominio que quieras usar. Y backend, reverb y backoffice por los subdominios que creaste.
Si no te funciona el comando anterior, puedes editar manualmente el archivo nginx.conf y reemplazar las ocurrencias de backend.tu-dominio.es, reverb.tu-dominio.es y backoffice.tu-dominio.es.
vi nginx/conf.d/nginx.confCopia los certificados de tu dominio a la carpeta nginx/certs
cp /ruta-de-tu-certificado/fullchain nginx/certs/fullchain.pemcp /ruta-de-tu-certificado/privkey.pem nginx/certs/privkey.pemLevantar contenedores
Levanta los contenedores
docker compose up -dEntra al contendor del backend
docker compose exec certguardian bashSi falla puedes consultar el nombre del contenedor con
docker ps
Generar las claves SSH
Crea las claves ssh para el hook de ssh. Dentro del contenedor, ejecuta:
ssh-keygen -t rsa -b 4096 -f /var/www/certguardian/ssh-keys/id_rsaGenera las claves ssh sin passphrase.
Asegúrate de establecer los permisos correctos una vez creada la claves ssh:
chown www-data:www-data /var/www/certguardian/ssh-keys/
chown www-data:www-data /var/www/certguardian/ssh-keys/*
chmod 700 /var/www/certguardian/ssh-keys
ls -la /var/www/certguardian/ssh-keys/Crea usuario administrador
Ve a <tu-url-del-backoffice>/register y completa el formulario para crear un usuario administrador:
Una vez creado el usuario, iniciarás sesión automáticamente.