Mise en place de Postgresql, et de backups sur S3 avec Coolify

By Hugo LassiègeNov 28, 20245 min read

Ce billet fait partie d'une petite série autour de l'usage de Coolify.

Dans un premier billet, je revenais sur les raisons de ma migration sur Coolify.

Dans un second billet, j'expliquais comment faire tourner une application Kotlin sur Coolify.

Aujourd'hui, on va parler des bases de données et des backups sur Coolify. Parce que c'est bien beau de faire tourner une application Kotlin mais il y a quand même de fortes chances que vous ayez besoin, aussi, de manipuler des données.

Ajouter une base de données

L'ajout de base de données en soit, est assez simple.
Comme pour l'ajout d'applications, il faut aller sur un projet, puis cliquer sur "New Resource" et on voit qu'il existe tout un tas de choix déjà disponibles pour nous :

Pour ma part j'ai donc cliqué sur Postgresql. L'installation se passe de commentaires.

La page de configuration vous donne ensuite l'ensemble des valeurs dont on a généralement besoin pour se connecter : le nom de l'instance, le username, le mot de passe, etc...

À noter, cependant, que si vous souhaitez que votre application voit la base de données, il faut bien s'assurer que vos deux applications soient sur le même réseau.

Cependant, par défaut, c'est le cas :

Ensuite sur votre application Kotlin, il vous suffit d'utiliser les valeurs username, password etc... pour configurer votre connexion à la base de données.

(Ça me semble trivial donc je ne le détaille pas, mais si besoin, n'hésitez pas à me le dire)

Administrer sa base de données

Disclaimer, peut-être que sur ce chapitre vous ne serez pas d'accord sur l'approche. Libre à vous d'adapter.

J'aime bien pouvoir accéder à ma base de données, en lecture dans l'idéal, en écriture parfois.

En principe l'accès en écriture est plutôt une mauvaise chose sur une base en production, mais ici, je vais considérer que c'est pas le sujet.

Traditionnellement pour une base pgsql, on va installer un logiciel, comme pgAdmin par exemple. Et objectivement, c'est pas bien compliqué à faire puisque Coolify vous permet de déployer n'importe quelle application qui tourne dans un container Docker.

Et ça tombe bien, il existe des Dockerfile pour pgAdmin.

Cependant j'avoue que l'idée ne me plaisait pas trop. Les softs comme pgAdmin, PhpMyAdmin etc... peuvent parfois comporter des failles de sécurité.

Si on les utilise au sein d'un réseau interne, à la limite ça passe. Et encore...
Mais dans mon cas, mettre un pgAdmin exposé sur internet, hors de question.

C'est un peu pour moi un des gros soucis de la plupart des PAAS du marché, les bases de données sont exposées publiquement sur internet, et parfois on a des softs d'admin sur lesquels il faut avoir confiance dans leur maintenance régulière.

Donc ici j'ai pris une autre option.

  • Exposer la base de données sur un port public
  • Avoir une règle firewall en place pour interdire l'accès à ce port, sauf pour une adresse IP uniquement.
  • utiliser un soft d'administration sur mon poste uniquement

De cette façon, je compte sur la sécurité du firewall, et bien sûr sur la sécurité de mon mot de passe de base de données.
Quant au firewall, c'est mon provider cloud qui le gère, Hetzner.

Par défaut, et c'est une bonne chose, votre base de données n'est pas exposé publiquement sur internet. Pour ça, il faut cocher la case suivante :

Pour la règle firewall, ça dépend de votre hébergement donc je vous passe cette partie.

Mais par contre je vous invite très très fort à en avoir une....

Pourquoi pas une base de données managées chez un provider cloud ?

C'est aussi une option, vous pourriez vous connecter à une base de données managés. Le temps que je migre complètement sur coolify, c'était d'ailleurs mon cas. J'avais ma base de données sur Clever Cloud et le serveur Coolify sur Hetzner.

Ça a plein d'avantages. Les données c'est plutôt critique et déléguer leur gestion à un service tiers, ça peut valoir le coup.

Par contre attention au prix et à la latence.

Les bases de données managées coûtent très cher. Donc, dans ma logique de petit projet indé, ça collait pas.

Et la latence peut faire très mal. Pendant la période de migration, j'avais des pénalités qui se comptent en centaines de milli secondes. Acceptable pour une migration, pas acceptable au long terme.

Mise en place des backups

Comme je le disais plus haut, une base de données managé ça coute cher mais perdre ces données ça n'a pas de prix.

Alors, une base de données sans backup, c'est avoir l'esprit très joueur...

Donc, on va résoudre ce problème.

Que ce soit pour Coolify lui-même (l'instance de Coolify), les bases de données ou les applications, il y a toujours une possibilité de configurer un backup.

Ici j'ai donc des backups journaliers, avec 7 jours de rétention.

Sauf que, cette configuration est... pas dingue...

Parce que se contenter de faire un backup sur la même machine que la base de données elle-même, c'est aimer se tirer une balle dans le pied.

On va donc cocher à la place la case : S3 Enabled

S3 c'est un standard de fait dans l'industrie, je rentre pas dans le détail mais vous avez tout un tas de fournisseur de service qui vous propose du stockage Cloud dont l'API est compatible avec S3 (même si à l'origine S3 c'est uniquement AWS).

Vous noterez que mon stockage S3 s'appelle Scaleway, parce que Scaleway propose du stockage S3 jusqu'à 75 Gb gratuitement...

Pour un petit projet comme le mien, c'est très très bien.

Fin de ce petit billet.

C'est pas encore la fin de cette série parce qu'on va sans doute discuter encore monitoring et donner l'exemple de quelques services tiers intéressants qui tournent sur Coolify.

N'hésitez pas à vous inscrire à la newsletter pour ne pas louper ces futurs billets.

a+


Share this:

Written by Hugo Lassiège

Software engineer, ex-freelance, ex-cofounder, ex-CTO. I love building things, sharing knowledge and helping others.

Copyright © 2024
 Eventuallycoding
  Powered by Bloggrify