Una de las principales razones por las que decidí comprarme mi propio servidor fue para poder montar mi propio Dropbox, porque “la Nube no es más que el ordenador de There is no cloudotra persona”, y prefiero que esa persona, sea yo.

Como sistema operativo me he decantado por CentOS 7 Minimal porque quería una distribución que viniese solo con lo necesario y ademas quería probar algo de “la familia Red Hat”.

Dicho esto os dejo con los pasos a seguir:

1. Lo primero actualizar el sistema e instalar un par de herramientas básicas:
sudo yum -y update && yum -y upgrade
sudo yum install wget net-tools vim
2. Después instalaremos PHP:
sudo yum install -y httpd php php-mysql sqlite php-dom php-mbstring php-gd php-pdo php-json php-xml php-zip php-gd curl php-curl php55-php-mysqlnd php55 php55-php php55-php-gd php55-php-mbstring php-mcrypt php-pear wget bizp2

3. Copiamos los módulos de PHP 5.5 en la carpeta de Apache y reiniciamos:

cp /opt/rh/httpd24/root/etc/httpd/conf.d/php55-php.conf /etc/httpd/conf.d/
cp /opt/rh/httpd24/root/etc/httpd/conf.modules.d/10-php55-php.conf /etc/httpd/conf.modules.d/
cp /opt/rh/httpd24/root/etc/httpd/modules/libphp55-php5.so /etc/httpd/modules/

service httpd restart
4. Como BBDD vamos a usar MariaDB:
sudo yum install mariadb mariadb-server -y
5. Iniciamos el servicio de MariaDB y lo añadimos al arranque:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
6. Mejoramos la seguridad de la instalación de MariaDB:
sudo /usr/bin/mysql_secure_installation
 
Enter current password for root (enter for none): Enter
Set root password? [Y/n]: Y
New password: <your-password>
Re-enter new password: <your-password>
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
7. Creamos la base de datos para NextCloud:
mysql -u root -p
Una vez dentro ejecutamos:
CREATE DATABASE nextcloud;   
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'yourpassword';   
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;   
FLUSH PRIVILEGES;   
EXIT;
8. Ahora debemos buscar la ultima versión de Nextcloud y descargarla:
cd /tmp   
wget https://download.nextcloud.com/server/releases/nextcloud-10.0.0.zip   
unzip nextcloud-10.0.0.zip   
sudo mv nextcloud /var/www/html/
sudo chown -R apache:apache /var/www/html/nextcloud/
9. Permitimos el acceso a Nextcloud en el firewall:
sudo firewall-cmd --permanent --zone=public --add-service=http   
sudo firewall-cmd --permanent --zone=public --add-service=https   
sudo firewall-cmd --reload
10. Configurar SELinux: Si tenemos SELinux activo puede darnos problemas con los permisos. Pero obviamente desactivarlo no es una buena opción. Usando los siguientes comandos deberíamos evitar cualquier problema a la hora de escribir en los archivos de Nextcloud:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data'

semanage fcontext -a -t httpd_sys_rw_content_t    '/var/www/html/nextcloud/config'  

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps'   

11. Ahora tenemos Nextcloud descargado, pero falta instalarlo: Estos son los datos que puede variar a la hora de ejecutar la instalación:
  • database-name: nextcloud
  • database-user: nextclouduser
  • database-pass: yourpassword
  • admin-user: admin
  • admin-pass nextcloudadminpassword
cd /var/www/html/nextcloud
sudo -u apache php occ maintenance:install --database "mysql" --database-name "nextcloud"  --database-user "nextclouduser" --database-pass "yourpassword" --admin-user "admin" --admin-pass "nextcloudadminpassword"
Si se instala correctamente aparecerá el siguiente mensaje:
Nextcloud is not installed - only a limited number of commands are available
ownCloud was successfully installed
12. Debemos añadir la IP del servidor (p.e. 80.7.113.11) y el nombre de dominio (p.e. example.com) en la lista de confianza de NextCloud:
sudo vi /var/www/html/config/config.php

0 => 'localhost',
1 => '80.7.113.11', # Añadimos estas lineas.
2 => 'example.com',
13. Por seguridad, podemos ejecutar este script que establecerá los permisos correctamente en las carpetas de Nextcloud:
#!/bin/bash
ocpath='/var/www/html/nextcloud'
htuser='apache'
htgroup='apache'
rootuser='root'

printf "Creating possible missing Directoriesn"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater

printf "chmod Files and Directoriesn"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

printf "chown Directoriesn"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccessn"
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi
Si se necesitasemos actualizar Nexcloud en un futuro se podemos:
#!/bin/bash
# Sets permissions of the Nextcloud instance for updating

ocpath='/var/www/html/nextcloud'
htuser='apache'
htgroup='apache'

chown -R ${htuser}:${htgroup} ${ocpath}
Y después volver a utilizar el script anterior. 15. Reiniciamos Apache para que cargue con todos lo cambios:
sudo systemctl restart httpd.service
16. Y probamos a acceder a http://80.7.113.11

Dentro de la interfaz de Nexcloud encontrareis muchas opciones de configuración. Podéis consultar la documentación acerca de Nextcloud en su web

Aquí os dejo la ventana de login del mio:

Login Nube 13

Como siempre, espero que os sea útil y que os animéis a construir vuestra propia nube.

Saludos y que la fuerza os acompañe!