GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare InvoiceNinja su Ubuntu 20.04 Server con Apache/Nginx

Questo tutorial ti mostrerà come installare InvoiceNinja su Ubuntu 20.04 con server web Apache o Nginx. InvoiceNinja è un software di fatturazione self-hosted open source, un'alternativa a basso costo alle piattaforme di fatturazione online commerciali come Freshbooks. InvoiceNinja fornisce un servizio di fatturazione in hosting, ma se desideri ospitare autonomamente il software, puoi seguire le istruzioni seguenti.

Funzioni di InvoiceNinja

  • Con InvoiceNinja puoi inviare fatture ai tuoi clienti utilizzando il tuo nome di dominio e marchio.
  • Gestisci la fatturazione per più attività sotto un unico account.
  • Risparmia tempo fatturando automaticamente ai clienti a lungo termine con fatture ricorrenti.
  • Crea e invia facilmente bellissime proposte ai tuoi clienti.
  • Allega file di terze parti alle fatture.
  • Crea attività di progetto e monitora il tempo.
  • Organizza e pianifica il lavoro del tuo cliente con uno strumento visivo di gestione dei progetti.
  • Consenti ai tuoi clienti di vedere tutte le loro transazioni con te in un colpo d'occhio.
  • L'automazione di Zapier ti consente di trasferire i dati tra il tuo account di fatturazione e le app più diffuse tra cui Gmail, Fogli Google, QuickBooks Online, Slack, Pipeline, MailChimp e centinaia di altre.
  • Richiedi depositi e pagamenti parziali utilizzando la stessa fattura ancora e ancora.
  • Utilizza una sequenza di e-mail di promemoria automatica prescritta per ricordare ai clienti che la fattura deve essere pagata.
  • Ricevi notifiche quando un cliente visualizza e paga la tua fattura.
  • E molti altri

Prerequisiti

Innanzitutto, è necessario un server Linux con almeno 512 MB di RAM. Puoi fare clic su questo link speciale per ottenere $ 100 di credito gratuito su DigitalOcean. (Solo per nuovi utenti). Se sei già un utente DigitalOcean, puoi fare clic su questo link speciale per ottenere $ 50 di credito gratuito su Vultr (solo per i nuovi utenti). Una volta che hai un account su DigitalOcean o Vultr, installa Ubuntu 20.04 sul tuo server e segui le istruzioni seguenti.

InvoiceNinja richiede PHP e MySQL/MariaDB. Per seguire questo tutorial, dovresti aver già impostato uno stack LAMP o uno stack LEMP. Se non l'hai già fatto, utilizza una delle seguenti guide.

  • Come installare lo stack LAMP (Apache, MariaDB, PHP) su Ubuntu 20.04
  • Come installare lo stack LEMP (Nginx, MariaDB, PHP) su Ubuntu 20.04

E hai anche bisogno di un nome di dominio, in modo che i tuoi clienti possano vedere la fattura tramite il tuo nome di dominio. Ho registrato il mio nome di dominio su NameCheap perché il prezzo è basso e offrono protezione della privacy a Whois gratuita per tutta la vita.

Ora installiamo InvoiceNinja.

Passaggio 1:Scarica InvoiceNinja Installa il file zip sul server Ubuntu 20.04

Accedi al tuo server Ubuntu 20.04 tramite SSH. Quindi esegui il comando seguente per scaricare l'ultima versione del file zip di InvoiceNinja sul tuo server.

wget -O invoice-ninja.zip https://download.invoiceninja.com/

Una volta scaricato, estrai l'archivio nel /var/www/ directory con unzip .

sudo apt install unzip

sudo mkdir -p /var/www/

sudo unzip invoice-ninja.zip -d /var/www/

Il -d opzione specifica la directory di destinazione. I file web di InvoiceNinja verranno estratti in /var/www/ninja . Per identificare meglio ogni directory, puoi rinominarla in invoice-ninja .

sudo mv /var/www/ninja /var/www/invoice-ninja

Quindi dobbiamo cambiare il proprietario di questa directory in www-data in modo che il server web possa scrivere in questa directory.

sudo chown www-data:www-data /var/www/invoice-ninja/ -R

Abbiamo anche bisogno di cambiare l'autorizzazione della storage directory.

sudo chmod 755 /var/www/invoice-ninja/storage/ -R

Fase 2:crea un database e un utente in MariaDB

Accedi al server del database MariaDB con il seguente comando. Dal momento che MariaDB ora sta usando unix_socket plug-in per l'autenticazione dell'accesso utente, non è necessario inserire la password di root di MariaDB. Dobbiamo solo anteporre mysql comando con sudo .

sudo mysql

Quindi crea un database per Invoice Ninja. Questo tutorial nomina il database invoiceninja . Puoi usare il nome che preferisci.

create database invoiceninja;

Crea l'utente del database. Anche in questo caso, puoi utilizzare il tuo nome preferito per questo utente. Sostituisci your-password con la tua password preferita.

create user ninja@localhost identified by 'your-password';

Concedi a questo utente tutti i privilegi sulla invoiceninja banca dati.

grant all privileges on invoiceninja.* to ninja@localhost;

Elimina i privilegi ed esci.

flush privileges;

exit;

Fase 3:installa i moduli PHP

Nota che InvoiceNinja attualmente non supporta PHP7.4. Per una migliore compatibilità, si consiglia di aggiungere il PPA PHP7.3 e installare PHP7.3.

sudo add-apt-repository ppa:ondrej/php

Quindi esegui i seguenti comandi per installare i moduli PHP richiesti o consigliati da InvoiceNinja.

sudo apt install php-imagick php7.3-fpm php7.3-mysql php7.3-common php7.3-gd php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp

Se utilizzi il server web Apache, devi disabilitare il modulo PHP per Apache.

sudo a2dismod php7.4

Devi anche disabilitare il modulo MPM prefork.

sudo a2dismod mpm_prefork

Ora devi eseguire il comando seguente per abilitare tre moduli per poter usare PHP-FPM, indipendentemente dal fatto che mod_php è installato sul tuo server.

sudo a2enmod mpm_event proxy_fcgi setenvif

Quindi riavvia Apache.

sudo systemctl restart apache2

Fase 4:configurazione del server Web

Possiamo usare il web server Apache o Nginx.

Apache

Se preferisci Apache, crea un file host virtuale per Invoice Ninja.

sudo nano /etc/apache2/sites-available/invoice-ninja.conf

Inserisci il seguente testo nel file. Sostituisci invoice.yourdomain.com con il tuo sottodominio per Invoice Ninja. Non dimenticare di impostare un record per il nome di dominio nel tuo gestore DNS. (Nota che la webroot è impostata su /var/www/invoice-ninja/public/ , non /var/www/invoice-ninja/ )

<VirtualHost *:80>
    ServerName invoice.yourdomain.com
    DocumentRoot /var/www/invoice-ninja/public

    <Directory /var/www/invoice-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.3-fpm.conf
</VirtualHost>

Salva e chiudi il file. Quindi abilita questo host virtuale.

sudo a2ensite invoice-ninja.conf

Dobbiamo abilitare il modulo di riscrittura.

sudo a2enmod rewrite

Riavvia Apache per rendere effettive le modifiche.

sudo systemctl restart apache2

Ora visita invoice.yourdomain.com e verrai reindirizzato alla pagina della procedura guidata di configurazione di Invoice Ninja (invoice.yourdomain.com/setup ). Se vedi la pagina Apache predefinita invece della procedura guidata di configurazione, devi disabilitare l'host virtuale predefinito.

sudo a2dissite 000-default.conf

E riavvia Apache.

Prima di inserire qualsiasi informazione nella procedura guidata di configurazione, è necessario abilitare HTTPS, come spiegato nel passaggio 4.

Nginx

Se preferisci Nginx, crea un invoice-ninja.conf file in /etc/nginx/conf.d/ directory.

sudo nano /etc/nginx/conf.d/invoice-ninja.conf

Inserisci il seguente testo nel file. Sostituisci invoice.yourdomain.com con il tuo sottodominio per Invoice Ninja. Non dimenticare di impostare un record per il nome di dominio nel tuo gestore DNS. (Nota che la webroot è impostata su /var/www/invoice-ninja/public/ , non /var/www/invoice-ninja/ )

server {
    listen 80;
    listen [::]:80;
    server_name invoice.yourdomain.com;

    root /var/www/invoice-ninja/public/;
    index index.php index.html index.htm;
    charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log  /var/log/nginx/invoiceninja.access.log;
    error_log   /var/log/nginx/invoiceninja.error.log;

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

    location ~ /\.ht {
        deny all;
    }
}

Salva e chiudi il file. Quindi testa la configurazione di Nginx.

sudo nginx -t

Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.

sudo systemctl reload nginx

Ora visita invoice.yourdomain.com e verrai reindirizzato alla pagina della procedura guidata di configurazione di Invoice Ninja (invoice.yourdomain.com/setup ). Prima di inserire qualsiasi informazione nella procedura guidata di configurazione, è necessario abilitare HTTPS.

Fase 5:abilitazione di HTTPS

Per crittografare il traffico HTTP, possiamo abilitare HTTPS installando un certificato TLS gratuito emesso da Let's Encrypt. Esegui il comando seguente per installare il client Let's Encrypt (certbot) sul server Ubuntu 20.04.

sudo apt install certbot

Se usi Nginx, devi anche installare il plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

Quindi, esegui il comando seguente per ottenere e installare il certificato TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d invoice.yourdomain.com

Se usi Apache, installa il plugin Certbot Apache.

sudo apt install python3-certbot-apache

Ed esegui questo comando per ottenere e installare il certificato TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d invoice.yourdomain.com

Dove

  • --nginx :usa il plugin nginx.
  • --apache :usa il plugin Apache.
  • --agree-tos :Accetta i termini di servizio.
  • --redirect :Forza HTTPS tramite reindirizzamento 301.
  • --hsts :aggiungi l'intestazione Strict-Transport-Security a ogni risposta HTTP. Forzare il browser a utilizzare sempre TLS per il dominio. Difende dallo stripping SSL/TLS.
  • --staple-ocsp :Abilita la pinzatura OCSP. Una risposta OCSP valida viene pinzata al certificato offerto dal server durante TLS.

Il certificato dovrebbe ora essere ottenuto e installato automaticamente.

Fase 6:termina l'installazione con l'installazione guidata

Ora vai su invoice.yourdomain.com e inserisci le informazioni sul database, le impostazioni SMTP e crea un utente amministratore.

Se desideri utilizzare il tuo server di posta per inviare e-mail ai client, consulta il seguente articolo per configurare il tuo server di posta. Nota che consiglio vivamente di eseguire il server di posta iRedMail su un nuovo sistema operativo pulito. L'installazione di iRedMail su un sistema operativo che dispone di altre applicazioni Web può non riuscire e probabilmente interrompere le applicazioni esistenti.

  • Come configurare facilmente un server di posta completo su Ubuntu 20.04 con iRedMail

Quando utilizzi il tuo server di posta elettronica, puoi scegliere tra due driver:SMTP e Sendmail .

  • Scegli SMTP se il tuo server di posta e Invoice Ninja funzionano su due host diversi.
  • Scegli Sendmail se il tuo server di posta e Invoice Ninja funzionano sullo stesso host.

Se scegli SMTP , usa le impostazioni come di seguito.

  • ospite :mail.tuodominio.com  porta :587   Crittografia :TLS. E inserisci il tuo nome utente e password.

Se scegli Sendmail , usa le impostazioni come di seguito.

  • ospite :127.0.0.1   porta :25    Crittografia :nessuno. Non è necessario inserire nome utente o password.

Dopo aver creato l'utente amministratore, puoi accedere a InvoiceNinja.

Imposta lavori Cron

Dobbiamo impostare i lavori Cron per inviare fatture ricorrenti e promemoria via e-mail. Modifica il file crontab dell'utente root.

sudo crontab -e

Aggiungi le seguenti righe alla fine di questo file.

#InvoiceNinja
0 8 * * * /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-invoices > /dev/null
0 8 * * * /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-reminders > /dev/null

Salva e chiudi il file. I due lavori Cron verranno eseguiti alle 8:00 ogni giorno. Puoi anche eseguire manualmente un lavoro come di seguito.

sudo /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-invoices

Rimozione del marchio Invoice Ninja

Per impostazione predefinita, la tua fattura avrà il marchio Invoice Ninja, puoi acquistare una licenza white label per $ 30/anno per rimuovere il marchio Invoice Ninja dalla fattura e dal portale clienti. Vai a settings -> Invoice Design , fai clic su white-label link in basso per acquistare.

Conclusione

Spero che questo tutorial ti abbia aiutato a installare Invoice Ninja sul server Ubuntu 20.04. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere ulteriori suggerimenti e trucchi. Attento 🙂


Ubuntu
  1. Come installare Nginx su Ubuntu 20.04

  2. Come installare Jenkins Automation Server con Apache su Ubuntu 16.04

  3. Come installare MediaWiki con Nginx su Ubuntu 16.04

  4. Come installare il server HTTP Git con Nginx su Ubuntu 16.04

  5. Come installare HTTP Git Server con Nginx su Ubuntu 20.04

Installa Roundcube Webmail su Ubuntu 20.04 con Apache/Nginx

Come installare Sonerezh Music Streaming Server su Ubuntu 16.04 con Apache o Nginx

Come installare InvoiceNinja su Ubuntu 18.04 Server con Apache/Nginx

Come installare phpMyAdmin con Apache su Ubuntu 22.04 LTS

Come installare Nginx su Ubuntu

Come installare LetsEncrypt con Nginx su Ubuntu 15.04