Compare commits
4 Commits
6b38351bc6
...
e177166362
| Author | SHA1 | Date | |
|---|---|---|---|
| e177166362 | |||
| c0b6d77a42 | |||
| d9b5947a3d | |||
| 8330c2ff9e |
2
.obsidian/graph.json
vendored
2
.obsidian/graph.json
vendored
@@ -46,6 +46,6 @@
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 1,
|
||||
"scale": 0.9999999999999991,
|
||||
"close": true
|
||||
}
|
||||
3
Sans titre.md
Normal file
3
Sans titre.md
Normal file
@@ -0,0 +1,3 @@
|
||||
aujourd'hui j'ai installé un client pour me connecté sur mon bus [[MQTT]].
|
||||
j'ai utilisé [[mosquitto]]. ça marche super bien. il fonctionne sous [[linux]].
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
title: "Déploiement d'Apache Guacamole via Docker sur Debian 12 (Bookworm)"
|
||||
description:
|
||||
tags: []
|
||||
date: 2026-03-11 00:27
|
||||
lastmod: 2026-03-11 01:19
|
||||
type:
|
||||
- article
|
||||
category:
|
||||
- "[[Guide]]"
|
||||
status: brouillon
|
||||
---
|
||||
|
||||
# Déploiement d'Apache Guacamole via Docker sur Debian 12 (Bookworm)
|
||||
|
||||
L'installation d'Apache Guacamole peut vite devenir un enfer de dépendances (Java, Tomcat, extensions JDBC). Le passage par Docker simplifie tout, à condition de bien gérer la persistance des données et l'initialisation de la base PostgreSQL.
|
||||
|
||||
## 1. La Philosophie du Stack
|
||||
|
||||
Nous utilisons un trio de conteneurs isolés :
|
||||
|
||||
- **Guacamole Client** : L'interface Web (Java/Tomcat).
|
||||
|
||||
- **Guacd** : Le moteur natif (proxy RDP/SSH/VNC).
|
||||
|
||||
- **PostgreSQL** : Le cerveau (stockage des utilisateurs et connexions).
|
||||
|
||||
|
||||
## 2. Préparation du terrain
|
||||
|
||||
On commence par structurer notre projet sur l'hôte :
|
||||
|
||||
```Bash
|
||||
mkdir ~/guacamole-docker && cd ~/guacamole-docker
|
||||
mkdir -p guacamole-home data init
|
||||
```
|
||||
|
||||
## 3. Le Docker-Compose "Gagnant"
|
||||
|
||||
Le secret d'une installation qui ne casse pas lors des mises à jour réside dans l'utilisation d'un fichier `guacamole.properties` externe.
|
||||
|
||||
`nano docker-compose.yml`
|
||||
|
||||
```YAML
|
||||
services:
|
||||
# Moteur de protocoles
|
||||
guacd:
|
||||
image: guacamole/guacd
|
||||
container_name: guacd
|
||||
restart: always
|
||||
|
||||
# Base de données
|
||||
postgres:
|
||||
image: postgres:15
|
||||
container_name: guac-postgres
|
||||
restart: always
|
||||
environment:
|
||||
POSTGRES_DB: guacamole_db
|
||||
POSTGRES_USER: guacamole_user
|
||||
POSTGRES_PASSWORD: TonMotDePasseFort
|
||||
volumes:
|
||||
- ./data:/var/lib/postgresql/data
|
||||
- ./init:/docker-entrypoint-initdb.d
|
||||
|
||||
# Interface Web
|
||||
guacamole:
|
||||
image: guacamole/guacamole
|
||||
container_name: guacamole
|
||||
restart: always
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
GUACD_HOSTNAME: guacd
|
||||
POSTGRESQL_HOSTNAME: postgres
|
||||
POSTGRESQL_DATABASE: guacamole_db
|
||||
POSTGRESQL_USER: guacamole_user
|
||||
POSTGRESQL_PASSWORD: TonMotDePasseFort
|
||||
volumes:
|
||||
- ./guacamole-home/guacamole.properties:/etc/guacamole/guacamole.properties
|
||||
depends_on:
|
||||
- guacd
|
||||
- postgres
|
||||
```
|
||||
|
||||
## 4. Initialisation de la Base de Données
|
||||
|
||||
C’est l'étape où 90% des installations échouent. Il faut générer le schéma SQL officiel de Guacamole et le donner à manger à Postgres.
|
||||
|
||||
```Bash
|
||||
# Générer le script SQL
|
||||
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgresql > ./init/01_initdb.sql
|
||||
|
||||
# Lancer les conteneurs (Postgres va lire le dossier ./init)
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 5. Configuration Fine (`guacamole.properties`)
|
||||
|
||||
Pour éviter que Java n'ignore vos variables d'environnement, créez ce fichier :
|
||||
|
||||
`nano guacamole-home/guacamole.properties`
|
||||
|
||||
```Properties
|
||||
postgresql-hostname: postgres
|
||||
postgresql-port: 5432
|
||||
postgresql-database: guacamole_db
|
||||
postgresql-username: guacamole_user
|
||||
postgresql-password: TonMotDePasseFort
|
||||
# Optionnel : priorité à la DB
|
||||
extension-priority: postgresql
|
||||
```
|
||||
|
||||
## 6. Le "Cheat Code" pour le premier accès
|
||||
|
||||
Si `guacadmin` / `guacadmin` vous renvoie un "Identifiant incorrect" (souvent dû à un souci de hachage lors de l'init), créez un admin de secours directement en SQL :
|
||||
|
||||
```Bash
|
||||
docker exec -i guac-postgres psql -U guacamole_user -d guacamole_db -c "INSERT INTO guacamole_entity (name, type) VALUES ('admin_devops', 'USER');"
|
||||
docker exec -i guac-postgres psql -U guacamole_user -d guacamole_db -c "INSERT INTO guacamole_user (entity_id, password_hash, password_salt, password_date) SELECT entity_id, decode('8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', 'hex'), NULL, CURRENT_TIMESTAMP FROM guacamole_entity WHERE name = 'admin_devops';"
|
||||
docker exec -i guac-postgres psql -U guacamole_user -d guacamole_db -c "INSERT INTO guacamole_system_permission (entity_id, permission) SELECT entity_id, permission::guacamole_system_permission_type FROM guacamole_entity, (VALUES ('CREATE_CONNECTION'), ('CREATE_USER'), ('ADMINISTER')) AS p (permission) WHERE name = 'admin_devops';"
|
||||
```
|
||||
|
||||
_Identifiants : `admin_devops` / `admin`_
|
||||
|
||||
---
|
||||
|
||||
## 🛠 Tips de DevOps :
|
||||
|
||||
- **Logs** : Utilisez `docker logs -f guacamole` pour voir les extensions se charger. Vous devez voir `PostgreSQL Authentication loaded`.
|
||||
|
||||
- **Sécurité** : Une fois connecté, créez votre utilisateur final et **supprimez** les comptes par défaut ou de secours.
|
||||
|
||||
- **HTTPS** : Ne laissez jamais Guacamole en HTTP (8080). Posez un **Nginx Proxy Manager** ou un **Traefik** devant pour gérer le SSL.
|
||||
|
||||
|
||||
42
articles/2026/convertir un fichier mkv en mp4.md
Normal file
42
articles/2026/convertir un fichier mkv en mp4.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Convertir un fichier MKV en MP4
|
||||
description: Remuxing d'un fichier mkv en mp4 sous linux avec ffmpeg.
|
||||
tags:
|
||||
- ffmpeg
|
||||
- mp4
|
||||
- mkv
|
||||
date: 2026-03-11 17:59
|
||||
lastmod: 2026-03-11 18:02
|
||||
type:
|
||||
- article
|
||||
category:
|
||||
- "[[Guide]]"
|
||||
status: brouillon
|
||||
---
|
||||
|
||||
# Convertir un fichier MKV en MP4
|
||||
|
||||
Un fichier vidéo est comme une boîte (le **conteneur** : MKV, MP4) qui contient des objets (les **flux** : vidéo H.264/H.265, audio AAC/MP3). Comme le MKV et le MP4 acceptent souvent les mêmes types de flux vidéo, on peut simplement "transvaser" le contenu de l'un vers l'autre sans rien transformer.
|
||||
|
||||
C'est ce qu'on appelle le **remuxing** (ou copie de flux). C'est instantané et il n'y a **aucune perte de qualité**.
|
||||
|
||||
Sous Linux Mint, l'outil roi est **FFmpeg**. S'il n'est pas installé : `sudo apt install ffmpeg`.
|
||||
|
||||
Pour changer le conteneur sans réencoder la vidéo ni l'audio, ouvrez un terminal dans votre dossier et tapez :
|
||||
|
||||
``ffmpeg -i entree.mkv -codec copy sortie.mp4``
|
||||
|
||||
- `-i entree.mkv` : votre fichier source.
|
||||
|
||||
- `-codec copy` : indique à FFmpeg de copier les flux tels quels sans les recalculer.
|
||||
|
||||
- `sortie.mp4` : le nouveau fichier.
|
||||
|
||||
Bien que le changement de conteneur suffise 90% du temps, voici deux cas où cela pourrait coincer :
|
||||
|
||||
1. **Le format audio :** Le MP4 est plus strict que le MKV. Si votre MKV contient de l'audio au format **FLAC** ou **Vorbis**, certains lecteurs MP4 ne l'aimeront pas. Il faudra alors convertir juste l'audio :
|
||||
|
||||
- `ffmpeg -i entree.mkv -c:v copy -c:a aac sortie.mp4` (On copie la vidéo, on convertit l'audio en AAC).
|
||||
|
||||
2. **Les sous-titres :** Le MKV gère très bien les sous-titres intégrés (ASS/SSA). Le MP4 est beaucoup plus limité. Ils risquent de disparaître lors d'un simple "copy".
|
||||
|
||||
0
mosquitto.md
Normal file
0
mosquitto.md
Normal file
Reference in New Issue
Block a user