⚙️ Cloud Juris-Tyr | Installation simplifiée :

Nous vous proposons une méthode simplifiée en 5 étapes pour installer rapidement et gratuitement (hors frais d’abonnement à un serveur VPS et d’achat de votre nom de domaine) la solution logicielle proposée par Juris-Tyr sur un serveur / VPS.


Les étapes pour installer la solution logicielle proposée par Cloud Juris-Tyr sont :
  1. Souscrire à une offre d’un serveur / VPS (ovhcloud.com/fr/vps/)
    ➡️ étape 1️⃣
    .
  2. Acheter un nom de domaine (ovhcloud.com/fr/domains/)
    ➡️ étape 2️⃣
    .
  3. Configurer votre nom de domaine
    ➡️ étape 3️⃣
    .
  4. Se connecter à votre nouveau serveur / VPS avec le logiciel Putty
    ➡️ étape 4️⃣
    .
  5. Lancer nos scripts d’installation et configurer les logiciels
    ➡️ étape 5️⃣
    .

📝 Nous ne recevons aucun avantage ni ne percevons de rémunération de l’hébergeur OVHCloud. Les démarches d’installation fonctionnent avec n’importe quel VPS d’un autre prestataire, à partir du moment ou le VPS/serveur fonctionne sous Ubuntu 22.04 et dispose d’au moins 4Go de mémoire vive.
💶 Les noms de domaine les moins coûteux sont les .ovh à partir de 2,99 € HT / an.
🖥️ Pour le serveur VPS, choisissez un modèle avec minimum 40 Go d’espace disque et 4Go de mémoire vive à partir de 11,50 € / mois.
💽 Il est recommandé de choisir l’option « backup automatisé » d’OVHCloud à partir de 2 à 3 € HT / par mois, selon la capacité de stockage du VPS.


🧑‍💻 Après avoir effectué l’installation, vous accèderez aux logiciels de votre plateforme, en tapant les adresses suivantes dans la barre d’adresse de votre navigateur (remplacer exemple.com par le nom de domaine de votre entreprise ou cabinet d’avocats) :

  • cloud.exemple.com : pour accéder à Nextcloud, l’application de gestion de fichiers et de collaboration avec vos collaborateurs et clients
  • facturation.exemple.com  : pour accéder à l’application de facturation Invoiceninja afin d’envoyer des factures et des propositions de devis à vos clients
  • onlyoffice.exemple.com : pour accéder à la suite bureautique en ligne Onlyoffice afin de créer et d’éditer des documents Office Word, Excel…
  • visio.exemple.com : pour accéder à Jitsi Meet afin d’organiser des visioconférences avec vos clients ou vos partenaires (min 8Go)
  • pdf.exemple.com : pour accéder à SignaturePDF afin d’annoter et modifier des fichiers PDF de manière confidentielle
  • exemple.com/wp-login : pour accéder à l’interface administrateur de WordPress afin de créer et d’éditer votre site internet ‘exemple.com’
  • ai.exemple.com : pour accéder à ‘Ollama WebUI’, logiciel d’intelligence artificielle permettant d’utiliser des LLM open source (min 16Go) ou GPT4 de OpenAI
  • vocal.exemple.com : pour utiliser la reconnaissance vocale Whisper avec un hébergement des données vocales sur votre serveur / VPS (min 4Go)
  • audio.exemple.com : pour utiliser la lecture vocale de textes
  • mail.exemple.com : pour créer et éditer les adresses e-mails de votre cabinet d’avocats ou entreprise (min 4Go).

Etape 1 – Installation, configuration et accès au serveur :

Installer/souscrire à un abonnement à un serveur dédié / VPS :

La première étape est de souscrire à un abonnement à un serveur dédié ou ‘VPS’, par exemple auprès de la société OVH.

Il s’agit de l’hébergeur que nous recommandons mais nous n’avons aucun avantage de la société OVHCloud ni percevons aucune rémunération de cet hébergeur / prestataire. Les démarches d’installation fonctionnent avec n’importe quel VPS d’un autre hébergeur / prestataire, à partir du moment ou le VPS/serveur fonctionne sous Ubuntu 22.04 et dispose d’au moins 4Go de mémoire vive.

Cette solution d’un abonnement mensuel à régler à un prestataire pour l’accès à un serveur dédié ou à un serveur VPS (OVH, Nuxit, Hostsinger …etc.) est certes plus coûteuse à moyen ou long terme qu’utiliser son propre ordinateur serveur en auto hébergement mais cela présente l’avantage indéniable de la sécurisation de vos données en cas d’événement grave survenant dans vos locaux (incendie, d’inondation, cambriolage…etc.) et d’une mise à jour régulière de l’offre et du matériel VPS mis à disposition par le prestataire.

C’est la raison pour laquelle nous préconisons une solution d’installation sur un serveur privé virtuel / VPS que ce soit via la société OVHCloud ou via d’autres prestataires similaires pour des questions de sécurité, de performance du système, de mise à jour régulières du matériel / serveur et in fine, de tranquillité d’esprit…

Si vous recherchez un serveur privé virtuel (VPS), nous vous recommandons ceux d’OVH dont le montant des abonnements est raisonnable et surtout avec des serveurs situés en France, ce qui est une obligation pour les cabinets d’avocats français ou pour d’autres professions réglementés (le secteur médical par exemple).

Il existe toutefois d’autres prestataires avec des offres tout aussi recommandables…


Souscrire à un abonnement et installer un serveur virtuel privé / VPS sur OVHCloud ou auprès d’un autre prestataire (Nuxit, Hostsinger…):

➡️ Cliquez sur le lien suivant, pour souscrire à un abonnement à un VPS auprès du prestataire OVHCloud : https://www.ovhcloud.com/fr/vps/

Concernant les offres d’abonnement de la société OVHcloud, l’offre « Starter » à 3,50 € HT par mois permet de faire des tests et d’installer les logiciels et applications. Cette offre permet d’installer les applications de la plateforme Juris-Tyr et de la tester. Toutefois pour une utilisation quotidienne, le VPS avec cette offre, risque de manquer de réactivité, notamment s’il y a plusieurs utilisateurs connectés en même temps.

➡️ Ainsi, sauf pour une installation de test, si vous souhaitez une utilisation plus ‘confortable’ (rapide) de la plateforme, nous vous recommandons de privilégier la souscription à une offre d’abonnement « Essential » à 11,50€ HT par mois ou « Comfort » à 21,62 € HT par mois.

➡️ Lors de votre souscription à un VPS, vous devez choisir l’installation du système d’exploitation ‘Ubuntu 22.04’.

➡️ L’abonnement à OVHCloud peut être résilié selon le respect d’un préavis d’un mois (hors engagement annuel).
Il convient de cocher la case ‘sans engagement’ le cas échéant.

➡️ Nous vous recommandons également de souscrire à l’option de sauvegarde automatique du serveur du Prestataire (OVHCloud ou autres).

➡️ Une fois que vous avez souscrit à une des offres d’abonnement à un VPS auprès du prestataire OVHCloud (par exemple…), l’espace client de gestion de votre VPS s’affichera ainsi :


Enregistrez vos login et et mots de passe de connexion à votre VPS

➡️ Vous recevrez par e-mail les codes de connexion à votre VPS (le login et le mot de passe).

En général le login est ‘ubuntu’ si vous avez choisi de faire installer une distribution (OS) « Ubuntu 22.04 » sur votre VPS lors de votre souscription à un abonnement.

➡️ Veuillez conserver ces login et mot de passe car vous allez les utiliser prochainement pour vous connecter à votre serveur VPS, via le logiciel « Putty » (sous Windows).

Vous venez de souscrire à une offfre d’abonnement à un VPS.
Passons à l’étape suivante, l’achat d’un nom de domaine.


Etape 2 – Achetez un nom de domaine :

Nous vous proposons un tutoriel pour acheter un nom de domaine sur le site de la société OVHCloud, cependant vous pouvez passer par les services de toute autre société proposant les mêmes services (NameCheap, Hostsinger…etc.).

➡️ Connectez-vous sur le site internet d’un prestataire gestionnaire de noms de domaine.

Par exemple, sur le site de la société OVHCloud : ovhcloud.com/fr/domains/

➡️ Sur le site de la société OVHCloud, cliquez sur l’onglet « Hébergements web et Domaines » puis sur « Noms de domaine » :

➡️ Choisissez un nom de domaine et indiquez le dans la barre de recherche puis cliquez sur le bouton « Rechercher ».
Par exemple dans l’exemple ci-dessous : « cabinetdupond.com » :

➡️ Choisissez l’extension du nom de domaine (en .com, .fr …etc.), puis cliquez sur le bouton « Continuez la commande »
Dans l’exemple ci-dessous, nous avons choisi une extension de nom de domaine en « .com »
 :

➡️ Eventuellement, ajoutez l’option « DNS Anycast » pour améliorer le chargement de votre site internet (facultatif).
Cliquez sur le bouton « Continuez la commande » :

Dans le cadre du suivi de ce tutoriel, il est inutile de choisir une option d’hébergement.
➡️ Cliquez sur le bouton « Continuez la commande » :

➡️ Connectez vous à votre compte client ou créez un compte client, puis réglez le montant demandé pour l’achat de votre nom de domaine.

Une fois que vous disposez d’un serveur ou d’un abonnement à un VPS et d’un nom de domaine pour un site internet, Nous allons configurer « la zone DNS » de ce nom de domaine..


Etape 3 – Configurez la Zone DNS de votre nom de domaine ‘exemple.com‘ :

Vous venez de souscrire à un serveur VPS, vous avez acheté un nom de domaine et il faut désormais paramétrer les différents noms de domaine (exemple.com) et sous-domaine (cloud.exemple.com) qui vous permettront d’accéder aux différents logiciels depuis des sites internet.

A cette fin, il faut modifier la « zone DNS » de votre nom de domaine « exemple.com« .

ℹ️ La ‘Zone DNS’ liste les enregistrements DNS du nom de domaine .
ℹ️ Effectuer un enregistrement ‘DNS’ consiste à indiquer que le nom de domaine (ou le sous domaine) doit renvoyer vers telle ou telle adresse IP d’un serveur informatique ou VPS.

➡️ Si vous avez souscrit un nom de domaine auprès d’OVHCloud, les démarches pour configurer la zone DNS sont les suivantes :

Après avoir cliqué sur le bouton « Modifier en mode textuel », la page web devrait ressembler à celle-ci :

➡️ Copier / coller le texte suivant en ajoutant une ligne blanche à la fin du texte, et en remplaçant les mots « $IP_ADDRESS » par l’adresse IP de votre serveur ou de votre VPS qui doit ressembler à quelque chose comme ‘51.23.456.78‘ si vous avez souscrit VPS auprès de la société OVHCloud.
Remplacez également les termes $YOUR_DOMAIN par votre nom de domaine exemple.com :

ℹ️ Attention, il doit y avoir une ligne vide supplémentaire à la fin de cette zone DNS.

➡️ Cliquez sur le bouton « Valider » et patientez quelques secondes pour la prise en compte des changements.

Une fois la zone DSN configurée, nous allons utilisez un logiciel spécifique qui s’appelle « Putty » pour se connecter au serveur ou au VPS, puis pour entrer des lignes de commande pour le serveur.


Etape 4 – Connectez-vous à votre serveur avec le logiciel putty’ :

➡️ Installez le logiciel Putty‘ puis lancez le.

La fenêtre de connexion suivante s’affichera.

➡️ Connectez vous à votre serveur via ce logiciel Putty, en complétant l’adresse IP du serveur ou du VPS (par exemple 51.124.56.789) et s’il n’est pas affiché, le port ’22’ :

  • Cliquez sur le bouton ‘Open’
  • Puis, une fois que la fenêtre de connexion s’affiche…
  • Autorisez la connexion (cliquez sur le bouton « Accept / tout accepter / tout autoriser »).
  • Tapez votre nom d’utilisateur de l’utilisateur principal du serveur, a priori le nom d’utilisateur est : « ubuntu » si vous avez suivi ce tutoriel, puis appuyer sur la touche ‘Entrer’,
  • Puis indiquez le mot de passe de l’utilisateur « ubuntu » pour le serveur ou VPS, en le copiant (sélectionner le mot de passe puis appuyez simultanément que les touches [Control] et [c] de votre clavier), puis en cliquant simplement sur le bouton droit de votre souris ou trackpad dans la fenêtre du terminal pour le copier automatiquement (le mot de passe vous a été communiqué par e-mail par la société OVHCloud),
  • Appuyez sur la touche ‘Entrer’, pour vous connecter à votre serveur via une connection ssh.

Ce logiciel Putty va vous permettre de vous connecter à votre serveur et de copier / coller des commandes, et notamment celle permettant d’installer la solution logicielle proposée par Juris-Tyr.


Etape 5 – Installez la solution logicielle proposée par Juris-Tyr

Après avoir configuré votre serveur / VPS et noms de domaine, il suffit d’exécuter les commandes précisées dans cette étape 5.

⚒️ Notre script vous permettra d’installer automatiquement et en quelques minutes sur un serveur / VPS les logiciels suivants :

  • Un serveur web Apache
  • MariaDB
  • Postgress
  • php8.2 et php8.3
  • Nextcloud
  • Redis
  • CollaboraOnline
  • OnlyOffice
  • InvoiceNinja
  • SignaturePDF
  • WordPress
  • Jitsi Meet
  • Ollama et Ollama WebUI
  • Whisper WebUI

ℹ️ L’installation du serveur mail s’effectuera dans un second temps.


➡️ Connectez vous à votre serveur / VPS via le logiciel Putty, en indiquant l’adresse IP de votre serveur VPS et le port n° 22.

➡️ Exécutez la commande suivante :
Copiez / collez dans le terminal du logiciel Putty la commande suivante, puis appuyez sur la touche « Entrer ».

bash <(wget -qO- https://raw.githubusercontent.com/Arthur-Llevelys/Juris-Tyr/main/Install-Juris-Tyr-Nextcloud-Collabora-Onlyoffice-script.sh);

➡️ Le scritp va vous demander d’indiquer :

  1. votre nom de domaine : exemple.com
  2. un nom d’utilisateur principal en lettres minuscules, par exemple : johnsnow (ou n’importe quelle autre nom d’utilisateur si vous n’êtes pas John SNOW)
  3. un mot de passe : mon-super-mot-de-passe-tres-complique!-de-2024
  4. votre adresse e-mail : co*****@ex*****.com

Tapez les informations demandées, puis appuyez sur la touche « Entrer » pour valider.

➡️ Le script va s’exécuter. Vous devrez de temps en temps appuyer sur la touche ‘Entrer’ ou sur les touches ‘Y’ ou ‘O’, puis sur la touche ‘Entrer’ en fonction des messages affichés, afin de valider l’installation des logiciels sur votre serveur / VPS.

…A un certain moment de l’installation, il vous sera demandé ou installer des scripts pour certaines extensions php8.3 pour que Nextcloud fonctionne mieux :

Vous devrez alors appuyer sur la touche « Entrer », ou à défaut indiquer un autre dossier d’installation que celui proposé : /root/projects

⏱️ L’installation des logiciels open source est automatisée mais cela dure environ 15/20 minutes…. temps durant lequel vous devez restez devant votre écran pour valider les installations des différents logiciels en appuyant sur les touches ‘Y’ ou ‘O’, puis sur ‘Entrer’.

➡️Une fois l’installation terminée, passez directement à l’étape 6 pour configurer les logiciels Nexcloud, Invoice Ninja et WordPress.


Si cette commande ne fonctionne pas, exécutez les suivantes :

Après avoir créé un fichier script.sh, vous allez devoir indiquez votre nom de domaine, votre adresse e-mail et un mot de passe, appuyez sur la touche ‘Entrer’ ou sur les touches ‘y’ puis ‘Entrer’ en fonction des messages affichés.

5.1.

Créez un fichier de script bash :

sudo nano juris-tyr-01.sh
5.2.

Copiez / Collez dans ce fichier ‘ juris-tyr-01.sh’ nouvellement créé le contenu suivant :

➡️ Une fois le texte copié / collé dans ce fichier juris-tyr-01.sh passez à l’étape 5.3.


#!/bin/bash
# Demandes des données pour l'installation
echo "Indiquez votre nom de domaine (exemple.com):"
read YOUR_DOMAIN
echo "Indiquez votre nom d'utilisateur administrateur pour Nextcloud, InvoiceNinja et WordPress:"
read NEXTCLOUD_USER
echo "Choisir un mot de passe long et original (https://www.avast.com/fr-fr/random-password-generator#pc) :"
read -s NEXTCLOUD_PASSWORD
echo "Confirmez votre mot de passe :"
read -s NEXTCLOUD_PASSWORD_CONFIRM
if [[ "$NEXTCLOUD_PASSWORD" != "$NEXTCLOUD_PASSWORD_CONFIRM" ]]; then
echo "Erreur : Les mots de passe saisis ne correspondent pas entre eux. Relancez le script"
exit 1
fi
echo "Indiquez votre adresse mail sous la forme co*****@ex*****.com ou jo*******@ex*****.com (si vous etes John SNOW...):"
read EMAIL
# Continue with the installation process using provided inputs
clear
echo "Mise à jour préalable du système d'exploitation..."
# Mise à jour du système
sudo apt update --quiet
sudo apt upgrade -y --quiet
echo "Installation du serveur web apache2"
sudo apt install -y --no-install-recommends --quiet apache2 apache2-utils
sudo systemctl start apache2
sudo systemctl enable apache2
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
echo "Installation du par feu UFW"
sudo apt install -y --no-install-recommends --quiet ufw
sudo ufw allow ssh
sudo ufw enable
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 25
sudo ufw allow 110
sudo ufw allow 143
sudo ufw allow 465
sudo ufw allow 587
sudo ufw allow 993
sudo ufw allow 995
sudo ufw allow 22
sudo ufw allow 21
sudo ufw allow 8000
sudo ufw allow 8080
sudo ufw allow 8892
sudo ufw allow 9200
sudo ufw allow 9300
sudo ufw allow 9980
sudo ufw allow 9981
yes | sudo ufw reload
sudo apt install -y --no-install-recommends nano
sudo nano /etc/apache2/conf-available/servername.conf <<EOL
ServerName localhost
EOL
sudo a2enconf servername.conf
sudo systemctl reload apache2
echo "Installation du serveur web apache2 terminée"
sudo chown www-data:www-data /var/www/html/ -R
sudo chown www-data:www-data /var/www/ -R
# Install MariaDB server and client
echo "Installation de MariaDB"
sudo apt install -y --no-install-recommends mariadb-server mariadb-client
# Start MariaDB (if not automatically started)
sudo systemctl start mariadb
# Enable MariaDB to start automatically on boot
sudo systemctl enable mariadb
# Run the post-installation security script
sudo mysql_secure_installation
# Prompt user to set the root password for MariaDB
read -s -p "Entrez le mot de passe root pour MariaDB
: " $NEXTCLOUD_PASSWORD
echo
# Log in to MariaDB as root
echo $NEXTCLOUD_PASSWORD | sudo mariadb -u root
# Exit MariaDB
echo "exit;" | sudo mariadb
echo "Installation de MariaDB terminée"
echo "Installation de php8.2 et php8.3"
#install php
sudo apt install -y --no-install-recommends lsb-release gnupg2 ca-certificates apt-transport-https software-properties-common
yes | sudo add-apt-repository ppa:ondrej/php
sudo apt update --quiet
sudo apt install -y --no-install-recommends --quiet php8.2 libapache2-mod-php8.2 php8.2-mysql php-common php8.2-cli php8.2-common php-fpm php8.2-json php8.2-opcache php8.2-readline
sudo a2enmod php8.2
sudo systemctl restart apache2
sudo a2dismod php8.2
sudo apt install -y --no-install-recommends --quiet php8.2-fpm
sudo a2enmod proxy_fcgi setenvif
#Activate configuration file /etc/apache2/conf-available/php8.2-fpm.conf file :
sudo a2enconf php8.2-fpm
#Restart Apache for changes to take effect :
sudo systemctl restart apache2
sudo apt update --quiet && sudo apt install -y --no-install-recommends --quiet apache2 libapache2-mod-php8.2 php8.2 php8.2-gd php8.2-mysql php8.2-curl php8.2-mbstring php8.2-xml php8.2-zip unzip certbot python3-certbot-apache postgresql libpq-dev
sudo apt install -y --no-install-recommends --quiet postgresql postgresql-contrib
# Enable necessary Apache modules
echo "Enabling required Apache modules..."
sudo a2enmod rewrite headers expires ssl
sudo systemctl restart apache2
echo "Installation de php8.2 et php8.3 terminée"
# Install PostgreSQL, create the nextcloud user and database
echo "Installation de PostgreSQL and configuration de la base de données de Nextcloud..."
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo -u postgres psql <<EOF
CREATE USER $NEXTCLOUD_USER WITH ENCRYPTED PASSWORD '$NEXTCLOUD_PASSWORD';
CREATE DATABASE nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO $NEXTCLOUD_USER;
\q
EOF
echo "Installation de Nextcloud"
sudo apt install -y --no-install-recommends unzip
# Téléchargement et extraction de Nextcloud 28.0.1

echo "Téléchargement de Nextcloud, extraction et propriété..."
cd /var/www/html
sudo wget https://download.nextcloud.com/server/releases/nextcloud-28.0.1.zip
sudo unzip nextcloud-28.0.1.zip
sudo mv nextcloud-28.0.1/* .
sudo chown -R www-data:www-data /var/www/html/nextcloud
sudo chmod 750 /var/www/html/nextcloud/config
sudo chmod 750 /var/www/html/nextcloud/core
sudo find /var/www/html/nextcloud -type f -exec chmod 640 {} \;
echo "Configuration du serveur web apache pour Nextcloud"
# Configure Apache for Nextcloud
echo "Configuring Apache for Nextcloud..."
sudo a2enconf php8.2-fpm
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
sudo a2enmod http2
cat >> /etc/apache2/sites-available/nextcloud.conf <<EOF
<VirtualHost *:80>
<IfModule mod_http2.c>
Protocols h2 http/1.1
# Solves slow upload speeds caused by http2
H2WindowSize 5242880
</IfModule>
<IfModule pagespeed_module>
ModPagespeed off
</IfModule>
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
DocumentRoot "/var/www/html/nextcloud"
ServerName cloud.$YOUR_DOMAIN
ErrorLog ${APACHE_LOG_DIR}/nextcloud.error
CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined
<Directory /var/www/html/nextcloud/>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
Satisfy Any
# Disable HTTP TRACE method.
#TraceEnable off
<Files ".ht*">
Require all denied
</Files>
</Directory>
</VirtualHost>
EOF
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite headers env dir mime setenvif ssl
sudo a2dismod php8.2
sudo a2dismod mpm_prefork
sudo a2dismod mpm_prefork
sudo systemctl restart apache2 php8.2-fpm
sudo apt install -y --no-install-recommends --quiet imagemagick libapache2-mod-php php-imagick php8.2-imagick php8.2-common php8.2-pgsql php8.2-fpm php8.2-gd php8.2-curl php8.2-imagick php8.2-zip php8.2-xml php8.2-mbstring php8.2-bz2 php8.2-intl php8.2-bcmath php8.2-gmp
sudo apt install -y --no-install-recommends --quiet imagemagick libapache2-mod-php php8.3-imagick php8.3-common php8.3-pgsql php8.3-fpm php8.3-gd php8.3-curl php8.3-imagick php8.3-zip php8.3-xml php8.3-mbstring php8.3-bz2 php8.3-intl php8.3-bcmath php8.3-gmp
sudo wget -O /usr/local/bin/php-module-builder https://global-social.net/apps/raw/s/php-module-builder
sudo chmod +x /usr/local/bin/php-module-builder
cd /usr/local/bin/
sudo php-module-builder
sudo systemctl reload apache2 php8.2-fpm php8.3-fpm
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
echo "Installation de LetsEncrypt et configuration"
sudo apt install -y --no-install-recommends --quiet certbot python3-certbot-apache
sudo certbot --apache --agree-tos --redirect --staple-ocsp --email $EMAIL -d cloud.$YOUR_DOMAIN
sudo chmod 750 /var/www/html/config
sudo chmod 750 /var/www/html/core
sudo find /var/www/html -type f -exec chmod 640 {} \;
sudo systemctl restart apache2
echo "Installation et configuration terminées ! Vous pouvez accéder à votre instance Nextcloud à
https://cloud.$YOUR_DOMAIN"
# Modify the nextcloud-le-ssl.conf file to add HSTS header
echo "Modification de nextcloud-le-ssl.conf to ajout de HSTS header..."
sudo sed -i 's/#Header always set Strict-Transport-Security "max-age=31536000"/Header always set Strict-Transport-Security "max-age=31536000"/' /etc/letsencrypt/options-ssl-apache.conf
sudo systemctl restart apache2
# Cleanup
echo "Nettoyage..."
sudo apt autoremove -y
echo "Installation de Nextcloud terminée"
echo "Amélioration des performances de Nextcloud"
#Amélioration des performances :
sudo sed -i 'pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18' /etc/php/8.2/fpm/pool.d/www.conf
sudo sed -i 'pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18' /etc/php/8.3/fpm/pool.d/www.conf
sudo systemctl reload php8.2-fpm php8.3-fpm
sudo sed -i 's/;clear_env = no/clear_env = no/g' /etc/php/8.2/fpm/pool.d/www.conf
sudo sed -i 's/;clear_env = no/clear_env = no/g' /etc/php/8.3/fpm/pool.d/www.conf
sudo sed -i 's/#Header always set Strict-Transport-Security "max-age=31536000"/Header always set Strict-Transport-Security "max-age=31536000"/' /etc/letsencrypt/options-ssl-apache.conf
sudo sed -i 's/client_max_body_size 512M;/client_max_body_size 1024M;/g' /etc/apache2/conf.d/nextcloud.conf
sudo systemctl reload apache2
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/8.2/fpm/php.ini
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/8.3/fpm/php.ini
cat >> /etc/php/8.2/fpm/php.ini <<EOF
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
EOF
cat >> /etc/php/8.3/fpm/php.ini <<EOF
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
EOF
sudo systemctl restart php8.2-fpm php8.3-fpm apache2
echo "Installation de Redis"
sudo apt install -y --no-install-recommends --quiet redis-server
sudo systemctl start redis-server
sudo systemctl enable redis-server
sudo apt install -y --no-install-recommends --quiet php8.2-redis php-redis php8.3-redis
sudo phpenmod redis
EOF
cat >> /var/www/html/nextcloud/config/config.php <<EOF
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
EOF
sudo systemctl restart apache2 php8.2-fpm php8.3-fpm
echo "Parametrage de Nextcloud"
cd /var/www/html/nextcloud/
sudo -u www-data php occ db:add-missing-indices
sudo -u www-data php occ maintenance:mode --on
sudo -u www-data php occ db:convert-filecache-bigint
sudo -u www-data php occ maintenance:mode --off
sudo cp /var/www/html/nextcloud/config/config.php /var/www/html/nextcloud/config/config.save.php
cat >> /var/www/html/nextcloud/config/config.php <<EOF
'session_lifetime' => 86400,
'remember_login_cookie_lifetime' => 1296000,
'session_relaxed_expiry' => false,
'allow_local_remote_servers' => true,
'default_language' => 'fr',
'force_language' => 'fr',
'default_locale' => 'fr_FR',
'force_locale' => 'fr_FR',
'default_phone_region' => 'FR',
'logtimezone' => 'Europe/Paris',
'allow_user_to_change_display_name' => true,
'log_rotate_size' => 52428800,
'enable_previews' => true,
'trashbin_retention_obligation' => 'auto, 4',
'loglevel' => 3,
'app_install_overwrite' =>
array (
0 => 'ojsxc',
1 => 'pdfdraw',
2 => 'files_fulltextsearch_tesseract',
3 => 'previewgenerator',
4 => 'ocr',
5 => 'emlviewer',
6 => 'talk_simple_poll',
7 => 'files_trackdownloads',
8 => 'whiteboard',
9 => 'fulltextsearch_elasticsearch',
10 => 'carnet',
11 => 'sendent',
12 => 'scanner',
13 => 'ocsms',
14 => 'files_texteditor',
15 => 'wopi',
16 => 'documentserver_community',
17 => 'pdfannotate',
18 => 'cms_pico',
19 => 'approval',
20 => 'apporder',
21 => 'extract',
22 => 'fulltextsearch',
23 => 'impersonate',
24 => 'files_fulltextsearch',
25 => 'jitsi',
26 => 'files_linkeditor',
27 => 'onlyoffice',
28 => 'pdf_downloader',
29 => 'transfer',
30 => 'files_mindmap',
31 => 'appointments',
32 => 'data_request',
33 => 'jsloader',
34 => 'user_external',
35 => 'workflow_script',
36 => 'files_scripts',
37 => 'sorts',
38 => 'side_menu',
39 => 'afterlogic',
40 => 'files_downloadactivity',
41 => 'event_update_notification',
42 => 'login_notes',
43 => 'workflow_ocr',
44 => 'files_downloadlimit',
45 => 'workflow_kitinerary',
46 => 'libresign',
47 => 'cfg_share_links',
48 => 'externalportal',
49 => 'registration',),
'enabledPreviewProviders' =>
array (
0 => 'OC\Preview\Movie',
1 => 'OC\Preview\PNG',
2 => 'OC\Preview\JPEG',
3 => 'OC\Preview\GIF',
4 => 'OC\Preview\BMP',
5 => 'OC\Preview\XBitmap',
6 => 'OC\Preview\MP3',
7 => 'OC\Preview\MP4',
8 => 'OC\Preview\TXT',
9 => 'OC\Preview\MarkDown',
10 => 'OC\Preview\PDF',
11 => 'OC\Preview\OpenDocument',
12 => 'OC\Preview\Krita',
13 => 'OC\Preview\EMF',
),
'preview_max_x' => 128,
'preview_max_y' => 128,
'preview_max_filesize_image' => 128,
'mail_smtpsecure' => 'tls',
'mail_smtpauthtype' => 'LOGIN',
'mail_smtpname' => '$EMAIL',
'mail_smtppassword' => '$NEXTCLOUD_PASSWORD',
'memcache.distributed' => 'OC\Memcache\Redis',
'memcache.local' => 'OC\Memcache\Redis',
'memcache.locking' => 'OC\Memcache\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
),
'has_rebuilt_cache' => true,
'defaultapp' => 'files,dashboard',
);
EOF
sudo sed -i ');/' /var/www/html/nextcloud/config/config.php
cat >> /var/www/html/nextcloud/config/config.php <<EOF
);
EOF
sudo apt-get install -y libmagickcore-6.q16-6-extra
sudo apt install -y --no-install-recommends --quiet ffmpeg
sudo sed -i '127.0.0.1 localhost/127.0.0.1 localhost $YOUR_DOMAIN cloud.$YOUR_DOMAIN collabora.$YOUR_DOMAIN onlyoffice.$YOUR_DOMAIN pdf.$YOUR_DOMAIN ai.$YOUR_DOMAIN visio.$YOUR_DOMAIN facturation.$YOUR_DOMAIN' /etc/hosts
echo "Tapez la touche 1 pour choisir l'éditeur de texte nano puis sur les touches Control et C"
sudo -u www-data crontab -e
echo "1"
read -s 1
$1
cat >> /tmp/nextcloud-cron.txt <<EOF
*/5 * * * * php8.2 -f /var/www/html/nextcloud/cron.php
@daily certbot renew --quiet && systemctl reload apache2
EOF
#Add the cronjob to www-data user's crontab
sudo crontab -u www-data /tmp/nextcloud-cron.txt
rm /tmp/nextcloud-cron.txt
cd /var/www/html/nextcloud
sudo -u www-data php occ app:install approval
sudo -u www-data php occ app:install bookmarks
sudo -u www-data php occ app:install certificate24
sudo -u www-data php occ app:install cfg_share_links
sudo -u www-data php occ app:install collectives
sudo -u www-data php occ app:install data_request
sudo -u www-data php occ app:install deck
sudo -u www-data php occ app:install emlviewer
sudo -u www-data php occ app:install external
sudo -u www-data php occ app:install externalportal
sudo -u www-data php occ app:install extract
sudo -u www-data php occ app:install federatedfilesharing
sudo -u www-data php occ app:install federation
sudo -u www-data php occ app:install files_accesscontrol
sudo -u www-data php occ app:install files_automatedtagging
sudo -u www-data php occ app:install files_confidential
sudo -u www-data php occ app:install files_downloadactivity
sudo -u www-data php occ app:install files_downloadlimit
sudo -u www-data php occ app:install files_external
sudo -u www-data php occ app:install files_fulltextsearch
sudo -u www-data php occ app:install fulltextsearch_elasticsearch
sudo -u www-data php occ app:install files_fulltextsearch_tesseract
sudo -u www-data php occ app:install files_linkeditor
sudo -u www-data php occ app:install files_rightclick
sudo -u www-data php occ app:install files_scripts
sudo -u www-data php occ app:install files_sharing
sudo -u www-data php occ app:install files_versions
sudo -u www-data php occ app:install flow_notifications
sudo -u www-data php occ app:install forms
sudo -u www-data php occ app:install fulltextsearch
sudo -u www-data php occ app:install fulltextsearch
sudo -u www-data php occ app:install integration_openai
sudo -u www-data php occ app:install integration_replicate
sudo -u www-data php occ app:install logreader
sudo -u www-data php occ app:install notes
sudo -u www-data php occ app:install onlyoffice
sudo -u www-data php occ app:install provisioning_api
sudo -u www-data php occ app:install recommendations
sudo -u www-data php occ app:install registration
sudo -u www-data php occ app:install sharebymail
sudo -u www-data php occ app:install side_menu
sudo -u www-data php occ app:install socialsharing_email
sudo -u www-data php occ app:install stt_whisper
sudo -u www-data php occ app:install tables
sudo -u www-data php occ app:install text_templates
sudo -u www-data php occ app:install translate
sudo -u www-data php occ app:install workflow_ocr
sudo -u www-data php occ app:install workflowengine
sudo -u www-data php occ app:install workflow_pdf_converter
sudo -u www-data php occ app:install calendar
sudo -u www-data php occ app:install contacts
sudo -u www-data php occ app:install contactsinteraction
sudo -u www-data php occ app:install richdocuments
sudo -u www-data php occ app:install activity
sudo -u www-data php occ app:install gptfreeprompt
sudo -u www-data php occ app:install memegen
sudo -u www-data php occ stt_whisper:download-models medium
sudo -u www-data php occ stt_whisper:download-models large
sudo -u www-data php occ translate:download-models
sudo apt install -y --no-install-recommends --quiet ffmpeg
yes | sudo add-apt-repository ppa:alex-p/tesseract-ocr5
sudo apt update --quiet
sudo apt install -y --no-install-recommends --quiet tesseract-ocr
sudo apt-get install -y --no-install-recommends --quiet tesseract-ocr-fra
sudo apt-get install -y --no-install-recommends --quiet tesseract-ocr-deu
echo "Paramétrage de Nextcloud terminé"
echo "Installation CollaboraOnline"
#Installation CollaboraOnline
yes | echo deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204 ./ | sudo tee /etc/apt/sources.list.d/collabora.list
yes | sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 0C54D189F4BA284D ubuntu Collabora public key
sudo wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key && yes | sudo apt-key add repomd.xml.key
sudo apt install -y --no-install-recommends --quiet apt-transport-https ca-certificates
sudo apt update --quiet
sudo apt install -y --no-install-recommends --quiet coolwsd code-brand
sudo coolconfig set ssl.enable false
sudo coolconfig set ssl.termination true
sudo coolconfig set storage.wopi.host cloud.$YOUR_DOMAIN
sudo systemctl restart coolwsd
cat >> /etc/apache2/sites-available/collabora.conf <<EOF
<VirtualHost *:80>
Protocols h2 http/1.1
ServerName collabora.$YOUR_DOMAIN
Options -Indexes
#ErrorLog "/var/log/apache2/collabora_error"
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from coolwsd
# loleaflet/browser is the client part of Collabora Online
ProxyPass /loleaflet http://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse /loleaflet http://127.0.0.1:9980/loleaflet
ProxyPass /browser http://127.0.0.1:9980/browser retry=0
ProxyPassReverse /browser http://127.0.0.1:9980/browser
# WOPI discovery URL
ProxyPass /hosting/discovery http://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery http://127.0.0.1:9980/hosting/discovery
# Capabilities
ProxyPass /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities
# Main websocket
ProxyPassMatch “/cool/(.*)/ws$” ws://127.0.0.1:9980/cool/$1/ws nocanon
# Admin Console websocket
ProxyPass /cool/adminws ws://127.0.0.1:9980/cool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /cool http://127.0.0.1:9980/cool
ProxyPassReverse /cool http://127.0.0.1:9980/cool
</VirtualHost>
EOF
sudo a2enmod proxy proxy_wstunnel proxy_http
sudo a2ensite collabora.conf
sudo apt install -y --no-install-recommends --quiet certbot
sudo apt install -y --no-install-recommends --quiet python3-certbot-apache
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email $EMAIL -d collabora.$YOUR_DOMAIN
sudo systemctl restart apache2
echo "Installation CollaboraOnline terminée"
echo "Installation d'OnlyOfffice"
#install OnlyOffice
sudo apt install -y --no-install-recommends --quiet apt-transport-https ca-certificates curl software-propertie-common
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | yes | sudo apt-key add -
yes | sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
sudo apt install -y --no-install-recommends --quiet apache2 vim docker-ce
sudo a2enmod ssl rewrite headers proxy proxy_http deflate cache proxy_wstunnel
sudo systemctl restart apache2
cat >> /etc/apache2/sites-available/onlyoffice.conf <<EOF
<VirtualHost *:80>
ServerName onlyoffice.$YOUR_DOMAIN
ErrorLog ${APACHE_LOG_DIR}/onlyoffice.$YOUR_DOMAIN.error.log
CustomLog ${APACHE_LOG_DIR}/onlyoffice.$YOUR_DOMAIN.access.log combined
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder on
SSLCompression off
SetEnvIf Host "^(.*)$" THE_HOST=$1
RequestHeader setifempty X-Forwarded-Proto https
RequestHeader setifempty X-Forwarded-Host %{THE_HOST}e
ProxyAddHeaders Off
ProxyPassMatch (.*)(\/websocket)$ "ws://127.0.0.1:9981/$1$2"
ProxyPass / "http://127.0.0.1:9981/"
ProxyPassReverse / "http://127.0.0.1:9981/"
</VirtualHost>
EOF
sudo a2ensite onlyoffice.conf
sudo systemctl restart apache2
sudo certbot –apache –agree-tos –redirect –hsts –staple-ocsp –email $EMAIL -d onlyoffice.$YOUR_DOMAIN
sudo systemctl restart apache2
sudo docker run -i -t -d --restart=always -e JWT_ENABLED=true -e JWT_SECRET=$NEXTCLOUD_PASSWORD -p 9981:80 \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/rabbitmq:/var/lib/rabbitmq \
-v /app/onlyoffice/DocumentServer/redis:/var/lib/redis \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql onlyoffice/documentserver:latest
echo "Installation d'OnlyOfffice terminée"
#installation postfix test
echo "Installation du serveur mail"
#curl -s https://mailinabox.email/setup.sh | sudo bash
echo "Pour terminer l'installation du serveur e-mail, visionnez cette vidéo : https://www.youtube.com/watch?v=9WOmkoEYMIg&t=856s"
echo "Installation de php composer"
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
echo "Installation de InvoiceNinja"
sudo wget https://github.com/invoiceninja/invoiceninja/releases/download/v5.8.23/invoiceninja.zip
sudo apt install -y --no-install-recommends --quiet unzip
sudo mkdir -p /var/www/html/invoiceninja/
sudo unzip invoiceninja.zip -d /var/www/html/invoiceninja/
sudo chown www-data:www-data /var/www/html/invoiceninja/ -R
sudo chmod 755 /var/www/html/invoiceninja/storage/ -R
sudo mysql -e "
create database invoiceninja;
create user '$NEXTCLOUD_USER'@'localhost' identified by '$NEXTCLOUD_PASSWORD';
grant all privileges on invoiceninja.* to '$NEXTCLOUD_USER'@'localhost';
flush privileges;"
sudo apt install -y --no-install-recommends --quiet software-properties-common
yes | sudo add-apt-repository ppa:ondrej/php -y
sudo apt install -y --no-install-recommends --quiet php-imagick php8.2 php8.2-mysql php8.2-fpm php8.2-common php8.2-bcmath php8.2-gd php8.2-curl php8.2-zip php8.2-xml php8.2-mbstring php8.2-bz2 php8.2-intl php8.2-gmp php8.2-fileinfo php8.2-pdo
sudo apt install -y --no-install-recommends --quiet php-imagick php8.3 php8.3-mysql php8.3-fpm php8.3-common php8.3>-bcmath php8.3-gd php8.3-curl php8.3-zip php8.3-xml php8.3-mbstring php8.3-bz2 php8.3-intl php8.3-gmp php8.3-fileinfo php8.3-pdo
sudo systemctl restart apache2
cd /var/www/html/invoiceninja/
sudo cp .env.example .env
sudo sed -i 'APP_URL=http://localhost/APP_URL=http://facturation.$YOUR_DOMAIN' /var/www/html/invoiceninja/.env
sudo sed -i 'DB_PASSWORD=ninja_password/DB_PASSWORD=$NEXTCLOUD_PASSWORD' /var/www/html/invoiceninja/.env
sudo sed -i 'PDF_GENERATOR=hosted_ninja/PDF_GENERATOR=snappdf' /var/www/html/invoiceninja/.env
sudo chown www-data:www-data /var/www/html/invoiceninja/.env
sudo php8.2 /var/www/html/invoiceninja/artisan key:generate
sudo php8.2 /var/www/html/invoiceninja/artisan migrate:fresh --seed
sudo -u www-data ./vendor/bin/snappdf download
cat >> /etc/apache2/sites-available/invoice-ninja.conf <<EOF
<VirtualHost *:80>
ServerName facturation.$YOUR_DOMAIN
DocumentRoot /var/www/html/invoiceninja/public
<Directory /var/www/html/invoiceninja/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
</VirtualHost>
EOF
sudo a2ensite invoice-ninja.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
sudo a2dissite 000-default.conf
sudo systemctl restart apache2 php8.2-fpm php8.3-fpm
sudo chown -R www-data:www-data /var/www/html/invoiceninja/ sudo find ./ -type d -exec chmod 755 {} \;
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email $EMAIL -d facturation.$YOUR_DOMAIN
sudo systemctl restart apache2
sudo chown www-data:www-data /var/www/html/invoiceninja/storage/framework/cache/data/ -R
sudo -u www-data crontab -e
cat >> /tmp/invoiceninja-cron.txt <<EOF
#InvoiceNinja
0 8 * * * /usr/bin/php8.2 /var/www/html/invoiceninja/artisan ninja:send-recurring > /dev/null
0 8 * * * /usr/bin/php8.2 /var/www/html/invoiceninja/artisan ninja:send-reminders > /dev/null
* * * * * /usr/bin/php8.2 /var/www/html/invoiceninja/artisan schedule:run >> /dev/null 2>&1
EOF
#Add the cronjob to www-data user's crontab
sudo crontab -u www-data /tmp/invoiceninja-cron.txt
rm /tmp/invoiceninja-cron.txt
echo "Installation de InvoiceNinja terminée"
echo "Installation de SignaturePDf"
sudo apt install -y --no-install-recommends --quiet php librsvg2-bin pdftk imagemagick potrace git
cd /var/www/html/
sudo git clone https://github.com/24eme/signaturepdf.git --quiet
sudo chown www-data:www-data -R /var/www/html/signaturepdf
sudo chmod 755 -R /var/www/html/signaturepdf/public
cd /var/www/html/signaturepdf/
sudo cp config/config.ini{.example,}
sudo sed -i '#PDF_STORAGE_PATH=/path/to/folder/PDF_STORAGE_PATH=/var/www/html/signaturepdf/pdfuploaded' /var/www/html/signaturepdf/config.ini
sudo mkdir /var/www/html/signaturepdf/pdfuploaded
sudo chown www-data:www-data -R /var/www/html/signaturepdf/pdfuploaded
sudo php -S localhost:8000 -t public
clear
cat >> /etc/apache2/sites-available/pdf.conf <<EOF
<VirtualHost *:80>
Servername pdf.$YOUR_DOMAIN
DocumentRoot /var/www/html/signaturepdf/public
<Directory /var/www/html/signaturepdf/public>
Require all granted
FallbackResource /index.php
php_value max_file_uploads 201
php_value upload_max_filesize 24M
php_value post_max_size 24M
</Directory>
</Virtualhost>
EOF
sudo a2ensite pdf.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email $EMAIL -d pdf.$YOUR_DOMAIN
sudo systemctl restart apache2 php8.2-fpm php8.3-fpm
cd /var/www/html/signaturepdf/
sudo git pull -r
echo "Installation de SignaturePDf terminée"
echo "Installation de WordPress"
sudo wget https://wordpress.org/latest.zip
sudo unzip latest.zip -d /var/www/
sudo mv /var/www/wordpress /var/www/$YOUR_DOMAIN
sudo mysql -e "
create database wordpress;
create user '$NEXTCLOUD_USER@localhost' identified by '$NEXTCLOUD_PASSWORD';
grant all privileges on wordpress.* to '$NEXTCLOUD_USER@localhost';
flush privileges;"
cd /var/www/$YOUR_DOMAIN
sudo cp wp-config-sample.php wp-config.php
sudo sed -i 'define( 'DB_NAME', 'database_name_here' );/define('DB_NAME', 'wordpress' );' /var/www/$YOUR_DOMAIN/wp-config.php
sudo sed -i 'define( 'DB_USER', 'username_here' );/define( 'DB_USER', 'NEXTCLOUD_USER' );' /var/www/$YOUR_DOMAIN/wp-config.php
sudo sed -i 'define( 'DB_PASSWORD', 'password_here' );/define( 'DB_PASSWORD', '$NEXTCLOUD_PASSWORD' );' /var/www/$YOUR_DOMAIN/wp-config.php
sudo chown www-data:www-data /var/www/example.com/ -R
cat >> /etc/apache2/sites-available/$YOUR_DOMAIN.conf <<EOF
<VirtualHost *:80>
ServerName www.$YOUR_DOMAIN
ServerAlias $YOUR_DOMAIN
DocumentRoot /var/www/$YOUR_DOMAIN
#This enables .htaccess file, which is needed for WordPress Permalink to work.
<Directory "/var/www/$YOUR_DOMAIN">
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/$YOUR_DOMAIN.error.log
CustomLog ${APACHE_LOG_DIR}/$YOUR_DOMAIN.access.log combined
</VirtualHost>
EOF
sudo a2ensite $YOUR_DOMAIN.conf
sudo systemctl reload apache2
sudo apt install -y --no-install-recommends --quiet php8.2-mbstring php8.2-xml php8.2-mysql php8.2-gd php8.2-bcmath php8.2-json php8.2-cli php8.2-curl php8.2-zip
sudo apt install -y --no-install-recommends --quiet certbot python3-certbot-apache
sudo certbot --apache --agree-tos --redirect --hsts --uir --staple-ocsp --email $EMAIL -d $YOUR_DOMAIN,www.$YOUR_DOMAIN
sudo systemctl restart apache2
echo "Installation de WordPress terminée"
echo "Installation de Jitsi Meet"
echo 'deb https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
sudo wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | yes | sudo apt-key add -
sudo apt install -y --no-install-recommends --quiet apt-transport-https
echo "A la prochaine étape, indiquez l'adresse : visio.exemple.com ou visio.snow-company.com puis appuyez sur la touche Enter"
sudo apt update
sudo apt install -y jitsi-meet
echo "Installation du serveur coturn"
sudo wget http://mirrors.edge.kernel.org/ubuntu/pool/universe/c/coturn/coturn_4.5.2-3.1_amd64.deb
sudo ./coturn_4.5.2-3.1_amd64.deb
sudo apt install -y --no-install-recommends jitsi-meet-turnserver
sudo ufw allow 22,80,443,5349/tcp
sudo ufw allow 10000,3478/udp
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
sudo certbot --agree-tos -a dns-cloudflare -i apache --redirect --hsts --staple-ocsp --email $EMAIL -d visio.$YOUR_DOMAIN
sudo apt install -y --no-install-recommends --quiet acl
sudo setfacl -R -m u:prosody:rx /etc/letsencrypt/live /etc/letsencrypt/archive/
sudo setfacl -R -m u:jicofo:rx /etc/letsencrypt/live /etc/letsencrypt/archive/
sudo setfacl -R -m u:jvb:rx /etc/letsencrypt/live /etc/letsencrypt/archive/
sudo systemctl restart apache2 coturn prosody jitsi-videobridge2 jicofo
echo "Installation du serveur coturn et de Jitsi Meet terminée"
echo "Installation de Ollama et de Ollama WebUI"
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo apt update --quiet
sudo apt install -y --no-install-recommends --quiet python3-pip
sudo apt install -y --no-install-recommends --quiet build-essential libssl-dev libffi-dev python3-dev
sudo apt install -y --no-install-recommends --quiet python3-venv
sudo apt install -y --no-install-recommends --quiet ca-certificates curl gnupg
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
yes | sudo echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update --quiet
sudo apt install -y --no-install-recommends --quiet nodejs
sudo apt install -y --no-install-recommends --quiet build-essential
sudo apt install -y --no-install-recommends --quiet nodejs npm
sudo curl https://ollama.ai/install.sh | sh
sudo systemctl start ollama
sudo systemctl enable enable
sudo docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main
cat >> /etc/apache2/sites-available/ai.conf <<EOF
<VirtualHost *:80>
ServerName ai.$YOUR_DOMAIN
ProxyPreserveHost On
ProxyVia On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
RewriteRule ^/(.*)?$ http://localhost:3000/$1 [P,L]
<Proxy *>
Allow from all
</Proxy>
<Location "/">
ProxyPass "http://127.0.0.1:3000/"
ProxyPassReverse "http://127.0.0.1:3000/"
Allow from all
</Location>
<Location "/">
ProxyPass "http://127.0.0.1:11434/"
ProxyPassReverse "http://127.0.0.1:11434/"
Allow from all
</Location>
ProxyPass / "http://127.0.0.1:11434"
ProxyPassReverse / "http://127.0.0.1:11434"
ProxyPass / "http://127.0.0.1:8080"
ProxyPassReverse / "http://127.0.0.1:8080"
ErrorLog ${APACHE_LOG_DIR}/ollamawebui.$YOUR_DOMAIN.error.log
CustomLog ${APACHE_LOG_DIR}/ollamawebui.$YOUR_DOMAIN.access.log combined
</VirtualHost>
EOF
sudo a2ensite ai.conf
sudo systemctl reload apache2
sudo apt install -y --no-install-recommends --quiet php8.2-mbstring php8.2-xml php8.2-mysql php8.2-gd php8.2-bcmath php8.2-json php8.2-cli php8.2-curl php8.2-zip
sudo apt install -y --no-install-recommends --quiet certbot python3-certbot-apache
sudo certbot --apache --agree-tos --redirect --hsts --uir --staple-ocsp --email $EMAIL -d ai.$YOUR_DOMAIN
sudo systemctl restart apache2
echo "Installation de Ollama et de Ollama WebUI terminée"
echo "Installation du LLM Vigostral"
cd ~/
sudo wget https://huggingface.co/TheBloke/Vigostral-7B-Chat-GGUF/resolve/main/vigostral-7b-chat.Q4_K_M.gguf
cat >> ~/Modelfile <<EOF
FROM ~/vigostral-7b-chat.Q4_K_M.gguf
PARAMETER temperature 0.2
SYSTEM """You are a helpfull assistant who answer always in French."""
EOF
sudo ollama create vigostral-local -f Modelfile
echo "Installation du LLM Vigostral terminée"
echo "Installation de Whisper WebUI - logiciel de reconnaissance vocale"
cd /var/www/html/
sudo git clone https://github.com/xenova/whisper-web.git --quiet
cd /var/www/html whisper-web
sudo npm install
sudo chown www-data:www-data -R /var/www/html/whisper-web
sudo chmod 775 -R /var/www/html/whisper-web
sudo npm run dev
cat >> /etc/apache2/sites-available/vocal.conf <<EOF
<VirtualHost *:80>
ServerName vocal.$YOUR_DOMAIN
ProxyPreserveHost On
ProxyVia On
ProxyPass / http://127.0.0.1:5173/
ProxyPassReverse / http://127.0.0.1:5173/
<Proxy *>
Allow from all
</Proxy>
<Location "/">
ProxyPass "http://127.0.0.1:5173/"
ProxyPassReverse "http://127.0.0.1:5173/"
Allow from all
</Location>
ErrorLog ${APACHE_LOG_DIR}/whisperweb.$YOU_DOMAIN.error.log
CustomLog ${APACHE_LOG_DIR}/whisperweb.$YOUR_DOMAIN.access.log combined
</VirtualHost>
EOF
sudo a2ensite vocal.conf
sudo systemctl reload apache2
sudo certbot --apache --agree-tos --redirect --hsts --uir --staple-ocsp --email $EMAIL -d vocal.$YOUR_DOMAIN
sudo systemctl restart apache2
echo "Installation de Whisper WebUI terminée"
IP_ADDRESS=$(dig +short myip.opendns.com @resolver1.opendns.com)
echo "L'addresse IP de ce server est : $IP_ADDRESS"
echo "Votre nom d'utilisateur principal pour Nextcloud, InvoiceNinja et WordPress est : $NEXTCLOUD_USER"
echo "Votre mot de passe principal est : $NEXTCLOUD_PASSWORD"
echo "Votre nom de domaine est : $YOUR_DOMAIN"
echo "Le nouveau port pour accéder au serveur via ssh n'est plus 22 mais 34067"
echo "Modification du port pour accéder au serveur via ssh de 22 en 34067"
sudo sed -i '#Port 22/#Port 34067' /etc/ssh/sshd_config
sudo ufw allow 34067/tcp
Yes | sudo ufw reload
sudo /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 34067 -j ACCEPT
echo "Attention, le nouveau port pour accéder au serveur via ssh n'est plus 22 mais 34067"
5.3.

Désormais, faisons en sorte que ce fichier script soit exécutable par le système :

sudo chmod +x juris-tyr-01.sh

5.4.

Enfin, exécutons ce script en mode super utilisateur (root) avec les commandes suivantes :

sudo su
./juris-tyr-01.sh

Vous allez devoir taper :

  1. votre nom de domaine : exemple.com
  2. un nom d’utilisateur principal, par exemple : johnsnow (ou n’importe quelle autre nom d’utilisateur si vous n’êtes pas John SNOW)
  3. un mot de passe : mon-super-mot-de-passe-tres-complique!-de-2024
  4. votre adresse e-mail : co*****@ex*****.com

Puis, vous devrez appuyer sur la touche ‘Entrer’ ou sur les touches ‘Y’ ou ‘O’, puis ‘Entrer’ en fonction des messages affichés…

…A un certain moment de l’installation, il vous sera demandé ou installer des scripts pour certaines extensions php8.3 pour que Nextcloud fonctionne mieux :

Vous devrez alors appuyer sur la touche « Entrer », ou à défaut indiquer un autre dossier d’installation que celui proposé : /root/projects

⏱️ L’installation des logiciels open source est automatisée mais cela dure environ 15/20 minutes…. temps durant lequel vous devez restez devant votre écran pour valider les installations des différents logiciels en appuyant sur les touches ‘Y’ ou ‘O’, puis sur ‘Entrer’.


🏆 L’installation terminée, vous pouvez vous connecter aux différents logiciels et les adapter ou les personnaliser à votre entreprise ou cabinet d’avocats.

🧑‍💻Vous accèderez aux logiciels de votre plateforme, en tapant les adresses suivantes dans la barre d’adresse de votre navigateur (remplacer exemple.com par le nom de domaine de votre entreprise ou cabinet d’avocats) :

  • cloud.exemple.com : pour accéder à Nextcloud, l’application de gestion de fichiers et de collaboration avec vos collaborateurs et clients
  • facturation.exemple.com  : pour accéder à l’application de facturation Invoiceninja afin d’envoyer des factures et des propositions de devis à vos clients
  • onlyoffice.exemple.com : pour accéder à la suite bureautique en ligne Onlyoffice afin de créer et d’éditer des documents Office Word, Excel…
  • visio.exemple.com : pour accéder à Jitsi Meet afin d’organiser des visioconférences avec vos clients ou vos partenaires
  • pdf.exemple.com : pour accéder à SignaturePDF afin d’annoter et modifier des fichiers PDF de manière confidentielle
  • exemple.com/wp-login : pour accéder à l’interface administrateur de WordPress afin de créer et d’éditer votre site internet ‘exemple.com’ à destination de vos clients
  • ai.exemple.com : pour accéder à ‘LibreChat’, logiciel d’intelligence artificielle permettant utiliser des LLM open source tel que Mistral ou GPT4 de la société OpenAI (avec une clé API)
  • vocal.exemple.com : pour utiliser la reconnaissance vocale Whisper de la société OpenAI avec un hébergement des données vocales sur votre serveur / VPS


6. Etape 6 – Configuration et personnalisation de la solution logicielle

6.1. Configurez Nextcloud :

Indiquez dans la barre d’adresse de votre navigateur l’adresse crée : https://cloud.exemple.com

Puis, pour terminer l’installation de Nextcloud, vous devez :
1 – Créer un compte administrateur :
Username : John SNOW (ou choisir « admin », un nom d’utilisateur / administrateur de votre choix)
Password : mon-super-mot-de-passe-tres-complique!-de-2024
2 – Saisir le chemin du dossier de données Nextcloud (il est pré-rempli en principe) ;
3 – Cliquer sur le bouton « Postgre SQL »
4 – Entrer les détails de la base de données :
johnsnow (le nom d’utilisateur que vous avez choisi auparavant)
mon-super-mot-de-passe-tres-complique!-de-2024
nexcloud (le nom de la base de données)
localhost (vous pouvez également indiquer localhost:5432 comme adresse d’hôte, car PostgreSQL écoute sur le port 5432)

Nextcloud est installé !


6.2. Configurez InvoiceNinja :

Accédez à l’adresse https://facturation.exemple.com/setup pour lancer l’assistant de configuration Web du logiciel InvoiceNinja.

https://www.linuxbabe.com/ubuntu/install-invoiceninja-ubuntu-22-04-apache-nginx

1 – Tout d’abord, vous devez désigner une URL pour votre installation InvoiceNinja : https://facturation.exemple.com

2 – Cliquez ensuite sur le bouton ‘Tester le PDF’ .

3 – Si cela réussit, vous entrerez alors les informations d’identification de connexion à la base de données : votre nom d’utilisateur principal que vous avez choisi lors de l’exécution du script, puis votre mot de passe principal :
localhost (prérempli)
3306 (prérempli)
invoiceninja (prérempli)
johnsnow (le nom d’utilisateur que vous avez choisi auparavant)
mon-super-mot-de-passe-tres-complique!-de-2024

https://www.linuxbabe.com/ubuntu/install-invoiceninja-ubuntu-22-04-apache-nginx

4 – Cliquez sur le bouton Tester la connexion .

5 – Ensuite, entrez les paramètres SMTP pour vous assurer qu’il peut mettre fin aux factures de vos clients par e-mail.

  • Host: imap.avocat.fr
  • Username: ca*******************@av****.fr
  • Password: votre-mot-de-passe-de-votre-adresse-e-mail-avocat.fr
  • Port: 587
  • Encryption: STARTTLS

7 – Cliquez ensuite sur le bouton ‘Envoyer un e-mail de test’ sur le site internet pour vérifier si cela fonctionne.

https://www.linuxbabe.com/ubuntu/install-invoiceninja-ubuntu-22-04-apache-nginx

8 – Enfin, créez un compte administrateur.

https://www.linuxbabe.com/ubuntu/install-invoiceninja-ubuntu-22-04-apache-nginx

9 – Après avoir créé l’utilisateur administrateur, vous pouvez vous connecter à InvoiceNinja à l’adresse https://facturation.exemple.com et le configurer selon votre entreprise.


6.3. Configurez WordPress :

Connectez vous à l’adresse : https://exemple.com

1 – Créez un compte administrateur et cliquez sur le bouton Installer WordPress .

Désormais, votre nouveau site WordPress est installé.

2 – Pour éditer votre site WordPress pour le personnaliser à votre entreprise ou cabinet d’avocats, connectez-vous à l’adresse :

https://exemple.com/wp-admin

Félicitations WordPress est installé !


🆘 Vous souhaitez que nous nous occupions de l’installation, des mises à jour régulières et/ou de l’assistance technique ?
➡️ Consultez nos offres de services…

7. Installation d’un serveur mail avec Modoboa :

➡️ Connectez vous à votre serveur / VPS via le logiciel Putty, en indiquant le port 22 (si vous n’avez pas utilisé le premier script) ou le port 34067 tel qu’il a été modifié lors de l’exécution du premier script.

➡️ Exécutez la commande suivante :
Copiez / collez dans le terminal du logiciel Putty la commande suivante, puis appuyez sur la touche « Entrer ».

bash <(wget -qO- https://raw.githubusercontent.com/Arthur-Llevelys/Juris-Tyr/main/mail-script-modaboa-apache2);

➡️ Vous allez devoir indiquer :

  1. votre nom de domaine : exemple.com
  2. un nom d’utilisateur principal en lettres minuscules, par exemple : johnsnow (ou n’importe quelle autre nom d’utilisateur si vous n’êtes pas John SNOW)
  3. votre adresse e-mail : co*****@ex*****.com

Puis, vous devrez appuyer sur la touche ‘Entrer’

⏱️ L’installation du serveur mail est automatisée mais cela dure environ 10 minutes…. temps durant lequel vous devez restez devant votre écran pour valider les installations des différents progiciels en appuyant sur les touches ‘Y’ ou ‘O’, puis sur ‘Entrer’.

➡️ Puis passez directement à l’étape 8.


Si cette commande ne fonctionne pas, exécutez les suivantes :

7.1.

➡️ 1️⃣/4️⃣ – Créez un nouveau fichier de script bash :

sudo nano mail-script.sh
7.2.

➡️ 2️⃣/4️⃣ – Copiez / Collez dans ce fichier ‘ mail-script.sh’ nouvellement créé le contenu suivant :

➡️ Une fois le texte copié / collé dans ce fichier mail-script.sh passez à l’étape 4.3.

!/bin/bash
Demandes des données pour l'installation
echo "enregistrez une adresse DNS : mail.$YOUR_DOMAIN mx record"
echo "Indiquez votre nom de domaine (exemple.com):"
read YOUR_DOMAIN
echo "Indiquez votre prénom en lettres miniscules (john):"
read MODOBOA_USER
echo "Indiquez votre adresse mail sous la forme co*****@ex*****.com ou jo*******@ex*****.com (si vous etes John SNOW…):"
read EMAIL
adduser $MODOBOA_USER
su - $MODOBOA_USER
echo "Continue with the installation process using provided inputs"
clear
sudo apt-get install --no-install-recommends --quiet libapache2-mod-wsgi
sudo systemctl restart apache2
sudo git clone https://github.com/modoboa/modoboa-installer
sudo apt-get install --no-install-recommends --quiet python-virtualenv python-pip
cd modoboa-installer
sudo ./run.py --stop-after-configfile-check $YOUR_DOMAIN
sudo sed -i 'type = letsencrypt/#type = letsencrypt' ./modoboa-installer/installer.cfg
sudo sed -i 'type = nginx/type = self-signed' ./modoboa-installer/installer.cfg
sudo sed -i '[nginx]
enabled = true/[nginx]
enabled = false' ./modoboa-installer/installer.cfg
echo "#sudo nano installer.cfg
sudo hostnamectl set-hostname mail.$YOUR_DOMAIN
sudo ./run.py --interactive $YOUR_DOMAIN
cat >> /etc/apache2/sites-available/modoboa.conf <<EOF
<VirtualHost *:80>
ServerName mail.$YOUR_DOMAIN
DocumentRoot /srv/modoboa/instance/
Alias /media/ /srv/modoboa/media/
<Directory /srv/modoboa/media/>
Options FollowSymLinks
Require all granted
</Directory>
Alias /sitestatic/ /srv/modoboa/sitestatic/
<Directory /srv/modoboa/sitestatic/>
Options FollowSymLinks
Require all granted
</Directory>
Alias /new-admin /srv/modoboa/frontend
<Directory /srv/modoboa/frontend>
Options FollowSymLinks
Require all granted
</Directory>
WSGIScriptAlias / /srv/modoboa/instance/wsgi.py
WSGIApplicationGroup %{GLOBAL}
# Pass Authorization header to enable API usage:
WSGIPassAuthorization On
LogLevel info
</VirtualHost>
EOF
sudo a2ensite modoboa.conf sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
echo "Installation de LetsEncrypt et configuration"
sudo apt install -y --no-install-recommends --quiet certbot python3-certbot-apache
sudo certbot --apache --agree-tos --redirect --staple-ocsp --email $EMAIL -d mail.$YOUR_DOMAIN
sudo systemctl restart apache2 sudo bash -c 'echo "" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo " Options Indexes FollowSymLinks" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo " AllowOverride None" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo " Require all granted" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "WSGIScriptAlias / /srv/modoboa/instance/instance/wsgi.py" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "WSGIPythonHome /srv/modoboa/env/" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "WSGIPythonPath /srv/modoboa/instance/" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo " " >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo " Require all granted" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "WSGIPassAuthorization On" >> /etc/apache2/apache2.conf'
sudo apt-get install -y --no-install-recommends --quiet software-properties-common
yes | sudo add-apt-repository ppa:certbot/certbot
sudo apt update --quiet
sudo apt install -y --no-install-recommends --quiet python-certbot-apache
sudo certbot renew --dry-run
sudo bash -c 'echo "WSGIDaemonProcess your-domain.com python-path=/srv/modoboa/instance:/srv/modoboa/env/lib/python2.7/site-packages" >> /etc/apache2/apache2.conf'
sudo bash -c 'echo "WSGIProcessGroup $YOUR_DOMAIN" >> /etc/apache2/apache2.conf'
sudo apt install dovecot-pop3d
sudo crontab -e
@daily /usr/bin/certbot renew -q && systemctl reload apache2 postfix dovecot
echo "Tapez la touche 1 pour choisir l'éditeur de texte nano puis sur les touches Control et C"
sudo -u www-data crontab -e
echo "1"
read -s 1
$1
cat >> /tmp/modoboa.txt <<EOF
@daily systemctl reload postfix dovecot
MAITO=$EMAIL
EOF
#Add the cronjob to www-data user's crontab
sudo crontab -u www-data /tmp/modoboa-cron.txt
rm /tmp/nextcloud-cron.txt
clear
echo "The installation process can take a while. It took 10 minutes on my server. Once it’s installed, restart your server to make sure each service will start automatically."
#sudo shutdown -r now
#If you see an error during the installation, you can use the --debug option to see the more detailed output:
#sudo ./run.py --interactive --debug example.com
echo "Une fois que Modoboa a terminé l'installation, vous pouvez vous connecter au panneau d'administration avec le nom d'utilisateur admin et le mot de passe."
echo "Allez sur https://mail.votre-domaine.com"
echo "Votre connexion est Admin et le mot de passe est mot de passe. Une fois connecté, changez votre nom d'utilisateur et/ou votre mot de passe. Cliquez sur le nom d'utilisateur en haut à droite du panneau de menu, puis allez dans paramètres, profil pour effectuer les modifications. Pour configurer des domaines pour le serveur, cliquez sur Domaines dans la barre de menu supérieure, puis cliquez sur le bouton Ajouter+. Assurez-vous d'activer la signature Dkim. Une fois le domaine configuré, vous pouvez récupérer la clé publique pour DKIM en sélectionnant Domaines dans la barre de menu supérieure, puis cliquez sur le nom de domaine. Cliquez sur le bouton Afficher la clé dans la zone DNS en haut à droite. Vous devrez ajouter la clé de domaine à vos paramètres DNS."
echo "Vous devez modifier les ports IMAP et SMTP et activer SSL/TLS. Cliquez sur Modoboa dans la barre de menu, puis sélectionnez l'onglet Webmail. Sous les paramètres IMAP, cliquez sur le bouton radio pour utiliser une connexion sécurisée. et changez le port en 993. Sous les paramètres SMTP, cliquez sur le bouton radio pour activer STARTTLS, changez le port du serveur en 587, puis cliquez sur le bouton radio 'Oui' pour exiger l'authentification. Cliquez sur Enregistrer."
echo "Allez dans l'onglet Domaines et cliquez sur le bouton Ajouter pour ajouter un nouveau domaine."
echo "Dans l'écran suivant, vous pouvez choisir de créer un compte administrateur pour votre domaine. Le protocole SMTP exige qu'un serveur de messagerie ait une adresse postmaster@$YOUR_DOMAIN."
echo "Ensuite, entrez votre nom de domaine principal dans le champ Nom. Il est fortement recommandé d'activer la signature DKIM, ce qui peut contribuer à la réputation de votre domaine. Dans le champ Sélecteur de clé, vous pouvez saisir un mot aléatoire comme modoboa. Choisissez 2048 comme clé. longueur."
echo "Cliquez sur le bouton Soumettre et votre nom de domaine sera ajouté dans Modoboa."
echo "Notez que le compte administrateur par défaut créé lors de l'installation n'est pas un compte de messagerie. Pour ajouter des adresses e-mail, accédez à l'onglet Domaines et cliquez sur votre nom de domaine."
echo "Puis cliquez sur les boîtes aux lettres."
echo "Cliquez sur le bouton Ajouter et choisissez Compte."
echo "Ensuite, choisissez Utilisateur simple comme rôle. Entrez une adresse e-mail dans le champ Nom d'utilisateur et entrez un mot de passe." echo "Dans l'écran suivant, vous pouvez éventuellement créer un alias pour cette adresse e-mail. Après avoir cliqué sur le bouton Soumettre, l'adresse e-mail est créée"
7.3.

➡️ 3️⃣/4️⃣ – Désormais, faisons en sorte que ce fichier script soit exécutable par le système :

sudo chmod +x mail-script.sh

7.4.

➡️ 4️⃣/4️⃣ – Enfin, exécutons ce script en mode super utilisateur (root) avec les commandes suivantes :

sudo su
./mail-script.sh

Vous allez devoir taper :

  1. votre nom de domaine : exemple.com
  2. un nom d’utilisateur principal, par exemple : johnsnow (ou n’importe quelle autre nom d’utilisateur si vous n’êtes pas John SNOW)
  3. un mot de passe : mon-super-mot-de-passe-tres-complique!-de-2024
  4. votre adresse e-mail : co*****@ex*****.com

Puis, vous devrez appuyer sur la touche ‘Entrer’

⏱️ L’installation du serveur mail est automatisée mais cela dure environ 10 minutes…. temps durant lequel vous devez restez devant votre écran pour valider les installations des différents prologiciels en appuyant sur les touches ‘Y’ ou ‘O’, puis sur ‘Entrer’.


Etape 8 – Configuration de modaboa :

Une fois que Modoboa a terminé l’installation, vous pouvez vous connecter au panneau d’administration avec le nom d’utilisateur admin et le mot de passe por gérer les adresses e-mails de votre serveur.

Connectez vous à l’adresse : https://mail.exemple.com

Votre identifiant de connexion est : Admin
et le mot de passe est : password

https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Une fois connecté à Modoboa, changez votre nom d’utilisateur et/ou votre mot de passe.

Cliquez sur le nom d’utilisateur en haut à droite du panneau de menu, puis allez dans paramètres >> profil pour effectuer les modifications.

https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Configurez votre serveur mail.exemple.com :
8.1. Configuration initiale :

Pour configurer des domaines pour le serveur, cliquez sur Domaines dans la barre de menu supérieure, puis cliquez sur le bouton Ajouter (+ Add).

https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Assurez-vous d’activer la signature Dkim. Une fois le domaine configuré, vous pouvez récupérer la clé publique pour DKIM en sélectionnant Domaines dans la barre de menu supérieure, puis cliquez sur le nom de domaine.

https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Cliquez sur le bouton Afficher la clé dans la zone DNS en haut à droite. Vous devrez ajouter la clé de domaine à vos paramètres DNS.

https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

8.2. Ajoutez des adresses e-mail :

Pour ajouter des adresses e-mail, accédez à l’onglet Domaines et cliquez sur votre nom de domaine.

https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Puis cliquez sur les boîtes aux lettres.

https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Cliquez sur Ajouter et choisissez Compte.

modoboa alias
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Choisissez ensuite Utilisateur simple comme rôle. Entrez une adresse e-mail dans le champ Nom d’utilisateur et entrez un mot de passe.

qucikly set up an email server modoboa
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Dans l’écran suivant, vous pouvez éventuellement créer un alias pour cette adresse e-mail.

create alias in modoboa
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Après avoir cliqué sur le bouton Soumettre, l’adresse e-mail est créée.

Envoi d’e-mails de test :

Pour vous connecter à la messagerie Web, vous devez d’abord vous déconnecter du compte administrateur, puis saisir les informations d’identification de l’utilisateur.

modoboa login
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Une fois connecté au webmail Modoboa, vous pouvez envoyer un e-mail test depuis votre serveur de messagerie privé vers votre autre adresse e-mail et vice versa.

modoboa webmail
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Les e-mails entrants seront retardés de quelques minutes, car par défaut Modoboa active la liste grise, qui indique aux autres serveurs SMTP d’envoi de réessayer dans quelques minutes. Ceci est utile pour bloquer le spam.

Le message suivant dans /var/log/mail.log indique que la liste grise est activée.

postfix/postscreen[20995] : NOQUEUE : rejet : RCPT de [34.209.113.130]:36980 : 450 4.3.2 Service actuellement indisponible ;

Cependant, la liste grise peut être plutôt ennuyeuse. Vous pouvez le désactiver en éditant le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Recherchez les lignes suivantes à la fin du fichier et commentez-les. (Ajoutez un caractère # au début de chaque ligne.)

postscreen_pipelining_enable = yes 
postscreen_pipelining_action = enforce
postscreen_non_smtp_command_enable = yes
postscreen_non_smtp_command_action = enforce
postscreen_bare_newline_enable = yes
postscreen_bare_newline_action = enforce

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix pour que les modifications prennent effet. sudo systemctl restart postfix

Vous devriez désormais pouvoir recevoir des e-mails sans attendre plusieurs minutes.

Ajout d’un espace d’échange :

ClamAV est utilisé pour analyser les virus dans les messages électroniques. ClamAV peut utiliser une bonne quantité de RAM et s’il n’y a pas assez de RAM sur votre serveur, ClamAV ne fonctionnera pas correctement, ce qui empêchera votre serveur de messagerie d’envoyer des emails.

Vous pouvez ajouter un fichier d’échange à votre serveur pour augmenter la RAM totale sur votre serveur. (Notez que l’utilisation de l’espace de swap sur le serveur dégradera les performances du serveur. Si vous souhaitez de meilleures performances, vous devez mettre à niveau la RAM physique au lieu d’utiliser l’espace de swap.)

Pour ajouter de l’espace de swap sur le serveur, utilisez d’abord la commande fallocate pour créer un fichier. Par exemple, créez un fichier nommé swapfile avec une capacité de 1 Go dans le système de fichiers racine :

sudo fallocate -l 1G /swapfile

Assurez-vous ensuite que seul root peut y lire et y écrire.

sudo chmod 600 /swapfile

Formatez-le pour échanger :

sudo mkswap /swapfile

Résultat:

Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433

Activer le fichier d’échange

sudo swapon /swapfile

Pour monter l’espace d’échange au démarrage du système, modifiez le fichier /etc/fstab.

sudo nano /etc/fstab

Ajoutez la ligne suivante au bas de ce fichier.

/swapfile swap swap defaults 0 0

Enregistrez et fermez le fichier. Rechargez ensuite systemd et redémarrez ClamAV.

sudo systemctl daemon-reload 
sudo systemctl restart clamav-daemon

Mode d’emploi : Utilisation des clients de messagerie sur votre ordinateur ou appareil mobile :

Lancez votre client de messagerie de bureau tel que Mozilla Thunderbird et ajoutez un compte de messagerie.

  • Dans la section du serveur entrant, sélectionnez le protocole IMAP, saisissez mail.exemple.com comme nom de serveur, choisissez le port 143 et STARTTLS. Choisissez un mot de passe normal comme méthode d’authentification.
  • Dans la section sortante, sélectionnez le protocole SMTP, saisissez mail.exemple.com comme nom de serveur, choisissez le port 587 et STARTTLS. Choisissez un mot de passe normal comme méthode d’authentification.

Activation du port SMTPS 465 pour utiliser Microsoft Outlook :

Si vous comptez utiliser le client Microsoft Outlook, vous devez alors activer le port SMTPS 465 dans le serveur Postfix.


Conseil : Amélioration de la réputation de votre serveur de messagerie :

Pour éviter que vos e-mails ne soient signalés comme spam, vous devez définir des enregistrements DKIM et DMARC .

DKIM :

Un enregistrement DKIM (DomainKeys Identified Mail) consiste à utiliser une clé privée pour signer numériquement les e-mails envoyés depuis votre nom de domaine. Les serveurs SMTP de réception vérifient la signature à l’aide de la clé publique, qui est publiée dans l’enregistrement DNS DKIM.

Lorsque nous avons ajouté le nom de domaine dans le panneau d’administration de Moboboa plus tôt, nous avons activé la signature DKIM, la partie signature est donc prise en charge. Il ne reste plus qu’à créer un enregistrement DKIM dans le gestionnaire DNS de votre fournisseur de nom de domaine.

Accédez d’abord au panneau d’administration Modoboa en tant qu’utilisateur administrateur et sélectionnez votre nom de domaine.

Dans la section DNS, cliquez sur le bouton Afficher la clé.

modoboa dkim signing
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

La clé publique sera révélée. Il existe deux formats. Nous n’avons besoin que du format Bind/named.

modoboa dkim public key
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Accédez à votre gestionnaire de nom de domaine, créez un nouvel enregistrement « TXT », saisissez « modoboa._domainkey » dans le champ Nom.

Copiez tout le texte entre parenthèses et collez-le dans le champ de valeur.

Supprimez tous les guillemets doubles.

Votre gestionnaire de nom de domaine peut vous demander de supprimer d’autres caractères non valides, tels que le retour chariot, pour valider ce nouvel enregistrement

modoboa dkim format
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Notez que votre enregistrement DKIM peut avoir besoin d’un certain temps pour se propager sur Internet. Selon le registraire de domaine que vous utilisez, votre enregistrement DNS peut se propager instantanément, ou cela peut prendre jusqu’à 24 heures.

Vous pouvez aller sur le site internet :  https://www.dmarcanalyzer.com/dkim/dkim-check/, saisissez modoboa comme sélecteur et saisissez votre nom de domaine pour vérifier la propagation des enregistrements DKIM.

Modoboa utilise OpenDKIM pour générer une clé privée pour votre clé de domaine et vérifier les signatures des e-mails entrants.


DMARC Record :

DMARC signifie Authentification, reporting et conformité des messages basés sur le domaine. DMARC peut aider les serveurs de réception de courrier électronique à identifier les courriers électroniques légitimes et à empêcher que votre nom de domaine ne soit utilisé par usurpation de courrier électronique.

Pour créer un enregistrement DMARC, accédez à votre gestionnaire DNS et ajoutez un enregistrement TXT. Dans le champ du nom, saisissez _dmarc.

Dans le champ valeur, saisissez ce qui suit :

v=DMARC1; p=none; pct=100; rua=mailto:dm***********@ex*****.com" data-original-string="yDtye21Kpj4KpYaPGzwbnjWNBwYY8WTABncyNTGLxfE=" title="This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.

en remplaçant exemple.com par votre nom de domaine

create dmarc record txt
https://www.linuxbabe.com/mail-server/debian-12-bookworm-modoboa

Etape 9 – Sécurisez votre l’accès à votre serveur VPS :

Nous avons déjà modifié le port d’accès au serveur VPS qui était 22 en 34067 via une connexion SSH. Nous allons désormais installer une double authentification lorsque vous vous connectez à votre serveur VPS.

L’authentification en deux étapes permet d’ajouter une sécurité en plus du mot de passe, à savoir un code généré par une application spécifique sur votre smartphone.

Une fois connecté à votre serveur VPS avec le logiciel Putty sous le nouveau port d’accès 34067 (et non plus 22), exécutez les commandes suivantes :

sudo apt-get install libpam-google-authenticator

Puis exécutez la commande :

google-authenticator

Le logiciel vous demande si vous voulez des codes limités dans le temps.

➡️ Répondez oui en appuyant sur la touche ‘y’.

Illustration d'un cadenas avec un code PIN
https://korben.info/activer-lauthentification-2-etapes-serveur-ssh.html

Ensuite, le logiciel Google Authenticator générera un QR Code.

➡️ Vous devez prendre votre smartphone installer l’application Authenticator (iOS ou Android).

➡️ Puis vous devez flasher le QR Code qui s’est affiché sur votre écran d’ordinateur.

Vous pouvez aussi y accéder via l’URL fournie dans le terminal.

Une série de codes d’urgences va s’afficher dans le terminal :

Capture d'écran de la page de configuration du serveur SSH
https://korben.info/activer-lauthentification-2-etapes-serveur-ssh.html

➡️ Vous devez impérativement copier ces codes dans un fichier que vous conserverez (ou les écrire sur un papier). Cela vous permettra de vous connecter quand même à votre serveur même si votre téléphone vous a lâché ou que vous l’avez formaté.

➡️ Appuyez ensuite sur la touche « y » pour mettre à jour la configuration Google Authenticator.

Le logiciel vous posera 3 questions relatives à la configuration.

Schéma expliquant le processus de l'authentification en 2 étapes
https://korben.info/activer-lauthentification-2-etapes-serveur-ssh.html

La première conserve l’utilisation multiple du même code.

➡️ Appuyez sur la touche « y » pour désactiver cette possibilité (en cas d’attaques Mitm (man in the middle))

Le logiciel vous demandera également la durée de péremption des codes. Par défaut, un code est valide 1min30 après qu’il soit passé. Cela permet d’absorber les latences qu’elles soient réseau ou humaines (si vous avez tendance à taper sur votre clavier lentement, une touche / un doigt à la fois).

➡️ Appuyez sur la touche ‘n’ sauf si vous voulez passer cette durée à 4 min.

Le logiciel vous demandera enfin d’activer une limite maximum de codes erronés (contre les attaques de type bruteforce.

➡️ Appuyez sur la touche ‘y’.

Il faut désormais configurer le logiciel ssh-server pour qu’il prenne en compte ce nouveau module.

Ouvrez et éditez le fichier /etc/pam.d/sshd

sudo nano /etc/pam.d/sshd

et ajoutez y la ligne :

auth required pam_google_authenticator.so
Photo d'un smartphone utilisé pour l'authentification en 2 étapes
https://korben.info/activer-lauthentification-2-etapes-serveur-ssh.html

Puis éditez le fichier :

sudo nano /etc/ssh/sshd_config

Et mettez à « yes », la ligne :

ChallengeResponseAuthentication yes
Graphique montrant l'augmentation de la sécurité avec l'authentification en 2 étapes
https://korben.info/activer-lauthentification-2-etapes-serveur-ssh.html

Puis relancez ssh :

sudo /etc/init.d/ssh restart

➡️ Faites un essai en lançant une nouvelle connexion SSH en ouvrant de nouveau le logiciel Putty.

Ne quittez pas votre connexion en cours, car si vous avez fait une erreur quelque part, vous ne pourrez plus vous connecter via SSH à votre serveur…

Votre serveur va vous demander votre mot de passe, puis votre code généré par l’application installée sur votre smartphone.

Image représentant un pirate informatique tentant d'accéder à un serveur SSH
https://korben.info/activer-lauthentification-2-etapes-serveur-ssh.html

Félicitations ! vous venez de sécuriser votre accès SSH à votre serveur VPS.


🆘 Vous souhaitez que nous nous occupions de l’installation, des mises à jour régulières et/ou de l’assistance technique ?
➡️ Consultez nos offres de services…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *