Auto-hébergement, Libre, Logiciel, Self-hosting, Synology

Installer Spliit sur son serveur

A la découverte d’un logiciel de comptes en amis façons Tricount, open source et auto hébergeable en quelques minutes sur votre serveur !

Vous avez forcément déjà utilisé Tricount, LE logiciel de tenue de comptes entre amis ou famille, lors de vacances, repas… mais entre les publicités, les limites de nombre d’évènements, et l’aspect propriétaire, il est grand temps de trouver des alternatives !

Pour ma part, j’utilise depuis longtemps I Hate Money, qui est une très bonne alternative, open source, auto hébergée, connectable à des applications mobile. Malheureusement, le projet n’évolue plus depuis 2023 et le fonctionnement des dépenses / remboursements est assez fastidieux (à mon goût).

Logo de Spliit

J’ai trouvé un autre projet, Spliit, fièrement développé par des québecois (suffisamment rare pour être mentionné ^^). Cette application est également open source, et auto hébergeable en quelques minutes sur votre serveur. Le projet est disponible sur Github et vous pouvez évidemment filer un coup de pouce financier au développeur 😉

Vous pouvez opter pour deux types d’installation, via Docker ou nativement sur votre serveur, ce que nous allons faire ici.

Dans mon cas, l’installation sera faite sur un serveur Synology. Malgré quelques spécificités, le tuto devrait être déclinable facilement sur n’importe quelle distribution de Linux.

Déploiement des sources

Dans un premier temps, nous allons cloner le dépôt Github de Spliit dans le dossier web de notre serveur. Connectez-vous en SSH à votre serveur à l’aide de votre terminal préféré, et rendez-vous dans le dossier web du serveur pour y télécharger les sources :

cd /volume1/web
git clone https://github.com/spliit-app/spliit.git

Cela va créer automatiquement le dossier spliit, et déployer les sources de l’application.

Installation et configuration de PostgreSQL

Nous allons ensuite devoir installer et configurer la base de données PostgreSQL qui sera utilisée. En l’occurrence, Synology utilise déjà PostgreSQL pour ses services internes, nous allons donc devoir installer une autre instance de PostgreSQL que nous pourrons administrer (Merci Synology pour toutes ces spécifités…), sur un port différent du port 5432 utilisé de base par Postgre.

Pour ce faire, rendez-vous dans le centre de paquets de votre Synology, et si ce n’est pas déjà fait, ajoutez IMNKS (un dépôt de paquets maintenu par un blog tech chinois) dans les sources de paquets grâce à cette URL (Centre de paquets > Paramètres > Sources de paquets > Ajouter) :

https://spk7.imnks.com

Vous avez maintenant une multitude de nouveaux paquets disponibles dans l’onglet communauté !

Installez PostgreSQL, puis configurez ce dernier

  • Nom d’utilisateur : pgadmin
  • Mot de passe : un bon mot de passe sécurisé !
  • Port : 5433

Retournons dans notre terminal pour configurer l’environnement de Spliit. Connectons-nous à Postgre pour créer la base de données qu’utilisera Spliit :

psql -U pgadmin -h localhost -p 5433 -d postgres

Puis créons la base de données spécifique à Spliit

CREATE DATABASE spliit_db;

Et enfin, vérifions que la base est bien créée

\l

Vous devriez voir spliit_db dans la liste des bases de données. Nous pouvons maintenant remplir le fichier d’environnement de Spliit et lancer l’installation !
Sortez de Postgre (en tapant exit) puis rendez-vous dans le dossier d’installation de Spliit

Configuration des variables d’environnement de Spliit

cd /volume1/web/spliit

Il existe déjà un fichier .env.example, que nous pouvons dupliquer pour créer notre fichier .env

cp .env.example .env
nano .env

Personnalisons ce fichier de configuration avec les éléments créés précédemment, et en ajoutant quelques paramètres.

Il va notamment vous falloir créer une clef NextAuth, utilisée le module d’authentification de l’app pour signer et chiffrer les cookies de session, protéger les cookies, et garantir l’intégrité des sessions utilisateur. NextAuth est un secret aléatoire partagé uniquement par le serveur. Veillez donc à créer une clef hautement aléatoire et suffisamment compliquée !

# Base de données PostgreSQL

POSTGRES_PRISMA_URL=postgresql://pgadmin:monmotdepassecompliqué@localhost:5433/spliit_db
POSTGRES_URL_NON_POOLING=postgresql://pgadmin:monmotdepassecompliqué@localhost:5433/spliit_db
DATABASE_URL=postgresql://pgadmin:monmotdepassecompliqué@localhost:5433/spliit_db

#Authentification
NEXTAUTH_SECRET=un_super_secret_aleatoire

# URLs
NEXTAUTH_URL=http://mondomaine.fr:3000
NEXT_PUBLIC_APP_URL=http://mondomaine.fr:3000

# Configuration par défaut
NEXT_PUBLIC_DEFAULT_CURRENCY_CODE="EUR"
NEXT_PUBLIC_ENABLE_EXPENSE_DOCUMENTS=false
NEXT_PUBLIC_ENABLE_RECEIPT_EXTRACT=false
NEXT_PUBLIC_ENABLE_CATEGORY_EXTRACT=false

Quittez nano, il est maintenant temps d’installer les dépendances dont va avoir besoin Spliit ! Vérifiez que vous êtes toujours dans le dossier de Spliit, et lancez l’installation :

Installation des dépendances via NPM

npm install

Si tout s’est bien passé, vous devriez avoir un rassurant petit message vert

Si d’aventure NPM détectait des vulnérablités, lancez un npm audit fix qui viendra corriger tout cela.

Compilation !

Vous êtes maintenant prêts à compiler !

npm build

Plus qu’à lancer l’application…

npm start

Si tout s’est bien passé, vous devriez accéder à Spliit sur l’URL de votre domaine, sur le port 3000 comme configuré dans le fichier d’environnement !

Et configuration du démarrage automatique !

Tout est prêt mais il manque de quoi faire en sorte que Spliit se lance automatiquement au démarrage de votre serveur. Nous allons pour ce faire créer un petit fichier texte sur votre serveur, qui sera exécuté à chaque démarrage. Pour ma part, j’ai un dossier script dans mon dossier utilisateur, dans lequel je stocke tous ces genres de scripts utiles pour gérer mon Synology, je le déposerai donc ici.

Ouvrez votre éditeur de texte, créez le fichier spliit.sh puis entrez-y le code suivant :

#!/bin/bash
cd /volume1/web/spliit
npm start

Déposez ce fichier où bon vous semblera sur votre serveur, et notez le chemin du fichier

Rendez-vous ensuite dans le planificateur de tâches de Synology (pour rappel, DSM supprime tout ce qui ressemble à quelque chose de custom à chaque redémarrage, dont les tâches planifiées… Mieux vaut donc les faire depuis l’interface utilisateur !), que vous trouverez dans le panneau de configuration, puis ajoutez une tâche :

Créer > Tâche déclenchée > Script défini par l'utilisateur

Donnez un nom à cette tâche qui sera donc exécutée au démarrage, puis ajoutez le script pointant vers le fichier (en personnalisant évidemment le chemin et le nom du fichier) :

bash /volume2/homes/monutilisateur/scripts/spliit.sh

Testez le script en l’exécutant manuellement, et si tout est bon, passons à la dernière étape : configurer un reverse proxy et passer Spliit en HTTPS ! Vous pouvez aussi simplement ouvrir le port 3000 de votre routeur vers votre serveur, mais nous allons préférer le reverse proxy pour des raisons de facilité et de sécurité.

Création du reverse proxy

Partons du principe que vous avez déjà créé un sous-domaine chez votre fournisseur de domaine (budget.domaine.fr par exemple) qui pointe bien vers votre serveur.

Depuis le panneau de configuration de votre Synology, rendez-vous dans « Portail de connexion » > « Avancé » > « Proxy inversé »

Configurez comme ci-dessous votre reverse proxy pour le faire pointer sur Spliit

Panneau de configuration du proxy inversé pour Spliit

Maintenant, rendez-vous dans l’onglet Sécurité du Panneau de configuration, puis Certificat, pour vous procurer un nouveau certificat chez Let’s Encrypt

Panneau de création de certificat de sécurité Let's Encrypt sur Synology

Configurez maintenant ce certificat sur votre sous domaine depuis le menu « Paramètres »

C’est fini ! Vous pouvez maintenant gérer vos comptes entre amis, et vous payer le voyage de vos rêves grâce à tous les sous prêtés que vous allez pouvoir récupérer !

Laisser un commentaire

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