Installation manuelle Diacamma Syndic sur Ubuntu

Bonjour,

Je partage ici les étapes manuelles que j’ai exécutées pour installer Diacamma Syndic sur un VPS sur Ubuntu 22.04.

Ces étapes n’utilisent pas d’environnement virtuel Python (le VPS est dédié à Diacamma, par ailleurs lors de précédentes tentatives je ne parvenais à installer Qt au sein d’un venv).

Sécurisation VPS
Avant tout, une bonne pratique est de sécuriser le VPS (notamment activer un firewall).

Prérequis
Librairies Python

sudo apt install build-essential python3-dev python3-pip python3-tk python3-pil python3-pyqt5 qtbase5-dev python3-cairo

Autres librairies de base

sudo apt install libxml2 libxml2-dev libxslt1-dev libjpeg-dev libfreetype6 libfreetype6-dev libpq-dev libssl-dev zlib1g-dev libcairo2 libcairo2-dev

Librairies base de données

sudo apt install postgresql postgresql-contrib

Librairies serveur

sudo apt install gunicorn nginx

Configuration de la base de données

sudo -u postgres psql -c "CREATE USER my_db_user;"
sudo -u postgres psql -c "ALTER USER my_db_user PASSWORD 'my_db_password';"
sudo -u postgres psql -c "CREATE DATABASE my_db OWNER my_db_user;"

Note: cet utilisateur (ici my_db_user) est dédié à la base de données (et donc indépendant de l’utilisateur Linux ou de l’utilisateur Diacamma).

Installation de l’application Diacamma
Installation

pip install -U lucterios-standard diacamma-asso diacamma-syndic diacamma-pro psycopg2-binary

Ajout de Diacamma au path: ouvrir le fichier bashrc

nano .bashrc

puis ajouter cette ligne à la fin du fichier

export PATH="$PATH:$HOME/.local/bin"

Instance (syndic)
Création du dossier de travail

mkdir /home/my_linux_user/lucterios cd /home/my_linux_user/lucterios
Définition des paramètres

OPTION='{"ALLOWED_HOSTS": ["localhost", "127.0.0.1", "www.my_site.com"], "LANGUAGE_CODE": "fr"}, "DEBUG": "False", "LOGGING": {"version": "1", "disable_existing_loggers": "True"}}'
DATABASE='postgresql:name=my_db,user=my_db_user,password=my_db_password,host=localhost'

Création de l’instance

lucterios_admin.py add -n my_diacamma_instance -p 'diacamma.syndic' -m 'lucterios.contacts,lucterios.documents,lucterios.mailing,diacamma.condominium,diacamma.accounting,diacamma.payoff' -e "$OPTION" -d $DATABASE

Définition du mot de passe administrateur

lucterios_admin.py security -n my_diacamma_instance -e "PASSWORD=my_diacamma_admin_password"

Nettoyage

python manage_my_diacamma_instance.py collectstatic --noinput -l rm -rf my_diacamma_instance/static/pycache rm -rf my_diacamma_instance/static/settings.py rm -rf my_diacamma_instance/static/init.py

Web
Création d’un fichier de configuration NGinx

sudo nano /etc/nginx/sites-available/lucterios

Avec le contenu suivant:

[code]server {
listen 80;
server_name www.my_site.com;
return 301 https://www.my_site.com/;
}

server {
listen 443;
server_name www.my_site.com;
charset utf-8;
access_log /var/log/nginx/www.my_site.com.access.log;
error_log /var/log/nginx/www.my_site.com.error.log;
root /home/my_linux_user/lucterios/;

client_max_body_size 100M;

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/xml application/json application/pdf;

fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

location = /index.html {
return 301 $scheme://$host;
}

location /web/ {
alias /home/my_linux_user/lucterios/my_diacamma_instance/static/lucterios.framework/web/;
}

location /static/ {
alias /home/my_linux_user/lucterios/my_diacamma_instance/static/;
}

location / {
proxy_pass http://127.0.0.1:8100;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
}
}[/code]
Activtion du site

sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/lucterios /etc/nginx/sites-enabled/

Sécurisation SSL:
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04

Changement de l’utilisateur nginx, afin que Nginx puisse accéder aux fichiers Diacamma: ouvrir ce fichier:

sudo nano /etc/nginx/nginx.conf

puis remplacer l’utilisateur nginx par:

user my_linux_user;

Redémarrage du serveur

sudo systemctl restart nginx

Service
Création d’un fichier service

sudo nano /etc/systemd/system/my_diacamma_instance.service

avec le contenu suivant:

[code][Unit]
Description=Diacamma Syndic
After=network.target

[Service]
User=my_linux_user
WorkingDirectory=/home/my_linux_user/lucterios
Environment=“DJANGO_SETTINGS_MODULE=my_diacamma_instance.settings”
ExecStart=gunicorn lucterios.framework.wsgi --bind=127.0.0.1:8100 -w 1 --timeout 600 --access-logfile /home/my_linux_user/lucterios/access.log --error-logfile /home/my_linux_user/lucterios/error.log
Restart=always
RestartSec=30

StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target[/code]
Redémarrage du service

sudo systemctl daemon-reload sudo systemctl enable my_diacamma_instance

Super descriptif: claire précis, j’aurais pas fait mieux :slight_smile: