Aller au contenu

[TUTO][Docker] linuxserver/wireguard + Wireguard-UI


loli71

Messages recommandés

1. Préambule

Ce tutoriel a pour but d'installer un serveur VPN wireguard en docker incluant wireguard-ui pour faciliter l'administration du serveur et des clients.
WireGuard est un protocole de communication et un logiciel libre et open source permettant de créer un réseau privé virtuel. Il est conçu avec les objectifs de facilité d'utilisation, de performances et de surface d'attaque basse.  

2. Prérequis

    Avoir un NAS compatible Docker, voir la liste ici https://www.synology.com/fr-fr/dsm/packages/Docker.
    Savoir se connecter au NAS via SSH en root : https://www.nas-forum.com/forum/topic/57289-tuto-accès-ssh-et-root-via-dsm-6-et-7/
    Utiliser Docker-compose ou portainer
    
3. Principe
Dans ce tuto, j'utilise l'image docker linuxserver/docker-wireguard qui est maintenu à jour régulièrement ainsi que wireguard-ui (https://github.com/ngoduykhanh/wireguard-ui). Le fait d'inclure le binaire wireguard-ui dans linuxserver/docker-wireguard permet entre autre de voir aussi facilement les peers connectés et leurs stats.

Sources:
https://hub.docker.com/r/linuxserver/wireguard
https://docs.linuxserver.io/images/docker-wireguard
https://github.com/ngoduykhanh/wireguard-ui

4. Mise en place

Dans ce tuto j'utilise les informations suivantes, qui seront à adapter selon votre réseau et vos besoins (surtout dans le fichier docker-compose.yaml):

Réseau LAN local: 192.168.1.0/24  
Serveur DNS dans mon réseau Lan local (ma box): 192.168.1.1 qui permet la résolution entre autre des noms internes
Réseau interne de Wireguard: 10.13.13.0/24 

ATTENTION:

Dans ce tuto, la configuration mise en place permet d'accéder au lan local depuis les clients, mais le reste du traffic internet ne passera pas par ce VPN.
Pour faire passer l'ensemble du traffic d'un client par le VPN, utiliser "0.0.0.0/0" comme valeur dans le docker-compose pour les variables ALLOWEDIPS et WGUI_DEFAULT_CLIENT_ALLOWED_IPS

4.1 Création des répertoires:
Il faut créer les répertoires suivants dans le dossier partagé docker:

wireguard/
├── config
├── custom-files
│   ├── custom-cont-init.d
│   └── custom-services.d
├── db
└── wireguard-ui

Vous pouvez utiliser File Station pour cela, le résultat doit être le suivant:

image.thumb.png.519d8f7a42f44dd4680691ca726ddaab.png

4.2 Création des fichiers:

Il faut ensuite créer les fichiers suivants, soit en utilisant l'éditeur de texte du DSM soit en ssh avec vim

wireguard/custom-files/custom-cont-init.d/init.sh:

#!/usr/bin/with-contenv bash

echo "**** installing inotify-tools ****"
apk update && apk add inotify-tools

 

wireguard/custom-files/custom-cont-init.d/install_wg-ui.sh:

#!/usr/bin/with-contenv bash

echo "**** installing wg-ui ****"
cp /wireguard-ui/wg-ui /app/wg-ui
chmod 755 /app/wg-ui

if [ -r /wireguard-ui/wg_template.conf ]; then
    cp /wireguard-ui/wg_template.conf /wg_template.conf
fi


wireguard/custom-files/custom-services.d/watch.sh:

#!/usr/bin/with-contenv bash

while inotifywait -e modify -e create /config/wg0.conf; do
  wg-quick down wg0
  wg-quick up wg0
done


wireguard/custom-files/custom-services.d/wg-ui.sh:

#!/usr/bin/with-contenv bash

if netstat -apn | grep -q ":5000 "; then
  echo "Another service is using port 5000, disabling wg-ui"
  sleep infinity
else
  echo $ENV
  echo "start wg-ui"
  exec \
    cd /app \
    ./wg-ui
fi

wireguard-ui/wg-ui (binaire):

Récupérer la dernière version de l'exécutable pour l'archi correspondante à votre synology sur https://github.com/ngoduykhanh/wireguard-ui/releases décompressez la, et déposez l'exécutable wireguard-ui sous le nom wireguard-ui/wg-ui


Exemple en ssh:

export VERSION=v0.5.1 # Changer la version pour pointer sur la dernière
export ARCHI=linux-amd64   # Changer architecture si besoin

cd /tmp/
wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
tar -zxf wireguard-ui-${VERSION}-${ARCHI}.tar.gz
mv wireguard-ui /volume1/docker/wireguard/wireguard-ui/wg-ui
rm -f wireguard-ui-${VERSION}-${ARCHI}.tar.gz

 

OPTIONNEL: Si vous souhaitez fournir votre propre template wireguard-ui, vous pouvez partir du fichier ci dessous:
wireguard/wireguard-ui/wg_template.conf:

# This file was generated using wireguard-ui (https://github.com/ngoduykhanh/wireguard-ui)
# Please don't modify it manually, otherwise your change might get replaced.

# Address updated at:     {{ .serverConfig.Interface.UpdatedAt }}
# Private Key updated at: {{ .serverConfig.KeyPair.UpdatedAt }}
[Interface]
Address = {{$first :=true}}{{range .serverConfig.Interface.Addresses }}{{if $first}}{{$first = false}}{{else}},{{end}}{{.}}{{end}}
ListenPort = {{ .serverConfig.Interface.ListenPort }}
PrivateKey = {{ .serverConfig.KeyPair.PrivateKey }}
{{if .globalSettings.MTU}}MTU = {{ .globalSettings.MTU }}{{end}}
PostUp = {{ .serverConfig.Interface.PostUp }}
PostDown = {{ .serverConfig.Interface.PostDown }}

{{range .clientDataList}}{{if eq .Client.Enabled true}}
# ID:           {{ .Client.ID }}
# Name:         {{ .Client.Name }}
# Email:        {{ .Client.Email }}
# Created at:   {{ .Client.CreatedAt }}
# Update at:    {{ .Client.UpdatedAt }}
[Peer]
PublicKey = {{ .Client.PublicKey }}
{{if .Client.PresharedKey }}PresharedKey = {{ .Client.PresharedKey }}
{{end}}AllowedIPs = {{$first :=true}}{{range .Client.AllocatedIPs }}{{if $first}}{{$first = false}}{{else}},{{end}}{{.}}{{end}}{{range .Client.ExtraAllowedIPs }},{{.}}{{end}}
{{end}}{{end}}


Vous devez obtenir le résultat suivant dans votre répertoire partagé docker:

wireguard/
├── config/
├── custom-files/
│   ├── custom-cont-init.d/
│   │   ├── init.sh
│   │   └── install_wg-ui.sh
│   └── custom-services.d/
│       ├── watch.sh
│       └── wg-ui.sh
├── db/
└── wireguard-ui1/
    ├── wg_template.conf # optionnel
    └── wg-ui

 

7. Création du conteneur
Récupérez le PUID/PGID à utiliser en vous connectant en ssh et tapez dans la console "id", on prendra alors note du uid/gid retourné.

ATTENTION: il semblerait qu'il soit nécessaire d'utiliser le gid retourné pour le groupe "administrators" au lieu de celui retourné pour le groupe "users" dans la commande "id"

docker-compose.yaml:

version: "3.6"
services:
  wireguard:
    image: lscr.io/linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=1
      - net.ipv6.conf.default.disable_ipv6=1
    environment:
      - PUID=1026
      - PGID=101
      - TZ=Europe/Paris
      # pour wireguard partie serveur:
      - SERVERURL=<monnas.synology.me> # A REMPLACER 
      - SERVERPORT=51820
      - PEERDNS=192.168.1.1
      - INTERNAL_SUBNET=10.13.13.0
      - ALLOWEDIPS=192.168.1.0/24, 10.13.13.0/24 # exemple donnant accès uniquement au lan local au travers du VPN, pour faire passer tout traffic mettre 0.0.0.0/0
      - LOG_CONFS=false # Affiche ou non le QR codes généré dans la log docker
      # pour la partie wireguard-ui:
      - SESSION_SECRET=<une chaine aléatoirement> # A REMPLACER
      - WGUI_USERNAME=<le compte admin> # A REMPLACER
      - WGUI_PASSWORD=<le mot de passe admin> # A REMPLACER
      - WGUI_ENDPOINT_ADDRESS=<monnas.synology.me> # A REMPLACER
      - WGUI_DNS=192.168.1.1
      - WGUI_SERVER_INTERFACE_ADDRESSES=10.13.13.0/24
      - WGUI_SERVER_LISTEN_PORT=51820
      - WGUI_DEFAULT_CLIENT_ALLOWED_IPS=192.168.1.0/24, 10.13.13.0/24 # exemple donnant accès uniquement au lan local au travers du VPN, pour faire passer tout traffic mettre 0.0.0.0/0
      - WGUI_SERVER_POST_UP_SCRIPT=iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
      - WGUI_SERVER_POST_DOWN_SCRIPT=iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE
      
    volumes:
      - /lib/modules:/lib/modules
      - /volume1/docker/wireguard/config:/config
      - /volume1/docker/wireguard/custom-files/custom-cont-init.d:/custom-cont-init.d:ro
      - /volume1/docker/wireguard/custom-files/custom-services.d:/custom-services.d:ro
      # pour wg-ui
      - /volume1/docker/wireguard/db:/app/db
      - /volume1/docker/wireguard/wireguard-ui:/wireguard-ui:ro
    ports:
      - 63710:51820/udp
      - 51821:5000/tcp
    restart: always

ATTENTION: pensez bien à:

  • Modifier les points de montage pour qu'ils correspondent bien au chemin sur votre synology
  • Mettre vos propres valeurs lorsqu'il est indiqué en commentaire # A REMPLACER.

Remarque:

Les variables dans ce fichier semblent être déclarées en double, mais la première partie permet de configurer wireguard, et la deuxième partie (après pour wg-ui) permet de déclarer les valeurs par défaut utilisées dans l'interface Web.

Explication des valeurs:

  • SERVERURL et WGUI_ENDPOINT_ADDRESS: doivent contenir le nom qui sera utilisé par les clients pour se connecter (on mets le nom fourni par DDNS si pas d'ip fixe sur la box). Ex: monnas.synology.me
  • SERVERPORT et WGUI_SERVER_LISTEN_PORT: contiennent la valeur du port UDP définie dans la partie serveur (en écoute) et dans la configuration du client
  • PEERDNS et WGUI_DNS: contiennent l'IP du serveur DNS qui sera envoyé aux clients pour qu'ils l'utilisent (dans notre cas, il s'agit de l'ip de la box 192.168.1.1 afin de pouvoir résoudre mes noms internes)
  • INTERNAL_SUBNET et WGUI_SERVER_INTERFACE_ADDRESSES: contiennent la définition du réseau qu'utilisera Wireguard, la variable est optionnelle si tu ne veux pas la spécifier car elle est mise par défaut à 10.13.13.0/24
  • ALLOWEDIPS et WGUI_DEFAULT_CLIENT_ALLOWED_IPS: contiennent la liste des réseaux qui seront routés depuis le clients vers le serveur, dans notre cas le réseau interne de wireguard bien sûr mais aussi le LAN local 192.168.1.0/24.
    • Cela permet un accès aux machines du Lan local, mais le reste du traffic (internet) ne sera pas envoyé dans le VPN depuis le client.
    • Si vous souhaitez que tout le traffic des clients passe par le VPN, il suffit de mettre à la place "0.0.0.0/0" dans ces champs à la place.
  • LOG_CONFS: Affiche ou non le QR codes généré dans la log docker, dans notre cas, on aura les QR codes dans l'interface web, donc j'ai mis à false
  • WGUI_SERVER_POST_UP_SCRIPT et WGUI_SERVER_POST_DOWN_SCRIPT: règles iptables nécessaires pour le bon fonctionnement du serveur wireguard (trouvé dans plusieurs autres tutos)


7.1 Via portainer

Créer une nouvelle stack en utilisant le fichier docker-compose.yaml ci-dessus.

Déployez le stack.

7.2 Via ssh

Créez le fichier wireguard/docker-compose.yaml  avec les informations ci-dessus.
Pour créer le conteneur, connectez vous en ssh et passer les commandes suivantes en tant que root:

cd /volume1/docker/wireguard
docker-compose pull 

Ce qui va télécharger la dernière version de l'image.
Puis :

docker-compose up -d

Si pas d'erreur à la création (souvent dues à des caractères de  tabulation, une directive dans le fichier docker-compose mal  orthographiée ou désalignée, etc...), vous verrez un petit done apparaître en vert.

Si vous avez l'erreur suivante, cela veut dire que votre version de kernel n'inclue pas les modules nécessaires, vous devez alors installer ces modules manuellement.
 

RTNETLINK answers: Not supported
**** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****
****  If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch.   ****

Vous pouvez vous appuyer sur ce tuto https://www.blackvoid.club/wireguard-spk-for-your-synology-nas/ ou les projets github suivants:

https://github.com/vegardit/synology-wireguard

https://github.com/runfalk/synology-wireguard (avec patch https://github.com/runfalk/synology-wireguard/issues/154#issuecomment-1169393940 pour DSM7.1)

8. Accès au Web-ui
Vous pourrez désormés accéder au Web-UI par l'url http://<ip de votre syno:51821/
Vous pouvez bien évidement ajouter une entrée dans le proxy inversé du DSM pour les accés en https avec un nom de domaine.

REMARQUE:

Si vous avez mis un autre port que le 51820 dans le fichier docker-compse.yaml pour la config du serveur et web-ui, il est nécessaire de sauvegarder et d'appliquer la configuration une première fois avant toute opération afin de modifier le fichier wg0.conf et de redémarre le serveur pour sa prose en compte.

image.thumb.png.d896c44c61cb416fee1a7338c09cbbe0.png

8.1 Forward de port:

Il vous faudra aussi mettre en place le forward de port sur votre box/routeur interne pour permettre l'accès à votre serveur wireguard.

En se basant sur le fichier docker-compose.yaml fourni dans ce tuto, il vous faudra forwarder le port externe 51820 vers le l'adresse interne de votre nas sur le port 51820 en UDP

Voici un exemple de mise en place sur un routeur Asus:

image.thumb.png.c9675b2ef1da1273856f4248506a43c0.png

 

9. Mise à jour:
9.1 Mise à jour manuelle facile de wireguard-ui:

Vous pouvez utiliser le script suivant pour mettre à jours facilement la version de wireguard-ui sans avoir à relancer le container docker:

Connectez vous en ssh, puis en tant que root passez les commandes suivantes en prenant soin de bien renseigner les variable VERSION et ARCHI correspondant à vos besoins:

export VERSION=v0.5.1 # Changer la version pour pointer sur la dernière
export ARCHI=linux-amd64   # Changer architecture si besoin

cd /tmp/
wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
tar -zxf wireguard-ui-${VERSION}-${ARCHI}.tar.gz
# sauvegarde la version en place au cas où
cp -f /volume1/docker/wireguard/wireguard-ui/wg-ui /volume1/docker/wireguard/wireguard-ui/wg-ui.sov
mv wireguard-ui /volume1/docker/wireguard/wireguard-ui/wg-ui
rm -f wireguard-ui-${VERSION}-${ARCHI}.tar.gz

cat <<EOF | docker exec --interactive wireguard bash
s6-rc stop custom-svc-wg-ui.sh
cp -f /wireguard-ui/wg-ui /app/wg-ui
s6-rc start custom-svc-wg-ui.sh
EOF


9.2 Mise à jour automatique:
L'image docker linuxserver/wireguard peut être mise à jour automatiquement grace à watchtower.

Pour wireguard-ui, on peut imaginer un script bash appelé en crontab qui ferait les actions suivantes:
- Vérification de la présence d'une nouvelle version sur le github
- Téléchargement de la version correspondant au synology
- Décompression du binaire et dépose dans le répertoire dédié
- Copie du binaire dans le docker au bon endroit et redémarrage du service associé

PS: je suis en train de bosser sur ce fameux script de mise à jour de wireguard-ui

Les pistes:
Utilisation de l'api suivante pour détecter une nouvelle version .. mais comment la comparer à la version installée .. à creuser 😉
https://api.github.com/repos/ngoduykhanh/wireguard-ui/releases/latest

Modifié par loli71
MAJ: 29/08/2023 modification PGID
Lien vers le commentaire
Partager sur d’autres sites

Il y a un os dans le caviar lors de la récupération des binaires :

Citation

root@DS220:~# cd /tmp
root@DS220:/tmp# wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
--2023-06-12 13:32:39--  https://github.com/ngoduykhanh/wireguard-ui/releases/download//wireguard-ui--.tar.gz
Resolving github.com... 140.82.121.4
Connecting to github.com|140.82.121.4|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2023-06-12 13:32:40 ERROR 404: Not Found.

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, CyberFr a dit :

Il y a un os dans le caviar lors de la récupération des binaires :

root@DS220:/tmp# wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
--2023-06-12 13:32:39--  https://github.com/ngoduykhanh/wireguard-ui/releases/download//wireguard-ui--.tar.gz
Resolving github.com... 140.82.121.4

@CyberFr Tu as dû oublié de mettre les deux premières lignes qui définissent la version et l'architecture avant de lancer la commande de récupération du binaire.. j'avais renseigné ceux que j'ai utilisé pour l'exemple et je pense que l'archi sera la même pour tout le monde pour le docker :

export VERSION=0.5.1 # Changer la version pour pointer sur la dernière
export ARCHI=amd64   # Changer architecture si besoin
Modifié par loli71
Lien vers le commentaire
Partager sur d’autres sites

il y a 26 minutes, loli71 a dit :

@CyberFr Tu as dû oublié de mettre les deux premières lignes qui définissent la version et l'architecture avant de lancer la commande de récupération du binaire.. j'avais renseigné ceux que j'ai utilisé pour l'exemple et je pense que l'archi sera la même pour tout le monde pour le docker :

Ben non.

PJ.jpg

Lien vers le commentaire
Partager sur d’autres sites

Alors, avant d'aller faire dodo, superbe tuto qu'il me faudra mettre en place prochainement 😉

Deux petites choses que je ferais un peu autrement :

Ce qui suit mérite d'être mis dans un fichier script, pour ne pas avoir de problème d'échappement de variable

Le 09/06/2023 à 18:04, loli71 a dit :

Exemple en ssh:

export VERSION=0.5.1 # Changer la version pour pointer sur la dernière
export ARCHI=amd64   # Changer architecture si besoin

cd tmp/
wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
tar -zxf wireguard-ui-${VERSION}-${ARCHI}.tar.gz
mv wireguard-ui /volume1/docker/wireguard/wireguard-ui/wg-ui
rm -f wireguard-ui-${VERSION}-${ARCHI}.tar.gz

 

Je proposerai ceci :

#!/bin/bash

# Script pour télécharger la version choisie de wireguard-ui

VERSION="0.5.1" # Changer la version pour pointer sur la dernière (voir un peu plus bas)
ARCHI="amd64"   # Changer architecture si besoin


docker_volume="volume1"     # Changer pour le volume dans lequel se trouve le dossier docker
                            # Par exemple : volume4
nom_conteneur="wireguard"   # Changer par le nom du conteneur qui sera créé.
                            # Servira comme nom de dossier dans le dossier docker
temp_dir="tmp/"

##########################################################################################
# Si la volonté est d'avoir la dernière version disponible, ceci peut aider.
# Commenter les 3 lignes suivantes si 
latest_gh_version="${$(curl -sL https://api.github.com/repos/ngoduykhanh/wireguard-ui/releases/latest | jq -r ".tag_name"):1}"
printf "La dernière version disponible sur GitHub est la : %s\n" $latest_gh_version
VERSION=latest_gh_version
##########################################################################################

return_code=""
dossier_conteneur="/${docker_volume}/docker/${nom_conteneur}"
if [ ! -d "${dossier_conteneur}" ]; then
    echo "Le dossier ${dossier_conteneur} n'existe pas. On va le créer."
    mkdir -p "${dossier_conteneur}"
    return_code="$?"
    if [ "$return_code" -ne 0 ]; then
        echo "Erreur à la création du dossier temporaire $temp_dir... Fin du script."
        exit 1
    fi
fi
return_code=""
if [ ! -d "$temp_dir" ]; then
    echo "Le dossier $temp_dir n'existe pas. On va le créer."
    mkdir -p "$temp_dir"
    return_code="$?"
    if [ "$return_code" -ne 0 ]; then
        echo "Erreur à la création du dossier temporaire $temp_dir... Fin du script."
        exit 1
    fi
fi
cd "$temp_dir/"

wget -O "wireguard-ui-${VERSION}-${ARCHI}.tar.gz" "https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz" || exit 1

tar -zxf "wireguard-ui-${VERSION}-${ARCHI}.tar.gz"

mv wireguard-ui "${dossier_conteneur}/wireguard-ui/wg-ui"

rm -f "wireguard-ui-${VERSION}-${ARCHI}.tar.gz"

# Fin du script.

(Bon OK, je me suis un peu lâché ^^)

 

 

Demain, enfin dans la journée, je ferais une autre version du script avec option --update pour faire la dernière partie avec ceci :

cat <<EOF | docker exec --interactive wireguard bash
s6-rc stop custom-svc-wg-ui.sh
cp -f /wireguard-ui/wg-ui /app/wg-ui
s6-rc start custom-svc-wg-ui.sh
EOF

 

Lien vers le commentaire
Partager sur d’autres sites

@CyberFr@Michel91: effectivement il y avait une petite erreur dans la définition des deux variables pour coller au lien de téléchargement réel sur le github.

En utilisant les valeurs ci-dessous, cela fonctionne correctement chez moi avec mes commandes, j'ai mis à jour le Tuto aussi:

Citation

export VERSION=v0.5.1 # Changer la version pour pointer sur la dernière
export ARCHI=linux-amd64   # Changer architecture si besoin

@MilesTEG1 merci beaucoup pour le script que je n'avais pas encore eu le courage de faire 😉 Tu pourras mettre à jours pour utiliser les bonnes valeurs sinon ton wget retournera un 404 exactement comme mes commandes lol

Par contre, ton script va créer un répertoire "tmp/" là où ils sera appelé, pour ma part j'avais utilisé le "/tmp" existant dans tous bon linux pour ne pas avoir à gérer cela.

En plus tu créés le répertoire /${docker_volume}/docker/${nom_conteneur} s'il n'existe pas, mais normalement il doit être créé au début du tuto avec d'autres répertoires obligatoires :

A la rigueur si tu préfères gérer la création des répertoires en ssh, utilise plutôt cette ligne qui fera tout en un seul coup:

mkdir -p /${docker_volume}/docker/${nom_conteneur}/{config,custom-files/{custom-cont-init.d,custom-services.d},wireguard-ui,db}

 

Modifié par loli71
Lien vers le commentaire
Partager sur d’autres sites

@loli71 De rien, pas de souci, je le mettrais à jour. Je vais faire un dépôt github ou un gist pour que ce soit plus simple ^^

il y a 17 minutes, loli71 a dit :

Par contre, ton script va créer un répertoire "tmp/" là où ils sera appelé, pour ma part j'avais utilisé le "/tmp" existant dans tous bon linux pour ne pas avoir à gérer cela.

Pourtant, dans tes commandes, c'est pas /tmp que tu utilises :
NGjoriI.png

 

il y a 18 minutes, loli71 a dit :

En plus tu créés le répertoire /${docker_volume}/docker/${nom_conteneur} s'il n'existe pas, mais normalement il doit être créé au début du tuto avec d'autres répertoires obligatoires :

Oui c'est sûr, mais pour être tranquille, j'aime bien que ça vérifie les dossiers. S'ils sont déjà existants, la commande ne fera rien 🙂

il y a 19 minutes, loli71 a dit :

A la rigueur si tu préfères gérer la création des répertoires en ssh, utilise plutôt cette ligne qui fera tout en un seul coup:

mkdir -p /${docker_volume}/docker/${nom_conteneur}/{config,custom-files/{custom-cont-init.d,custom-services.d},wireguard-ui,db}

 

Très bonne idée 🙂

Je finalise le script dès que je peux, et le reposte.
Tu verras si tu l'intègres au tuto et donc fait quelques modifs pour aller avec le script 🙂 (je n'oblige à rien 😉

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, MilesTEG1 a dit :

Pourtant, dans tes commandes, c'est pas /tmp que tu utilises :

Je viens de corriger dans mon tuto, c'est une erreur de typo 😉

@CyberFr tu peux continuer sans problème je pense, mise à part peut être des erreurs de typo ou oubli que je corrige à fur et à mesure de vos retour 🙂

Le script de MilesTEG1 sera un plus pour ceux qui préfèrent utiliser le ssh plutôt que de tout faire en Web depuis le DSM et portainer.

 

Et le script de mise à jours automatique de la version de wireguard-ui sera facile à ajouter ensuite si tu le souhaites.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, loli71 a dit :

Je viens de corriger dans mon tuto, c'est une erreur de typo 😉

Je modifierai le script pour vérifier si le /tmp est bien autorisé en lecture/écriture.

du coup , je pars sur le principe que les dossiers ne sont pas créés ? Ou que seul le dossier du conteneur l’est ?
C’est ma préférence là, ce dossier doit être créé et on y place le script qui va créer les autres dossiers , potentiellement leur attribuer les bons droits (vi ID utilisateur avec un chown) puis  placer les différents scripts qui se lanceront dans le conteneur.

tu ne voudrais pas créer un dépôt GitHub pour stocker ces fichiers ? Le script les téléchargera de là (c’est ton tuto après tout, je ferai des PR pour le script).

Il y a 5 heures, loli71 a dit :

Le script de MilesTEG1 sera un plus pour ceux qui préfèrent utiliser le ssh plutôt que de tout faire en Web depuis le DSM et portainer.

La ligne de commande reste nécessaire pour faire ce que tu veux faire , moi j’apporte juste une unification des commandes au sein d’un script car je n’aime pas taper les commandes les unes à la suite des autres 😜

Lien vers le commentaire
Partager sur d’autres sites

J'essaie en vain de faire fonctionner le stack de portainer il me crée bien le container wireguard mais rien pour wireguard-ui, le répertoire db reste vide et je n'ai aucun message d'erreur dans portainer.

Une idée sur ce problème?

J'ai vérifié mes points de montage ils ont l'air bons enfin jusqu'aux doubles points.

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 7 heures, CyberFr a dit :

@loli71, je viens d'essayer et j'ai de nouveau droit à l'erreur 404.

oups ... désolé @CyberFr ... j'avais corrigé seulement les dernières lignes (qui parle de la mise à jours automatique), mais j'avais oublié de corriger les lignes qui permettent de récupérer le binaire au tout début du tuto....

Correction faite maintenant et je remets ici les lignes à utiliser:

export VERSION=v0.5.1 # Changer la version pour pointer sur la dernière
export ARCHI=linux-amd64   # Changer architecture si besoin

cd /tmp/
wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-${ARCHI}.tar.gz
tar -zxf wireguard-ui-${VERSION}-${ARCHI}.tar.gz
mv wireguard-ui /volume1/docker/wireguard/wireguard-ui/wg-ui
rm -f wireguard-ui-${VERSION}-${ARCHI}.tar.gz

 

Il y a 4 heures, MilesTEG1 a dit :

La ligne de commande reste nécessaire pour faire ce que tu veux faire , moi j’apporte juste une unification des commandes au sein d’un script car je n’aime pas taper les commandes les unes à la suite des autres 😜

Le script de mise à jours automatique pourra être rajouté au scheduleur du DSM effectivement, mais il n'est aucunement obligatoire de passer par du ssh pour déployer la solution si la personne ne le souhaite pas (File station pur créer les dossiers et déposer le binaire de wireguard-ui récupéré et décompressé sur un pc, editeur de texte du DSM pour les fichiers et portainer pour le docker-compose)

C'est pour cette raison que je pars du principe que tous les répertoires nécessaires sont créés en dehors du script 😉

Il y a 1 heure, Michel91 a dit :

J'essaie en vain de faire fonctionner le stack de portainer il me crée bien le container wireguard mais rien pour wireguard-ui, le répertoire db reste vide et je n'ai aucun message d'erreur dans portainer.

Une idée sur ce problème?

J'ai vérifié mes points de montage ils ont l'air bons enfin jusqu'aux doubles points.

 

Tu as quoi dans les logs du container dans portainer ?

Lien vers le commentaire
Partager sur d’autres sites

Citation

User UID: 1027

User GID: 100

───────────────────────────────────────

Uname info: Linux ab6becf6df52 4.4.302+ #64561 SMP Fri May 19 01:25:55 CST 2023 x86_64 GNU/Linux

RTNETLINK answers: Not supported

**** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****

**** If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch. ****

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 11 heures, loli71 a dit :

oups ... désolé @CyberFr ... j'avais corrigé seulement les dernières lignes (qui parle de la mise à jours automatique), mais j'avais oublié de corriger les lignes qui permettent de récupérer le binaire au tout début du tuto....

As-tu corrigé le tuto en conséquence ?

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Michel91 a dit :

User UID: 1027

User GID: 100

───────────────────────────────────────

Uname info: Linux ab6becf6df52 4.4.302+ #64561 SMP Fri May 19 01:25:55 CST 2023 x86_64 GNU/Linux

RTNETLINK answers: Not supported

**** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****

**** If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch. ****

Dis moi, juste comme ça @Michel91 .. cette erreur ne ressemblerait-elle pas justement à l'erreur que j'ai décrite dans mon tuto ? 🙂

Citation

Si vous avez l'erreur suivante, cela veut dire que votre version de kernel n'inclue pas les modules nécessaires, vous devez alors installer ces modules manuellement.
 

RTNETLINK answers: Not supported
**** The wireguard module is not active. If you believe that your kernel should have wireguard support already, make sure that it is activated via modprobe! ****
****  If you have an old kernel without wireguard support built-in, you can try using the legacy tag for this image to compile the modules from scratch.   ****

Vous pouvez vous appuyer sur ce tuto https://www.blackvoid.club/wireguard-spk-for-your-synology-nas/ ou les projets github suivants:

https://github.com/vegardit/synology-wireguard

https://github.com/runfalk/synology-wireguard (avec patch https://github.com/runfalk/synology-wireguard/issues/154#issuecomment-1169393940 pour DSM7.1)

 Ton nas n'inclue pas encore wireguard dans le kernel et tu dois en passer par la phase installation du paquet wireguard.spk pour ajouter les modules wiregaurd.

il y a 53 minutes, CyberFr a dit :

As-tu corrigé le tuto en conséquence ?

@CyberFr oui comme je l'avais indiqué dans la réponse que je t'ai faite

Modifié par loli71
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.