Premier commit
This commit is contained in:
58
roles/nxc-traefik/README.md
Normal file
58
roles/nxc-traefik/README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Installation de Nextcloud et du proxy inverse Traefik
|
||||
|
||||
Nextcloud et Traefik fonctionnent grâce à docker. Pour pouvoir faire fonctionner ce playbook, docker doit être installé.
|
||||
|
||||
## 1.
|
||||
|
||||
Le playbook crée le dossier **nxc** à la racine de root.
|
||||
|
||||
Les fichiers "nextcloud.yml" et "traefik.yml" y seront copiés depuis le répertoire "files" du playbook.
|
||||
|
||||
Enfin, dans le répertoire nxc, sont créés les répertoires **certs** et **config**.
|
||||
|
||||
## 2. Copie des fichiers
|
||||
|
||||
Le playbook copie les fichiers placés dans "files" et les placer dans les bons répertoires.
|
||||
|
||||
## 3. Génération du certificat
|
||||
|
||||
Le playbook crée un certificat **x509** grâce à **mkcert**, il s'agit d'une solution permettant de créer des certificats auto-signés. Pour cela, il télécharge **mkcert** sur **s-adm** (utiliser le script **getall**).
|
||||
|
||||
**mkcert** est placé dans : /usr/local/bin/
|
||||
|
||||
Pour créer le certificat, le playbook exécute les commandes (lancé depuis nxc/) :
|
||||
```
|
||||
/usr/local/bin/mkcert -install # Installe mkcert
|
||||
/usr/local/bin/mkcert -key-file key.pem -cert-file cert.pem "hôte.domaine.local" "*.domaine.local" #Crée le certificat le DNS spécifié
|
||||
```
|
||||
## 4. Lancement
|
||||
|
||||
Le playbook lance les fichiers "docker-compose" à savoir : nextcloud.yml et traefik.yml qui démarrent les deux piles **docker**.
|
||||
|
||||
Nextcloud est alors fonctionnel avec le proxy inverse **traefik** assurant la redirection vers HTTPS.
|
||||
|
||||
|
||||
ATTENTION : Après avoir relancé la VM, executez le script "nxc-start.sh" afin d'installer les piles applicatives.
|
||||
|
||||
Une fois le script terminé, le site est disponible ici : https://s-nxc.gsb.lan
|
||||
|
||||
|
||||
## 5. Ajout authentification LDAP
|
||||
|
||||
Pour ajouter l'authentification LDAP au Nextcloud, il faut :
|
||||
* Une fois l'installation de Nextcloud terminé, cliquez sur le profil et Application
|
||||
* Dans vos applications, descendre et activer "LDAP user and group backend"
|
||||
* Puis cliquer sur le profil, puis Paramètres d'administration et dans Administration cliquer sur Intégration LDAP/AD
|
||||
* Une fois sur la page d'intégration LDAP/AD :
|
||||
* Dans Hôte mettre :
|
||||
> ldap://s-win.gsb.lan
|
||||
* Cliquer sur Détecter le port (normalement le port 389 apparait)
|
||||
* Dans DN Utilisateur mettre :
|
||||
> CN=nextcloud,CN=Users,DC=GSB,DC=LAN
|
||||
* Mot de passe :
|
||||
> Azerty1+
|
||||
* Et dans Un DN de base par ligne :
|
||||
> DC=GSB,DC=LAN
|
||||
* Après la configuration passe OK
|
||||
* Une fois la configuration finie, cliquer 3 fois sur continuer
|
||||
* Une fois arrivé sur Groupes, vous pouvez vous déconnecter du compte Admin et vous connecter avec un compte qui est dans l'AD.
|
80
roles/nxc-traefik/files/docker-compose.yml
Normal file
80
roles/nxc-traefik/files/docker-compose.yml
Normal file
@@ -0,0 +1,80 @@
|
||||
version: '3'
|
||||
volumes:
|
||||
nextcloud:
|
||||
db:
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
nxc:
|
||||
external: false
|
||||
|
||||
services:
|
||||
reverse-proxy:
|
||||
# The official v2 Traefik docker image
|
||||
image: traefik:latest
|
||||
container_name: traefik
|
||||
# Enables the web UI and tells Traefik to listen to docker
|
||||
command: --api.insecure=true --providers.docker
|
||||
ports:
|
||||
# The HTTP port
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
# The Web UI (enabled by --api.insecure=true)
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
# So that Traefik can listen to the Docker events
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
# Map the static configuration into the container
|
||||
- ./config/static.yml:/etc/traefik/traefik.yml:ro
|
||||
# Map the dynamic configuration into the container
|
||||
- ./config/dynamic.yml:/etc/traefik/dynamic.yml:ro
|
||||
# Map the certificats into the container
|
||||
- ./certs:/etc/certs:ro
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
db:
|
||||
image: mariadb:10.5
|
||||
container_name: db
|
||||
restart: always
|
||||
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
|
||||
volumes:
|
||||
- db:/var/lib/mysql
|
||||
networks:
|
||||
- nxc
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=Azerty1+
|
||||
- MYSQL_PASSWORD=Azerty1+
|
||||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
|
||||
app:
|
||||
image: nextcloud
|
||||
container_name: app
|
||||
restart: always
|
||||
ports:
|
||||
- 8081:80
|
||||
#links:
|
||||
depends_on:
|
||||
- db
|
||||
volumes:
|
||||
- ./nextcloud:/var/www/html
|
||||
networks:
|
||||
- proxy
|
||||
- nxc
|
||||
labels:
|
||||
# - "traefik.enable=true"
|
||||
- "traefik.http.routers.app.rule=Host(`s-nxc.gsb.lan`)"
|
||||
- "traefik.http.routers.app.tls=true"
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=proxy"
|
||||
# - "traefik.http.routers.app.entrypoints=websecure"
|
||||
# - "traefik.http.routers.app.rule=Host(`mon.nxc`)"
|
||||
- "traefik.http.routers.app.service=app-service"
|
||||
- "traefik.http.services.app-service.loadbalancer.server.port=80"
|
||||
environment:
|
||||
- MYSQL_PASSWORD=Azerty1+
|
||||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
- MYSQL_HOST=db
|
18
roles/nxc-traefik/files/dynamic.yml
Normal file
18
roles/nxc-traefik/files/dynamic.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
http:
|
||||
routers:
|
||||
traefik:
|
||||
rule: "Host(`traefik.docker.localhost`)"
|
||||
service: "api@internal"
|
||||
tls:
|
||||
domains:
|
||||
- main: "docker.localhost"
|
||||
sans:
|
||||
- "*.docker.localhost"
|
||||
- main: "s-nxc.gsb.lan"
|
||||
sans:
|
||||
- "*.gsb.lan"
|
||||
|
||||
tls:
|
||||
certificates:
|
||||
- certFile: "/etc/certs/local-cert.pem"
|
||||
keyFile: "/etc/certs/local-key.pem"
|
4
roles/nxc-traefik/files/nxc-debug.sh
Executable file
4
roles/nxc-traefik/files/nxc-debug.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
docker compose down -v
|
||||
sleep 1
|
||||
docker compose up -d
|
6
roles/nxc-traefik/files/nxc-prune.sh
Executable file
6
roles/nxc-traefik/files/nxc-prune.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
docker compose down -v
|
||||
#docker volume prune -f
|
||||
#docker container prune -f
|
||||
#docker image prune -f
|
2
roles/nxc-traefik/files/nxc-start.sh
Executable file
2
roles/nxc-traefik/files/nxc-start.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
docker compose up -d
|
2
roles/nxc-traefik/files/nxc-stop.sh
Executable file
2
roles/nxc-traefik/files/nxc-stop.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
docker compose down
|
31
roles/nxc-traefik/files/static.yml
Normal file
31
roles/nxc-traefik/files/static.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
global:
|
||||
sendAnonymousUsage: false
|
||||
|
||||
api:
|
||||
dashboard: true
|
||||
insecure: true
|
||||
|
||||
providers:
|
||||
docker:
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
watch: true
|
||||
exposedByDefault: false
|
||||
|
||||
file:
|
||||
filename: /etc/traefik/dynamic.yml
|
||||
watch: true
|
||||
|
||||
log:
|
||||
level: INFO
|
||||
format: common
|
||||
|
||||
entryPoints:
|
||||
http:
|
||||
address: ":80"
|
||||
http:
|
||||
redirections:
|
||||
entryPoint:
|
||||
to: https
|
||||
scheme: https
|
||||
https:
|
||||
address: ":443"
|
78
roles/nxc-traefik/tasks/main.yml
Normal file
78
roles/nxc-traefik/tasks/main.yml
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
- name: Creation du repertoire de nextcloud et traefik
|
||||
file:
|
||||
path: /root/nxc
|
||||
state: directory
|
||||
|
||||
- name: Creation du repertoire nxc/config
|
||||
file:
|
||||
path: /root/nxc/config
|
||||
state: directory
|
||||
|
||||
- name: Creation du repertoire nxc/certs
|
||||
file:
|
||||
path: /root/nxc/certs
|
||||
state: directory
|
||||
|
||||
- name: Copie de static.yml
|
||||
copy:
|
||||
src: static.yml
|
||||
dest: /root/nxc/config
|
||||
|
||||
- name: Copie de dynamic.yml
|
||||
copy:
|
||||
src: dynamic.yml
|
||||
dest: /root/nxc/config
|
||||
|
||||
- name: Copie de docker-compose.yml
|
||||
copy:
|
||||
src: docker-compose.yml
|
||||
dest: /root/nxc
|
||||
|
||||
- name: Copie de nxc-stop.sh
|
||||
copy:
|
||||
src: nxc-stop.sh
|
||||
dest: /root/nxc
|
||||
mode: '0755'
|
||||
|
||||
- name: Copie de nxc-debug.sh
|
||||
copy:
|
||||
src: nxc-debug.sh
|
||||
dest: /root/nxc
|
||||
mode: '0755'
|
||||
|
||||
- name: Copie de nxc-start.sh
|
||||
copy:
|
||||
src: nxc-start.sh
|
||||
dest: /root/nxc
|
||||
mode: '0755'
|
||||
|
||||
- name: Copie de nxc-prune.sh
|
||||
copy:
|
||||
src: nxc-prune.sh
|
||||
dest: /root/nxc
|
||||
mode: '0755'
|
||||
|
||||
- name: Telechargement mkcert
|
||||
get_url:
|
||||
url: http://s-adm.gsb.adm/gsbstore/mkcert
|
||||
dest: /usr/local/bin
|
||||
mode: '0755'
|
||||
|
||||
- name: Initialisation mkcert
|
||||
command: /usr/local/bin/mkcert -install
|
||||
args:
|
||||
chdir: /root/nxc
|
||||
|
||||
- name: Creation certificats
|
||||
command: /usr/local/bin/mkcert -cert-file certs/local-cert.pem -key-file certs/local-key.pem "s-nxc.gsb.lan" "*.gsb.lan"
|
||||
args:
|
||||
chdir: /root/nxc
|
||||
|
||||
- name: Creation reseau docker proxy
|
||||
command: docker network create proxy
|
||||
|
||||
#- name: Démarrage du docker-compose...
|
||||
#command: /bin/bash docker-compose up -d
|
||||
#args:
|
||||
#chdir: /root/nxc
|
Reference in New Issue
Block a user