163 lines
5.3 KiB
Markdown
163 lines
5.3 KiB
Markdown
---
|
|
title: "Comment gérer l'automatisation des updates avec Gitea, Komodo et Renovate"
|
|
date: 2025-12-19
|
|
draft: false
|
|
description: "Grâce à ces 3 briques logicielles, nous allons apprendre à automtiser grâce au GitOps"
|
|
tags: ["blog"]
|
|
categories: ["Technique"]
|
|
author: "Ghislain"
|
|
cover:
|
|
image: "/img/4WOH5S6.png"
|
|
alt: "Image de couverture"
|
|
caption: "Logo Gitea"
|
|
ShowToc: true
|
|
TocOpen: true
|
|
---
|
|
|
|
*Note: cet article s'appuie grandement sur cet autre article: <https://nickcunningh.am/blog/how-to-automate-version-updates-for-your-self-hosted-docker-containers-with-gitea-renovate-and-komodo#setting-up-renovate>*
|
|
|
|
On ne va pas se mentir, s'autohéberger, c'est se flageller. Sans rire, on saute de galère en galère. N'est pas Google qui veut.
|
|
|
|
Mais c'est aussi et surtout l'occasion de chercher, de trouver des solutions.
|
|
Quelque soit le but derrière le selfhosting, confidentialité, vie privée, sécurité, ou simplement pragmatique, c'est la curiosité qui doit primer.
|
|
|
|
Et le but ultime est de se faire le moins emmerder possible. Il faut tout mettre en place pour automatiser au maxiumum possible et avoir l'esprit libre.
|
|
C'est ce que nous allons voir aujourd'hui avec cet article qui mettra en lumière Gitea, Komodo et Renovate.
|
|
|
|
## 1. Les présentations
|
|
|
|
### Gitea
|
|
|
|
Gitea, c'est un Github (ou Gitlab) pour l'autohébergement.
|
|
Alors je sais qu'il y a une contreverse liée à ce logiciel, eu égard du fait qu'il a changé de licence récemment.
|
|
Mais personnellement :
|
|
|
|
- ça juste marche
|
|
- ça juste marche
|
|
- ça juste marche
|
|
|
|
3 bonnes raisons de ne pas changer pour Forjero, je n'en vois pas l'utilité. Si jamais les sources se ferment, je saurai changer de crêmerie.
|
|
|
|
### Komodo
|
|
|
|
C'est mon logiciel coup de coeur de 2025. C'est comme un Portainer ou un Dokge, sauf que c'est Komodo.
|
|
|
|
Et un komodo, mieux vaut ne pas se fâcher avec lui.
|
|
|
|
C'est un orchestrateur de containers Docker qui a l'excellente idée de se brancher à du Git.
|
|
|
|
Oui, toi qui me regarde, on va faire du GitOps.
|
|
|
|
### Renovate
|
|
|
|
C'est un bot qui va nous permettre d'aller vérifier de nouvelles images pour nos containers Docker.
|
|
|
|
## 2. La structure globale
|
|
|
|
Pour que le tout soit fonctionnel voici le cheminement à adopter :
|
|
|
|
- un fournisseur Git : ici, ça sera Gitea
|
|
- une plateforme CI/CD (comme les plus grands) : toujours le même , Gitea, partie *Actions*
|
|
- un analyseur de fichiers compose : Renovate
|
|
- un instancieur de containers Docker : Komodo
|
|
|
|
Bien, vous commencez à saisir ? Non ? Et bien attendez la suite.
|
|
|
|
## 3. Les prérequis
|
|
|
|
Mon installation est simple :
|
|
|
|
- une VM
|
|
- un fournisseur de messagerie pour les notifs Gitea
|
|
|
|
## 4. Gitea
|
|
|
|
On va commencer par le gros gâteau, Gitea.
|
|
|
|
Je pars du principe que les fichiers docker compose, c'est OK pour vous.
|
|
|
|
```yaml
|
|
services:
|
|
server:
|
|
image: gitea/gitea:1.25
|
|
container_name: gitea-server
|
|
restart: always
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- GITEA__database__DB_TYPE=${GITEA__database__DB_TYPE}
|
|
- GITEA__database__HOST=${GITEA__database__HOST}
|
|
- GITEA__database__NAME=${GITEA__database__NAME}
|
|
- GITEA__database__USER=${GITEA__database__USER}
|
|
- GITEA__database__PASSWD=${GITEA_DB_PASSWORD}
|
|
- ROOT_URL=${ROOT_URL}
|
|
volumes:
|
|
- /srv/docker/gitea/data:/data
|
|
- /etc/timezone:/etc/timezone:ro
|
|
- /etc/localtime:/etc/localtime:ro
|
|
ports:
|
|
- 3000:3000
|
|
- 222:22
|
|
depends_on:
|
|
- db
|
|
networks:
|
|
- traefik
|
|
- gitea_internal
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.gitea.rule=Host(`xx.domain.local`)"
|
|
- "traefik.http.routers.gitea.entrypoints=https"
|
|
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
|
|
- "traefik.http.routers.gitea.service=gitea"
|
|
- "traefik.http.routers.gitea.tls.certresolver=letsencrypt"
|
|
|
|
db:
|
|
image: postgres:17.4
|
|
container_name: gitea-db
|
|
restart: always
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- POSTGRES_DB=${POSTGRES_DB}
|
|
- POSTGRES_USER=${POSTGRES_USER}
|
|
- POSTGRES_PASSWORD=${GITEA_DB_PASSWORD}
|
|
volumes:
|
|
- /srv/docker/gitea/database:/var/lib/postgresql/data
|
|
networks:
|
|
- gitea_internal
|
|
|
|
runner:
|
|
image: gitea/act_runner:0.2.11
|
|
container_name: gitea-runner
|
|
restart: always
|
|
depends_on:
|
|
- server
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- /srv/docker/gitea/runner/config.yaml:/config.yaml
|
|
- /srv/docker/gitea/runner/data:/data
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- CONFIG_FILE=/config.yaml
|
|
- GITEA_INSTANCE_URL=https://xx.xxx.xx
|
|
- GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_TOKEN}
|
|
- GITEA_RUNNER_NAME=cequevousvoulez
|
|
networks:
|
|
- gitea_internal
|
|
- traefik
|
|
|
|
|
|
networks:
|
|
traefik:
|
|
external: true
|
|
gitea_internal:
|
|
internal: true
|
|
```
|
|
|
|
Ca en jette non ? Ca n'a rien de compliqué, ça se lit comme un bon vieux Marc Lévy, sauf que ça fait plus de choses qu'une lecture de Marc Lévy (spoiler: ça reste dans la tête).
|
|
|
|
Alors oui, il se trouve que j'ai une configuration avec Traefik.
|
|
|
|
Si vous n'avez pas de reverse proxy sous la main, honnêtement, ne vous embêtez pas. Ca peut rester chez vous sans sortir sur Internet.
|
|
|
|
**NOTE :** On y reviendra plus tardn, mais prenez l'habitude de ne pas utiliser *latest* comme tag des images.
|
|
|