Este proyecto tiene como objetivo el demostrar como se puede tener un propio metaverso en la capa gratuita de Oracle Cloud Infrastructure (OCI)
En los siguientes puntos se explicara :
- Requisitos previos
- Configurar cuenta OCI
- Conectarse a la instancia
- Configurar servidor NGINX
- Despliegue del proyecto en el servidor
- Probar
- Anexos
Los requisitos de conocimientos solamente son un poco de HTML, muy poco de JS, CLI y conocimientos básicos de servicios web. Esta solución se basa en una herramienta sencilla pero muy poderosa que se llama Aframe, un framework JS para WebXR. También si se cuenta con conocimiento en modelado 3D con herramientas como Blender, es un plus. Para facilidad de configuración y conexión a la instancia por SSH, descargar la aplicación MobaXterm. Para correr el proyecto solamente se necesita un servidor web, lo cual es GRATUITO en OCI.
- Dirigirse a https://www.oracle.com/cloud/sign-in.html
- Si no se tiene una cuenta, pulsar el botón Sign Up. Si ya se tiene una cuenta ingresar como de costumbre y saltar al paso ####
- Completar el formulario y el hCaptcha, luego pulsar el botón “Verify my Email”, se enviara un correo al email para que verificar el correo electrónico suministrado.
4. El correo que será parecido a este:
Pulsar el botón “Verify email” esto abrirá una nueva pestaña. 5. Se te mostrará el formulario anterior y además de nuevos campos para que llenar según cada persona o empresa. El "Cloud Account Name" es requerido para ingresar, no lo olvide.
Pulsar el botón “Continue”, se mostrará un nuevo formulario 6. Como el paso anterior, llenar la información solicitada en el formulario y pulsar “Continue”
7. Se debe agregar un método de pago “Tarjeta de Crédito hábil”, a esta se le descontará 1 USD y luego se reversará el pago. Oracle nunca cobrará al menos que se actualice la cuenta a premium.
8. Aceptar los términos y condiciones al pulsar el botón de Agreement. Luego pulsar “Start my free trial” Recordar que siempre será gratis al menos que actualice la cuenta.
- Se demora en cargar de unos 10 a 15 minutos, luego puede acceder de nuevo a https://www.oracle.com/cloud/sign-in.html e ingresar con el Cloud Account Name y la contraseña suministrada.
Una vez ingresado en el dashboard, sigues los siguientes paso para la correcta configuración de la VCN, la instancia y el servidor.
La configuración de la VCN se realiza de la siguiente manera:
- Pulsar el botón de navegación “hamburguesa”, luego pulsar “Networking” y pulsar “Virtual Cloud Networks”
- Pulsar en “Start VCN Wizard” y escoger la opción “Create VCN with Internet Connectivity”
3. Llenar el formulario de configuración con el nombre de la VCN, escoger el compartimento al cual se le asignará la VCN, en este caso es solo una opción que el root y pulsar el botón “Next”
4. Esperar a que todos los pasos están hechos, cuando termine se mostrará la nueva VCN
5. Pulsar en “Public Subnet-foodverse_VCN”, luego en “Default Security List for foodverse_VCN”
6. Agregar dos reglas para permitir la entrada por el puerto 80 y 443, protocolos http y https respectivamente. Para el uso del giroscopio en los celulares se debe contar con protocolo https.
Pulsar “Add ingress Rules” y llenar el formulario como se ve en la imagen.
Pulsar de nuevo “Add ingress Rules” y llenar el formulario como se ve en la imagen.
7. Ya la VCN estará lista para ser asignada a la instancia que contendrá el servidor.
- Pulsar el botón de navegación “hamburguesa”, luego pulsar “Compute” y pulsar “Instances”
- Pulsar en “Create instance”
- Llenar el formulario de configuración con el nombre de la instancia, escoger el compartimento al cual se le asignará la instancia, en este caso es solo una opción que el root y pulsar Edit en “Placement” y seleccionar el AD
- Seleccionar Edit en “Image and Shape” y verificar la imagen que sea Oracle Linux 8
pulsar “change shape” y seleccionar AMPERE OCPU y configurarlo como se ve en la imagen.
y pulsar “Select shape”
- Pulsar Edit en “Networking”
Llenar los campos vacíos como en la imagen
Asignar el VCN, seleccionar la subnet pública con las políticas de red creadas anteriormente y asignarle ipv4 pública.
- En “Add SSH Keys” seleccionar la opción que se acomode a usted, en este caso se seleccionó “generate key pair for me” y se descargaron las llaves pública y privada para la posterior conexión por ssh.
- Seleccionar el tipo de encriptación del disco.
- Pulsar “Create”
Nuestra instancia demorará un par de minutos en estar lista y podemos proceder.
Nos conectaremos a la instancia por medio del protocolo SSH, por ende se necesitan el par de llaves privadas y públicas. Cuando la instancia esté en estado verde “Running” procedemos a copiar la “Public IP address”
- Abrimos la aplicación MobaXterm y nos dirigimos a pulsar el botón de session
Seleccionamos SSH y Advanced SSH settings
En el campo Remote host pegamos la IP pública de la instancia. Pulsamos en “Use private key” y buscamos en nuestros archivos la ruta del archivo de la llave privada que configuramos con la instancia, en este caso la que se descargó.
Le damos ok. 2. Digitamos el username que para las instancia de Oracle Linux es opc
Ya estamos conectados a la instancia por SSH.
Procedemos a configurar un servidor NGINX en la instancia con los comandos que se muestran a continuación.
FYI <IP_address> = IP pública de la instancia.
### Buscar actualizaciones de los paquetes antes de instalar los paquetes de NGINX
sudo dnf update && sudo dnf upgrade
### Instalar NGINX
sudo dnf install -y nginx
### Habilite e inicie el servicio de NGINX, escucha por defecto en el puerto TCP 80
sudo systemctl enable --now nginx.service
### Verificación del estado
sudo systemctl status nginx
### Modifique las reglas del firewall
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
Para cambiar la ruta raíz de su servidor web, no edite el archivo /etc/nginx/nginx.conf directamente. En su lugar, como método preferido, cree una configuración específica del sitio en el directorio /etc/nginx/conf.d. Por ejemplo, cree el archivo /etc/nginx/conf.d/default.conf y complételo con una configuración para su sitio.
## Crear un directorio para alojar un nuevo sitio
sudo mkdir /srv/website
## Crear index.html dummy
cat << EOF | sudo tee /srv/website/index.html
<html>
<head>
<title>Hello</title>
</head>
<body><p>Hello World!</p></body>
</html>
EOF
## Actualizar permisos
sudo chown -R nginx:nginx /srv/website
sudo chcon -Rt httpd_sys_content_t /srv/website
## Crear configuración NGINX personalizada
cat <<EOF | sudo tee /etc/nginx/conf.d/default.conf
server {
server_name <IP_address>;
root /srv/website;
index index.html;
}
EOF
## reiniciar NGINX
sudo systemctl restart nginx
## Para depurar y ver problemas de conexión siguiendo los archivos de registro
sudo tail -f /var/log/nginx/access.log -f /var/log/nginx/error.log
Esto es necesario para usar Aframe en modo VR/AR y tener acceso a los sensores del dispositivo.
Oracle recomienda usar certificados TSL aprobados por autoridad de certificación (CA) externas.
Consulte https://docs.oracle.com/en/operating-systems/oracle-linux/certmanage/ para más información.
Para pruebas y desarrollo puede usar un certificado self-signed.
### Crea un directorio para almacenar las llaves y los certificados para NGINX
sudo mkdir -p /etc/pki/nginx/private
### Crear un certificado y una llave
openssl req -new -x509 -days 30 -nodes -newkey rsa:2048 -keyout server.key -out server.crt -subj "/C=US/ST=Ca/L=Sunnydale/CN=<IP_address>"
###Copie el certificado en /etc/pki/nginx/server.crt y el archivo de la llave en /etc/pki/nginx/private/server.key
sudo cp server.crt /etc/pki/nginx/
sudo cp server.key /etc/pki/nginx/private
Reemplace el archivo /etc/nginx/conf.d/default.conf para que incluya una configuració para permitir un servicio web TLS y una redirección 301 para el tráfico HTTP a el sitio HTTPS.
cat <<'EOF' | sudo tee /etc/nginx/conf.d/default.conf
server {
server_name <IP_address>;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <IP_address>;
root /srv/website;
index index.html;
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/private/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
}
EOF
### Reiniciar NGINX
sudo systemctl restart nginx
### Configure las reglas del firewall
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
Inicie un navegador web e ingrese en http://<IP_address>/. El navegador debe redirigirlo a https://<IP_address>/.
La mayoría de los navegadores mostraran una alerta cuando se accede a sitios con certificados self-signed por el usuario. Puede aceptar el riesgo de la alerta en este caso para confirmar que el sitio funciona como se espera.
La alerta no se mostrara si usa un certificado aprobado por una autoridad de certificación.
Instale git para clonar el repositorio
sudo dnf install git
Cree un directorio
## Crear un directorio para alojar un nuevo sitio
sudo mkdir /srv/website
Elimine los archivos dummy
cd /srv/website/
sudo rm index.html
Clone nuestra habitación del metaverso desde Github
(asegúrese de conservar el “.” ya que queremos tener el contenido del repositorio en nuestro folder)
sudo git clone https://github.com/santiago990208/FoodVerse.git .
Asegurese que todo funciona correctamente conectándoselo a:
https://<IP_address>/