Instalar una contabilidad de código abierto en Ubuntu 20.04

Este tutorial le mostrará cómo instalar Akaunting en Ubuntu 20.04 con un servidor web Apache o Nginx. Akaunting es un software de contabilidad de codigo abierto y gratuito que se puede alojar por sí mismo. Tiene un uso muy sencillo y puedes llevar un control de tus finanzas personales o de una pequeña empresa

Características de Akaunting

  • Completamente gratuito y de código abierto.
  • Interfaz fácil de usar basada en la web. Tus finanzas en línea en cualquier momento y lugar en su Mac, PC, tableta o teléfono móvil.
  • Interfaz preparada para móviles y tabletas
  • Panel de administración y clientes multilingüe
  • Diseñado para pequeñas empresas
  • 100% de propiedad de los datos financieros
  • Actualizaciones GRATUITAS de por vida
  • Puedes crear clientes y enviarles facturas. También puedes establecer una contraseña para que puedan acceder al portal de clientes.
  • Envía facturas profesionales a los clientes y empieza a aceptar pagos en línea, sin comisiones/transacciones.
  • Añade depósitos y transferencias entre cuentas y mantenga activo el saldo de sus cuentas bancarias.
  • Crear proveedores para poder asignarles facturas y pagos y filtrar posteriormente sus transacciones de forma sencilla.
  • Crea y gestiona facturas para que tus finanzas sean siempre precisas y saludables. Saber qué y cuándo pagar.
  • Añade gastos no facturables como pagos para mantener los saldos de sus cuentas bancarias/efectivas al día.
  • Habilita el seguimiento del inventario y gestiona las mercancías a medida que entran y salen. Los artículos también agilizan la facturación.
  • Crea un número ilimitado de cuentas bancarias y de efectivo y haz un seguimiento de sus saldos iniciales y actuales.
  • Envía facturas y añade gastos en cualquier moneda y deje que el sistema los convierta en su moneda principal.
  • Gestiona las finanzas de múltiples empresas desde un solo panel de administración. Asigna usuarios a diferentes empresas.
  • Obten informes financieros detallados que te ayudan a visualizar mejor toda la información que necesitas para mejorar tu negocio.
  • Amplía Akaunting instalando aplicaciones desde la tienda de aplicaciones, puede instalar o comprar cualquier cosa.
  • Configura los permisos a nivel de rol para proteger y simplificar tu experiencia de gestión.

Requisitos previos para instalar Akaunting en Ubuntu 20.04

Primero, necesitas un servidor Ubuntu con al menos 512MB de RAM. Si estás buscando un VPS (servidor privado virtual), entonces puedes recurrir a contabo o ovh para contratar el tuyo (al rededor de 5€/mes), instala Ubuntu 20.04 en tu servidor y sigue las siguientes instrucciones.

Akaunting requiere PHP y MySQL/MariaDB. Para seguir este tutorial, debería haber instalado una pila LAMP o una pila LEMP. Si prefieres usar el servidor web Apache, entonces instala la pila LAMP.

Si prefieres usar el servidor web Nginx, entonces configure la pila LEMP.

Cuando hayas terminado de configurar la pila LAMP o LEMP, vuelve aquí y sigue leyendo.

Ahora vamos a instalar Akaunting.

Paso 1: Descargar el archivo Zip de instalación de Akaunting en el servidor Ubuntu 20.04

Inicia sesión en tu servidor Ubuntu 20.04 y utiliza el siguiente comando para descargar la última versión estable de Akaunting.

wget -O Akaunting.zip https://akaunting.com/download.php?version=latest

A continuación, crea un directorio bajo la raíz de la web para Akaunting.

sudo mkdir -p /var/www/html/akaunting/

Extrae el archivo zip con unzip.

sudo apt install unzip

sudo unzip Akaunting.zip -d /var/www/akaunting/

La opción -d especifica el directorio de destino. Los archivos web de Akaunting se extraerán a /var/www/html/akaunting/. A continuación, tenemos que cambiar el propietario de este directorio a www-data para que el servidor web pueda escribir en este directorio.

sudo chown www-data:www-data /var/www/html/akaunting/ -R

Paso 2: Crear una base de datos y un usuario en MariaDB

Inicia sesión en el servidor de bases de datos MariaDB con el siguiente comando. Dado que MariaDB utiliza ahora el plugin unix_socket para autenticar el inicio de sesión del usuario, no es necesario introducir la contraseña de root de MariaDB. Sólo tenemos que prefijar el comando mysql con sudo.

sudo mysql -u root

A continuación, crea una base de datos para Akaunting. Este tutorial nombra la base de datos akaunting. Puedes usar el nombre que quieras.

create database akaunting;

Cree el usuario de la base de datos. De nuevo, puedes utilizar el nombre que prefieras para este usuario. Reemplaza tu-contraseña con tu contraseña preferida.

create user 'accountant'@'localhost' identified by 'tu-contraseña';

Concede a este usuario todos los privilegios en la base de datos akaunting.

grant all privileges on akaunting.* to 'accountant'@'localhost';

Limpiar los privilegios y salir.

flush privileges;

exit;

Paso 3: Instalar los módulos PHP

Ejecuta los siguientes comandos para instalar los módulos de PHP requeridos o recomendados por Akaunting.

sudo apt install php-imagick php7.4-common php7.4-mysql php7.4-gd php7.4-bcmath php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl

Luego reinicia Apache. (Si utilizas Nginx, no necesitas reiniciar Nginx).

sudo systemctl restart apache2

Paso 4: Configuración del servidor web

Podemos utilizar el servidor web Apache o Nginx.

Apache

Si prefieres Apache, crea un archivo de host virtual para Akaunting con un editor de texto de línea de comandos como Nano.

sudo nano /etc/apache2/sites-available/akaunting.conf

Introduce el siguiente texto en el archivo. Sustituye akaunting.tu_dominio.com por tu subdominio real para Akaunting. No olvides establecer el registro DNS A para el nombre de dominio en el gestor de DNS de su registrador de dominios.

<VirtualHost *:80>
    ServerName akaunting.tu_dominio.com
    DocumentRoot /var/www/html/akaunting/

    <Directory /var/www/html/akaunting/>
       DirectoryIndex index.php
       Options +FollowSymLinks
       AllowOverride All
       Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/akaunting.error.log
    CustomLog ${APACHE_LOG_DIR}/akaunting.access.log combined

</VirtualHost>

Guarda y cierra el archivo. A continuación, habilita este host virtual.

sudo a2ensite akaunting.conf

Necesitamos habilitar el módulo de reescritura.

sudo a2enmod rewrite

Reinicia Apache para que los cambios surtan efecto.

sudo systemctl restart apache2

Ahora visita akaunting.tu_dominio.com y serás redirigido a la página del asistente de configuración (akaunting.tu_dominio.com/install/language). Si ves la página de Apache por defecto en lugar del asistente de configuración, entonces tienes que desactivar el host virtual por defecto.

sudo a2dissite 000-default.conf

Y reiniciar Apache.

Antes de introducir cualquier información en el asistente de configuración, tenemos que habilitar HTTPS.

Nginx

Si prefieres Nginx, crea un archivo akaunting.conf en el directorio /etc/nginx/conf.d/.

sudo nano /etc/nginx/conf.d/akaunting.conf

Ponga el siguiente texto en el archivo. Sustituya akaunting.tu_dominio.com por su subdominio real para Akaunting. No olvide establecer el registro DNS A para el nombre de dominio en el gestor de DNS de su registrador de dominios.

server {
    listen      80;
    listen [::]:80;
    server_name akaunting.tu_dominio.com;

    root /var/www/html/akaunting/;
    index index.php index.html index.htm;
    charset utf-8;
    error_log /var/log/nginx/akaunting.error;
    access_log /var/log/nginx/akaunting.access;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # Prevent Direct Access To Protected Files
    location ~ \.(env|log) {
        deny all;
    }

    # Prevent Direct Access To Protected Folders
    location ~ ^/(^app$|bootstrap|config|database|resources|routes|storage|tests|artisan) {
        deny all;
    }
 
    # Prevent Direct Access To modules/vendor Folders Except Assets
    location ~ ^/(modules|vendor)\/(.*)\.((?!ico|gif|jpg|jpeg|png|js|css|less|sass|font|woff|woff2|eot|ttf|svg).)*$ {
        deny all;
    }
    
    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

}

Guarda y cierra el archivo.A continuación, prueba la configuración de Nginx.

sudo nginx -t

Si la prueba es exitosa, recarga Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

Ahora visita akaunting.tu_dominio.com y serás redirigido a la página del asistente de configuración (akaunting.tu_dominio.com/setup). Antes de introducir cualquier información en el asistente de configuración, tenemos que habilitar HTTPS.

Paso 5: Habilitar HTTPS

Para cifrar el tráfico HTTP, podemos habilitar HTTPS instalando un certificado TLS gratuito emitido por Let’s Encrypt. Ejecuta el siguiente comando para instalar el cliente Let’s Encrypt (certbot) en el servidor Ubuntu 20.04.

sudo apt install certbot

Si usas Apache, también necesitas instalar el plugin de Certbot para Apache.

sudo apt install python3-certbot-apache

Y ejecuta este comando para obtener e instalar el certificado TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email tu@correo.com -d akaunting.tu_dominio.com

Si utilizas Nginx, instala el plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

A continuación, ejecuta el siguiente comando para obtener e instalar el certificado TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email tu@correo.com -d akaunting.tu_dominio.com

Dónde

  • --nginx: Utilizar el plugin nginx.
  • --apache: Utilizar el plugin de Apache.
  • --agree-tos: Aceptar las condiciones del servicio.
  • --redirect: Forzar HTTPS mediante una redirección 301.
  • --hsts: Añadir la cabecera Strict-Transport-Security a cada respuesta HTTP. Obliga al navegador a utilizar siempre TLS para el dominio. Defiende contra el ataque SSL/TLS Stripping.
  • --staple-ocsp: Activa el grapado OCSP. Una respuesta OCSP válida se grapa al certificado que el servidor ofrece durante TLS.

El certificado debería obtenerse e instalarse automáticamente.

Paso 6: Finalizar la instalación con el asistente de instalación

Ahora ve a akaunting.tu_dominio.com y aparecerá el asistente de configuración. En primer lugar, tienes que elegir tu idioma.

A continuación, introduce la información de la base de datos. Utilice el nombre de la base de datos y el usuario de la base de datos creados en el paso 2.

A continuación, introduzca el nombre de la empresa y cree una cuenta de administrador.

Una vez hecho esto, puedes entrar en el panel de administración.

Después de iniciar la sesión, debes seguir el asistente para crear tu primera empresa.

Ahora puede gestionar sus finanzas en el panel de administración basado en la web.

Paso 7: Configurar SMTP

Para enviar correos electrónicos (como el registro de cuentas, el restablecimiento de la contraseña, el envío de facturas a los clientes, etc.), es necesario configurar un servidor SMTP. La configuración de SMTP está disponible en Configuración -> Correo electrónico -> Protocolo. Utilice los siguientes ajustes.

  • Protocol: SMTP
  • SMTP host:el nombre de su servidor de correo como mail.tecnolitas.com
  • SMTP port: 587
  • Cree una dirección de correo electrónico en su servidor de correo e introduce el nombre de usuario y la contraseña SMTP.
  • SMTP security: TLS

If you would like to use your own mail server to send emails to clients, please check out the following article to set up your own mail server. Note that I highly recommend running iRedMail mail server on a fresh clean OS. Installing iRedMail on an OS that has other web applications can fail, and likely break existing applications.

If you would like to use an SMTP relay service, I recommend Mailjet. You can follow the tutorial below to set up SMTP relay on your Akaunting server and you should be able to send invoice to clients.

Enable Paypal Payment

You can enable Paypal payment option in Settings -> Paypal Standard.

Troubleshooting

If you encounter errors in Akaunting, you can check the logs under /var/www/akaunting/storage/logs/ directory to troubleshoot problems.

Akaunting es un programa de contabilidad muy sencilla, te sirva para llevar el contro de ingresos/gastos de tus finanzas personales o de una pequeña empresa o proyecto, puedes expandirlo con módulos y ganar en funcionalidad. Coméntame si estas interesado en aplicaciones de este tipo y escribiré mas sobre ellas.

¡Que tengas un Ingenioso día!

¡que tengas un ingenioso día!

Contrata tu plan Ingenios@ de Sistemas por 5€ al mes y responderé a todas tus preguntas sobre tecnología en el menor tiempo posible. Pasa a formar parte de la comunidad Ingenios@s de Sistemas y disfruta de contenido exclusivo y aprende sobre sistemas Open Source, Blockchain, SmarContract, Web3, Inteligencia Artificial y Reaidad Virtual, súbete al tren de la Revolución 4.0

Si quieres estar al día y no perderte nada Suscribete al Podcast Ingenios@s de Sistemas, un episodio diario que te mantendrá informado y formado en esta vertiginosa carrera.

Deja un comentario

Share to...