Giter VIP home page Giter VIP logo

foodverse's Introduction

Metaverso en OCI

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

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.

Configurar cuenta OCI

Crear cuenta

  1. Dirigirse a https://www.oracle.com/cloud/sign-in.html
  2. 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 ####

  1. 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.

  1. 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.

Configurar VCN

La configuración de la VCN se realiza de la siguiente manera:

  1. Pulsar el botón de navegación “hamburguesa”, luego pulsar “Networking” y pulsar “Virtual Cloud Networks”
  2. 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.

Configurar instancia

  1. Pulsar el botón de navegación “hamburguesa”, luego pulsar “Compute” y pulsar “Instances”

  1. Pulsar en “Create instance”

  1. 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

  1. 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”

  1. 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.

  1. 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.

  1. Seleccionar el tipo de encriptación del disco.

  1. Pulsar “Create”

Nuestra instancia demorará un par de minutos en estar lista y podemos proceder.

Conectarse a la instancia

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”

  1. 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.

Configurar servidor NGINX

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


Create a custom NGINX configuration

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

Configuración HTTPS

Esto es necesario para usar Aframe en modo VR/AR y tener acceso a los sensores del dispositivo.

Configurar certificados TLS/SSL

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

Cambiar configuración NGINX

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

Confirmar que HTTPS funciona correctamente

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.

Despliegue del proyecto en el servidor

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 .

Probar

Asegurese que todo funciona correctamente conectándoselo a:

https://<IP_address>/

Anexos

Aframe docs OCI docs Figuras 3D

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.