đ VĂ©rifier l'accĂšs au NAS
â Ton NAS apparaĂźt avec son IP locale (ex:
192.168.1.100)â Note cette adresse, tu en auras besoin partout
192.168.1.1 ou 192.168.0.1)â Section "Appareils connectĂ©s" ou "DHCP"
â Cherche un appareil nommĂ© "UGREEN" ou "DXP2800XP"
â Note l'IP (ex:
192.168.1.100)
192.168.1.100 comme exemple. Remplace-la par l'IP réelle de ton NAS dans chaque commande.
â Tape :
http://192.168.1.100:9443â Connecte-toi avec tes identifiants UGOS (ceux créés lors de la config initiale)
â Tu devrais voir le bureau UGOS avec les icĂŽnes d'applications
:80 ou :5000 selon ta config.
â Si elle n'apparaĂźt pas : va dans App Center â cherche "Docker" â Installer
â Si elle est dĂ©jĂ lĂ : clique dessus â vĂ©rifie que le service est Actif (Running)
â Docker est prĂȘt quand tu vois l'interface avec les onglets : Container, Image, Network, Volume
â Tu vois l'espace total et utilisĂ© de tes volumes
â Il te faut au minimum 500 Mo libres (pour Docker + Nginx + site)
â Ajoute un bail pour le NAS : MAC address du NAS â IP fixe
192.168.1.100Alternative UGOS : Panneau de contrĂŽle â RĂ©seau â IPv4 â Manuel
â IP :
192.168.1.100â Masque :
255.255.255.0â Passerelle :
192.168.1.1â DNS :
8.8.8.8
đ CrĂ©er la structure de dossiers
â Navigue vers le volume principal (souvent
/volume1)â Clique "Nouveau dossier" â Nomme-le :
dockerâ Dans
docker/, crĂ©e un sous-dossier : MartialAppâ Dans
MartialApp/, crée deux sous-dossiers : site et nginx
/volume1/docker/MartialApp/site/ â contiendra les fichiers HTML/volume1/docker/MartialApp/nginx/ â contiendra la config Nginx
22.
/volume1/docker/MartialApp/site/ :.py, .md, ou .git/. Seulement les fichiers listés ci-dessus (15 fichiers). Ce sont les seuls nécessaires pour que le site fonctionne.
đ MĂ©thode A : Interface web UGOS (glisser-dĂ©poser)
http://192.168.1.100:9443) â ouvre le Gestionnaire de fichiers/volume1/docker/MartialApp/site/~/Projects/MartialApp/â SĂ©lectionne TOUS les fichiers .html + .png + .jpeg + manifest.json + sw.js
â Glisse-les directement dans la fenĂȘtre du gestionnaire UGOS
â Attends la fin du transfert (barre de progression)
â Tu devrais voir tous les fichiers listĂ©s dans le dossier
site/
đ» MĂ©thode B : SMB/CIFS depuis le Finder (Mac)
â Onglet SMB â Active le service SMB
â VĂ©rifie que le dossier
docker est partagé en SMB
MartialApp/site/ et copie-colle tous les fichiers depuis ton dossier local ~/Projects/MartialApp/.âšïž MĂ©thode C : SCP en ligne de commande (la plus rapide)
đ„ TĂ©lĂ©charger l'image Nginx
â Clique "Ajouter" ou "Registry"
â Cherche :
nginxâ SĂ©lectionne l'image officielle nginx
â Tag :
alpine (version lĂ©gĂšre, ~25 Mo)â Clique TĂ©lĂ©charger
ⳠAttends le téléchargement (~30 secondes en fibre)
â L'image
nginx:alpine apparaĂźt dans ta liste d'images
âïž CrĂ©er le fichier nginx.conf
/volume1/docker/MartialApp/nginx/nginx.conf sur le NAS. Tu peux le créer via SSH ou via le gestionnaire de fichiers UGOS.
Ctrl+O â EntrĂ©e pour sauvegarder, puis Ctrl+X pour quitter.
âą Sert le site sur le port 80 du conteneur
âą Compresse les fichiers (gzip) pour un chargement rapide
âą Configure le cache correctement pour les images (30j) et les HTML (pas de cache)
âą Le Service Worker
sw.js n'est JAMAIS caché (obligatoire pour les mises à jour PWA)⹠Le manifest PWA est servi avec le bon type MIME
đ CrĂ©er et lancer le conteneur
Image :
nginx:alpineNom du conteneur :
MartialApp-webPort Mapping :
Port local :
8080 â Port conteneur : 80Volume Mounts (2 montages) :
â
/volume1/docker/MartialApp/site â /usr/share/nginx/html (Read Only)âĄ
/volume1/docker/MartialApp/nginx/nginx.conf â /etc/nginx/nginx.conf (Read Only)RedĂ©marrage :
always (redĂ©marre automatiquement si le NAS reboot)â Clique CrĂ©er puis DĂ©marrer
⹠Configuration centralisée et lisible
âą Facile Ă maintenir et Ă modifier
⹠Déploiement reproductible
⹠Gestion simplifiée des volumes et réseaux
âą Standard de l'industrie pour les projets multi-conteneurs
âą
-d â DĂ©tachĂ© (tourne en arriĂšre-plan)âą
--name MartialApp-web â Nom du conteneur pour le retrouver facilementâą
--restart always â RedĂ©marre auto aprĂšs un reboot du NASâą
-p 8080:80 â Le port 8080 du NAS redirige vers le port 80 de Nginxâą
-v .../site:/usr/share/nginx/html:ro â Monte les fichiers du site (read-only)âą
-v .../nginx.conf:/etc/nginx/nginx.conf:ro â Monte la config Nginx
đ AccĂ©der au site
â Tape :
http://192.168.1.100:8080đ Ton site "Mon Parcours Martial" s'affiche !
â Teste la navigation entre les pages
â VĂ©rifie que les images chargent
â VĂ©rifie que "SĂ©ance du Jour" fonctionne
â Ouvre Safari
â Tape :
http://192.168.1.100:8080â Le site s'affiche ! Teste la navigation.
đĄ Astuce : Ajoute un signet pour y accĂ©der rapidement
http://192.168.1.100:8080đČ Installer en PWA (comme une app)
manifest.json et au sw.js dĂ©jĂ prĂ©sents dans ton site, tu peux l'installer comme une vraie application sur l'Ă©cran d'accueil de ton tĂ©lĂ©phone. Il fonctionnera mĂȘme hors connexion aprĂšs la premiĂšre visite.
â Ouvre
http://192.168.1.100:8080⥠Tape l'icĂŽne Partager (carrĂ© avec flĂšche vers le haut) â
⹠Scrolle et tape "Sur l'écran d'accueil"
⣠Confirme le nom : "Kajukenbo 2026"
†Tape "Ajouter"
â L'icĂŽne Kajukenbo apparaĂźt sur ton Ă©cran d'accueil !
â Ouvre-la : le site s'ouvre en plein Ă©cran, sans barre Safari
â Fonctionne mĂȘme sans Wi-Fi (grĂące au Service Worker)
â Ouvre
http://192.168.1.100:8080⥠Chrome affiche une banniÚre "Installer l'application" en bas
âą Tape "Installer"
Pas de banniĂšre ? â Menu âź (3 points) â "Installer l'application"
â L'app apparaĂźt dans ton tiroir d'applications !
đ SĂ©curiser UGOS (le systĂšme du NAS)
â SĂ©lectionne le compte
adminâ Clique Modifier â Change le mot de passe
â Utilise un gestionnaire de mots de passe (1Password, Bitwarden)
đĄ RecommandĂ© : CrĂ©e un 2Ăšme compte utilisateur avec droits admin, dĂ©sactive le compte "admin" par dĂ©faut
â Active la vĂ©rification en deux Ă©tapes
â Scanne le QR code avec Google Authenticator ou Authy
â Entre le code Ă 6 chiffres pour confirmer
â DĂ©sormais, chaque connexion Ă UGOS demande un code temporaire
â Active le firewall
â Politique par dĂ©faut : Refuser tout
â Ajoute des rĂšgles pour autoriser uniquement :
âą Port
9443 â Interface UGOS (rĂ©seau local uniquement)âą Port
8080 â Ton site web Nginxâą Port
22 â SSH (rĂ©seau local uniquement)âą Port
443 â HTTPS (si accĂšs internet activĂ©)â Source : 192.168.1.0/24 (uniquement ton rĂ©seau local)
â Active le blocage automatique
â RĂšgle : Bloquer aprĂšs
5 tentatives Ă©chouĂ©es en 5 minutesâ DurĂ©e de blocage :
permanente (ou 24h minimum)â Cela bloque les attaques par force brute sur SSH et UGOS
â Active les mises Ă jour automatiques
â Planifie-les la nuit (ex: 4h du matin)
đł SĂ©curiser Docker + Nginx
docker run utilise dĂ©jĂ :ro (read-only) sur les volumes. Cela empĂȘche le conteneur de modifier les fichiers du site. C'est une bonne pratique essentielle.server de ton nginx.conf pour une protection maximale :âą
X-Frame-Options â EmpĂȘche l'inclusion dans une iframe (clickjacking)âą
X-Content-Type-Options â EmpĂȘche le MIME sniffingâą
X-XSS-Protection â Protection XSS du navigateurâą
Referrer-Policy â ContrĂŽle les infos envoyĂ©es en refererâą
Permissions-Policy â Bloque camĂ©ra, micro, gĂ©olocâą
Content-Security-Policy â Bloque les scripts externesâą
server_tokens off â Cache la version Nginx (Ă©vite les exploits ciblĂ©s)
âą
--network martial-net â RĂ©seau isolĂ©âą
--read-only â Filesystem du conteneur en lecture seuleâą
--tmpfs â RĂ©pertoires temporaires en RAM (nĂ©cessaires pour Nginx)
â CrĂ©e une tĂąche de sauvegarde pour
/volume1/docker/â Destination : USB externe ou cloud (Google Drive, Backblaze B2)
â Planification : quotidienne Ă 2h du matin
â RĂ©tention : 7 versions minimum
đ MĂ©thode A : Reverse Proxy + DDNS + Let's Encrypt
https://martial.mondomaine.com avec un certificat SSL gratuit.
â UGOS â Panneau de contrĂŽle â AccĂšs externe â DDNS
â Sinon, configure manuellement avec un cron :
*/5 * * * * curl -s "https://www.duckdns.org/update?domains=martial&token=TON_TOKEN"
192.168.1.1)â Section NAT ou Port Forwarding ou Redirection de ports
â Ajoute 2 rĂšgles :
âą Port externe
80 â IP 192.168.1.100 port 80 (pour Let's Encrypt)âą Port externe
443 â IP 192.168.1.100 port 443 (HTTPS)
http://192.168.1.100:81Email :
admin@example.com / Mot de passe : changemeâ Change-les immĂ©diatement aprĂšs la premiĂšre connexion !
http://192.168.1.100:81) :â Proxy Hosts â Add Proxy Host
Domain Names :
martial.duckdns.orgForward Hostname :
192.168.1.100Forward Port :
8080Block Common Exploits : â ActivĂ©
Websockets Support : â ActivĂ©
â Onglet SSL :
â Request a new SSL Certificate
â â Force SSL
â â HTTP/2 Support
â Email : ton email (pour Let's Encrypt)
â â Accepte les conditions
â Clique Save
https://martial.duckdns.org avec un certificat SSL valide, depuis n'importe oĂč dans le monde !
âïž MĂ©thode B : Cloudflare Tunnel (Zero Trust, sans port forwarding)
â Va sur https://dash.cloudflare.com â crĂ©e un compte â ajoute ton domaine.
â Change les nameservers chez ton registrar vers ceux de Cloudflare.
â Create a Tunnel â Nom :
MartialAppâ Copie le token â colle-le dans la commande Docker ci-dessus
â Configure la route :
Public hostname :
martial.tondomaine.comService :
http://192.168.1.100:8080â Save
âą Aucun port ouvert sur ton routeur (0 risque d'intrusion directe)
âą SSL automatique + protection DDoS gratuite
âą Cache CDN mondial (ton site charge vite partout)
âą Firewall applicatif (WAF) inclus
đ MĂ©thode C : VPN (accĂšs privĂ© uniquement)
http://192.168.1.100:51821â CrĂ©e un profil client â tĂ©lĂ©charge le QR code
â Sur ton iPhone : installe l'app WireGuard â scanne le QR
â ConnectĂ© au VPN, tu accĂšdes Ă
http://192.168.1.100:8080 comme en local !51820 sur ton routeur vers l'IP du NAS pour que le VPN soit accessible depuis l'extérieur.
đ Reverse Proxy + DDNS â URL publique, SSL, requiert port forwarding 80/443
âïž Cloudflare Tunnel â URL publique, SSL, aucun port ouvert, protection DDoS, RECOMMANDĂ
đ VPN WireGuard â AccĂšs privĂ© seulement, ultra-sĂ©curisĂ©, requiert port UDP 51820
đ Mises Ă jour & Astuces avancĂ©es
đ Script de mise Ă jour automatique (update.sh)
Crée ce script sur le NAS pour mettre à jour le site depuis GitHub en une commande :
â° Cron Job â Mise Ă jour automatique quotidienne
Programme la mise Ă jour chaque nuit Ă 3h du matin :
đł Watchtower â Mise Ă jour auto de l'image Docker
Watchtower surveille et met Ă jour automatiquement tes conteneurs Docker :
Watchtower vérifie chaque 24h si nginx:alpine a une nouvelle version et la met à jour automatiquement.
đ Astuce : AccĂšs par nom au lieu d'IP
Pour taper http://martial.local:8080 au lieu de l'IP :
đ RĂ©capitulatif complet
Ce que tu as accompli :
- â NAS UGREEN DXP2800XP configurĂ© avec Docker
- â Nginx Alpine comme serveur web (~25 Mo)
- â Config Nginx optimisĂ©e (gzip, cache, MIME, Service Worker)
- â Site accessible sur tout le rĂ©seau local
- â Installable en PWA sur iPhone et Android
- â Fonctionne offline grĂące au Service Worker
- â RedĂ©marre automatiquement aprĂšs un reboot du NAS
- â Script de mise Ă jour depuis GitHub
- â 100% auto-hĂ©bergĂ©, aucun cloud, aucun abonnement
Ton site martial arts vit maintenant sur ton NAS UGREEN.
Chez toi. Sous ton contrĂŽle. Toujours disponible.