Files
personalblog/content/fr/blog/komodo-renovate-gitea.md
ghislainl c47ac3c2e9
Some checks failed
Build and Deploy Hugo Blog / build (push) Has been cancelled
new build system - continuous article
2025-12-20 11:50:28 +01:00

4.9 KiB

title, date, draft, description, tags, categories, author, cover, ShowToc, TocOpen
title date draft description tags categories author cover ShowToc TocOpen
Comment gérer l'automatisation des updates avec Gitea, Komodo et Renovate 2025-12-19 false Grâce à ces 3 briques logicielles, nous allons apprendre à automtiser grâce au GitOps
blog
Technique
Ghislain
image alt caption
/img/4WOH5S6.png Image de couverture Logo Gitea
true 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. Le but est de se faire le moins emmerder possible. Il faut tout mettre en place pour automatiser au maxiumum possible. 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é.

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.

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://git.glarose.fr
        - GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_TOKEN}
        - GITEA_RUNNER_NAME=runnerGhislain
      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.