Compare commits

...

20 Commits
0.1-jc ... main

Author SHA1 Message Date
d5d76c7d38 Actualiser hosts 2024-06-04 16:06:50 +02:00
7f56947f20 Actualiser stop.yml 2024-06-04 15:40:49 +02:00
45336c1771 Actualiser install.yml 2024-05-28 19:09:34 +02:00
edb284fc21 Ajouter index.html 2024-05-28 19:05:54 +02:00
65747739a6 Ajouter hosts 2024-05-07 11:32:07 +02:00
b2e4286e9d Actualiser stop.yml 2024-04-09 11:41:11 +02:00
0c93efcd77 Actualiser install.yml 2024-04-09 11:40:40 +02:00
29d6342e1a Actualiser hello.yml 2024-04-09 11:40:06 +02:00
root
6d376af13d gitea docker 2024-02-08 09:27:09 +01:00
578db35ad9 Actualiser test3.yml 2024-02-05 17:17:49 +01:00
af3c947118 Ajouter test3.yml 2024-02-05 17:14:15 +01:00
4913688f30 Actualiser test2.yml 2024-02-05 14:34:33 +01:00
fefa2ee605 Actualiser test2.yml 2024-02-05 14:32:03 +01:00
c541fff38e Actualiser test2.yml 2024-02-05 14:24:17 +01:00
bba1d3a0ff Actualiser test2.yml 2024-02-05 14:00:47 +01:00
6d7f5e3b34 Actualiser test2.yml 2024-02-02 15:44:37 +01:00
755d37c45d Actualiser test.yml 2024-02-01 10:52:57 +01:00
9481c96310 Actualiser test2.yml 2024-01-01 15:34:29 +01:00
489fc510f2 Ajouter test2.yml 2024-01-01 14:36:24 +01:00
733b30625e Ajouter test.yml 2024-01-01 14:24:31 +01:00
17 changed files with 438 additions and 0 deletions

72
gitea-traefik/README.md Normal file

@ -0,0 +1,72 @@
# Installation de Nextcloud et du proxy inverse Traefik
## Explication de l'installation de Nextcloud
Afin de pouvoir faire fonctionner Nextcloud et Traefik, il faut mettre en place docker. Dans un premier plan, il vas donc falloir lancer le script **getall** sur **s-adm**. Ensuite dans un second temps, il faudra etre dans le fichier **/nxc** sur **s-nxc** et lancer **docker-compose.yaml**. Pour finir, il faudra ajouter l'authentification LDAP au nextcloud grace a l'AD de **s-win**.
# <p align="center">Procédure d'installation</p>
***
## 1. Installation docker
Voir: https://gitea.lyc-lecastel.fr/gsb/gsb2024/src/branch/main/roles/docker
## 2. Fonctionnement du playbook s-nxc
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.1 Copie des fichiers
Le playbook copie les fichiers placés dans "files" et les places dans les bons répertoires.
### 2.2 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é
```
## 3. 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
## 4. Ajout authentification LDAP
Pour ajouter l'authentification LDAP au Nextcloud, depuis **n-user** 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**
* Cliquer sur "Détecter le DN de base" (normalement il apparaitra automatiquement)
* Après la configuration réaliser, cliquer sur "Continuer", puis 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.
## Contributeurs
- LG
- CH

@ -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

@ -0,0 +1,43 @@
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.21.4
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
+ - GITEA__database__DB_TYPE=mysql
+ - GITEA__database__HOST=db:3306
+ - GITEA__database__NAME=gitea
+ - GITEA__database__USER=gitea
+ - GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/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=gitea
+ - MYSQL_USER=gitea
+ - MYSQL_PASSWORD=gitea
+ - MYSQL_DATABASE=gitea
+ networks:
+ - gitea
+ volumes:
+ - ./mysql:/var/lib/mysql

@ -0,0 +1,18 @@
http:
routers:
traefik:
rule: "Host(`traefik.docker.localhost`)"
service: "api@internal"
tls:
domains:
- main: "docker.localhost"
sans:
- "*.docker.localhost"
- main: "gitea3.gsb.lan"
sans:
- "*.sio.lan"
tls:
certificates:
- certFile: "/etc/certs/local-cert.pem"
keyFile: "/etc/certs/local-key.pem"

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

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

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

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

@ -0,0 +1,19 @@
Ce script Bash a pour objectif d'automatiser le processus de sauvegarde du serveur NextCloud, qui est exécuté dans un environnement Docker.
## 1. Activation du mode maintenance :
- La première commande Docker est utilisée pour mettre le serveur NextCloud en mode maintenance. Cette mesure préventive garantit qu'aucune modification n'est apportée pendant la sauvegarde, assurant ainsi la cohérence des données.
## 2. Copie des fichiers de sauvegarde :
- La commande `cd /root/nxc` change le répertoire de travail vers `/root/nxc`.
- Ensuite, la commande `rsync -Aavx nextcloud/ nextcloud-dirbkp/` effectue une copie récursive des fichiers du dossier `nextcloud/` vers `nextcloud-dirbkp/`. Ceci crée une copie locale des fichiers de NextCloud à des fins de sauvegarde.
## 3. Sauvegarde de la base de données MySQL/MariaDB :
- La ligne suivante utilise `docker compose exec` pour exécuter la commande `mysqldump` dans le conteneur de la base de données. Cela génère une sauvegarde de la base de données NextCloud qui est enregistrée dans le fichier `nextcloud-sqlbkp.bak`.
## 4. Désactivation du mode maintenance :
- Après la sauvegarde, une autre commande Docker est utilisée pour désactiver le mode maintenance de NextCloud, permettant ainsi la reprise normale des opérations.
## 5. Création d'une archive compressée :
- Enfin, la dernière ligne crée une archive compressée `nxc.tgz` qui regroupe la sauvegarde de la base de données (`nextcloud-sqlbkp.bak`) et la copie locale des fichiers NextCloud (`nextcloud-dirbkp/`).
Ce script simplifie et automatise le processus de sauvegarde de NextCloud en mettant en place la mise en mode maintenance, la copie des fichiers locaux, la sauvegarde de la base de données, la désactivation du mode maintenance, et la création d'une archive compressée consolidant l'ensemble des éléments de sauvegarde.

@ -0,0 +1,22 @@
#!/bin/bash
# Mettre le serveur NextCloud en mode maintenance
docker compose exec -u www-data app php occ maintenance:mode --on
# Extraire les dossiers de sauvegarde
cd /root/nxc
# Copie locale de la sauvegarde
rsync -Aavx nextcloud/ nextcloud-dirbkp/
# Base de données MySQL/MariaDB
docker compose exec db mysqldump -u nextcloud -pAzerty1+ nextcloud > nextcloud-sqlbkp.bak
# Sortir du mode maintenance
docker compose exec -u www-data app php occ maintenance:mode --off
# création d'une archive
tar cvfz nxc.tgz nextcloud-sqlbkp.bak nextcloud-dirbkp

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

@ -0,0 +1,84 @@
---
- name: Creation du repertoire de nextcloud et traefik
file:
path: /root/gitea
state: directory
- name: Creation du repertoire gitea/config
file:
path: /root/gitea/config
state: directory
- name: Creation du repertoire gitea/certs
file:
path: /root/gitea/certs
state: directory
- name: Copie de static.yml
copy:
src: static.yml
dest: /root/gitea/config
- name: Copie de dynamic.yml
copy:
src: dynamic.yml
dest: /root/gitea/config
- name: Copie de docker-compose.yml
copy:
src: docker-compose.yml
dest: /root/gitea
- name: Copie de gitea-stop.sh
copy:
src: gitea-stop.sh
dest: /root/gitea
mode: '0755'
- name: Copie de gitea-debug.sh
copy:
src: gitea-debug.sh
dest: /root/gitea
mode: '0755'
- name: Copie de gitea-start.sh
copy:
src: gitea-start.sh
dest: /root/gitea
mode: '0755'
- name: Copie de gitea-prune.sh
copy:
src: gitea-prune.sh/
dest: /root/gitea
mode: '0755'
- name: Telechargement mkcert
get_url:
url: http://depl/gsbstore/mkcert
dest: /usr/local/bin
mode: '0755'
- name: Initialisation mkcert
command: /usr/local/bin/mkcert -install
args:
chdir: /root/gitea
- name: Creation certificats
command: /usr/local/bin/mkcert -cert-file certs/local-cert.pem -key-file certs/local-key.pem "gitea3.sio.lan" "*.sio.lan"
args:
chdir: /root/gitea
- name: vérification si le réseau proxy existe
command: docker network ls --filter name=proxy
register: net_proxy
- name: création du réseau proxy
command: docker network create proxy
# when: net_proxy.stdout.find('proxy') == -1
when: "'proxy' not in net_proxy.stdout"
#- name: Démarrage du docker-compose...
#command: /bin/bash docker-compose up -d
#args:
#chdir: /root/nxc

10
hello.yml Normal file

@ -0,0 +1,10 @@
---
# This playbook prints a simple debug message
- name: Echo
hosts: all
connection: all
tasks:
- name: Print debug message
debug:
msg: Hello, world!

5
hosts Normal file

@ -0,0 +1,5 @@
[n-infra]
s-kea1.gsb.lan
s-kea2.gsb.lan
s-itil.gsb.lan
s-mon.gsb.lan

12
index.html Normal file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bienvenue sur le serveur X !</title>
</head>
<body>
<h1>Bienvenue sur le serveur X !</h1>
<p>Nous sommes ravis de vous accueillir sur notre serveur.</p>
</body>
</html>

20
install.yml Normal file

@ -0,0 +1,20 @@
---
- hosts: all
become: true
tasks:
- name: 1. installe Apache
apt:
name: apache2
state: present
- name: Copier le fichier HTML vers le répertoire du serveur web
copy:
src: index.html
dest: /var/www/html/index.html
mode: '0644'
- name: S'assurer que le service Apache est démarré
service:
name: apache2
state: started
enabled: yes

8
stop.yml Normal file

@ -0,0 +1,8 @@
---
- hosts: all
become: true
tasks:
- name: 1. Arrete apache2
ansible.builtin.service:
name: apache2
state: stopped