En el artículo de hoy vamos a tratar la instalación de Nextcloud sobre un sistema operativo GNU Linux. Una de mis distribuciones favoritas es Debian, pero, buscando la facilidad de instalación y siguiendo la recomendación del equipo de desarrollo, utilizaremos Ubuntu 16.04. Para ello usaremos un VPS en la llamada nube, aunque también sirve la guía para una máquina local o una virtual. Esta es la segunda parte sobre Nextcloud, si no sabéis muy bien de que va este producto, siempre podéis visitar el artículo introductorio.
Siguiendo la filosofía didáctica de la web, vamos a ir paso a paso en la instalación. En nuestro caso utilizaremos la plataforma DigitalOcean para crear la máquina virtual privada o VPS.
Una vez dentro de la plataforma, nos iremos a la parte superior derecha de la ventana, y marcamos sobre el botón «Crear droplet«:
En este apartado indicamos el sistema operativo, en nuestro caso «Ubuntu 16.04» en su versión de 64 Bits, la tarifa será la más básica de 5 USD, que nos incluye 512 MB, 1 CPU y 20 GB de disco. El centro de datos en mi caso será «Frankfurt» ya que está en Europa, y así se garantiza que tiene que seguir la ley de protección de datos de la Unión Europea (en principio). También podemos habilitar las copias de seguridad semanales, aunque esto nos conllevará un 20 % adicional en el coste. En la última parte indicamos el nombre, que será «nextcloud.ochobitsunbyte.pw«.
Una vez creado nos aparecerá la siguiente imagen en el panel:
Además nos enviará un mensaje a nuestro correo con las credenciales de la nueva máquina privada virtual. Se observa en la imagen anterior el nombre del VPS y sus características, además de su IP pública. Que os muestro sin problema, ya que seguramente cuando acabe este artículo eliminaré la máquina.
Visitamos nuestro correo personal para encontrar las credenciales. Para acceder a nuestro nueva máquina debemos utilizar ssh desde la consola de comandos si utilizamos un sistema GNU Linux, FreeBSD o similar. En el caso de otros sistemas como Windows, se pueden utilizar programas como Putty.
Para la instalación voy a utilizar la documentación oficial, que os invito a consultar, ya que es muy extensa y de calidad; eso sí, está en inglés.
Vamos a empezar con los requisitos mínimos. Si leemos dicha documentación nos indica que el mínimo de memoria es de 512 MB, pero, ojo, cuanto más usuarios vayan a utilizar el producto más memoria necesitaremos. En lo que respecta al sistema operativo recomendado nos dice que los mejores son RHEL 7 y Ubuntu 16.04, aunque también soporta Debian, entre otros. En lo que toca a base de datos recomienda Mysql o MariaDB, la versión PHP 7 o superior y el servidor web Apache 2.4 con el módulo mod_php activo. Estas son las recomendaciones, Nextcloud puede utilizar otras bases de datos, servidores webs, etcétera.
Vamos al lío, una vez dentro de la consola de comandos, comenzamos la instalación. Al entrar en el VPS nos pedirá cambiar la contraseña. Lo hacemos y actualizamos.
sudo apt update
Lo primero que haremos es instalar el servidor web Apache, además del módulo de PHP correspondiente en su versión 5, ya que Debian no trae en sus repositorios la versión 7. En principio nos tendría que funcionar igualmente.
sudo apt install apache2 libapache2-mod-php7.0
Además instalaremos toda una serie de complementos, algunos gráficos, para PHP :
sudo apt install php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring
Además de los siguientes:
sudo apt install php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip zip
Una vez hecho esto vamos con la base de datos, en nuestro caso instalaremos MariaDB. Aquí voy a distanciarme de la instalación recomendada, que utiliza los repositorios de Ubuntu, en cambio vamos a utilizar los de MariaDB. Concretamente los recomendados en dicho proyecto para nuestra versión de sistema operativo, utilizando la propia guía del motor de base datos, aquí.
Para ello añadimos el repositorio:
sudo apt-get install software-properties-common apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://tedeco.fi.upm.es/mirror/mariadb/repo/10.1/ubuntu xenial main'
Una vez hecho esto actualizamos el sistema e instalamos:
sudo apt update sudo apt install mariadb-server
Llegado el caso nos preguntará por una contraseña para el super usuario ‘root’ de la base de datos, recordad poner una que sea robusta.
Accedemos al motor de MariaDB, para así poder crear la base de datos y el usuario para nuestro proyecto:
mysql -u root -p
Y escribimos:
CREATE DATABASE nextcloud_db; GRANT USAGE ON nextcloud_db.* TO nextcloud_user@localhost IDENTIFIED BY 'la-contraseña-que-quieras'; GRANT ALL PRIVILEGES ON nextcloud_db.* TO nextcloud_user@localhost ; FLUSH PRIVILEGES;
Para asegurar la instalación, usaremos el siguiente comando:
mysql_secure_installation
De esta manera ya tenemos la parte de la base de datos finiquitada. Es importante apuntar las credenciales, ya que más adelante las necesitaremos.
Ya hemos instalado todos los requisitos necesarios para el funcionamiento del producto. Nos vamos ahora a la página de descargas de Nextcloud. Desde la consola de comandos descargamos la última versión:
cd /tmp wget https://download.nextcloud.com/server/releases/nextcloud-11.0.0.zip
Descomprimimos el fichero y el resultado lo movemos a la carpeta de proyectos web /var/www/:
unzip nextcloud-x.y.z.zip cp -r nextcloud /var/www/
Con esto utilizaremos la ubicación principal. Si fuese el caso podemos escoger otro emplazamiento y después modificar la configuración del servidor Apache.
Sigamos, que ya queda menos. Ahora nos toca añadir la configuración del «Virtual Host» al servidor. Para ello creamos un fichero en /etc/apache2/sites-available/, llamado «nextcloud.ochobitsunbyte.pw.conf» Con la siguiente información:
Guardamos el fichero. Creamos el enlace simbólico correspondiente, para indicar que el proyecto está activo:
ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf
Todavía no hemos acabado esta parte, también tenemos que habilitar una serie de módulos necesarios en el servidor web:
a2enmod rewrite a2enmod headers a2enmod env a2enmod dir a2enmod mime a2enmod setenvif
Una vez hecho todo esto reiniciamos el servidor web:
service apache2 restart
Ya tenemos lista esta parte. Ahora nos toca ir al navegador web. Eso sí, antes debemos añadir la IP al DNS del subdominio.
Una vez hecho todo esto, podemos acceder vía web al instalador:
Desde aquí debemos añadir los datos del proyecto, esto es, nombre de usuario, contraseña, correo electrónico, usuario de base de datos y, muy importante, la ubicación de los datos.
En principio, si hemos seguido todas las instrucciones no deberíamos tener ningún problema. En mi caso me ha devuelto un error, ya que la contraseña que he añadido era sumamente larga. Para solventarlo, he seguido las instrucciones de una entrada en un foro [enlace].
Al finalizar la instalación ya podemos ver la página de bienvenida:
Espero que el artículo haya sido de vuestro interés. En la siguiente parte veremos su funcionamiento y administración. Estad atentos. Nos vamos leyendo 😉
Muy buen post, solamente un apunte. Es muy recomendable hacer la instalación en una distro con PHP7, la diferencia de rendimiento y desahogo para el servidor es muy grande. Si queremos instalarlo en Debian, no es mal momento para hacerlo en testing, ya están congelando paquetes y la estabilidad es grande (para entornos no críticos, claro).
Gracias por el post, caí en tu web por Google, estoy buscando como montar es colabora suite co el nextcloud pero no he visto tutos claros y q no impliquen usar docker
Hola,
ya he logrado instalarla y desde la raspberry todo se ve bien, pero como puedo acceder desde otro computador? que debo poner como direccion?
Me ha gustado mucho y me ha venido muy bien tu articulo. Gracias.
Es cierto que no tocas el tema de como montar aplicaciones sobre nextcloud como por ejemplo collabora online para poder trabajar con hojas de calculo, documentos odt, … pero eso supongo es algo más tedioso ya que quizás requiera de montarlo sobre una maquina física con dockers o compilar. De todos modos me ha venido guay y tenia que decirlo.
Saludos.
Tambien ya de paso comentar que yo lo instalé en un vps con debian 8. El articulo sirve para casi todo con algún problema que quizas pueda surgir.
Por un lado ahora mismo nextcloud va por la 11.0.1
https://download.nextcloud.com/server/releases/nextcloud-11.0.1.zip
Por otro lado al instalar «php-imagick» da fallo, se ha de instalar: php7.0-imagick . Salvo esas tonterias el resto vale. Tambien comentar que se puede tirar del mariadb que está en los repos de debian y aunque no es la ultima versión si que te permite tener unos años ese soporte a golpe de apt-get upgrade.
Saludos cordiales.
De antemano perdona si la pregunta es muy básica. He seguido el tutorial hasta el punto en el que dices «Ya tenemos lista esta parte. Ahora nos toca ir al navegador web. Eso sí, antes debemos añadir la IP al DNS del subdominio.»
Dado mis conocimientos limitados no sé como hacerlo. Por favor, ¿me podrías ayudar?
Buenas, intento realizar la instalacion de mariadb, parece que se instala sin problemas, pero en ningun momento me pide para poner la contraseña y cuando intento inciar la base de datos me pide una contraseña que no se cual es y no es la de administrador del equipo.
buenas tardes, llego a ver el nextcloud pero me tira este error «Can’t write into config directory!
This can usually be fixed by giving the webserver write access to the config directory.» cual seria el directorio que no me deja escribir.
Buenas e estoy leyendo tu tutorial y me gustaría hacer una nube privada y algo ando perdido con el tema me podríais ayudar?
La creacion de droplet tiene un costo de 5$ mensuales?? es obligatorio ese pago?
Nextcloud tiene un cliente para poder ver los archivos desde el Escritorio. Pero este sincroniza toda la información del servidor, y si la información en el servidor pesa 1TB y el espacio en Disco local de la PC es 200GB, no se podría hacerlo ello. Se puede montar como unidad de red, pero es muy lenta la conexión, y te pide clave cada ves que abres un archivo. Alguien ha tenido el mismo requerimiento? es decir, manejar la data en la PC como la clásica unidad de red de un servidor de archivos Windows y no solo por la web. Si es así, como lo están manejando?…
Excelente, ahora tengo una duda, existe la posibilidad de trabajar en la nube un documento word o de cualquier otro tipo, sin tener que descargarlo y que se guarden los cambios?,
Como se accede desde el navegador ? por localhost da error
Buenas,
Alguien ha agregado como unidad de red mediante webdav y luego cuando intenta acceder no se visualiza ningún archivo, es mas, crea una carpeta y «desaparece» pero si está cuando se ve por web. Con ese mismo usuario accedo desde otro windows y si se muestra. Que podría ser?
hola, segui al pie de la letra el tutorial, pero al querer aceder comletando todos los datos requeridos me sale el siguiente error:
Error while trying to create admin user: An exception occurred while executing ‘INSERT INTO
oc_migrations
(app
,version
) SELECT ?,? FROMoc_migrations
WHEREapp
= ? ANDversion
= ? HAVING COUNT(*) = 0′ with params [«core», «13000Date20170705121758», «core», «13000Date20170705121758»]: SQLSTATE[HY000]: General error: 1665 Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTEtengo ubuntu 16 server
desde ya muchas gracias
Hola, muchas gracias por el artículo, te faltó decir una cosa muy importante que para poder instalar nextcloud tienes que cambiar de propietario a la carpeta nextcloud que se ha descomprimido en el directorio del servidor apache, osea antes de instalar tipear como root:
sudo chown -R www-data:www-data /var/www/nextcloud
Luego activar Opcache en php.
en mi caso uso php7.2 y la ruta es:
sudo nano /etc/php/7.2/apache2/php.ini
ahí descomenta las líneas
zend_extension=opcache
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1
opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
opcache.huge_code_pages=1
reinicias el apache
systemctl restart httpd
y lo último quedaría añadirle un certificado https gratuito de Let’s Encrypt pero eso ya lo buscan en googel que es fácil y hay mucha info