Lo primero y más importante es tener un dominio principal apuntado a nuestro servidor y un subdominio como «api.midominio.com» ya que va a ser NECESARIO para que nos funcione correctamente el login y registro utilizando nuestro propio domino, ya que de no apuntarlo así el login lo intenta hacer contra localhost:4019 y falla.
Si no queremos tener dominio apuntado, no hace falta hacer nada y poner directamente la instrucción de docker sin personalizar vite_app_api_host ni nada, dejándolo todo default.
Obviamente tener docker instalado
Debemos generar una key:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Hacemos pull de la imagen docker oficial:
# Funcionamiento con servidor MYSQL instalado en el propio servidor pero apuntando a IP externa ya que con localhost no tira
docker run -p 4019:4019 -p 4018:4018 \
-e CB_ENCRYPTION_KEY=key_generada_anteriormente \
-e CB_API_HOST=0.0.0.0 \
-e CB_API_PORT=4019 \
-e CB_DB_HOST=IP_PUBLICA_DEL_SERVIDOR_NO_LOCAHOST \
-e CB_DB_PORT=3306 \
-e CB_DB_NAME=chartbrew \
-e CB_DB_USERNAME=user_bbdd \
-e CB_DB_PASSWORD=password_bbdd \
-e CB_REDIS_HOST=host.docker.internal \
-e CB_REDIS_PORT=6379 \
-e CB_REDIS_PASSWORD= \
-e VITE_APP_CLIENT_HOST=http://localhost:4018 \
-e VITE_APP_CLIENT_PORT=4018 \
-e VITE_APP_API_HOST=https://api.midominio.com:4019 \
razvanilin/chartbrew
MUUUUUUUY IMPORTANTE: hay que apuntar el VITE_APP_API_HOST a un dominio apuntado a este serviddor que haga las funciones de API y que esté bajo proxy de http://IPDELSERVIDOR:4019 si no va a dar problemas a la hora de realizar login y registro si queremos utilizar nuestro dominio.
Con esto ya estaría operativo respondiendo bajo la IP pública del servidor en el puerto 4018, si queremos apuntar un dominio tenemos que tocar la configuración de nginx y que el location apunte al proxy de la IP con el puerto. Este sería un fichero de ejemplo para Laravel Forge:
Esto iría en el bloque de server:
add_header X-Frame-Options "ALLOWALL";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
Esto sería el bloque de Location que tenemos que sustituir:
# Aquí configuramos el proxy inverso
location / {
proxy_pass http://IP_PUBLICA:4018;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}