From 9b4c44291ebe235aa11d5708f66789e6f06ff711 Mon Sep 17 00:00:00 2001 From: Nox Date: Wed, 11 Mar 2026 09:59:36 +0000 Subject: [PATCH] feat: add qnap-docker skill --- qnap-docker.skill | Bin 0 -> 1928 bytes skills/qnap-docker/SKILL.md | 82 ++++++++++++++++++ .../references/example-heimdall.yml | 22 +++++ 3 files changed, 104 insertions(+) create mode 100644 qnap-docker.skill create mode 100644 skills/qnap-docker/SKILL.md create mode 100644 skills/qnap-docker/references/example-heimdall.yml diff --git a/qnap-docker.skill b/qnap-docker.skill new file mode 100644 index 0000000000000000000000000000000000000000..e1c1fd04fb392c27613f3989fcb6f13439d572be GIT binary patch literal 1928 zcmah~X)qg#7LL6YG>ThI7}r)U73!9XC6=NRN@^<=wM48Dno{A~O6!Wfm$X$&#P(`` zl}3eXtyN1)V!No?X>37hMU|)b&Ahqu=DvC7%$YOi%zWp^`DVTkWyQxY2><|&0dTf~ zXjlioAxr=OUn1 zJ-Uw>`lr2$@l4}`IRI2RWyJ1eAe14`sOR6M$}vxTDxRDgpln-3CZfBMUWE}GSVnu! z49r(7TvOWHVyLd9-{N9IPkL=>uPVFCM%%>2o<+@4usm5-gwz>_emZNxq*g;#lq1;q zA?L`tL@{3*u19XpYQ)~o{B*XBSRyRi?2k2Ta703Mn|p6^eCe&e4=UFjqwU@ZQNt)z zuEXM$NK9Zn%A&ETva__!`i(HG`EoFLC%6h9h#(UPGF7f6yt-x-urEYO@B8k-Q(eQD zSTkY;`74qAZJVaG7L_!_TIl(`qSJxEg!r2#Z@ln|EWaU$>PsWWsIIK_2)SKoI6wQ!H#7$~r@T$$?cM-j6GWV8-O>)2&wo7!{N56rA z@T|>L?M*AluYsc73>kan)FmffNyYdtapJlm0o<0W*fG>56EdTCxW1`tpo5vzL)_@N zY|gMBuIZ;E3k1Q!r2$+3S+#o>gHv_6+iN;% ztDSexuZUyN^&P+0PUQGQIKHVW*G>T>$1wVc!p# z?b~6k(V8P1=~3b{%bvg%YRf--A}4LC`tZ{j>a%JWlv}x_cC)^|{z8q8knS>Zmp$DO z5~WD1)YW$%2#x4>VkMBEoaiD&rtDyCD{&8;G<-a9rqr+4wl(1AOprvF>7ME}J4cn2 z>oD1%Cla~yzdeGJbnr?O&*Iyw}H(EKg|~9sRTW`{aDp1 z&oi7LY^cM&H*S+-xmBNkTq;wOcT+E86=fo)!zG6Fxqw=-${qL)hZ3yNo3GyW_HoDftG`Jny(YmYD&h+Ct}O$=3=ccTqstsr>-Wtcscq>|>39NoF4YeZ%YI z@|8l1%9Ikoz$+X`H#Ot-MmM$uQD=|>e(tPd0@__Gs%QFo(Lq8CmeJHZRJ6j69KsT4j0nX6Rn~PH0`;Mi05^aKr$NAJREDur37)97xRV z++V@yLAUnVi7&(6N;%iOp*=(=L_z2F?_El7qg!eu6iF|5g$_z`Lv%r#XYS1!AWY(h zgt%*`Y0_fpce<%Qas)0?b;2iiD9^)k{UhESiMdTWyQlQ$@jmF?daiuM#vuNVG~uYcnKfRej`M~3;=3;%~bl$C(s4>0dh<{tIYKc{~IH!^yh literal 0 HcmV?d00001 diff --git a/skills/qnap-docker/SKILL.md b/skills/qnap-docker/SKILL.md new file mode 100644 index 0000000..7466d81 --- /dev/null +++ b/skills/qnap-docker/SKILL.md @@ -0,0 +1,82 @@ +--- +name: qnap-docker +description: Create and deploy Docker Compose services on Christophe's QNAP NAS. Use whenever asked to create, add, install, or deploy a Docker container/service on the QNAP. Handles volume directory creation, proper PUID/PGID permissions, LinuxServer.io image conventions, swag_lan network, and Portainer stack deployment. +--- + +# QNAP Docker Skill + +## Environment + +| Parameter | Value | +|---|---| +| Volume base path | `/share/ZFS24_DATA/docker//` | +| PUID | `1005` | +| PGID | `100` | +| TZ | `Europe/Paris` | +| Network | `swag_lan` (external) | +| Preferred images | `lscr.io/linuxserver/:latest` | + +## Workflow + +### 1. Create volume directory on QNAP + +Christophe's QNAP NAS est accessible via SSH ou Portainer. Pour créer le dossier : + +```bash +# Via SSH (si dispo) +ssh admin@ "mkdir -p /share/ZFS24_DATA/docker/" + +# Ou via un exec dans le conteneur approprié +``` + +Si on passe par Portainer, inclure la création du dossier dans le script de déploiement ou demander à Christophe de le créer si nécessaire. + +### 2. Compose template + +```yaml +services: + : + image: lscr.io/linuxserver/:latest + container_name: + volumes: + - /share/ZFS24_DATA/docker/:/config + # Ajouter d'autres volumes si besoin (ex: /share/ZFS24_DATA/docker//data:/data) + environment: + - PUID=1005 + - PGID=100 + - TZ=Europe/Paris + # Variables spécifiques à l'app ici + ports: + - : + restart: always + +networks: + default: + name: swag_lan + external: true +``` + +### 3. Règles importantes + +- **Nom du dossier = nom du container** — toujours utiliser le même nom pour s'y retrouver +- **Images LinuxServer** (`lscr.io/linuxserver/`) : toujours inclure `PUID`, `PGID`, `TZ` +- **Images non-LinuxServer** : adapter les variables d'env selon la doc de l'image (PUID/PGID peuvent ne pas s'appliquer) +- **Ports** : commenter les ports HTTP non nécessaires si SWAG/reverse proxy gère l'accès +- **Network** : toujours `swag_lan` (external) comme réseau par défaut +- **restart** : toujours `always` + +### 4. Déploiement via Portainer + +Utiliser le skill `portainer` pour déployer ou mettre à jour la stack : +- Endpoint id : `2` +- Créer une nouvelle stack avec le compose généré +- Ou ajouter le service à une stack existante si regroupement logique souhaité + +### 5. SWAG / Reverse proxy + +Si l'app a une interface web, proposer à Christophe de configurer un sous-domaine via SWAG. +Voir les configs proxy disponibles sur [linuxserver.io/swag](https://docs.linuxserver.io/general/swag/). + +## Exemple complet + +Voir `references/example-heimdall.yml` pour un exemple de référence. diff --git a/skills/qnap-docker/references/example-heimdall.yml b/skills/qnap-docker/references/example-heimdall.yml new file mode 100644 index 0000000..0137723 --- /dev/null +++ b/skills/qnap-docker/references/example-heimdall.yml @@ -0,0 +1,22 @@ +# Exemple de référence : Heimdall (LinuxServer) +# Source : message de Christophe, 2026-03-11 + +services: + heimdall: + image: lscr.io/linuxserver/heimdall:latest + container_name: heimdall + volumes: + - /share/ZFS24_DATA/docker/heimdall:/config + environment: + - PUID=1005 + - PGID=100 + - TZ=Europe/Paris + ports: + #- 1180:80 + - 10443:443 + restart: always + +networks: + default: + name: swag_lan + external: true