# Ingresar a un servidor de desarrollo local a través de la URL de un staging Se puede ocupar cualquier dominio que esté configurado en el staging, siempre que ese dominio no esté siendo ocupado por otra API y/o WEB. ## Configuración de SSH Se recomienda tener un archivo de configuración de SSH (`~/.ssh/config`) con las configuraciones por defecto para todos los servidores (i.e. `Host *`) y para cada servidor (e.g. `Host pato`). E.g. `~/.ssh/config`: ```config Host * ServerAliveInterval 60 Host pato HostName 147.182.216.226 User root ``` ## Detener los servicios en el staging Para asegurarse de que no está ocupado, ingresar a la carpeta del dominio correspondiente y ejecutar `docker-compose down` - E.g. para pato2 1. Entrar el servidor de pato2: `ssh pato` 2. Entrar a la carpeta correspondiente a los archivos de esa URL `cd /home2` 3. Detener los servicios de API y WEB `docker-compose down` ## En el computador local - Crear un túnel entre la API local y el puerto de la API en el staging: `ssh -N -R API_PORT_STAGING:localhost:API_PORT_LOCAL root@ip_del_staging` - Ejecutar el comando dejará ocupado el terminal donde se ejecute, por lo que se debe ocupar un terminal distinto a donde se hace `npm start`. - Se puede detener el túnel con `control-C` - E.g. para pato2: `ssh -N -R 2710:localhost:2707 pato` - Puerto en el staging = 2708 + 2 = 2710 - Puerto local = 2707 (puerto por defecto) - Host ssh = root@ip_del_staging = pato (configurado en `~/.ssh/config`) - Crear un túnel entre la WEB local y el puerto de la WEB en el staging: `ssh -N -R WEB_PORT_STAGING:localhost:WEB_PORT_LOCAL root@ip_del_staging` - Ejecutar el comando dejará ocupado el terminal donde se ejecute, por lo que se debe ocupar un terminal distinto a donde se hace `npm start`. - Se puede detener el túnel con `control-C` - E.g. para pato2: `ssh -N -R 20002:localhost:3000 pato` - Puerto en el staging = 20000 + 2 = 20002 - Puerto local = 3000 (puerto por defecto) - Host ssh = root@ip_del_staging = pato (configurado en `~/.ssh/config`) - Iniciar la API indicando las URLs en las variables de entorno API_URL y WEB_URL: - Opción 1 (recomendada): Inline: `API_URL=https://SUBDOMINIO.equip.cloud WEB_URL=https://SUBDOMINIO.equip.cloud npm start` - E.g. para pato2: `API_URL=https://pato2.equip.cloud WEB_URL=https://pato2.equip.cloud npm start` - Opción 2: dotenv: - Crear archivo `.env` con las variables de entorno API_URL y WEB_URL - E.g. para pato2: ```bash API_URL=https://pato2.equip.cloud WEB_URL=https://pato2.equip.cloud ``` - Iniciar con `npm start` - Iniciar la WEB con el script `startStaging`: - `npm run startStaging` ## Verificar que está funcionando el túnel - WEB: Ingresar a la URL correspondiente: https://SUBDOMINIO.equip.cloud - API: Pedir la fecha a la API: https://SUBDOMINIO.equip.cloud/api/getDate # Para configurar una nueva URL para un servidor que ya esté corriendo ## DigitalOcean Se debe registrar el subdomino a utilizar en DigitalOcean - Entrar a https://cloud.digitalocean.com/networking/domains/equip.cloud?i=bae76f para configurar el dominio equip.cloud - En "HOSTNAME" ingresar el subdominio. E.g. pato2 - En "WILL DIRECT TO" seleccionar el staging correspondiente en el dropdown que aparece ## Staging ### Nginx - Entrar a la carpeta `/etc/nginx/sites-available` y revisar si existe el archivo `SUBDOMINIO.equip.cloud` - Crear el archivo `SUBDOMINIO.equip.cloud`. Ingresar el subdominio y los puertos deseados: E.g. ``` server { root var/www/html; server_name <SERVER_NAME>; location / { proxy_pass http://localhost:<WEB_PORT>; 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; } location /api { proxy_pass http://localhost:<API_PORT>; 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; } location /socket.io { proxy_pass http://localhost:<API_PORT>; 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; } location /restart { proxy_pass http://localhost:<TEST_DB_MANAGER_PORT>; 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; } location /save { proxy_pass http://localhost:<TEST_DB_MANAGER_PORT>; 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; } location /k43jn543jk5nINI63vBHJYhvjv67253hvjV62TVV27263Ljl723 { proxy_pass http://localhost:<TEST_DB_MANAGER_PORT>; 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; } } ``` Reemplazando de la siguiente manera: SUBDOMAIN_NUMBER es el número del subdominio, E.g., el número de pato2 es 2, de pato es 0, de pato27 es 27. `<WEB_PORT>` -> 20000 + SUBDOMAIN_NUMBER `<API_PORT>` -> 2708 + SUBDOMAIN_NUMBER `<TEST_DB_MANAGER_PORT>` -> 4343 + SUBDOMAIN_NUMBER `<SERVER_NAME>` -> SUBDOMINIO.equip.cloud E.g.: Si el subdominio que estoy creando es pato2: WEB_PORT -> 20000 + 2 = 20002 API_PORT -> 2708 + 2 = 2710 TEST_DB_MANAGER_PORT -> 4343 + 2 = 4345 SERVER_NAME -> pato2.equip.cloud - Habilitar el nuevo subdominio: `ln -s "/etc/nginx/sites-available/SUBDOMINIO.equip.cloud" "/etc/nginx/sites-enabled/SUBDOMINIO.equip.cloud"` - Reemplazar `SUBDOMINIO.equip.cloud` por el host correspondiente. - Reiniciar Nginx para que cargue la nueva configuración: `systemctl restart nginx` ### Certbot Usar el comando `certbot run --quiet --agree-tos --email "patoequip@gmail.com" --nginx -d "SUBDOMINIO.equip.cloud"` - Reemplazar `SUBDOMINIO.equip.cloud` por el host correspondiente.