Cómo instalar Monica Personal CRM en Debian 12
Convencionalmente, el software de Gestión de las Relaciones con los Clientes (CRM) está hecho para que las empresas gestionen a sus clientes. El software CRM ayuda a las empresas a recopilar datos de los clientes y proporcionarles asistencia a través de diversos medios de comunicación.
Monica Personal CRM, sin embargo, está dirigido a particulares y a sus relaciones personales con su familia y amigos. Monica CRM ayuda a organizar y almacenar todo lo relacionado con las personas que te rodean. Es de código abierto y de uso completamente gratuito. Está escrito utilizando el framework web Laravel PHP.
En este tutorial, aprenderás a instalar Monica Personal CRM en un servidor Debian 12.
Requisitos previos
- Un servidor que ejecute Debian 12 con un mínimo de 1,5 GB de RAM. Si tu servidor tiene menos de 1,5 GB de RAM, lo más probable es que fallen las tareas de instalación de Yarn. Actualiza a un servidor con mejor RAM antes de continuar con este tutorial para garantizar una instalación sin problemas.
- Un usuario no root con privilegios sudo.
- Firewall sin complicaciones (UFW) activado y en ejecución.
- Un Nombre de Dominio Completamente Cualificado (FQDN) como
monica.example.com
apuntando a tu servidor. - Una cuenta SMTP con un servicio de correo electrónico como Amazon SES o Mailgun.
- Todo está actualizado.
$ sudo apt update && sudo apt upgrade
- Se necesitan algunos paquetes esenciales para que funcionen el tutorial y Monica CRM. Algunos de ellos ya estarán en tu servidor.
$ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y
Paso 1 – Configurar el cortafuegos
El primer paso antes de instalar ningún paquete es configurar el cortafuegos para permitir conexiones HTTP y HTTPS.
Comprueba el estado del cortafuegos.
$ sudo ufw status
Deberías ver algo como lo siguiente
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Permitir puertos HTTP y HTTPs.
$ sudo ufw allow http $ sudo ufw allow https
Vuelve a comprobar el estado para confirmarlo.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Paso 2 – Instala Git
Git suele venir preinstalado con Debian 12, pero en caso de que no esté instalado, ejecuta el siguiente comando para instalarlo.
$ sudo apt install git -y
Comprueba la versión de Git.
$ git --version git version 2.39.2
Ejecuta los siguientes comandos para configurar Git y añadirle tu nombre y dirección de correo electrónico.
$ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"
Paso 3 – Instalar Node
Monica CRM necesita Node.js para funcionar. Importa la clave GPG de Nodesource.
$ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
Crea el repositorio deb de Nodesource. La versión actual de Node LTS es la 20.x, pero no funciona con el gestor de paquetes Yarn, por lo que por ahora la hemos fijado en la 18.x.
$ NODE_MAJOR=18 $ echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
Actualiza la lista de repositorios del sistema.
$ sudo apt update
Instala Node.js.
$ sudo apt install nodejs -y
Confirma si está instalado correctamente.
$ node --version v18.18.2
Actualiza NPM.
$ sudo npm install -g npm@latest
Verifica la versión de NPM.
$ npm --version 10.2.4
Paso 4 – Instalar Yarn
Yarn es otro gestor de paquetes Javascript que necesita Monica CRM junto con Node.js. El método habitual para instalar Yarn es instalarlo globalmente. Esto garantiza que todas las herramientas de pruebas y automatización de un proyecto utilicen la misma versión de Yarn, evitando incoherencias.
Instala Yarn utilizando el siguiente comando.
$ sudo npm install --global yarn
Verifica la instalación de Yarn.
$ yarn --version 1.22.21
Paso 5 – Instalar Nginx
Debian 12 incluye una versión antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.
Importa la clave de firma de Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Añade el repositorio de la versión estable de Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Actualiza los repositorios del sistema.
$ sudo apt update
Instala Nginx.
$ sudo apt install nginx
Verifica la instalación. En los sistemas Debian, el siguiente comando sólo funcionará con sudo
.
$ sudo nginx -v nginx version: nginx/1.24.0
Inicia el servidor Nginx.
$ sudo systemctl start nginx
Comprueba el estado del servicio.
$ sudo systemctl status nginx ? nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Mon 2023-11-20 13:24:40 UTC; 4s ago Docs: https://nginx.org/en/docs/ Process: 16778 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 16779 (nginx) Tasks: 2 (limit: 2315) Memory: 1.7M CPU: 8ms CGroup: /system.slice/nginx.service ??16779 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??16780 "nginx: worker process"
Abre la dirección IP de tu servidor en tu navegador web. Deberías ver la siguiente página, lo que significa que tu servidor está en funcionamiento.
Paso 6 – Instalar PHP y las extensiones
Debian 12 incluye PHP 8.2 por defecto. Puedes instalarlo junto con las extensiones que necesita Monica CRM ejecutando el siguiente comando.
$ sudo apt install php php-bcmath php-cli php-curl php-common \ php-fpm php-gd php-gmp php-intl php-json php-mbstring \ php-mysql php-opcache php-redis php-xml php-zip
Para estar siempre con la última versión de PHP o si quieres instalar varias versiones de PHP, añade el repositorio PHP de Ondrej.
Primero, importa la clave GPG del repositorio PHP de Sury.
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Añade el repositorio PHP de Ondrej Sury.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Actualiza la lista de repositorios de tu sistema.
$ sudo apt update
Probablemente recibirás información sobre actualizaciones pendientes. Ejecútalas.
$ sudo apt upgrade
Instala PHP y sus extensiones.
$ sudo apt install php8.2 php8.2-bcmath php8.2-cli php8.2-curl php8.2-common \ php8.2-fpm php8.2-gd php8.2-gmp php8.2-intl php8.2-mbstring \ php8.2-mysql php8.2-opcache php8.2-redis php8.2-xml php8.2-zip
Comprueba la versión de PHP instalada.
$ php --version PHP 8.2.12 (cli) (built: Oct 27 2023 13:00:10) (NTS) Copyright (c) The PHP Group Zend Engine v4.2.12, Copyright (c) Zend Technologies with Zend OPcache v8.2.12, Copyright (c), by Zend Technologies
Paso 7 – Configurar PHP-FPM
Abre php.ini
para editarlo.
$ sudo nano /etc/php/8.2/fpm/php.ini
Para configurar el tamaño de subida de los archivos, cambia los valores de las variables upload_max_filesize
y post_max_size
. Este valor decide el tamaño del archivo que puedes subir a Monica. Por defecto, está fijado en 10MB, que es lo que configuraremos con PHP.
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 10M/' /etc/php/8.2/fpm/php.ini $ sudo sed -i 's/post_max_size = 8M/post_max_size = 10M/' /etc/php/8.2/fpm/php.ini
Configura el límite de memoria de PHP en función de los recursos y requisitos de tu servidor.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini
Abre el archivo /etc/php/8.2/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Necesitamos establecer el usuario/grupo Unix de los procesos PHP a nginx. Busca las líneas user=www-data
y group=www-data
en el archivo y cámbialas por nginx
.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = nginx group = nginx ...
Busca también las líneas listen.owner=www-data
y listen.group=www-data
en el archivo y cámbialas por nginx
.
listen.owner = nginx listen.group = nginx
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Reinicia el proceso PHP-fpm. Asegúrate de que tienes instalado Nginx antes de reiniciar el servicio PHP, de lo contrario, fallará ya que no podrá encontrar el grupo nginx
.
$ sudo systemctl restart php8.2-fpm
Paso 8 – Instalar Composer
Composer actúa como gestor de dependencias para PHP. También es el gestor de dependencias del framework PHP Laravel, que es lo que potencia Monica CRM.
Descarga el script de instalación de Composer.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
Verifica el instalador descargado.
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Recibirás la siguiente salida.
Installer verified
Ejecuta el script de instalación para descargar la última versión de Composer.
$ php composer-setup.php
Elimina el script de instalación.
$ php -r "unlink('composer-setup.php');"
Mueve el archivo binario descargado al directorio /usr/local/bin
.
$ sudo mv composer.phar /usr/local/bin/composer
Confirma la instalación.
$ composer --version Composer version 2.6.5 2023-10-06 10:11:52
Paso 9 – Instalar MariaDB
MariaDB es un sustituto directo de MySQL, lo que significa que los comandos para ejecutar y utilizar MariaDB son los mismos que los de MySQL.
Debian 12 incluye por defecto MariaDB 10.11.4, que está un poco obsoleta. Para obtener la última versión estable de MariaDB, tienes que utilizar el repositorio oficial.
Importa la clave GPG de MariaDB.
$ sudo curl -o /usr/share/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
Crea el archivo del repositorio de MariaDB.
$ echo "deb [signed-by=/usr/share/keyrings/mariadb-keyring.pgp] https://deb.mariadb.org/10.11/debian `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/mariadb-server.list
Actualiza la lista de repositorios del sistema.
$ sudo apt update
Ejecuta el siguiente comando para instalar el servidor MariaDB.
$ sudo apt install mariadb-server -y
Comprueba si MariaDB se ha instalado correctamente.
$ mysql --version
Deberías ver la siguiente salida.
mysql Ver 15.1 Distrib 10.11.6-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
También puedes utilizar mariadb --version
para comprobar la versión.
El servicio MariaDB ya está habilitado y en ejecución. Comprueba su estado utilizando el siguiente comando.
$ sudo systemctl status mariadb ? mariadb.service - MariaDB 10.11.6 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled) Drop-In: /etc/systemd/system/mariadb.service.d ??migrated-from-my.cnf-settings.conf Active: active (running) since Tue 2023-11-21 07:49:48 UTC; 8min ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Process: 28307 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 28308 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 28310 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR> Process: 28350 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 28352 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS) Main PID: 28339 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 8 (limit: 2315) Memory: 213.3M CPU: 585ms CGroup: /system.slice/mariadb.service ??28339 /usr/sbin/mariadbd
Ejecuta el siguiente comando para realizar la configuración por defecto, como dar una contraseña de root, eliminar los usuarios anónimos, no permitir el inicio de sesión de root de forma remota y eliminar las tablas de prueba.
$ sudo mariadb-secure-installation
Se te pedirá la contraseña de root. Como no tenemos establecida ninguna contraseña de root, pulsa la tecla Intro para continuar.
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 haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): [PRESS ENTER] OK, successfully used password, moving on...
A continuación, se te preguntará si quieres cambiar al complemento unix_socket
. El complemento unix_socket
te permite acceder a MariaDB con tus credenciales de usuario de Linux. Elige n
para no cambiar a él, puesto que ya tienes una cuenta protegida root
.
Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n ... skipping.
A continuación, se te preguntará si quieres cambiar la contraseña de root. En Debian 12, la cuenta raíz para MariaDB está estrechamente vinculada al mantenimiento automatizado del sistema, por lo que no debes cambiar los métodos de autenticación configurados para la cuenta. Hacerlo permitiría que una actualización de paquetes rompiera el sistema de base de datos al eliminar el acceso a la cuenta administrativa. Escribe n
para continuar.
You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] n ... skipping.
A partir de aquí, pulsa y
y luego Enter
para aceptar los valores por defecto de todas las preguntas siguientes. Esto eliminará el acceso a los usuarios anónimos, probará las bases de datos, desactivará el inicio de sesión de root remoto y cargará los cambios.
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!
Ya está. La próxima vez que quieras acceder al shell de MariaDB, utiliza el siguiente comando.
$ sudo mysql
Introduce tu contraseña de root de Linux cuando se te solicite.
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 38 Server version: 10.11.6-MariaDB-1:10.11.6+maria~deb12 mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Pulsa exit
para cerrar el intérprete de comandos de MariaDB.
Paso 10 – Configurar MariaDB
Inicia sesión en el intérprete de comandos MariaDB.
$ sudo mysql
Crea una nueva base de datos MySQL, un usuario de base de datos y una contraseña para tu instalación de Monica CRM.
MariaDB> CREATE DATABASE monica CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; MariaDB> CREATE USER 'monicauser'@'localhost' IDENTIFIED BY 'yourpassword'; MariaDB> GRANT ALL PRIVILEGES ON monica.* TO 'monicauser'@'localhost';
Sustituye monica
, monicauser
y yourpassword
por las credenciales de tu elección. Elige una contraseña segura.
Crea también un usuario administrativo con las mismas capacidades que la cuenta root.
MariaDB> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Borra los privilegios para asegurarte de que se guardan en la sesión actual.
MariaDB> FLUSH PRIVILEGES;
Sal del intérprete de comandos MariaDB.
MariaDB> exit
Paso 11 – Descarga de Monica
Crea el directorio raíz de la web.
$ sudo mkdir /var/www/html -p
Establece al usuario actualmente conectado como propietario de este directorio.
$ sudo chown -R $USER:$USER /var/www/html
Cambia al directorio.
$ cd /var/www/html
Clona el repositorio oficial de Monica en Github en esta ubicación.
$ git clone https://github.com/monicahq/monica.git
Cambia al directorio clonado.
$ cd monica
Obtén los últimos datos de GitHub.
$ git fetch
Comprueba la última versión de Monica. Para elegir la última versión, consulta la página de versiones de Monica. En el momento de escribir este tutorial, la última versión disponible es 4.0.0. Sustituye 4.0.0 por la versión que estás instalando en el comando que aparece a continuación.
$ git checkout tags/v4.0.0
Obtendrás el siguiente resultado.
Note: switching to 'tags/v4.0.0'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c <new-branch-name> Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at e1a3e1315 build: delete heroku workflow (#6540)
Paso 12 – Instalar Monica
Asegúrate de que estás en el directorio raíz de Monica.
$ cd /var/www/html/monica
Copia el archivo de variables de entorno de ejemplo para crear uno para configurar Monica CRM.
$ cp .env.example .env
Cambia los siguientes valores como se muestra. Establece la variable APP_ENV
en production
. De este modo se aplicará el protocolo HTTPS. Establece la variable APP_URL
al nombre de dominio de tu Monica junto con el protocolo HTTPS. Establece las credenciales de la base de datos tal y como se crearon en el paso anterior. En nuestro tutorial, estamos utilizando el servicio SMTP SES de Amazon. Introduce los datos del servicio que vayas a utilizar. Si no vas a utilizar ninguno, puedes omitir rellenar esos campos.
APP_ENV=production ... APP_URL=https://monica.example.com ... DB_DATABASE=monicadb DB_USERNAME=monicauser DB_PASSWORD=YourPassword23! ... MAIL_MAILER=smtp MAIL_HOST=email-smtp.us-west-2.amazonaws.com MAIL_PORT=587 MAIL_USERNAME=SESID MAIL_PASSWORD=SESKey MAIL_ENCRYPTION=tls # Outgoing emails will be sent with these identity [email protected] MAIL_FROM_NAME="Monica CRM" # New registration notification sent to this email [email protected] ...
Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Instala todos los paquetes necesarios para Monica utilizando Composer.
$ composer install --no-interaction --no-dev
Utiliza Yarn para instalar los paquetes del frontend y generar los activos (JS, CSS y fuentes).
$ yarn install $ yarn run production
Genera el valor APP_KEY
y rellénalo automáticamente en el archivo .env
. Se te preguntará si quieres continuar o no. Escribe sí para proceder.
$ php artisan key:generate
Ejecuta el siguiente comando para ejecutar migraciones, sembrar la base de datos y crear directorios de enlaces simbólicos. Se te preguntará si deseas continuar o no. Escribe sí para continuar. Introduce la dirección de correo electrónico y la contraseña necesarias para crear un usuario predeterminado y utiliza esos valores en el comando.
$ php artisan setup:production [email protected] --password=yourpassword -v
Recibirás la siguiente salida notificándote que la instalación se ha realizado correctamente.
Monica v4.0.0 is set up, enjoy. ? Filling database INFO Seeding database. ----------------------------- | | Welcome to Monica v4.0.0 | ----------------------------- | You can now sign in to your account: | username: [email protected] | password: <hidden> | URL: https://monica.example.com ----------------------------- Setup is done. Have fun.
Paso 13 – Instalar SSL
Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot utilizando el repositorio de Debian u obtener la última versión utilizando la herramienta Snapd. Nosotros utilizaremos la versión Snapd.
Debian 12 no viene con Snapd instalado. Instala el paquete Snapd.
$ sudo apt install snapd
Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd está actualizada.
$ sudo snap install core && sudo snap refresh core
Instala Certbot.
$ sudo snap install --classic certbot
Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Comprueba si Certbot funciona correctamente.
$ certbot --version certbot 2.7.4
Ejecuta el siguiente comando para generar un certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d monica.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/monica.example.com
de tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Comprueba el servicio programador de renovación de Certbot.
$ sudo systemctl list-timers
Encontrarás snap.certbot.renew.service
como uno de los servicios programados para ejecutarse.
NEXT LEFT LAST PASSED UNIT ACTIVATES --------------------------------------------------------------------------------------------------------------------------- Tue 2023-11-21 11:39:00 UTC 4min 54s left Tue 2023-11-21 11:09:07 UTC 24min ago phpsessionclean.timer phpsessionclean.service Tue 2023-11-21 12:57:00 UTC 1h 22min left - - snap.certbot.renew.timer snap.certbot.renew.service Wed 2023-11-22 00:00:00 UTC 12h left Tue 2023-11-21 00:00:03 UTC 11h ago dpkg-db-backup.timer dpkg-db-backup.service
Realiza una ejecución en seco del proceso para comprobar si la renovación SSL funciona correctamente.
$ sudo certbot renew --dry-run
Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.
Paso 14 – Configurar Nginx
Permite el acceso de Nginx al directorio raíz de Monica.
$ sudo chown -R nginx:nginx /var/www/html/monica
Establece los permisos de directorio correctos en el directorio storage
.
$ sudo chmod -R 775 /var/www/html/monica/storage
Abre el archivo /etc/nginx/nginx.conf
para editarlo.
$ sudo nano /etc/nginx/nginx.conf
Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Crea y abre el archivo /etc/nginx/conf.d/monica.conf
para editarlo.
$ sudo nano /etc/nginx/conf.d/monica.conf
Pega en él el siguiente código. Sustituye monica.example.com
por el nombre de tu dominio. Asegúrate de que el valor de client_max_body_size
se establece en 10 MB, que es el tamaño de subida de archivos por defecto en Monica. Es el mismo valor que configuramos antes con PHP.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name monica.example.com; root /var/www/html/monica/public; index index.php; client_max_body_size 10M; access_log /var/log/nginx/monica.access.log; error_log /var/log/nginx/monica.error.log; ssl_certificate /etc/letsencrypt/live/monica.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/monica.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/monica.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_keep_conn on; include fastcgi_params; fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name monica.example.com; return 301 https://$host$request_uri; }
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Verifica la configuración de Nginx.
$ sudo nginx -t
Reinicia el servidor Nginx.
$ sudo systemctl restart nginx
Paso 15 – Accede a Monica CRM
Abre la URL https://monica.example.com
en tu navegador y accederás a la página de acceso como se muestra a continuación.
Introduce el correo electrónico y la contraseña que configuraste en el paso 12 y pulsa el botón Iniciar sesión para continuar. Accederás a la pantalla de bienvenida desde donde podrás empezar a utilizar la aplicación.
Paso 16 Configurar Cron
Monica CRM requiere varios procesos en segundo plano para garantizar su buen funcionamiento. Esto se gestiona mediante la funcionalidad Cron. Para ello, configura un cron que se ejecute cada minuto para ejecutar el comando php artisan schedule:run
.
Ejecuta el editor crontab. Pasaremos nginx
como usuario, ya que tiene acceso al directorio /var/www/html/monica
.
$ sudo crontab -u nginx -e
Si es la primera vez que ejecutas crontab, se te pedirá que elijas el editor.
no crontab for nginx - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.basic 3. /usr/bin/vim.tiny Choose 1-3 [1]: 1
Introduce 1 para elegir el editor nano, ya que es el más fácil de manejar. A continuación, accederás al editor crontab. Pega esta línea en la parte inferior del archivo.
* * * * * php /var/www/html/monica/artisan schedule:run >> /dev/null 2>&1
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida. Ya está. Las tareas programadas de Monica se ejecutarán regularmente utilizando la funcionalidad cron.
Paso 17 – Actualizar Monica CRM
El primer paso para hacer una copia de seguridad del Monica CRM es asegurarte de que está respaldado. Puedes hacer una copia de seguridad del SQL desde la página de configuración. Haz clic en el icono Configuración de la parte superior derecha del panel de control para abrir la página Configuración de la cuenta. A continuación, abre la página Exportar datos en el menú de la izquierda.
Haz clic en el botón Exportar a SQL para exportar la base de datos. También existe la opción Exportar a Json, que realiza copias de seguridad de mucho más que el SQL, pero no hay forma de importarlo. Probablemente verás el estado como fallido para ambas exportaciones, pero si navegas por el directorio /var/www/html/monica/storage/app/public/exports
de tu servidor, deberías ver ambos archivos.
$ ls /var/www/html/monica/storage/app/public/exports -al total 84 drwxr-xr-x 2 nginx nginx 4096 Nov 22 09:47 . drwxrwxr-x 4 nginx nginx 4096 Nov 22 09:47 .. -rw-r--r-- 1 nginx nginx 53712 Nov 22 09:47 cvlK5RAl7VVLdYLplnSZ8SFGHHwDZy9cjRhtoOWB.json -rw-r--r-- 1 nginx nginx 17050 Nov 22 09:47 dgZf5T0SnXeAuZ67HfaFLu2JosyUsByJcp2C8nlv.sql
Ahora que hemos hecho una copia de seguridad de los datos, es hora de actualizar.
Cambia al directorio Monica.
$ cd /var/www/html/monica
Como los permisos del directorio están establecidos en nginx
, tendremos que utilizar sudo
para ejecutar cualquier comando. Pero es mejor cambiar los permisos temporalmente en lugar de utilizar sudo
que es lo que haremos.
$ sudo chown -R $USER:$USER /var/www/html/monica
Obtén los últimos cambios de Git.
$ git fetch
Clona la versión deseada. Para nuestro tutorial, nos referimos a la versión beta. No la utilices en un servidor de producción.
$ git checkout tags/v5.0.0-beta.3
Actualiza las dependencias.
$ composer install --no-interaction --no-dev
Instala los paquetes frontales.
$ yarn install
Construye los activos JavaScript y CSS.
$ yarn run production
Ejecuta el siguiente comando para actualizar la instancia. Esto ejecuta scripts de migración para la base de datos y vacía todas las cachés de configuración, ruta y vista como proceso de optimización.
$ php artisan monica:update --force
Si quieres restaurar la base de datos SQL en una instancia Monica diferente, asegúrate de que tu instancia está completamente vacía, lo que significa que no hay tablas ni datos. Una vez te hayas asegurado de ello, ejecuta el siguiente comando para iniciar el proceso de migración de la base de datos.
$ php artisan migrate
A continuación, importa el archivo monica.sql
utilizando el siguiente comando.
$ sudo mysqlimport -u monicauser -p monica /var/www/html/monica/storage/app/public/exports/dgZf5T0SnXeAuZ67HfaFLu2JosyUsByJcp2C8nlv.sql
Se te pedirá la contraseña de tu usuario Monica DB configurada anteriormente. A continuación, inicia sesión en la instancia utilizando las credenciales utilizadas en la instancia anterior.
Cuando hayas terminado, restaura los permisos del directorio Monica al usuario nginx
.
$ sudo chown -R nginx:nginx /var/www/html/monica
Conclusión
Con esto concluye nuestro tutorial en el que has aprendido a instalar el software Monica CRM en un servidor Debian 12. Si tienes alguna pregunta, publícala en los comentarios a continuación.