Nota:
- En este tutorial se necesita acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por valores específicos de su entorno en la nube.
Despliegue Nextcloud en Ampere A1 en Oracle Cloud Infrastructure
En este tutorial, instalará Nextcloud, la popular plataforma de colaboración de código abierto en Oracle Cloud Infrastructure (OCI). Utilizará una única instancia informática de Ampere A1 para el servidor de Nextcloud. También ejecutará Nextcloud como un conjunto de contenedores, mediante Podman. Podman es un motor de contenedor para gestionar y ejecutar contenedores mediante los estándares de Open Container Initiative. Ofrece compatibilidad total con la API con Docker y actúa como una lista desplegable para sustituir el comando docker
. Sin embargo, ofrece algunas ventajas en comparación con Docker, que incluye una arquitectura sin daemon, compatibilidad con contenedores sin raíz y soporte cgroupsv2.
Nextcloud ofrece imágenes de contenedores docker que soportan la arquitectura del brazo. Nextcloud también requiere una base de datos para la que podemos utilizar MySQL o MariaDB. Para despliegues más escalables, puede utilizar el servicio de base de datos MySQL en OCI, lo que facilita la ampliación, la realización de copias de seguridad y la gestión de su base de datos MySQL.
Los datos creados dentro de un contenedor no se mantienen, y Nextcloud requiere un almacenamiento persistente para almacenar los archivos que cargamos, así como para el estado interno. Para mantener los datos, podemos utilizar volúmenes mediante el servicio OCI Block Storage. Un volumen es un dispositivo de almacenamiento creado y gestionado por Podman. Los volúmenes se crean directamente mediante el comando podman volume
o durante la creación del contenedor.
Para activar la interfaz de usuario y los servicios basados en web de Nextcloud, debemos realizar los cambios necesarios en la lista de seguridad de red de OCI para permitir el tráfico.
Con estos componentes, tenemos una topología básica para nuestro despliegue.
Descripción de la ilustración arch.png
Introducción
Objetivos
En este tutorial:
- Cree una instancia informática de Ampere A1
- Preparar la instancia informática para desplegar aplicaciones en contenedores
- Despliegue Nextcloud como un conjunto de contenedores.
- Conecte la sincronización de la aplicación y del archivo de configuración.
- Limpiar los despliegues
Requisitos
- Cuenta gratuita de Oracle (Trial), pagada o LiveLabs Cloud
- Familiaridad con la consola de OCI
- Visión general de Networking
- Conocimientos de los compartimentos
- Conocimiento básico conceptual de contenedores y Podman
Configurar el entorno
Empezará por iniciar el entorno en la nube de Oracle que se utilizará para crear y desplegar la aplicación Java EE. Este entorno se incluirá en un compartimento en la nube y la comunicación dentro del compartimento se realizará a través de una red virtual en la nube (VCN). El compartimento y la VCN aislarán y protegerán el entorno general. Desplegará la instancia informática de Ampere A1 para alojar el servidor de Nextcloud. Una vez creada la instancia informática, configurará las políticas de acceso para exponer la aplicación e instalar Nextcloud en la instancia.
Configuración básica de la infraestructura de OCI
-
Abra el menú de navegación. En Gobernanza y administración, vaya a Identidad y haga clic en Compartimentos. En esta pantalla, verá una lista de compartimentos, haga clic en Crear compartimento.
-
Introduzca lo siguiente:
- Nombre: introduzca "AppDev".
- Descripción: introduzca una descripción (necesaria), como "AppDev compartimento para el tutorial de introducción". Evite introducir información confidencial.
- Compartimento principal: seleccione el compartimento en el que desea que resida este compartimento. Se define por defecto en el compartimento raíz (o arrendamiento).
- Haga clic en Crear compartimento.
- El compartimento se muestra en la lista.
Creación de una instancia informática A1 de Ampere
-
Para crear una instancia informática de Ampere A1, utilice el menú de navegación situado en la esquina superior izquierda de la consola y vaya a Recursos informáticos > Instancias.
-
Abra el flujo de creación de instancias.
- Verifique que está en el compartimento AppDev
- Haga clic en Crear instancia.
-
En la página de creación de instancia, creará la nueva instancia junto con los nuevos recursos de red, como la red virtual en la nube (VCN), el gateway de Internet (IG) y mucho más.
- Asignar un nombre a la instancia a Nextcloud
- Actualice la selección de imagen para utilizar Oracle Linux 8 o posterior
- Haga clic en el botón Cambiar unidad para ver las unidades de computación disponibles.
-
Configure la imagen para la instancia.
- Haga clic en el botón Cambiar imagen para ver las imágenes de sistema operativo disponibles.
- Elija Oracle Linux 8 o posterior.
-
Configure los recursos para la instancia.
- Elija el procesador basado en Ampere Arm en la elección para series de formas.
- Seleccione la unidad
VM.Standard.A1.Flex
de la lista de unidades con procesadores basados en Ampere Arm. Las unidades Ampere A1 son flexibles y puede modificar el número de núcleos y la cantidad de memoria. Seleccione 1 núcleo y 6 GB de memoria para la VM.
-
Seleccione las opciones de red. Cree una nueva VCN y subred para su próximo despliegue en la nube. Asegúrese de asignar una dirección IP pública para su instancia.
-
Genere y descargue el par de claves SSH. Este paso es opcional, pero se recomienda realizar tareas de mantenimiento y actualizaciones posteriores. También puede traer su clave pública si ya tiene un par de claves que desea utilizar. Si desea saber cómo generar claves SSH, siga las instrucciones del tutorial Generar claves SSH.
-
Haga clic en Crear para crear los recursos de red e iniciar la instancia informática.
Exponer puertos de aplicación a usuarios
Para que se pueda acceder a las aplicaciones desde Internet, debe abrir los puertos que utilizará nuestra aplicación. En esta sección, configurará listas de seguridad en la red en la nube y reglas de firewall en la instancia informática para que las aplicaciones puedan enviar y recibir tráfico.
Configuración de la red virtual en la nube (VCN)
Una lista de seguridad actúa como un firewall virtual para una instancia, con reglas de entrada y salida que especifican los tipos de tráfico permitidos que entran en la instancia y salen de esta. Listas de seguridad configuradas en el nivel de subred, que aplican las reglas de seguridad a todos los elementos de red de esa subred. La red incluye una lista de seguridad predeterminada, que contiene un conjunto inicial de reglas. La lista de seguridad por defecto permite conectarse a su instancia mediante SSH y, para que su instancia realice llamadas de red salientes a cualquier destino.
- Navegue a la página de detalles de la instancia que ha creado. Recursos informáticos > Instancias > Haga clic en la instancia que ha creado
-
Navegue a la subred a la que está asociada la instancia haciendo clic en la subred.
- En la subred, seleccione la lista de seguridad por defecto
- Haga clic en "Agregar regla de entrada" para agregar una nueva regla que permita el tráfico entrante que coincida con las reglas.
- Agregar una regla de entrada para permitir el tráfico entrante en el puerto 8080
- Defina el CIDR de origen en
0.0.0.0/0
. Esto permite el tráfico entrante de todos los orígenes. - Establezca Destination Port Range (Rango de puertos de destino) en
8080
. De esta forma, el destino solo se define en el puerto8080
. La regla ahora permite que el tráfico de todos los orígenes utilice el puerto8080
. Esto es lo que necesitamos, para que se pueda acceder a nuestra aplicación desde cualquier lugar. -
Proporcione una descripción.
- Defina el CIDR de origen en
Configure la instancia
Las reglas del firewall controlan el tráfico de nivel de paquetes de entrada y salida de una instancia. Las reglas de firewall se configuran directamente en la propia instancia y proporcionan un nivel adicional de seguridad.
- Navegue a la página de detalles de la instancia que ha creado. Recursos informáticos > Instancias > Haga clic en la instancia que ha creado
- Copie la dirección IP pública de la instancia.
- Inicie sesión en la instancia con SSH. Utilice la clave que ha generado o proporcionado durante el paso de creación de la instancia. El nombre de usuario por defecto para las instancias que utilizan el sistema operativo Oracle Linux es
opc
. -
Ejecute los comandos de configuración del firewall. Esto modifica el firewall en la propia instancia para exponer el puerto
8080
y aceptar el tráfico entrante.sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp sudo firewall-cmd --reload
Despliegue Nextcloud en Ampere A1
Ahora puede ejecutar Nextcloud en la plataforma informática Ampere A1 como despliegue de contenedores. También utilizará las nuevas herramientas de contenedor, como Podman, incluidas en Oracle Linux 8. Podman proporciona una utilidad ligera para ejecutar y gestionar contenedores compatibles con Open Container Initiative (OCI). Un despliegue de Podman puede reutilizar imágenes de contenedor existentes. Podman no necesita un daemon en ejecución y permite que los contenedores se inicien y ejecuten sin permisos root. Para obtener más información sobre Podman en Oracle Linux, visite la documentación oficial
Instalación de las herramientas de contenedor
Una vez creada la instancia con Oracle Linux 8.x, podemos instalar el paquete container-tools
para preparar nuestra instancia con las herramientas necesarias para desplegar cargas de trabajo en contenedores.
-
Inicie sesión en la instancia con SSH. Utilice la clave que ha generado o proporcionado durante el paso de creación de la instancia. El nombre de usuario por defecto para las instancias que se ejecutan en el sistema operativo Oracle Linux es
opc
. -
Instale el módulo
container-tools
que extrae todas las herramientas necesarias para trabajar con contenedores.sudo dnf module install container-tools:ol8
sudo dnf install git
Creación de una definición de pod
Podman puede gestionar grupos de contenedores denominados Pods. Formalmente, los pods son un grupo de uno o más contenedores que comparten los mismos espacios de nombres de red, pid e ipc. Este concepto fue introducido inicialmente por el proyecto de Kubernetes y los podman son muy similares a los pods de Kubernetes.
En muchos aspectos, un pod se comporta como un host virtual en el que se ejecutan los servicios de cada contenedor. Esto significa que cada contenedor puede acceder a los servicios del otro contenedor como si se estuvieran ejecutando en el mismo host. La ejecución de contenedores de esta forma puede eliminar mucha complejidad en torno a la red y puede facilitar la limitación de la exposición pública de los puertos que solo están destinados a ser utilizados por los servicios de la propia aplicación.
Los pods son una gran forma de gestionar contenedores relacionados, como cuando una aplicación está formada por varios contenedores. En este tutorial, desplegará Nextcloud como Pod. Los contenedores necesarios para NextCloud están incluidos en nuestro pod, y se inician y paran juntos. El primer paso para gestionar nuestra aplicación como pod es crear una definición de pod vacía.
Crear un pod con el siguiente comando
podman pod create --hostname nextcloud --name nextcloud --publish 8080:80 --infra-image k8s.gcr.io/pause:3.1
podman pod create
: crea un pod.--hostname nextcloud
: define el nombre de host para el pod comonextcloud
--name nextcloud
: define el nombre del pod comonextcloud
--publish 8080:80
: publica el puerto80
en el pod en el puerto8080
en el host.
Definir volúmenes de almacenamiento
Ahora que el pod está definido, debemos definir algunas opciones de almacenamiento, así como antes de rellenar el pod con nuestros contenedores. Los contenedores utilizan capas de contenedores editables por defecto para todos los archivos creados dentro de un contenedor. Esto significa que los archivos y datos creados por los procesos de un contenedor no se mantienen y se pierden cuando se elimina o termina el contenedor. También dificulta el uso compartido de los datos entre contenedores. Los volúmenes son la forma preferida de mantener los datos creados por los contenedores. Se pueden considerar abstracciones de almacenamiento para ubicaciones de almacenamiento en la máquina host, pero gestionadas independientemente del ciclo de vida del contenedor. También facilitan el uso compartido de datos entre contenedores al montarlos simultáneamente en varios contenedores.
Basándose en las recomendaciones de Nextcloud, utilizamos 3 volúmenes para gestionar los datos.
-
El volumen denominado
nextcloud-appdata
almacenará el estado de la aplicación principal para la siguiente nube -
El volumen denominado
nextcloud-files
almacenará los archivos cargados y creados por los usos. -
El volumen denominado
nextcloud-db
almacenará los archivos de base de datos para la base de datos MySQL.podman volume create nextcloud-appdata podman volume create nextcloud-files podman volume create nextcloud-db
Ejecutar MySQL Database
Ahora puede iniciar la base de datos para Nextcloud con el volumen asociado. El contenedor de base de datos se inicia en el pod que ya se ha creado. La base de datos utilizada por Nextcloud es MySQL, y aquí la estamos ejecutando como un contenedor en el pod. Para un despliegue más sólido y totalmente gestionado, puede sustituir este contenedor por el servicio de base de datos MySQL de OCI.
A continuación se muestra el comando para iniciar la base de datos y se explican cada una de las opciones.
Nota: asegúrese de proporcionar contraseñas seguras para las variables
MYSQL_PASSWORD
yMYSQL_ROOT_PASSWORD
a continuación.
podman run --detach --pod=nextcloud \
--env MYSQL_DATABASE=nextcloud \
--env MYSQL_USER=nextcloud \
--env MYSQL_PASSWORD=NEXTCLOUD_PASSWORD \
--env MYSQL_ROOT_PASSWORD=MYSQL_ROOT_PASSWORD \
--volume nextcloud-db:/var/lib/mysql:Z \
--restart on-failure \
--name nextcloud-db \
mysql/mysql-server:8.0
podman run
: el comando run indica a podman que ejecute un comando en un contenedor con los parámetros proporcionados. El comando que se va a ejecutar se define normalmente en la propia imagen.--detach
- Modo Desasociado: ejecute el contenedor en segundo plano e imprima el nuevo ID de contenedor.--pod=nextcloud
: ejecuta el contenedor en un pod existente. Aquí elegimos ejecutar el contenedor en el pod que creamos anteriormente para Nextcloud--env
: define variables de entorno arbitrarias. Los procesos que se ejecutan dentro del contenedor pueden acceder a estas variables de entorno.--volume nextcloud-db:/var/lib/mysql:Z
: monta el volumen denominadonextcloud-db
en la ubicación/var/lib/mysql
, la ubicación por defecto para los archivos de datos de MySQL. La opciónZ
indica a Podman que etiquete el contenido con una etiqueta privada no compartida.--restart on-failure
: reinicie la política que se debe seguir al salir de los contenedores. En este caso, el contenedor se reiniciará cuando falle. Un fallo es cuando el proceso del contenedor existe con un estado distinto de cero.--name nextcloud-db
: asigna el nombrenextcloud-db
al contenedor.mysql/mysql-server:8.0
: la imagen que se va a ejecutar se utiliza para crear el contenedor
Como está ejecutando el contenedor en modo desconectado, Podman lo iniciará en segundo plano y saldrá. Para ver el estado del inicio y los logs, puede ejecutar el siguiente comando. Pulse Ctrl+C
para detener la continuación de los logs.
podman logs -f nextcloud-db
Desplegar Nextcloud
Ahora puede desplegar Nextcloud como otro contenedor del mismo pod. Los parámetros son similares al comando anterior y aquí transfiere los detalles de conectividad de la base de datos sobre la base de datos que debe utilizar Nextcloud.
Nota: Asegúrese de que los valores de las variables
MYSQL_DATABASE
,MYSQL_USER
yMYSQL_PASSWORD
son los mismos que proporcionó al iniciar la base de datos. Asegúrese de actualizar los valores deNEXTCLOUD_ADMIN_USER
yNEXTCLOUD_ADMIN_PASSWORD
a su elección.
podman run --detach --pod=nextcloud \
--env MYSQL_HOST=127.0.0.1 \
--env MYSQL_DATABASE=nextcloud \
--env MYSQL_USER=nextcloud \
--env MYSQL_PASSWORD=NEXTCLOUD_PASSWORD \
--env NEXTCLOUD_ADMIN_USER=NC_ADMIN \
--env NEXTCLOUD_ADMIN_PASSWORD=NC_PASSWORD \
--env NEXTCLOUD_TRUSTED_DOMAINS=<your public IP> \
--volume nextcloud-appdata:/var/www/html:Z \
--volume nextcloud-files:/var/www/html/data:Z \
--restart on-failure \
--name nextcloud-app \
docker.io/library/nextcloud:21
--env MYSQL_HOST=127.0.0.1
: dado que tanto la base de datos como la aplicación están en el mismo pod, la aplicación puede acceder al contenedor de base de datos mediante127.0.0.1
, como si se estuvieran ejecutando ambos en el mismo host.--env NEXTCLOUD_TRUSTED_DOMAINS=<your public IP>
: los dominios de confianza son una función de seguridad que utiliza Nextcloud y debe proporcionar la lista de todos los dominios a los que se puede acceder a Nextcloud. En este caso, será la dirección IP pública de la instancia, ya que es ahí donde esperaremos que se ejecute Nextcloud.
Para ver los logs de inicio, puede utilizar:
podman logs -f nextcloud-app
Una vez que se haya completado el inicio, puede navegar a http://<your_public_ip>:8080
para acceder al servidor de Nextcloud. Utilice los valores que ha proporcionado para NEXTCLOUD_ADMIN_USER
y NEXTCLOUD_ADMIN_PASSWORD
para conectarse.
Más recursos de aprendizaje
Explore otras prácticas en docs.oracle.com/learn o acceda a contenido de aprendizaje más gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de formación de Oracle.
Para obtener documentación sobre los productos, visite Oracle Help Center.
Deploy Nextcloud on Ampere A1 on Oracle Cloud Infrastructure
F50348-01
November 2021
Copyright © 2021, Oracle and/or its affiliates.