Cómo instalar Invoice Ninja en Ubuntu 20.04
Invoice Ninja es una aplicación de facturación online gratuita y de código abierto para autónomos y empresas que te ayuda a aceptar pagos, hacer un seguimiento de los gastos, crear propuestas y tareas de tiempo. Es una aplicación de facturación autogestionada muy similar a las aplicaciones comerciales de facturación como Freshbooks. Te permite crear tu propia factura personalizada y enviarla online en un segundo.
Invoice Ninja es muy útil para las pequeñas y medianas empresas. Si buscas un software de facturación seguro y fácil de usar, Invoice Ninja es la mejor opción para ti.
En este tutorial, te mostraremos cómo instalar Invoice Ninja con Apache y Let’s Encrypt SSL en un servidor Ubuntu 20.04.
Requisitos previos
- Un servidor con Ubuntu 20.04.
- Un nombre de dominio válido apuntado con la IP de tu servidor.
- Una contraseña de root configurada el servidor.
Cómo empezar
En primer lugar, se recomienda actualizar los paquetes de tu sistema a la última versión. Ejecuta el siguiente comando para actualizar todos los paquetes:
apt-get update -y
Una vez actualizados todos los paquetes, instala otras dependencias necesarias con el siguiente comando:
apt-get install software-properties-common apt-transport-https ca-certificates gnupg2 -y
Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.
Instalar el servidor LAMP
A continuación, tendrás que instalar Apache, MariaDB y PHP en tu sistema. Primero, instala los paquetes Apache y MariaDB con el siguiente comando:
apt-get install apache2 mariadb-server -y
Después de instalar ambos paquetes, tendrás que instalar la versión 7.2 de PHP y otras extensiones en tu sistema.
Por defecto, Ubuntu 20.04 viene con la versión 7.4 de PHP. Así que tendrás que añadir el repositorio Ondrej a tu sistema.
Puedes añadir el repositorio PHP Ondrej con el siguiente comando:
add-apt-repository ppa:ondrej/php
Una vez añadido el repositorio, instala el PHP y otras extensiones con el siguiente comando:
apt-get install php7.2 libapache2-mod-php7.2 php-imagick php7.2-fpm php7.2-mysql php7.2-common php7.2-gd php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl php7.2-gmp unzip -y
Después de instalar todos los paquetes, verifica la versión instalada de PHP con el siguiente comando:
php -v
Deberías ver la siguiente salida:
PHP 7.2.34-8+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Oct 31 2020 16:57:33) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.34-8+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
Configurar la base de datos MariaDB
A continuación, tendrás que crear una base de datos y un usuario para Invoice Ninja. En primer lugar, inicia sesión en la consola de MariaDB con el siguiente comando:
mysql
Una vez iniciada la sesión, crea una base de datos y un usuario con el siguiente comando:
MariaDB [(none)]> create database invoicedb;
MariaDB [(none)]> create user invoice@localhost identified by 'password';
A continuación, concede todos los privilegios a la invoicedb con el siguiente comando:
MariaDB [(none)]> grant all privileges on invoicedb.* to invoice@localhost;
A continuación, vacía los privilegios y sal de la consola MariaDB con el siguiente comando
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar Invoice Ninja
En primer lugar, descarga la última versión de Invoice Ninja desde su sitio web oficial:
wget -O invoice-ninja.zip https://download.invoiceninja.com/
Una vez completada la descarga, descomprime el archivo descargado en el directorio raíz de Apache con el siguiente comando:
unzip invoice-ninja.zip -d /var/www/html/
A continuación, establece los permisos y la propiedad adecuados con el siguiente comando:
chown -R www-data:www-data /var/www/html/ninja
chmod -R 755 /var/www/html/ninja
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Apache para Invoice Ninja
A continuación, tendrás que crear un archivo de configuración de host virtual apache para Invoice Ninja. Puedes crearlo con el siguiente comando:
nano /etc/apache2/sites-available/ninja.conf
Añade las siguientes líneas:
<VirtualHost *:80> ServerName invoice.example.com DocumentRoot /var/www/html/ninja/public <Directory /var/www/html/ninja/public> DirectoryIndex index.php Options +FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/invoice-ninja.error.log CustomLog ${APACHE_LOG_DIR}/invoice-ninja.access.log combined Include /etc/apache2/conf-available/php7.2-fpm.conf </VirtualHost>
Guarda y cierra el archivo y luego habilita el archivo de host virtual con el siguiente comando:
a2ensite ninja.conf
A continuación, habilita los módulos apache necesarios con el siguiente comando:
a2enmod mpm_event proxy_fcgi setenvif
a2enmod rewrite
Por último, reinicia el servicio Apache para aplicar los cambios:
systemctl restart apache2
Ahora puedes verificar el estado del Apache utilizando el siguiente comando:
systemctl status apache2
Deberías obtener la siguiente salida:
? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-12-27 07:15:15 UTC; 11s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 25097 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 25113 (apache2) Tasks: 55 (limit: 2353) Memory: 5.3M CGroup: /system.slice/apache2.service ??25113 /usr/sbin/apache2 -k start ??25114 /usr/sbin/apache2 -k start ??25115 /usr/sbin/apache2 -k start Dec 27 07:15:15 ubuntu systemd[1]: Starting The Apache HTTP Server..
En este punto, Apache está configurado para servir a Factura Ninja. Ahora puedes pasar al siguiente paso.
Accede a Factura Ninja
Ahora, abre tu navegador web y accede a Factura Ninja utilizando la URL http://invoice.example.com. Serás redirigido a la siguiente página:
Proporciona la URL de tu sitio web, los detalles de la base de datos, el nombre de usuario del administrador, la contraseña y haz clic en el botón Enviar. Serás redirigido a la pantalla de inicio de sesión de Invoice Ninja:
Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón LOGIN. Deberías ver el panel de control de Invoice Ninja en la siguiente pantalla:
Asegura Invoice Ninja con Let’s Encrypt SSL
Siempre es una buena idea asegurar tu sitio web con Let’s Encrypt SSL. Necesitarás instalar el cliente Certbot para instalar y gestionar el SSL. Puedes instalarlo con el siguiente comando:
apt-get install python3-certbot-apache -y
Una vez instalado el Certbot, ejecuta el siguiente comando para asegurar tu sitio web con Let’s Encrypt SSL:
certbot --apache -d invoice.example.com
Se te pedirá que proporciones tu correo electrónico y aceptes las condiciones del servicio, como se muestra a continuación:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Plugins selected: Authenticator apache, Installer apache Obtaining a new certificate Performing the following challenges: http-01 challenge for invoice.example.com Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/invoice-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/invoice-le-ssl.conf Enabling available site: /etc/apache2/sites-available/invoice-le-ssl.conf
A continuación, selecciona si quieres redirigir el tráfico HTTP a HTTPS como se muestra a continuación:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Escribe 2 y pulsa Intro para instalar el SSL de Let’s Encrypt para tu sitio web:
Enabled Apache rewrite module Redirecting vhost in /etc/apache2/sites-enabled/invoice.conf to ssl vhost in /etc/apache2/sites-available/invoice-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://invoice.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=invoice.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/invoice.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/invoice.example.com/privkey.pem Your cert will expire on 2020-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Ahora, puedes acceder a tu sitio web de forma segura utilizando la URL https://invoice.example.com.
Conclusión
Enhorabuena! has instalado y configurado con éxito Invoice Ninja con Let’s Encrypt SSL en el servidor Ubuntu 20.04. Ahora puedes explorar la Factura Ninja para obtener más funciones y desplegarla en el entorno de producción. No dudes en preguntarme si tienes alguna duda.