updt and readme #2

Merged
Ghost merged 1 commits from update-and-readme into main 2025-03-13 00:26:57 +01:00
9 changed files with 147 additions and 97 deletions

151
README.MD
View File

@@ -1,14 +1,27 @@
# Belgium RP - Ansible Infrastructure # Bruxelles Life - Ansible Infrastructure
## Overview ## Overview
Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveur Belgium RP. Le dépôt contient plusieurs rôles, tâches et playbooks Ansible pour automatiser le processus de déploiement.
Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveur Bruxelles Life. Le dépôt contient plusieurs rôles, tâches et playbooks Ansible pour automatiser le processus de déploiement.
## Structure du Dépôt ## Structure du Dépôt
Les fichiers Ansible sont stockés dans le répertoire système :
```
/etc/ansible/
```
- **inventories/** : Contient les fichiers d'inventaire Ansible. - **inventories/** : Contient les fichiers d'inventaire Ansible.
- **host_vars/**: Variables spécifiques aux hôtes.
- `localhost.yml`: Variables spécifiques à localhost.
- `localhost/`: Répertoire contenant des variables supplémentaires spécifiques aux hôtes.
- **playbooks/** : Contient les playbooks Ansible pour déployer les applications. - **playbooks/** : Contient les playbooks Ansible pour déployer les applications.
- **roles/** : Contient les rôles définis pour le déploiement des services.
Le serveur dédié tourne sous **Ubuntu Server (dernière version)**.
## Rôles et Playbooks
### Playbooks
Les playbooks se trouvent dans le répertoire **playbooks/** et sont utilisés pour orchestrer le déploiement.
- **docker/**: Playbooks pour déployer les conteneurs Docker. - **docker/**: Playbooks pour déployer les conteneurs Docker.
- `deploy-docker-bitwarden.yml`: Playbook pour déployer [Bitwarden](https://github.com/bitwarden/server). - `deploy-docker-bitwarden.yml`: Playbook pour déployer [Bitwarden](https://github.com/bitwarden/server).
- **Bitwarden** : Gestionnaire de mots de passe open-source qui stocke et gère les informations de connexion de manière sécurisée. - **Bitwarden** : Gestionnaire de mots de passe open-source qui stocke et gère les informations de connexion de manière sécurisée.
@@ -32,8 +45,8 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
- **Heimdall** : Page d'accueil pour organiser et accéder facilement aux applications et services. - **Heimdall** : Page d'accueil pour organiser et accéder facilement aux applications et services.
- `deploy-docker-homepage.yml`: Playbook pour déployer [Homepage](https://github.com/benphelps/homepage). - `deploy-docker-homepage.yml`: Playbook pour déployer [Homepage](https://github.com/benphelps/homepage).
- **Homepage** : Interface web personnalisable pour accéder rapidement aux applications web et services. - **Homepage** : Interface web personnalisable pour accéder rapidement aux applications web et services.
- `deploy-docker-kanboard.yml`: Playbook pour déployer [Kanboard](https://github.com/kanboard/kanboard). - `deploy-docker-planka.yml`: Playbook pour déployer [Planka](https://github.com/plankanban/planka).
- **Kanboard** : Application de gestion de projets utilisant une approche Kanban pour organiser les tâches. - **Planka** : Application de gestion de projets utilisant une approche Kanban pour organiser les tâches.
- `deploy-docker-nginx.yml`: Playbook pour déployer [Nginx Proxy Manager](https://github.com/NginxProxyManager/nginx-proxy-manager). - `deploy-docker-nginx.yml`: Playbook pour déployer [Nginx Proxy Manager](https://github.com/NginxProxyManager/nginx-proxy-manager).
- **Nginx Proxy Manager** : Interface utilisateur pour gérer les proxys Nginx, avec une gestion simplifiée des certificats SSL. - **Nginx Proxy Manager** : Interface utilisateur pour gérer les proxys Nginx, avec une gestion simplifiée des certificats SSL.
- `deploy-docker-portainer.yml`: Playbook pour déployer [Portainer](https://github.com/portainer/portainer). - `deploy-docker-portainer.yml`: Playbook pour déployer [Portainer](https://github.com/portainer/portainer).
@@ -46,9 +59,11 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
- **Cloudflare** : Réseau de diffusion de contenu et service de sécurité web. - **Cloudflare** : Réseau de diffusion de contenu et service de sécurité web.
- `codeserver.yml`: Playbook pour déployer [Code Server](https://github.com/coder/code-server). - `codeserver.yml`: Playbook pour déployer [Code Server](https://github.com/coder/code-server).
- **Code Server** : Version de Visual Studio Code qui peut être exécutée dans un navigateur web. - **Code Server** : Version de Visual Studio Code qui peut être exécutée dans un navigateur web.
- `deploy-homepage-config.yml`: Playbook pour déployer la configuration de la [Homepage](https://github.com/benphelps/homepage).
- **Homepage Configuration** : Configuration de l'interface web personnalisable pour accéder rapidement aux applications web et services. ### Rôles
- **roles/**: Contient les rôles Ansible pour le déploiement.
Le répertoire **roles/** contient divers rôles Ansible permettant l'automatisation du déploiement de services.
- **deploy-docker/**: Rôle pour déployer les conteneurs Docker. - **deploy-docker/**: Rôle pour déployer les conteneurs Docker.
- **tasks/**: Contient le fichier de tâches principal pour le déploiement. - **tasks/**: Contient le fichier de tâches principal pour le déploiement.
- `main.yml`: Fichier de tâches principal pour exécuter les tâches de déploiement. - `main.yml`: Fichier de tâches principal pour exécuter les tâches de déploiement.
@@ -64,7 +79,7 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
- `gitea.yml`: Configuration pour [Gitea](https://github.com/go-gitea/gitea). - `gitea.yml`: Configuration pour [Gitea](https://github.com/go-gitea/gitea).
- `heimdall.yml`: Configuration pour [Heimdall](https://github.com/linuxserver/Heimdall). - `heimdall.yml`: Configuration pour [Heimdall](https://github.com/linuxserver/Heimdall).
- `homepage.yml`: Configuration pour [Homepage](https://github.com/benphelps/homepage). - `homepage.yml`: Configuration pour [Homepage](https://github.com/benphelps/homepage).
- `kanboard.yml`: Configuration pour [Kanboard](https://github.com/kanboard/kanboard). - `planka.yml`: Configuration pour [Planka](https://github.com/plankanban/planka).
- `nginx.yml`: Configuration pour [Nginx Proxy Manager](https://github.com/NginxProxyManager/nginx-proxy-manager). - `nginx.yml`: Configuration pour [Nginx Proxy Manager](https://github.com/NginxProxyManager/nginx-proxy-manager).
- `portainer.yml`: Configuration pour [Portainer](https://github.com/portainer/portainer). - `portainer.yml`: Configuration pour [Portainer](https://github.com/portainer/portainer).
- `rainloop.yml`: Configuration pour [Rainloop](https://github.com/RainLoop/rainloop-webmail). - `rainloop.yml`: Configuration pour [Rainloop](https://github.com/RainLoop/rainloop-webmail).
@@ -79,23 +94,70 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
- **tests**: Contient les fichiers de test pour le rôle. - **tests**: Contient les fichiers de test pour le rôle.
- **vars**: Contient les fichiers de variables pour le rôle. - **vars**: Contient les fichiers de variables pour le rôle.
## Prérequis ## Stack FiveM avec Docker Compose
- Docker
- Ansible
## Installation ```yaml
1. Clonez le dépôt : version: "3.9" # Déclare la version du fichier Docker Compose
```bash
git clone https://gitlab.com/votre-utilisateur/votre-depot.git services:
cd votre-depot fivem:
image: spritsail/fivem:13227 # Utilise l'image FiveM de Spritsail, version 13227
container_name: fivem # Nomme le conteneur "fivem"
environment:
- NO_LICENSE_KEY=1 # Désactive l'utilisation d'une clé de licence (non recommandé en production)
- NO_DEFAULT_CONFIG=1 # Empêche le chargement de la configuration par défaut
- PUID=0 # Définit l'ID utilisateur à 0 (root)
- PGID=0 # Définit l'ID de groupe à 0 (root)
volumes:
- ./config:/config # Monte un volume local "config" vers "/config" dans le conteneur
- ./txData:/txData # Monte un volume local "txData" vers "/txData" dans le conteneur
ports:
- '40120:40120' # Ouvre le port 40120
- '30120:30120' # Ouvre le port 30120 (TCP)
- '30120:30120/udp' # Ouvre le port 30120 (UDP)
restart: always # Redémarre toujours le conteneur en cas de crash
depends_on:
- fivem-db # Attend que le service "fivem-db" soit actif avant de démarrer
fivem-db:
image: mariadb:10.11.6 # Utilise l'image MariaDB version 10.11.6
container_name: fivem_db # Nomme le conteneur "fivem_db"
environment:
- PUID=0 # Définit l'ID utilisateur à 0 (root)
- PGID=0 # Définit l'ID de groupe à 0 (root)
- MYSQL_ROOT_PASSWORD=tdDgrdv6cs2J0D # Déclare le mot de passe root de MySQL
- TZ=Europe/Paris # Définit le fuseau horaire à Paris
- MYSQL_DATABASE=hardb # Définit le nom de la base de données à "hardb"
- MYSQL_USER=har-admin # Définit l'utilisateur MySQL "har-admin"
- MYSQL_PASSWORD=Xu22DW2SUwfGFv # Mot de passe de l'utilisateur MySQL
command:
--sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION # Définit les options SQL de MySQL
ports:
- 3306:3306 # Ouvre le port MySQL 3306
volumes:
- ./mysql:/var/lib/mysql # Monte un volume pour stocker les données MySQL
restart: always # Redémarre toujours le conteneur en cas de crash
phpmyadmin:
image: phpmyadmin # Utilise l'image officielle de phpMyAdmin
restart: always # Redémarre toujours le conteneur en cas de crash
ports:
- 8080:80 # Associe le port 8080 en local au port 80 du conteneur
environment:
- PMA_ARBITRARY=1 # Autorise la connexion à n'importe quelle base de données MySQL
- UPLOAD_LIMIT=100M # Définit la taille maximale d'upload à 100 Mo
depends_on:
- fivem-db # Attend que le service "fivem-db" soit actif avant de démarrer
``` ```
2. Exécutez le playbook Ansible : ## Tutoriel d'utilisation d'Ansible
### Installation d'Ansible
```bash ```bash
ansible-playbook -i inventories/localhost.yml playbooks/docker/deploy-docker-bitwarden.yml sudo apt update && sudo apt install ansible -y
``` ```
### Tutoriel de Déploiement de Playbook Ansible
1. **Configurer l'inventaire** : 1. **Configurer l'inventaire** :
- Assurez-vous que le fichier `inventories/localhost.yml` contient les informations nécessaires sur les hôtes. - Assurez-vous que le fichier `inventories/localhost.yml` contient les informations nécessaires sur les hôtes.
- Exemple de contenu pour `localhost.yml` : - Exemple de contenu pour `localhost.yml` :
@@ -133,6 +195,45 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
- Modifiez les fichiers YAML dans `roles/deploy-docker/templates/` pour configurer les applications selon vos besoins. - Modifiez les fichiers YAML dans `roles/deploy-docker/templates/` pour configurer les applications selon vos besoins.
- Mettez à jour le fichier d'inventaire avec les détails corrects du serveur. - Mettez à jour le fichier d'inventaire avec les détails corrects du serveur.
### Commandes essentielles
- Vérifier la connexion aux hôtes :
```bash
ansible -i inventories/localhost -m ping all
```
- Exécuter un playbook pour déployer FiveM :
```bash
ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml
```
- Exécuter un playbook en mode test :
```bash
ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml --check
```
- Lister toutes les tâches :
```bash
ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml --list-tasks
```
- Redémarrer un service :
```bash
ansible -i inventories/localhost -m service -a "name=docker state=restarted" all
```
### Dépannage
- Vérifier la syntaxe d'un playbook :
```bash
ansible-playbook --syntax-check playbooks/docker/deploy-docker-fivem.yml
```
- Exécution avec plus de détails :
```bash
ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml -vvv
```
## Contribuer ## Contribuer
1. Forkez le dépôt. 1. Forkez le dépôt.
2. Créez une nouvelle branche (`git checkout -b feature-branch`). 2. Créez une nouvelle branche (`git checkout -b feature-branch`).
@@ -142,11 +243,7 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
6. Ouvrez une Merge Request. 6. Ouvrez une Merge Request.
## Licence ## Licence
Ce projet est sous licence MIT - voir le fichier [LICENSE](LICENSE) pour plus de détails. Ce projet est sous licence MIT
## Créateurs du Projet ## Créateurs du Projet
- Big Geo: Ne supporte pas les humains donc Contact Via MichMich.
- MichMich (Discord: mitch_grey48) - MichMich (Discord: mitch_grey48)
## Remerciements
- Big Geo

16
config.json Normal file
View File

@@ -0,0 +1,16 @@
{
"postgres": {
"host": "127.0.0.1:5433",
"user": "semaphore",
"pass": "TANee5sqeFsgSQf7",
"name": "semaphore",
"options": {
"sslmode": "disable"
}
},
"dialect": "postgres",
"tmp_path": "/tmp/semaphore",
"cookie_hash": "xJQvdcBJYK/yWSok06Jmwf8RMTrBqt9oUrYi7zlpuOk=",
"cookie_encryption": "hwGZaQmZqblsxC2dIwJSGRDlg2hn2Jf2GORxRfY2HbE=",
"access_key_encryption": "0bMSMFKWZPDDR1m5y7YFEyHbjqFT99p5B8dhp8NCYu8="
}

2
nohup.out Normal file
View File

@@ -0,0 +1,2 @@
Loading config
Cannot Find configuration! Use --config parameter to point to a JSON file generated by `semaphore setup`.

View File

@@ -1,9 +0,0 @@
- name: Deploiement du container "Discordbot"
vars:
name_docker: discordbot
hosts: localhost
connection: local
become: true
become_user: "{{ m_user_name }}"
roles:
- deploy-docker

View File

@@ -1,9 +0,0 @@
- name: Deploiement du container "Dolibarr
vars:
name_docker: dolibarr
hosts: localhost
connection: local
become: true
become_user: "{{ m_user_name }}"
roles:
- deploy-docker

View File

@@ -1,9 +0,0 @@
- name: Deploiement du container "Kanboard"
vars:
name_docker: kanboard
hosts: localhost
connection: local
become: true
become_user: "{{ m_user_name }}"
roles:
- deploy-docker

View File

@@ -1,9 +0,0 @@
- name: Deploiement du container "RedM2"
vars:
name_docker: redm-die
hosts: localhost
connection: local
become: true
become_user: "{{ m_user_name }}"
roles:
- deploy-docker

View File

@@ -1,9 +0,0 @@
- name: Deploiement du container "RedM"
vars:
name_docker: redm
hosts: localhost
connection: local
become: true
become_user: "{{ m_user_name }}"
roles:
- deploy-docker

View File

@@ -1,20 +0,0 @@
version: "3"
services:
mariadb:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: 5XgEvqxdAUTA6f
MYSQL_DATABASE: dolibarr
web:
image: tuxgasy/dolibarr
environment:
DOLI_DB_HOST: mariadb
DOLI_DB_USER: root
DOLI_DB_PASSWORD: 5XgEvqxdAUTA6f
DOLI_DB_NAME: dolibarr
DOLI_URL_ROOT: 'http://0.0.0.0'
PHP_INI_DATE_TIMEZONE: 'Europe/Paris'
ports:
- "80:80"
links:
- mariadb