- Modifié
Bonjour à la communauté.
Après un sacré paquet d'heure à écumer la chose, j'en viens à demander de l'aide.
Comme décrit par le titre, l'idée est d'avoir une petite forge logicielle (Gitea) avec une petite plateforme de CI/CD (Drone) afin d'avoir mon petit environnement industrialisé pour mes projets plus ou moins personnels.
Pour ça, j'avais déjà la forge depuis un bout de temps (ainsi que d'autres services) derrière un reverse proxy nginx (celui-ci : https://hub.docker.com/r/neilpang/nginx-proxy/ qui est une version fork de la version de jwilder mais un poil plus permissive) qui s'occupe des certificats Let's Encrypt car tous les services web sont en HTTPS.
Je me réfère à la documentation a priori complète du connecteur gitea de drone ici : https://docs.drone.io/server/provider/gitea/
Et... ça marche pas ! (oui j'ai le droit de le coller )
Plus précisément :
- j'ai paramétré une nouvelle application Oauth2 dans Gitea (qui me fourni les id/secret, et dans laquelle je fournis l'url de redirection)
- dans les variables d'environnements de drone, j'y inclus tout le nécessaire
- lorsque je vais sur la racine de drone, il me fait bien l'appel pour ensuite autoriser l'application dans Gitea, que j'autorise bien sûr
- et PAF, après la redirection je me prends sur drone un "Login Failed.... Bad Request" sur l'url drone
https://drone.domain.tld/login/error
. En détail, le message d'erreur suivant dans les logs de drone : "oauth: cannot exchange code: ..."
Ci-dessous, les détails (docker-compose, conf, etc.) pour y voir plus clair.
Si quelqu'un avait une piste de réflexion (oui car les tutos d'il y a 2 ans ainsi que les problèmes sur stackoverflow qui tapent à côté ou sans réponse, sont non fonctionnels), ça serait super !
docker-compose.yml
version: '2'
services:
nginx-proxy:
restart: always
image: neilpang/nginx-proxy:alpine
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /home/webstack/nginx/certs:/etc/nginx/certs:ro
- /home/webstack/nginx/vhost.d:/etc/nginx/vhost.d
- /home/webstack/nginx/conf.d:/etc/nginx/conf.d
- /home/webstack/nginx/html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
- /home/webstack/logs/nginx-error.log:/var/log/nginx/error.log
- /home/webstack/logs/nginx-access.log:/var/log/nginx/access.log
networks:
- mynetwork
proxy-letsencrypt:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt
volumes:
- /home/webstack/nginx/certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from:
- nginx-proxy
networks:
- mynetwork
depends_on:
- nginx-proxy
gitea:
restart: always
image: gitea/gitea:1
container_name: gitea
ports:
- "3000:3000"
- "2222:22"
volumes:
- /home/gitea:/data:rw
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- USER_UID=1000
- USER_GID=1000
- VIRTUAL_HOST=git.domain.tld
- VIRTUAL_PORT=3000
- HTTP_PROXY=https://gitea.domain.tld:443
- LETSENCRYPT_HOST=git.domain.tld
- LETSENCRYPT_EMAIL=tintwo@domain.tld
networks:
- mynetwork
drone-server:
restart: always
image: drone/drone:1
container_name: drone-server
environment:
- DRONE_GITEA_SERVER=https://git.domain.tld
- DRONE_GITEA_CLIENT_ID=${CLIENT_ID_FOR_DRONE_APP_IN_GITEA}
- DRONE_GITEA_CLIENT_SECRET=${CLIENT_SECRET_FOR_DRONE_APP_IN_GITEA}
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
- DRONE_SERVER_HOST=drone.domain.tld
- DRONE_SERVER_PROTO=https
- VIRTUAL_HOST=drone.domain.tld
- VIRTUAL_PORT=80
- HTTP_PROXY=https://drone.domain.tld:443
- LETSENCRYPT_HOST=drone.domain.tld
- LETSENCRYPT_EMAIL=tintwo@domain.tld
networks:
- mynetwork
networks:
mynetwork:
Les URLs brutes de mes services sont du coup https://git.domain.tld/
et https://drone.domain.tld/
Voici les logs des conteneurs :
gitea | [Macaron] 2020-06-15 09:50:32: Started GET /login/oauth/authorize?client_id=08ded900-e90d-469c-bd75-8522021569f5&redirect_uri=https%3A%2F%2Fdrone.domain.tld%2Flogin&response_type=code&state=b80704bb7b4d7c03 for 91.168.185.16
gitea | [Macaron] 2020-06-15 09:50:32: Completed GET /login/oauth/authorize?client_id=08ded900-e90d-469c-bd75-8522021569f5&redirect_uri=https%3A%2F%2Fdrone.domain.tld%2Flogin&response_type=code&state=b80704bb7b4d7c03 302 Found in 156.974326ms
drone-server | {"level":"error","msg":"oauth: cannot exchange code: c4pW5tQK3VM8Mfoww-UPT-aJGB79LYdszRC2gsnye-8=: Post \"https://git.domain.tld/login/oauth/access_token\": Bad Request","time":"2020-06-15T09:50:32Z"}