Skip to content

Despliegue

Preparación de carpetas

Inicia sesión en nuestro repositorio de imágenes de docker:

bash
docker login gitea.entorno.es:3000

Clona el repositorio:

bash
git clone https://gitea.entorno.es:3000/CertGuardian/certguardian-docker-images

Entra a la carpeta del repositorio:

bash
cd certguardian-docker-images

Preparació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)

bash
cp backoffice/config.js.example backoffice/config.js
bash
vi backoffice/config.js

Rellena 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 con openssl rand -hex 16, guárdala para más adelante

img_3.png

Configuración backend y base de datos

bash
cp docker-compose.yml.example docker-compose.yml
bash
vi docker-compose.yml

Rellena 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

bash
cp nginx/conf.d/nginx.conf.example nginx/conf.d/nginx.conf

Y sustituye los subdominios por los que creaste

bash
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.conf

Sustituye "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.

bash
vi nginx/conf.d/nginx.conf

Copia los certificados de tu dominio a la carpeta nginx/certs

bash
cp /ruta-de-tu-certificado/fullchain nginx/certs/fullchain.pem
bash
cp /ruta-de-tu-certificado/privkey.pem nginx/certs/privkey.pem

Levantar contenedores

Levanta los contenedores

bash
docker compose up -d

Entra al contendor del backend

bash
docker compose exec certguardian bash

Si 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:

bash
ssh-keygen -t rsa -b 4096 -f /var/www/certguardian/ssh-keys/id_rsa

Genera las claves ssh sin passphrase.

Asegúrate de establecer los permisos correctos una vez creada la claves ssh:

bash
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: img_2.png Una vez creado el usuario, iniciarás sesión automáticamente.

Siguentes pasos