Premier commit

This commit is contained in:
phil
2023-12-18 23:20:30 +01:00
parent ec25c6dba9
commit 62ef5fa4e9
577 changed files with 46490 additions and 1 deletions

View 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.

View 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

View 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"

View File

@@ -0,0 +1,4 @@
#!/bin/bash
docker compose down -v
sleep 1
docker compose up -d

View File

@@ -0,0 +1,6 @@
#!/bin/bash
docker compose down -v
#docker volume prune -f
#docker container prune -f
#docker image prune -f

View File

@@ -0,0 +1,2 @@
#!/bin/bash
docker compose up -d

View File

@@ -0,0 +1,2 @@
#!/bin/bash
docker compose down

View 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"

View 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