In questo articolo spiegherò come installare Tryton, gestionale 100% open source.
Ci sono diversi modi per installarlo, oggi illustrerò come installarlo tramite Docker.
Se non hai letto il mio articolo su cos’è Tryton, clicca qui!
Bando alle ciance e iniziamo!
Requisiti
Per poter effettuare una corretta installazione avrai bisogno di un accesso al tuo sistema come utente root e installare Docker. Per installare Docker ti lascio il link al sito ufficiale.
Se stai utilizzando una distribuzione linux segui i passaggi di post-installazione se non vuoi sempre anteporre sudo ogni volta che lanci il comando docker.
Breve preambolo su Docker
Se non hai dimistichezza con Docker, di seguito inserisco dui concetti fondamentale di tale tecnologia:
- Container
Fondamentalmente un container Docker è un programma in esecuzione. Una volta creato un container, questo può essere avviato, messo in pausa, riattivato e interrotto tramite i comandi Docker. Ogni container è isolato dall’host su cui è in esecuzione e da tutti gli altri container presenti nel sistema. Ogni container viene generato da una immagine Docker (esistono centinaia di immagini docker disponibili per ogni esigenza) e ha un proprio filesystem privato. I container sono spesso trattati in modo usa e getta. È necessaria una configurazione aggiuntiva per poter conservare i dati generati da un container in quanto quando un contenitore viene rimosso, tutti i suoi dati andranno persi. E’ possibile eseguire quanti più container si vogliono basati sulla stessa immagine Docker. - Immagine
Un’immagine Docker fornisce il filesystem qundo viene creato un container. Contiene tutti i files binari, il codice, i runtimes, le dipendenze e i dati necessari a un programma. Ogni immagine è composta da più livelli di sola lettura. I file in ogni livello si aggiungono o sostituiscono quelli nei livelli sottostanti. Quando un container viene avviato utilizzando una immagine, il container aggiunge un livello finale di lettura/scrittura sopra l’immagine. Eventuali modifiche apportate dal container vengono salvate nel livello di lettura/scrittura. - Tag
E’ possibile specificare una specifica versione dell’immagine da utilizzare. La versione viene scelta indicando il tag.
Se, ad esempio, volessi utilizzare la versione 5.0 di Tryton, dovrò specificarlo in quest modo: tryton:5.0.
Lavorare con Docker
Per rendere Tryton funzionante avremo bisogno di utilizzare diversi container generati da immagini diverse. Questo tipo di architettura utilizzerà tre livelli: database, tryton, interfaccia utente (via web o via client desktop).
Per fare in modo che i containers creati possano dialogare tra loro è necessario creare una rete bridge docker (come ho scritto prima i container sono entità isolate e bisogna trovare un modo per poterli far comunicare tra loro).
Creo una rete docker
Per creare una rete docker “generata dall’utente”, che chiamerò tryton-net, bisogna lanciare il comando:
$ docker network create tryton-net
Creo un container che gestirà i databases
In questo container verranno archiviati la maggior parte dei dati elaborati e gestiti da Tryton. Il DBMS (Database Management System) usato da Tryton nei sistemi production è PostgreSQL.
Come accennato prima, i containers vengono usati in modo usa e getta. Per far sì che i dati archiviati nel database non svaniscano se sostituisci il container PostgreSQL, utilizzerò un volume Docker:
$ docker volume create tryton-db
Questo comando creerà un volume Docker chiamato tryton-db che potrà essere montato all’interno di un container.
Tutti i dati archiviati nel volume dal container continueranno a persistere anche dopo l’eliminazione del container in cui è stato montato.
Avvio del container PostgreSQL
Per poter avviare un container PostgreSQL è necessario avere una immagine Docker di PostgreSQL. L’immagine è disponibile nel Docker Hub e supportata ufficialmente da PostgreSql.
Una volta lanciato il comando per avviare un container, se l’immagine docker non è presente nel sistema locale, docker cercherà di scaricarlo dal docker hub.
Quindi, ora dovresti essere pronto per avviare il container PostgreSQL utilizzando il seguente comando:
(ricordati di sostituire <password> con la tua password):
docker run \ --name tryton-postgres \ --env PGDATA=/var/lib/postgresql/data/pgdata \ --env POSTGRES_DB=tryton \ --env POSTGRES_PASSWORD=<password> \ --mount source=tryton-db,target=/var/lib/postgresql/data \ --network tryton-net \ --detach \ postgres
Cosa farà questo comando?
- avvia un nuovo container Docker (riga 1) basato sull’ultima immagine Docker postgres (riga 9);
- nomina il container tryton-postgres (riga 2);
- collega il container alla rete tryton-net (riga 7);
- dice a PostgreSQL di creare un database chiamato tryton (riga 4);
- imposta il nome utente e la password necessari per connettersi a postgres (utente predefinito in questo caso) e <password> (riga 5);
- all’interno del container monta il tryton-db a /var/lib/postgresql/data (riga 6);
- dice a PostgreSQL di archiviare il database in /var/lib/postgresql/data/pgdata (riga 3), quindi i suoi dati vengono archiviati nel volume Docker;
- scollega l’input, l’output e gli errori standard del terminale dal container in modo da recuperare il prompt dei comandi (riga 8).
Inizializzo il database
Ora che il container tryton-postgres è in esecuzione è possibile inizializzare il database tryton creato con il comando precedente. Il comando che segue effettuerà tutte le operazioni di inizializzazione e ti richiederà di inserire l’email e la password dell’utente admin. Questo operazione durerà qualche secondo:
$ docker run \ --env DB_HOSTNAME=tryton-postgres \ --env DB_PASSWORD=<password> \ --network tryton-net \ --interactive \ --tty \ --rm \ tryton/tryton \ trytond-admin -d tryton --all
Cosa fa questo comando?
- avvia un nuovo container docker (riga 1) basato sull’ultima immagine tryton Docker (riga 8);
- collega il container alla rete tryton-net (riga 4);
- nel container esegue il comando trytond-admin sul database tryton e inizializza e aggiorna tutto utilizzando l’opzione –all (riga 9);
- assicura che venga utilizzato il container PostgreSQL corretto (riga 2) con il nome utente di accesso corretto (predefinito – postgres) e la password (riga 3);
- alloca uno pseudo-TTY (riga 6) e mantiene l’input standard del terminale connesso al contenitore (riga 5), in modo da poter inserire l’indirizzo e-mail e la password dell’utente admin;
- una volta fatto rimuove il contenitore (riga 7) perché non è più necessario (come accennavo precedentemente, questo container è usato in modo usa e getta; mi è servito solo per inizializzare il database).
Creo il container Tryton
Il container Tryton costituisce il livello intermedio nell’architettura a tre livelli descritta precedentemente e fornisce la logica di business.
L’avanzata modularità di Tryton ti permetterà di selezionare la corretta logica di business per le tue esigenze attivando solo i moduli che intendi utilizzare.
Sebbene la maggior parte dei dati di Tryton sia memorizzata nel database, potrebbero essercene alcuni memorizzati nel filesystem. Tryton normalmente memorizza gli allegati al di fuori del database e può essere configurato per archiviare anche altre tipi di dati (ad es. copie di fatture di vendita). Per assicurarti di non perdere questi dati se sostituisci il tuo container Tryton, puoi utilizzare, anche in questo caso, un volume Docker:
$ docker volume create tryton-data
Questo volume deve essere montato all’interno di tutti i contenitori Tryton che vengono creati.
Creo il container Tryton:
$ docker run \ --name tryton \ --env DB_HOSTNAME=tryton-postgres \ --env DB_PASSWORD=<password> \ --mount source=tryton-data,target=/var/lib/trytond/db \ --network tryton-net \ --publish 8000:8000 \ --detach \ tryton/tryton
Cosa fa questo comando?
- avvia un nuovo contenitore docker (riga 1) basato sull’ultima immagine tryton Docker (riga 9) e
- nomina il contenitore tryton (riga 2), e
- collega il contenitore alla rete tryton-net (riga 6)
- assicura che venga utilizzato il server di database corretto (riga 3) con il nome utente di accesso corretto (predefinito – postgres) e la password (riga 4)
- all’interno del contenitore monta il volume tryton-data su /var/lib/tryton/db (riga 5) in modo che tutti i documenti salvati da Tryton nel filesystem non vadano persi e
- ti permette di connetterti al tuo server Tryton inoltrando le connessioni alla porta 8000 del container (riga 7)
- scollega l’input, l’output e gli errori standard del terminale dal contenitore in modo da recuperare il prompt dei comandi (riga 8).
Testo il funzionamento del sistema con il client
Il client è il livello più alto nell’architettura a tre livelli di Tryton e ci sono diversi client tra cui scegliere.
Il client Web Tryton è fornito nell’immagine Docker di Tryton e consente di connettersi facilmente utilizzando il browser Web.
È possibile accedere al server Tryton visitando http://<indirizzo-ip>:8000/ nel tuo browser.
Per accedere dovrò inserire come nome utente admin e poi la password che hai inserito durante l’inizializzazione del database.
Per poter utilizzare il client desktop, bisognerà effettuare il download da qui.
Bisognerà poi configurare l’accesso inserendo come come host <indirizzo-ip>:8000 e come utente admin.
Il database verrà selezionato automaticamente (verrà rilevato dal client se l’indirizzo è corretto e se il sistema è stato configurato correttamente).
Spero che questo articolo ti sia stato d’aiuto per farti conoscere questo gestionale open source di alto livello.
Non ti resta che sperimentare.
Alla prossima!