DEV Community

Cover image for Construyendo Mi Nube Personal: Lecciones Aprendidas en Next cloud y Apache
Ricardo Domínguez González
Ricardo Domínguez González

Posted on

1 1

Construyendo Mi Nube Personal: Lecciones Aprendidas en Next cloud y Apache

Recomendaciones

  • Escribe todas las configuraciones a mano, no copies y pegues solamente. te sera util saber que estás haciendo exactamente en caso de errores.

Rutas

Nombre Ruta
nextcloud config /etc/apache2/sites-available/nextcloud.conf
Config ip estatico /etc/netplan/50-cloud-init.yaml
config.php nextcloud /var/www/nextcloud/config/config.php

Comandos Útiles

comando Descripción
sudo service apache2 restart Reiniciar servidor web de apache2 (donde esta almacenado el nextcloud)
sudo service mysql restart Reiniciar MySQL o MariaDB (Base de Datos)
hostname -I para comprobar que Ip tengo

1. Instalación del Sistema Operativo

USB booteable con Ubuntu server

Crea la unidad USB como booteable con Ubuntu server
puedes descargar la imagen de Ubuntu server desde la web oficial
https://ubuntu.com/download/server

Instalar Ubuntu server

Dependiendo de la computadora que vas a usar como servidor debes entrar a la BIOS para seleccionar la USB con Ubuntu server en mi caso uso la tecla Esc para entrar a la BIOS y elegir­ la USB con mi Sistema Operativo.

Nota: Las credenciales las puedes guardar en keepass o samsung pass, todo dato que veas en la configuración puede ser Útil, guárdalo.

luego de realizar la instalación te va a pedir reiniciarla, antes de reiniciar debes sacar la USB Booteable.

Configuración inicial del servidor

  1. Inicia Session en tu servidor con el usuario y la contraseña creados.

  2. Abre una terminal y actualiza los paquetes:

sudo apt-get update
sudo apt-get upgrade
Enter fullscreen mode Exit fullscreen mode

2. Configuración de Ip Estática para el servidor y tu Router Wi-Fi

Dado que este es tu servidor y tu nube personal, existen configuraciones fijas que no se modificarán con frecuencia, es importante asegurarte de que ni tu servidor ni tu router cambien su ruta cada vez que los reinicias.

Recuerda que tanto tu router como tu servidor asignan la dirección IP de manera dinámica por defecto. Esto significa que, al reiniciar cualquiera de ellos, la IP podría cambiar, lo que resultaría en errores y la imposibilidad de conectarte a tu servidor correctamente.

Configuraciones del lado del servidor

  1. Vamos a fijarnos que ip tengo actualmente en mi servidor

ingresa el siguiente comando

hostname -I
Enter fullscreen mode Exit fullscreen mode

te debería dar algo similar a 192.168.1.101 el 101 puede ser distinto en tu caso, eso es por la parte flexible de notación CIDR (así se llama la dirección ip) que le designo tu router a tu servidor.

  1. Vamos a ver dirección ip tiene tu Router

Aunque 192.168.1.1 es una dirección común, otros routers pueden usar direcciones diferentes como 192.168.0.1, 192.168.1.254, o incluso 10.0.0.1.

vamos a verificar esto del lado de tu servidor Ubuntu, ejecutamos:

ip route
Enter fullscreen mode Exit fullscreen mode

te va a retornar algo similar a default via 192.168.1.1 la cual seria la ruta de tu router.

  1. Vamos a configurar nuestro servidor para que cada que inicie use esa ip
sudo nano /etc/netplan/50-cloud-init.yaml
Enter fullscreen mode Exit fullscreen mode

Coloca estas configuraciones

network:
  version: 2
  ethernets:
    eno1: #Guarda bien este nombre, lo usaras más adelante.
      dhcp4: no # importante para que la red estática no cambie
      addresses:
        - 192.168.1.101/24 # Asegúrate que ya tengas esta ip configurada en tu Router
      routes:
      - to: default
        via: 192.168.1.1 # Ip de tu Router
      nameservers:
        addresses:
          - 192.168.1.1 # Ip de tu Router
Enter fullscreen mode Exit fullscreen mode

Aplicas los cambios

sudo netplan apply
Enter fullscreen mode Exit fullscreen mode

Configuraciones del lado de tu Router

Así mismo como configuraste tu servidor, debes configurar tu Router, no vaya a ser que apagues tu servidor y tu router por algún reinicio o cualquier cosa asigne tu Ip a otro dispositivo.

  1. Primero vamos a buscar la MAC Address de tu Servidor ejecuta:
ip a
Enter fullscreen mode Exit fullscreen mode

como ya configuraste tu servidor tu MAC se encuentra en eno1 debe ser similar a
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
lo que dice aa:bb:cc:dd:ee:ff es tu mac address

  1. Como ya tenemos la ruta de tu Router solo es ingresar desde el navegador e ingresar a las configuraciones de administración de tu Router en mi caso. http://192.168.1.1/

buscas la configuración de Enlace de IP y MAC ahí colocas la MAC de tu Servidor y la IP que ya configuraste en tu servidor.

Guardas y aplicas cambios


3. Instalación de dependencias para Nextcloud

Instalación de Apache, MariaDB y PHP (versión disponible en los repositorios oficiales)

sudo apt-get update

sudo apt-get install apache2 mariadb-server libapache2-mod-php

sudo apt-get install php php-cli php-common php-curl php-zip php-gd php-mysql php-xml php-mbstring php-json php-intl
Enter fullscreen mode Exit fullscreen mode

Verifica si puedes entrar desde un navegador en otro dispositivo

primero necesitamos crear una archivo php

nano /var/www/html/info.php
Enter fullscreen mode Exit fullscreen mode

escribes y guardas

<?php phpinfo(); ?>
Enter fullscreen mode Exit fullscreen mode

al archivo le colocas como nombre info.php

En la sección [[#Configuraciones del lado del servidor]] descubrimos nuestra ip, esta misma es la que usaremos para entrar a nuestro servidor.
Abre un navegador web en otro dispositivo conectado a la misma red que tu servidor. En la barra de direcciones, escribe la dirección IP de tu servidor seguida de /info.php. Por ejemplo:

http://<tu-ip-servidor>/info.php
Enter fullscreen mode Exit fullscreen mode

Configurar Base de datos MariaDB

Ejecuta el siguiente comando para asegurar la instalación de MariaDB que realizamos en el paso anterior:

sudo mysql_secure_installation
Enter fullscreen mode Exit fullscreen mode

Crea una base de datos y un usuario para Nextcloud:

sudo mysql -u root -p
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Enter fullscreen mode Exit fullscreen mode

Es importante que guardes el usuario, contraseña y nombre de la base de datos ya que estos se usaran para configurar el servidor del lado de nextcloud.

📝Como nota adicional,

no recomiendo usar nombres y contraseñas (nextcloud, nextclouduser, password) como los del ejemplo ya que son inseguros y en este servidor estamos guardando información sensible y no queremos arriesgarnos de perder.

Descargar y configurar Nexcloud

Descarga e instalación manual de Nextcloud:

cd /var/www
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo apt-get install unzip
sudo unzip latest.zip
sudo apt remove unzip

#Este siguiente comando puede no ser necesario, recomiendo hacer un ls para verificar si el archivo que descargaste tiene version
sudo mv nextcloud-<versión> nextcloud
Enter fullscreen mode Exit fullscreen mode

Mover Nexcloud a la carpeta var/www en caso que no este ahí

sudo mv /var/snap/nextcloud/current/nextcloud /var/www/nextcloud
Enter fullscreen mode Exit fullscreen mode

Habilita los módulos necesarios de Apache:

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
Enter fullscreen mode Exit fullscreen mode

Configuración de Apache para Nextcloud:

sudo nano /etc/apache2/sites-available/nextcloud.conf
Enter fullscreen mode Exit fullscreen mode

Contenido del archivo:
Recuerda que 192.168.1.101 es la dirección de tu servidor

<VirtualHost *:80>
  ServerAdmin admin@example.com
  DocumentRoot /var/www/nextcloud
  ServerName 192.168.1.101

  <Directory /var/www/nextcloud/>
    Options +FollowSymlinks
    AllowOverride All
    Require all granted
  </Directory>

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

  SetEnv HOME /var/www/nextcloud
  SetEnv HTTP_HOME /var/www/nextcloud

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Enter fullscreen mode Exit fullscreen mode

Habilitación del sitio de Nextcloud y reinicio de Apache:

sudo a2ensite nextcloud.conf
sudo a2dissite 000-default.conf
sudo service apache2 restart

## Otorgar permisos
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 755 /var/www/nextcloud
Enter fullscreen mode Exit fullscreen mode

Accede a la dirección IP de tu servidor y veras la página de inicio de Nexcloud

Problemas que experimente y como los solucione

Error el ingresar a tu página de configuración de php

Página en blanco al acceder a info.php:

Solución: Verificar que Apache esté ejecutándose correctamente y que el archivo info.php tenga los permisos correctos:

sudo service apache2 status
sudo chmod 644 /var/www/html/info.php
Enter fullscreen mode Exit fullscreen mode

Error 404 Not Found al acceder a la dirección de tu servidor nextcloud:

Solución: Verificar que los archivos de Nextcloud están en el directorio correcto y configurar Apache correctamente:

Rutas a revisar configuraciones:

/var/www/nextcloud/config/config.php
/etc/netplan/50-cloud-init.yaml
/etc/apache2/sites-available/nextcloud.conf
Enter fullscreen mode Exit fullscreen mode
# Copiar configuración
sudo cp -r /var/snap/nextcloud/common/nextcloud/* /var/www/nextcloud/
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 755 /var/www/nextcloud
sudo service apache2 restart
Enter fullscreen mode Exit fullscreen mode

Problema de permisos al editar el archivo info.php:

Solución: Cambiar el propietario del archivo y ajustar los permisos:

sudo chown tu_usuario:tu_usuario /var/www/html/info.php
sudo chmod 644 /var/www/html/info.php
Enter fullscreen mode Exit fullscreen mode

Apache muestra un listado de directorios en lugar de la página de configuración de Nextcloud:

Solución: Deshabilitar la opción de listar directorios en Apache:

sudo nano /etc/apache2/sites-available/nextcloud.conf
Enter fullscreen mode Exit fullscreen mode

Asegúrate que en la sección del directoy se incluya lo siguiente

<Directory /var/www/nextcloud/>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>
Enter fullscreen mode Exit fullscreen mode

una vez realizado guardas y reinicias el servidor apacha

sudo service apache2 restart
Enter fullscreen mode Exit fullscreen mode

Error: "Internal Server Error" al acceder a Nextcloud

Problema: Nextcloud mostraba un error interno debido a problemas en la configuración del servidor o en los permisos de los archivos.

Solución:
Aseguramos los permisos correctos en los directorios de Nextcloud:

sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 755 /var/www/nextcloud
Enter fullscreen mode Exit fullscreen mode

Reiniciamos los servicios de Apache y MariaDB para aplicar los cambios.

sudo service apache2 restart
sudo service mysql restart
Enter fullscreen mode Exit fullscreen mode

Error: Falta del archivo de log de Nextcloud

Problema: No se generaba el archivo nextcloud.log, lo que complicaba el diagnóstico de errores.

Solución

Revisamos la configuración en config.php en la ruta /var/www/nextcloud/config/config.php y habilitamos el registro de logs añadiendo

'loglevel' => 2,
'logfile' => '/var/www/nextcloud/data/nextcloud.log',
Enter fullscreen mode Exit fullscreen mode

Ajustamos los permisos para permitir que Apache escribiera en el directorio de logs:

sudo chown -R www-data:www-data /var/www/nextcloud/data
sudo chmod -R 755 /var/www/nextcloud/data
Enter fullscreen mode Exit fullscreen mode

Olvide la contraseña del usuario Administrador

Ve a la ruta

/var/www/nextcloud

# Ejecuta
sudo -u www-data php occ user:resetpassword Administrador
Enter fullscreen mode Exit fullscreen mode

📝 Notas: Administrador es el usuario, esto funcionara para cualquier usuario registrado en tu servidor. Si colocas un usuario que no existe el mismo sistema te dirá que no existe.

Top comments (0)