Antes de seguir navegando, pincha aquí si quieres aceptar el uso de cookies y cerrar este mensaje.

Volver al inicio
Windows Internet Ofimática Smartphones Linux / Mac Ciberseguridad
Mostrar/Ocultar Menú
Windows Internet Ofimática Smartphones Linux / Mac Ciberseguridad

Instalar NextCloud en Raspberry Pi

En este tutorial, vamos a montar un pequeño proyecto con Raspberry Pi en el que vamos a conseguir un servidor de ficheros casero al estilo Dropbox.

En este ejemplo voy a utilizar una raspberry pi 2 con una micro SD de 8 GB, un pen drive de 8GB que en realidad sería un disco externo, y un cargado de móvil (5V/2A) que en realidad tendría que ser un HUB USB con alimentación externa, y se conectará al router por cable de red

Dejo aquí los enlaces de Amazon (la raspberry ya es el módelo actual y la SD de 16 ya que de 8 ya no venden)

Tendría que quedar conectado tal que así:

conexiones raspberry

Lo primero será preparar la raspberry instalando raspbian (o como ahora se llama Raspberry Pi OS) que será la distribución Linux que vamos a utilizar.

Descargar Raspberry Pi OS Lite 32 bits

Una vez descargado, descomprimimos el ZIP en cualquier carpeta y descargamos también Win32DiskImager para grabar la imagen en tarjeta micro SD de la raspberry:

Descargar Win32DiskImager

Para grabarlo abrimos el programa, buscamos el archivo descomprimido, marcamos la letra asignada a la unidad de la tarjeta Micro SD y pinchamos en Write

win32diskimager raspberry

Una vez termine de grabar, para poder trabajar cómodamente conectados a la raspberry desde nuestro ordenador hay que habilitar el SSH, esto es tan sencillo cómo guardar un archivo de texto que se llame ssh en la tarjeta junto al resto de archivos (sin extensión ni ningún contenido), quedará tal que así

habilitar ssh raspberry

Con esto ya tenemos la tarjeta lista, la ponemos en la raspberry y la ponemos en marcha.

Ahora tenemos que ver que IP le ha dado el DHCP del router, yo lo encuentro por ejemplo con PingInfoView

Descargar PingInfoView

En mi caso por ejemplo veo que ha utilizado la IP 192.168.1.78 ya que ha empezado a responder al poner en marcha la raspberry (hay que dejarle algo de tiempo que arranque todo)

pinginfoview

Ahora vamos con Putty y nos conectamos por SSH, las credenciales son estas:

ssh raspberry

Una vez hayamos accedido a la raspberry, lo primero que haremos, será fijar una IP, para ello podemos renombrar el archivo /etc/dhcpcd.conf por ejemplo a /etc/dhcpcd.conf.old y creamos de nuevo uno con el nombre original con el siguiente contenido (cada uno según su red local)

interface eth0
static ip_address=192.168.1.222/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

Reinicaimos la raspberry:

sudo reboot

Le damos unos segundos y nos volvemos a conectar por SSH ya por la nueva IP

Ahora, antes de ponernos con NextCloud vamos a instalar el servidor web, PHP y MySQL:

sudo apt-get upgrade
sudo apt-get install apache2
sudo apt-get install php libapache2-mod-php php-curl php-mysql php7.3-xml php-mbstring php-zip php-gd
sudo apt install mariadb-server sudo mysql_secure_installation

Accedemos a MySQL

mysql -u root -p -h localhost

Y creamos una base de datos y su usuario para nextcloud:

CREATE DATABASE ncdb;
CREATE USER 'ncuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON ncdb.* TO 'ncuser'@'localhost';

Creamos la configuración del virtualhost de apache en el que irá la aplicación en /etc/apache2/sites-enabled/nextcloud.conf


DocumentRoot /var/www/html/nextcloud
ServerName maaneeel.ddns.net

Require all granted
AllowOverride All
Options FollowSymLinks MultiViews

Dav off


Reiniciamos Apache para que cargue la configuración

sudo service apache2 restart

Creamos la carpeta del VirtualHost de Apache en el que irá la web

mkdir /var/www/html/nextcloud

Ahora, si instalamos nextcloud tal cuál tendríamos solo el espacio que haya en la micro sd, para utilziar el disco duro, lo conectamos y ejecutamos el comando fdisk -l para ver con que nomenclatura lo detecta la raspberry (en mi caso estoy utiliznado un pen drive y vemos que se identificada como /dev/sda1 )

disco raspberry

Lo que vamos a hacer ahora es crearle la tabla de particiones en GPT, crear una partición y formatearla en ext4:

sudo parted /dev/sda --script -- mklabel gpt
sudo parted /dev/sda --script -- mkpart primary ext4 0% 100%
sudo mkfs.ext4 -F /dev/sda1

Ahora, vamos a utilizar la carpeta que hemos creado antes cómo punto de montaje del disco, de esta forma la aplicación web de nextcloud y todos los archivos que guardemos se guardarán en el disco duro, para ello editamos el archivo /etc/fstab y añadimos la siguiente linea

/dev/sda1 /var/www/html/nextcloud ext4 defaults 0 0

Reiniciamos la raspberry y con el comando df -h ya deberemos ver el disco montado en la ruta que hemos elegido, tal que así

disco raspberry

Ya con el disco listo vamos a descargar nextcloud

wget https://download.nextcloud.com/server/releases/nextcloud-19.0.0.zip /var/www/html/nextcloud

Lo descomprimimos:

unzip /var/www/html/nextcloud/nextcloud-19.0.0.zip

Le damos permisos al servidor web sobre los archivos de la aplicación

chown -R www-data:www-data /var/www/html/nextcloud/

Accedemos desde el navegador a la URL de NextCloud para que se ejecute el instalador, en mi caso http://192.168.1.222/nextcloud

Creamos una cuenta

registro nextcloud

Ponemos los datos de la base de datos que hemos creado antes

base de datos nextcloud

Si no lo vamos a utilizar, quitamos el check de install recommended apps y pinchamos en terminar configuración

En mi caso, la página de instalación se ha quedado pillada y pasados unos minutos he decidido reiniciar apache, al volver a acceder ya había finalizado la instalación, creo que esto ha ocurrido porqué en mi caso estoy utilizando la raspberry 2 y puede ir algo justa de recursos.

Aquí ya podemos ver la aplicación funcionando.

nextcloud

Por último, si quermeos dejarlo ya bonito, podemos instalarle un certificado SSL gratuito de los que nos ofrece Let's Encrypt, para ello puedes seguir este tutorial

Una vez tengamos todo listo, si queremos que la aplicación sea accesible desde internet, tendremos que completar 2 tareas más, la primera es abrir el puerto 443 en el router para que el puerto 443 de nuestra IP pública redirija al puerto 443 de la raspberry, y el segundo punto, será instalar no-ip en la raspberry , de manera que podamos conectarnos siempre a un mismo nombre DNS sin importarnos que IP pública tenga nuestro router en cada momento.

Si quieres resolver cualquier consulta y/o recibir notificaciones sobre los nuevos contenidos que se van a ir subiendo, puedes unirte a nuestro grupo de Telegram