Comment installer Forgejo
Publié le 15 décembre 2024.
Pour installer Forgejo (version 9.0.3 au moment où j'écris ces lignes), nous allons utiliser Docker et Docker Compose.
Nous allons principalement nous baser sur la documentation officielle de Forgejo.
Préparer l'installation
Avant tout, il faut configurer un serveur et installer Docker et Docker Compose dessus.
Ensuite, à partir d'un dossier de notre choix, créer l'arborescence suivante :
/my-forgejo-instance/
|-- /forgejo/
|-- /forgejo-runner/
Installer Forgejo
Dans le dossier forgejo
, créer un fichier docker-compose.yml
(cf. documentation officielle) :
networks:
forgejo:
external: false
services:
server:
image: codeberg.org/forgejo/forgejo:9
container_name: forgejo
environment:
- USER_UID=1000
- USER_GID=1000
- FORGEJO__database__DB_TYPE=mysql
- FORGEJO__database__HOST=db:3306
- FORGEJO__database__NAME=forgejo
- FORGEJO__database__USER=forgejo
- FORGEJO__database__PASSWD=forgejo
restart: always
networks:
- forgejo
volumes:
- ./forgejo:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- '3000:3000'
- '222:22'
depends_on:
- db
db:
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=forgejo
- MYSQL_USER=forgejo
- MYSQL_PASSWORD=forgejo
- MYSQL_DATABASE=forgejo
networks:
- forgejo
volumes:
- ./mysql:/var/lib/mysql
Remplacer les identifiants et chemins par ceux qu'on souhaite.
Lancer la commande docker compose up
et suivre les étapes d'installation de Forgejo.
Configurer Forgejo
Une fois Forgejo installé, on peut changer sa configuration depuis le chemin suivant : ./forgejo/gitea/conf/app.ini
.
Installer Forgejo Runner (pour exécuter des actions)
Une fois Forgejo installé et configuré, on peut installer Forgejo Runner (voir la documentation).
Dans le dossier forgejo-runner
, créer un fichier docker-compose.yml
:
services:
docker-in-docker:
image: docker:dind
container_name: 'docker_dind'
privileged: 'true'
command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false']
restart: 'unless-stopped'
gitea:
image: 'code.forgejo.org/forgejo/runner:4.0.0'
links:
- docker-in-docker
depends_on:
docker-in-docker:
condition: service_started
container_name: 'runner'
environment:
DOCKER_HOST: tcp://docker-in-docker:2375
# User without root privileges, but with access to `./data`.
user: 1001:1001
volumes:
- ./data:/data
restart: 'unless-stopped'
extra_hosts:
- "host.docker.internal:host-gateway"
command: '/bin/sh -c "while : ; do sleep 1 ; done ;"'
Par rapport à l'exemple de la documentation officielle, j'ai rajouté les lignes suivantes dans la configuration Docker :
extra_hosts:
- "host.docker.internal:host-gateway"
Cela permet, dans le cas où on le souhaite, de faire communiquer Forgejo et Forgejo Runner depuis la même machine avec des ports différents (à noter cependant que ce n'est pas conseillé, cf. la documentation).
Ensuite, exécuter la commande docker compose up
.
Ensuite, exécuter la commande docker exec -it runner /bin/sh
.
Depuis le conteneur, excuter la commande forgejo-runner register
.
À partir de là, suivre les instructions. Pour l'URL de l'instance, si Forgejo et Forgejo Runner sont sur la même machine, renseigner http://host.docker.internal:3000/
. Pour le jeton (token), on le retrouve depuis l'interface d'administration de Forgejo, dans « Actions » puis dans « Exécuteurs » puis en cliquant sur « Créer un nouvel exécuteur ».