UGIT: Instalación de Nextcloud en Debian 12

  • La maquina tiene apache2 con la guia de seguridad V5

Instalación de PHP 8.1

apt install -y apt-transport-https lsb-release ca-certificates wget

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list 

apt update

apt install -y php8.1

apt install php8.1-common php8.1-fpm php8.1-mysql php8.1-gmp php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-mbstring php8.1-gd php8.1-dev php8.1-imap php8.1-opcache php8.1-readline php8.1-soap php8.1-zip php8.1-intl php8.1-cli libapache2-mod-php8.1

Creación de almacenamiento en true nas

Cliente ISCSI (Maquina con Debian 12)

  • Para configurar el cliente, instalamos el servicio
apt-get install open-iscsi
  • Establecemos que el servicio inicie al arrancar la maquina
nano /etc/iscsi/iscsid.conf
  • Buscamos y remplazamos
node.startup = manual
X
node.startup = automatic
  • Actualmente el storinator tiene la siguiente unidad
  • Tiene el servicio habilitado
  • Ademas el storinator tene cunfigurado ips en la red 202 y 200
  • las 202 son de uso administrativo para la configuración del equipo
  • y las 200 estan destinadas a la conexión de nube.iscsi
  • Para el caso de la NUBE-SIUA vamos a utilizar la ip 10.20.200.241
  • Esto por que el servicio ISCSI funciona sobre el puerto 3260 por defecto y solo manejamos de la red 202 -> 200 habría que habiliar el puerto
  • Entendido esto ejecutamos
  • Con esto ya podemos ejecutar el comando que nos devuelve el target
iscsiadm -m discovery -t sendtargets -p 10.20.200.241
  • RESULTADO:
10.20.200.37:3260,-1 iqn.2005-10.org.freenas.ctl:nube-siua
  • Podemos consultar los target’s descubiertos con:
iscsiadm -m discovery
  • RESULTADO
10.20.200.22:3260 via sendtargets
10.20.200.241:3260 via sendtargets
10.20.202.22:3260 via sendtargets
  • Podemos consultar la información que obtuvimos del NAS
iscsiadm -m node –targetname iqn.2005-10.org.freenas.ctl:nube-siua -p 10.20.200.241
  • Si tuviéramos que cambiar la información del usuario:
iscsiadm -m node --targetname iqn.2005-10.org.freenas.ctl:nube-siua -p 10.20.200.37 -o update -n node.session.auth.username -v ugit
  • Si tuviéramos que cambiar la contraseña del usuario
iscsiadm -m node --targetname iqn.2005-10.org.freenas.ctl:nube-siua -p 10.20.200.37 -o update -n node.session.auth.password -v CA2
  • Nos logeamos en el NAS
iscsiadm -m node –targetname iqn.2005-10.org.freenas.ctl:nube-siua -p 10.20.200.241 -l
  • RESULTADO
Logging in to [iface: default, target: iqn.2005-10.org.freenas.ctl:nube-siua, portal: 10.20.200.37,3260] (multiple)
Login to [iface: default, target: iqn.2005-10.org.freenas.ctl:nube-siua, portal: 10.20.200.37,3260] successful.
  • También lo podemos comprobar con:
dmesg
  • RESULTADO
[161357.307274] sd 2:0:0:0: [sda] Attached SCSI disk
  • Si necesitamos saber la información de la conexión ejeciutamos
iscsiadm -m session
  • Si necesitamos deslogearnos ejecutamos
iscsiadm -m node –targetname iqn.2005-10.org.freenas.ctl:nube-siua -p 10.20.200.241 -u
  • Ahora debemos formatear el NAS asignándole un formato, para esto debemos tener instalado parted
apt-get update && apt-get install parted
  • Seguido vamos a ejecutar el comando fdisk para consultar los discos disponibles
fdisk -l
  • RESULTADO: podemos observar que es el disco “/dev/sda”
Disk /dev/sdb: 16 TiB, 17592186060800 bytes, 4294967300 sectors
Disk model: iSCSI Disk      
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 16384 bytes
I/O size (minimum/optimal): 16384 bytes / 8388608 bytes
  • Ingresamos a la herramienta parted para el disco sdb
parted /dev/sdb
  • Le establecemos una tabla de particiones «mklabel gpt»
GNU Parted 3.5
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt  
  • Establecemos el medida TB
(parted) unit TB
  • Creamos la partición
(parted) mkpart primary 0TB 16TB
  • Salimos
quit
  • Ahora si volvemos a ejecutar fdisk, vemos que ya tenemos una partición “sda1”
fdisk -l
  • RESULTADO:
Disk /dev/sdb: 16 TiB, 17592186060800 bytes, 4294967300 sectors
Disk model: iSCSI Disk      
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 16384 bytes
I/O size (minimum/optimal): 16384 bytes / 8388608 bytes
Disklabel type: gpt
Disk identifier: 373C10D3-DCCA-4E23-8808-97D81747186E

Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 3906250751 3906248704 14,6T Linux filesystem
  • Podemos ver que tenemos una partición
Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 3906250751 3906248704 14,6T Linux filesystem
  • Establecemos un sistema de archivos (puede tardar un tiempo)
mkfs.ext4 /dev/sdb1
  • Resultado
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done                            
Creating filesystem with 3906248704 4k blocks and 488284160 inodes
Filesystem UUID: dba1fed2-a235-4d0e-beea-183a6960db0a
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 
	2560000000, 3855122432

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done 
  • Le creamos una etiqueta
e2label /dev/sdb1 NUBE-SIUA
  • Le indicamos al iscsi que arranque de forma automatica
iscsiadm -m node –targetname iqn.2005-10.org.freenas.ctl:nube-siua -p 10.20.200.241 -o update -n node.conn[0].startup -v automatic
  • Creamos las reglas para que se monte automáticamente
nano /etc/udev/rules.d/z99_open-iSCSI.rules
  • Agregamos
ENV{ID_PATH}=="*iscsi*", RUN+="/bin/mount -a -O _netdev"
  • Creamos una carpeta para montar el ISCSI
mkdir /ISCSI_NUBE-SIUA
  • Le damos permisos
chmod 777 -R /ISCSI_NUBE-SIUA/
  • Determinamos el UUID
blkid
  • RESULTADO
/dev/sdb1: LABEL="NUBE-SIUA" UUID="dba1fed2-a235-4d0e-beea-183a6960db0a" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="4b3aa63a-d54d-4c93-af1b-2f2b6d871df2"
  • Abrimos el “fstab”
nano /etc/fstab
  • Agregamos
UUID=dba1fed2-a235-4d0e-beea-183a6960db0a  /ISCSI_NUBE-SIUA  ext4 _netdev 0 0

Instalación de APACHE Y PHP

Operativo

  • Actualización del sistema operativo
apt-get update && apt-get upgrade && apt-get dist-upgrade

apt-get check && apt-get install -fy && apt-get autoremove && apt-get autoclean && apt-get clean

Instalar Apache

  • Instalamos
apt install apache2

Instalar PHP 8.1

  • Instalamos dependencias
apt install ca-certificates apt-transport-https acl git
  • Agregamos la llave y el repositorio
wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list
  • Actualizamos el sistema
apt-get update && apt-get upgrade && apt-get dist-upgrade
  • Instalación de PHP 5.6
apt-get install php5.6 php5.6-mysql php5.6-gd php5.6-ldap php5.6-odbc php5.6-pgsql php5.6-curl php5.6-json php5.6-sqlite3 php5.6-xml php5.6-mbstring php5.6-cli php5.6-common libapache2-mod-php5.6 php5.6-zip
  • Instalación de PHP 7.1
apt install php7.1 php7.1-mysql php7.1-gd php7.1-ldap php7.1-odbc php7.1-pgsql php7.1-curl php7.1-json php7.1-sqlite3 php7.1-xml php7.1-mbstring php7.1-cli php7.1-common php7.1-zip
  • Instalación de PHP 7.2
apt install php7.2 php7.2-mysql php7.2-gd php7.2-ldap php7.2-odbc php7.2-pgsql php7.2-curl php7.2-json php7.2-sqlite3 php7.2-xml php7.2-mbstring php7.2-cli php7.2-common php7.2-zip
  • Instalación de PHP 7.3
apt install php7.3 php7.3-bcmath php7.3-bz2 php7.3-cgi php7.3-cli php7.3-common php7.3-curl php7.3-dba php7.3-dev php7.3-enchant php7.3-fpm php7.3-gd php7.3-gmp php7.3-imap php7.3-interbase php7.3-intl php7.3-json php7.3-ldap php7.3-mbstring php7.3-mysql php7.3-odbc php7.3-opcache php7.3-pgsql php7.3-phpdbg php7.3-pspell php7.3-readline php7.3-recode php7.3-snmp php7.3-soap php7.3-sqlite3 php7.3-sybase php7.3-tidy php7.3-xml php7.3-xmlrpc php7.3-xsl php7.3-zip
  • Instalación de PHP 8.1
apt install php8.1 php8.1-bcmath php8.1-bz2 php8.1-cgi php8.1-cli php8.1-common php8.1-curl php8.1-dba php8.1-dev php8.1-enchant php8.1-fpm php8.1-gd php8.1-gmp php8.1-imap php8.1-interbase php8.1-intl php8.1-ldap php8.1-mbstring php8.1-mysql php8.1-odbc php8.1-opcache php8.1-pgsql php8.1-phpdbg php8.1-pspell php8.1-readline php8.1-snmp php8.1-soap php8.1-sqlite3 php8.1-sybase php8.1-tidy php8.1-xml php8.1-xmlrpc php8.1-xsl php8.1-zip
  • Verificamos la versión con
php -v
  • Instalamos apache 2 guía: aquí
  • Adicional
apt install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-gd php7.2-json php7.2-mysql php7.2-curl php7.2-mbstring php7.2-intl php7.2-imagick php7.2-xml php7.2-zip

Instalación de MYSQL

  • Instalamos
apt install mysql-server mysql-client
  • Configuramos el servicio
mysql_secure_installation
  • RESULTADO
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): HB3

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n

... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y

- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y

... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Crear usuario remoto

  • Descomentamos que solo se pueda conectar por la ip local, abrimos
nano /etc/mysql/mariadb.conf.d/50-server.cnf  
  • Modificamos
bind-address           = 127.0.0.1
X
#bind-address           = 127.0.0.1
  • Reiniciamos el servicio
service mariadb restart
  • Ingresamos por la terminal con el usuario “root”
mysql -u root -p -h mysqlp.siua.ac.cr
  • Creamos la base de datos
CREATE DATABASE bd_nube_siua;
  • Creamos el usuario remoto
CREATE USER 'sisnextnubesiua'@'%' IDENTIFIED BY '$!.Bd.SIS.NextNuBeSIUA.$.!';
  • Le otorgamos privilegios
GRANT ALL PRIVILEGES ON bd_nextcloud_siua.* TO 'sisnextnubesiua'@'%' IDENTIFIED BY '$!.Bd.SIS.NextNuBeSIUA.$.!' with grant option;

-- se hizo por workbeach
  • Recargamos los privilegios
FLUSH PRIVILEGES;
  • Salimos
exit
  • Ahora ingresamos por WorkBeach y le orotgamos permisos para gantizar el correcto funcionamiento

Instalación de NEXTCLOUD

  • Ingresamos al directorio www
cd /var/www/html/
  • Descargamos la última versión de:
https://download.nextcloud.com/server/releases/
para el ejemplo: 
wget https://download.nextcloud.com/server/releases/nextcloud-27.1.4.zip
  •  Descomprimimos
unzip nextcloud-27.1.4.zip
  • Copiamos los archivos a su destino en www
cp -r /var/www/html/nextcloud /var/www/html/SIUA
  • Cambiamos el dueño de la carpeta a www-data
chown -R www-data:www-data /var/www/html/SIUA
chown -R www-data:www-data /ISCSI_NUBE-SIUA/
  • Con esto podemos ingresar por al navegador para continuar con la instalación
http://10.20.200.42/SIUA/index.php
  • Vamos a seleccionar “Almacenamiento & Bases de Datos ” seleccionamos MYSQL y completamos los datos
  • Usuario: ugit
  • Contraseña: VEg1
  • Almacenamiento: /ISCSI_NUBE-SIUA/data
  • usuario bd: sisnextnubesiua
  • pass: $!.Bd.SIS.NextNuBeSIUA.$.!
  • BD: bd_nextcloud_siua
  • Servidor: 10.20.200.203:3306

Crear Host virtuales

  • Creamos el archivo
nano /etc/apache2/sites-available/nube.siua.ac.cr.conf
  • Agregamos
<VirtualHost *:80>

        #***********************************************************************
        #******************* DATOS DEL SITIO WEB *******************************
        #***********************************************************************
        ServerName nube.siua.ac.cr
        ServerAlias *.nube.siua.ac.cr

        ErrorLog /var/log/apache2/nube_80.siua.ac.cr-error.log
        CustomLog /var/log/apache2/nube_80.siua.ac.cr-access.log common

        #***********************************************************************
        #********************** DATOS DEL WEBMASTER ****************************
        #***********************************************************************
        ServerAdmin interuniversitariadealajuela@gmail.com
        Header add Author "Unidad de Gestion e Innovacion Tecnologica"

        #***********************************************************************
        #************************** DATOS DEL SITIO WEB ************************
        #***********************************************************************
        DocumentRoot /var/www/html/SIUA

        #***********************************************************************
        #**************************      REDIRECCION     ***********************
        #***********************************************************************

</VirtualHost>
  • Esto nos dice los siguiente
  • Para solucionar el problema abrimos el archivo
nano /var/www/html/SIUA/config/config.php
  • Ubicamos el siguiente arreglo
'trusted_domains' => 
  array (
    0 => '10.20.200.233',
  ),
  • Y los modificamos para que acepte los siguientes dominios de confianza
    • 181.193.87.7
    • nube.siua.ac.cr
    • cloud.siua.ac.cr
  • Quedando así
array (
    0 => '10.20.200.233',
    1 => '181.193.87.7',
    2 => 'nube.siua.ac.cr',
    3 => 'cloud.siua.ac.cr'
  ),
  • Además vamos a realizar una serie de cambios en el archivo
  • Agregamos
'default_phone_region' => 'CR',
  • Agregamos
'maintenance' => false,

Configuración de permisos de carpetas

  • Ejecutar
chmod 755 /var/www/html
chmod 755 /ISCSI_NUBE-SIUA/data

chown -R www-data:www-data /var/www/html/* 
chown -R www-data:www-data /ISCSI_NUBE-SIUA/*

find /var/www/html/ -type d -exec chmod 2755 {} \; 
find /var/www/html/ -type f -exec chmod 2644 {} \; 

find /ISCSI_NUBE-SIUA/data/ -type d -exec chmod 2755 {} \; 
find /ISCSI_NUBE-SIUA/data/ -type f -exec chmod 2644 {} \;

Configuración de PHP

  • Modificamos
# Abrimos el archivo
nano /etc/php/8.1/apache2/php.ini


#Modificamos
memory_limit = 128M
X
memory_limit = 2G

post_max_size = 8M
X
post_max_size = 2G

upload_max_filesize = 2M
X
upload_max_filesize = 2G

#Verificar
max_file_uploads = 20

service apache2 restart

Instalar certificado let’sencrypt

  • Instalamos
apt install certbot python3-certbot-apache
  • Ejecutamos el certbot
certbot --apache
  • Resultado

Aplicaciones

Seguridad

Brute-force settings

  • Agregamos las ip’s de la lista blanca

Antivirus for files

Ransomware protection

Suspicious Login

  • Solo instalar llega una correo al administrador

Terms of service

  • Permite crear una mensaje de terminos de uso de la nube

Personalización

Theming

AppOrder

  • Permite establecer el orden de las aplicaciones

Custom CSS

  • En Tematizar->Custom CSS (solo sirve cuando son iconos blanco/gris)
#navigation .app-icon {
filter: none !important;
-moz-filter: none  !important;
-webkit-filter: none !important;
}

Custom menu

  • Solo se instala

External sites

  • Permite agregar apliaciones ( páginas web ) externas

Archivos

Right click

  • Solo instalar

Archive Manager

  • Para descomprimir zip

BPM Files

  • Para crear flujos de trabajo

CADViewer

  • Ver archivos de autocad

Camera RAW Previews

Checksum

Configurable Share Links

  • Crear enlaces de descarga personalizables