L'équipe LinuxServer.io vous propose une autre version de conteneur comprenant :
Retrouvez-nous à :
SWAG - Secure Web Application Gateway (anciennement connu sous le nom de letencrypt, aucun rapport avec Let's Encrypt™) configure un serveur Web Nginx et un proxy inverse avec prise en charge de PHP et un client certbot intégré qui automatise les processus gratuits de génération et de renouvellement de certificats de serveur SSL (Let's Encrypt et ZeroSSL). Il contient également fail2ban pour la prévention des intrusions.
Nous utilisons le manifeste Docker pour une sensibilisation multiplateforme. Plus d’informations sont disponibles sur Docker ici et notre annonce ici.
Tirer simplement lscr.io/linuxserver/swag:latest
devrait récupérer l'image correcte pour votre arche, mais vous pouvez également extraire des images d'arche spécifiques via des balises.
Les architectures prises en charge par cette image sont :
Architecture | Disponible | Étiqueter |
---|---|---|
x86-64 | ✅ | amd64-<balise de version> |
bras64 | ✅ | arm64v8-<balise de version> |
armhf |
URL
sera yoursubdomain.duckdns.org
et les SUBDOMAINS
peuvent être www,ftp,cloud
avec validation http ou wildcard
avec validation DNS. Vous pouvez utiliser notre image duckdns pour mettre à jour votre IP sur duckdns.org.http
, le port 80 du côté Internet du routeur doit être transféré vers le port 80 de ce conteneur.dns
, assurez-vous de saisir vos informations d'identification dans le fichier ini correspondant (ou json pour certains plugins) sous /config/dns-conf
yoursubdomain.duckdns.org
, laissez la variable SUBDOMAINS
vide)*.yoursubdomain.duckdns.org
, définissez la variable SUBDOMAINS
sur wildcard
)--cap-add=NET_ADMIN
est requis pour que fail2ban modifie iptableshttps://yourdomain.url
pour accéder à la page d'accueil par défaut (l'accès http via le port 80 est désactivé par défaut, vous pouvez l'activer en modifiant la configuration du site par défaut dans /config/nginx/site-confs/default.conf
)./config/log/letsencrypt
pour voir pourquoi les renouvellements ont échoué. Il est recommandé de saisir votre e-mail dans les paramètres du Docker afin de recevoir les avis d'expiration de Let's Encrypt dans ces circonstances.SWAG inclut de nombreux plugins Certbot prêts à l'emploi, mais tous les plugins ne peuvent pas être inclus. Si vous avez besoin d'un plugin qui n'est pas inclus, le moyen le plus rapide d'avoir le plugin disponible est d'utiliser notre Universal Package Install Docker Mod.
Définissez les variables d'environnement suivantes sur votre conteneur :
DOCKER_MODS=linuxserver/mods:universal-package-install
INSTALL_PIP_PACKAGES=certbot-dns-<plugin>
Définissez les informations d'identification requises (généralement trouvées dans la documentation du plugin) dans /config/dns-conf/<plugin>.ini
. Il est recommandé d'essayer d'abord d'obtenir un certificat avec STAGING=true
pour s'assurer que le plugin fonctionne comme prévu.
dhparams.pem
.docker exec -it swag htpasswd -c /config/nginx/.htpasswd <username>
.htpasswd
. Pour le premier utilisateur, utilisez la commande ci-dessus, pour les autres, utilisez la commande ci-dessus sans l'indicateur -c
, car cela forcera la suppression du .htpasswd
existant et la création d'un nouveau./config/nginx/site-confs/default.conf
. N'hésitez pas à modifier ce fichier, et vous pourrez ajouter d'autres fichiers de conf à ce répertoire. Cependant, si vous supprimez le fichier default
, un nouveau fichier par défaut sera créé au démarrage du conteneur.README.md
sous /config/nginx/proxy_confs
pour obtenir des instructions sur la façon de les activer. Les configurations prédéfinies résident et sont importées depuis ce dépôt.add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
Cela demandera à Google et autres de ne pas indexer et répertorier votre site. Soyez prudent car vous finirez par être radié si vous laissez cette ligne sur un site que vous souhaitez voir présent sur les moteurs de recherche.-v /path-to-swag-config:/swag-ssl
) et dans les autres conteneurs, utilisez l'emplacement du certificat /swag-ssl/keys/letsencrypt/
etc
qui réside sous /config
dans d'autres conteneurs (c'est-à-dire -v /path-to-swag-config/etc:/swag-ssl
) et dans les autres conteneurs, utilisez l'emplacement de certificat /swag-ssl/letsencrypt/live/<your.domain.url>/
(Ceci est plus sécurisé car la première méthode partage l'intégralité du dossier de configuration SWAG avec d'autres conteneurs, y compris les fichiers www, tandis que la seconde méthode ne partage que le ssl certificats)cert.pem
, chain.pem
, fullchain.pem
et privkey.pem
, générés par Certbot et utilisés par nginx et diverses autres applicationsprivkey.pfx
, un format pris en charge par Microsoft et couramment utilisé par les applications dotnet telles que Emby Server (pas de mot de passe)priv-fullchain-bundle.pem
, un certificat pem qui regroupe la clé privée et la fullchain, utilisé par des applications comme ZNC/config/fail2ban/jail.local
.conf
, créez des fichiers .local
avec le même nom et modifiez-les car les fichiers .conf sont écrasés lorsque les actions et les filtres sont mis à jour. Les fichiers .local
ajouteront tout ce qui se trouve dans les fichiers .conf
(c'est-à-dire nginx-http-auth.conf
--> nginx-http-auth.local
)docker exec -it swag fail2ban-client status
docker exec -it swag fail2ban-client status <jail name>
docker exec -it swag fail2ban-client set <jail name> unbanip <IP>
linuxserver/letsencrypt
Veuillez suivre les instructions sur cet article de blog.
Pour vous aider à commencer à créer un conteneur à partir de cette image, vous pouvez utiliser docker-compose ou docker cli.
---
services :
swag :
image : lscr.io/linuxserver/swag:latest
container_name : swag
cap_add :
- NET_ADMIN
environment :
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- URL=yourdomain.url
- VALIDATION=http
- SUBDOMAINS=www, # optional
- CERTPROVIDER= # optional
- DNSPLUGIN=cloudflare # optional
- PROPAGATION= # optional
- EMAIL= # optional
- ONLY_SUBDOMAINS=false # optional
- EXTRA_DOMAINS= # optional
- STAGING=false # optional
volumes :
- /path/to/swag/config:/config
ports :
- 443:443
- 80:80 # optional
restart : unless-stopped
docker run -d
--name=swag
--cap-add=NET_ADMIN
-e PUID=1000
-e PGID=1000
-e TZ=Etc/UTC
-e URL=yourdomain.url
-e VALIDATION=http
-e SUBDOMAINS=www, ` # optional `
-e CERTPROVIDER= ` # optional `
-e DNSPLUGIN=cloudflare ` # optional `
-e PROPAGATION= ` # optional `
-e EMAIL= ` # optional `
-e ONLY_SUBDOMAINS=false ` # optional `
-e EXTRA_DOMAINS= ` # optional `
-e STAGING=false ` # optional `
-p 443:443
-p 80:80 ` # optional `
-v /path/to/swag/config:/config
--restart unless-stopped
lscr.io/linuxserver/swag:latest
Les conteneurs sont configurés à l'aide des paramètres transmis lors de l'exécution (tels que ceux ci-dessus). Ces paramètres sont séparés par deux points et indiquent respectivement <external>:<internal>
. Par exemple, -p 8080:80
exposerait le port 80
depuis l'intérieur du conteneur pour qu'il soit accessible depuis l'adresse IP de l'hôte sur le port 8080
à l'extérieur du conteneur.
Paramètre | Fonction |
---|---|
-p 443 | Port HTTPS |
-p 80 | Port Http (obligatoire pour la validation http et la redirection http -> https) |
-e PUID=1000 | pour l'ID utilisateur - voir ci-dessous pour l'explication |
-e PGID=1000 | pour GroupID - voir ci-dessous pour l'explication |
-e TZ=Etc/UTC | spécifiez un fuseau horaire à utiliser, consultez cette liste. |
-e URL=yourdomain.url | URL principale sur laquelle vous contrôlez ( customdomain.com si vous en êtes propriétaire, ou customsubdomain.ddnsprovider.com si DNS dynamique). |
-e VALIDATION=http | Méthode de validation Certbot à utiliser, les options sont http ou dns (la méthode dns nécessite également le jeu de variables DNSPLUGIN ). |
-e SUBDOMAINS=www, | Sous-domaines que vous souhaitez que le certificat couvre (séparés par des virgules, sans espaces), c'est-à-dire. www,ftp,cloud . Pour un certificat générique, définissez-le exactement sur wildcard (le certificat générique est disponible uniquement via la validation dns ) |
-e CERTPROVIDER= | Définissez éventuellement le fournisseur de certificat. Définissez sur zerossl pour les certificats ZeroSSL (nécessite un compte ZeroSSL existant et l'adresse e-mail saisie dans la variable d'environnement EMAIL ). Sinon, la valeur par défaut est Let's Encrypt. |
-e DNSPLUGIN=cloudflare | Obligatoire si VALIDATION est défini sur dns . Les options sont acmedns , aliyun , azure , bunny , cloudflare , cpanel , desec , digitalocean , directadmin , dnsimple , dnsmadeeasy , dnspod , do , domeneshop , dreamhost , duckdns , dynu , freedns , gandi , gehirn , glesys , godaddy , google , he , hetzner , infomaniak , inwx , ionos , linode , loopia , luadns , namecheap , netcup , njalla , nsone , ovh , porkbun , rfc2136 , route53 , sakuracloud , standalone , transip et vultr . Vous devez également saisir les informations d'identification dans le fichier ini correspondant (ou json pour certains plugins) sous /config/dns-conf . |
-e PROPAGATION= | Remplacez éventuellement (en secondes) le temps de propagation par défaut pour les plugins DNS. |
-e EMAIL= | Adresse e-mail facultative utilisée pour les notifications d'expiration de certificat (obligatoire pour ZeroSSL). |
-e ONLY_SUBDOMAINS=false | Si vous souhaitez obtenir des certificats uniquement pour certains sous-domaines, mais pas pour le domaine principal (le domaine principal peut être hébergé sur une autre machine et ne peut pas être validé), définissez ceci sur true |
-e EXTRA_DOMAINS= | Noms de domaine pleinement qualifiés supplémentaires (séparés par des virgules, sans espaces), c'est-à-dire. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org |
-e STAGING=false | Définissez sur true pour récupérer les certificats en mode intermédiaire. Les limites de débit seront beaucoup plus élevées, mais le certificat obtenu ne passera pas le test de sécurité du navigateur. À utiliser uniquement à des fins de test. |
-v /config | Fichiers de configuration persistants |
Cette image utilise cap_add
ou sysctl
pour fonctionner correctement. Ceci n'est pas implémenté correctement dans certaines versions de Portainer, donc cette image peut ne pas fonctionner si elle est déployée via Portainer.
Vous pouvez définir n'importe quelle variable d'environnement à partir d'un fichier en utilisant un préfixe spécial FILE__
.
A titre d'exemple :
-e FILE__MYVAR=/run/secrets/mysecretvariable
Définira la variable d'environnement MYVAR
en fonction du contenu du fichier /run/secrets/mysecretvariable
.
Pour toutes nos images, nous offrons la possibilité de remplacer les paramètres umask par défaut pour les services démarrés dans les conteneurs à l'aide du paramètre facultatif -e UMASK=022
. Gardez à l'esprit que umask n'est pas chmod, il soustrait les autorisations en fonction de sa valeur qu'il n'ajoute pas. Veuillez lire ici avant de demander de l'aide.
Lors de l'utilisation de volumes (indicateurs -v
), des problèmes d'autorisations peuvent survenir entre le système d'exploitation hôte et le conteneur. Nous évitons ce problème en vous permettant de spécifier le PUID
de l'utilisateur et PGID
du groupe.
Assurez-vous que tous les répertoires de volumes sur l'hôte appartiennent au même utilisateur que vous avez spécifié et tout problème d'autorisation disparaîtra comme par magie.
Dans ce cas PUID=1000
et PGID=1000
, pour trouver le vôtre, utilisez id your_user
comme ci-dessous :
id your_user
Exemple de sortie :
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
Nous publions divers Docker Mods pour activer des fonctionnalités supplémentaires dans les conteneurs. La liste des mods disponibles pour cette image (le cas échéant) ainsi que les mods universels pouvant être appliqués à l'une de nos images sont accessibles via les badges dynamiques ci-dessus.
Accès au shell pendant l'exécution du conteneur :
docker exec -it swag /bin/bash
Pour surveiller les logs du conteneur en temps réel :
docker logs -f swag
Numéro de version du conteneur :
docker inspect -f ' {{ index .Config.Labels "build_version" }} ' swag
Numéro de version de l'image :
docker inspect -f ' {{ index .Config.Labels "build_version" }} ' lscr.io/linuxserver/swag:latest
La plupart de nos images sont statiques, versionnées et nécessitent une mise à jour de l'image et une recréation du conteneur pour mettre à jour l'application à l'intérieur. À quelques exceptions près (indiquées dans le fichier readme.md correspondant), nous ne recommandons ni ne prenons en charge la mise à jour des applications à l'intérieur du conteneur. Veuillez consulter la section Configuration de l'application ci-dessus pour voir si cela est recommandé pour l'image.
Vous trouverez ci-dessous les instructions pour mettre à jour les conteneurs :
Mettre à jour les images :
Toutes les images :
docker-compose pull
Image unique :
docker-compose pull swag
Mettre à jour les conteneurs :
Tous les conteneurs :
docker-compose up -d
Conteneur unique :
docker-compose up -d swag
Vous pouvez également supprimer les anciennes images pendantes :
docker image prune
Mettez à jour l'image :
docker pull lscr.io/linuxserver/swag:latest
Arrêtez le conteneur en cours d'exécution :
docker stop swag
Supprimez le conteneur :
docker rm swag
Recréez un nouveau conteneur avec les mêmes paramètres d'exécution du docker que ceux indiqués ci-dessus (s'ils sont correctement mappés à un dossier hôte, votre dossier /config
et vos paramètres seront conservés)
Vous pouvez également supprimer les anciennes images pendantes :
docker image prune
Conseil
Nous recommandons Diun pour les notifications de mise à jour. Les autres outils qui mettent automatiquement à jour les conteneurs sans surveillance ne sont ni recommandés ni pris en charge.
Si vous souhaitez apporter des modifications locales à ces images à des fins de développement ou simplement pour personnaliser la logique :
git clone https://github.com/linuxserver/docker-swag.git
cd docker-swag
docker build
--no-cache
--pull
-t lscr.io/linuxserver/swag:latest .
Les variantes ARM peuvent être construites sur du matériel x86_64 et vice versa en utilisant lscr.io/linuxserver/qemu-static
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
Une fois enregistré, vous pouvez définir le fichier docker à utiliser avec -f Dockerfile.aarch64
.
priv-fullchain-bundle.pem
généré.certbot-dns-dynudns
.stream.conf
à l'intérieur du conteneur pour permettre aux utilisateurs d'inclure leur propre bloc dans nginx.conf
.google-domains
.STAGING=true
et les échecs de révocation.ssl.conf
.SUBDOMAINS
comme facultative.resolver.conf
et le correctif pour CVE-2021-32637
.dhparams.pem
conformément à la RFC7919. Ajout de worker_processes.conf
, qui définit le nombre de Workers nginx, et resolver.conf
, qui définit le résolveur DNS. Les deux fichiers de configuration sont générés automatiquement uniquement au premier démarrage et peuvent être modifiés par l'utilisateur ultérieurement.CERTPROVIDER
facultative. Mettez à jour les plugins aliyun, domeneshop, inwx et transip dns avec les nouveaux noms de plugin. Masquer donoteditthisfile.conf
car les utilisateurs le modifiaient malgré son nom. Supprimez les erreurs inoffensives lorsqu’aucune configuration de proxy n’est activée.