Nube Personal - Servidor QEMU/KVM

Instalación

Descargar Nextcloud:

#Nextcloud Server
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
#descomprimir tar
tar xjvf lates.tar.bz2
#mover el directorio nextcloud a opt
mv nextcloud /opt
chmod o-rwx /opt/nextcloud
chown -R root:root /opt
#dar permisos al usuario  www-data
setfacl -R -m u:www-data:rwx /opt/nextcloud

Para comenzar con la instalacion de Nextcloud antes hay que resolver unas dependencias las cuales se mencionan en su documentacion.

apt install php php-mysql php-mbstring php-json php7.4-common php7.4-xml php-zip php-gd curl php-curl php-pear php7.4-opcache php-intl mariadb-server

Una vez que la instalación de los programas finalizo es necesario realizar unas modificaciones en los valores predeterminados de php.

#hacer backup del archivo original
cp /etc/php/7.4/cli/php.ini /etc/php/7.4/cli/php.ini.bk

nvim /etc/php/7.4/cli/php.ini

valores actualizados:

  • post_max_size = 511M
  • upload_max_filesize = 511M
  • memory_limit = 512M

Reiniciar apache2

systemctl restart apache2

MariaDB

Configuración de seguridad:

mysql_secure_installation

Crear usuario y base de datos para Nextcloud


MariaDB [(none)]> create database nextclouddb;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> CREATE USER 'nextcloud'@localhost IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.020 sec)

MariaDB [(none)]> GRANT ALL privileges ON nextclouddb.* TO 'nextcloud'@localhost IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit;
Bye

VirtualHost

Crar un archivo nextcloud.conf dentro del directorio /etc/apache2/sites-available/ con el siguiente contenido:

<VirtualHost *:80>
  DocumentRoot /opt/nextcloud/
  ServerName    nextcloud.duckdns.org 
  ServerAlias   nextcloud.duckdns.org
  <Directory /opt/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

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

Configuración adicional:

nvim /etc/php/7.4/apache2/conf.d/10-opcache.ini

  • 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.huge_code_pages=1

systemctl restart apache2
a2dissite 000-default.conf
a2ensite nextcloud.conf
a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

Nextcloud

SSL

Generar certificado ssl con CertBot.


#Instalación
apt install certbot python3-certbot-apache
#configurar CertBot para apache
certbot --apache

Dentro del archivo /opt/nextcloud/config/config.php se debe agregar el dns:


'trusted_domains' =>
  array (
   0 => 'localhost',
   1 => 'nextcloud.duckdns.org',
   2 => '192.168.1.222',
),

Reiniciar servidor web:

systemctl restart apache2

CertBot