Das LinuxServer.io-Team präsentiert Ihnen eine weitere Container-Version mit:
Finden Sie uns unter:
SWAG – Secure Web Application Gateway (früher bekannt alsletsencrypt, keine Beziehung zu Let’s Encrypt™) richtet einen Nginx-Webserver und Reverse-Proxy mit PHP-Unterstützung und einem integrierten Certbot-Client ein, der kostenlose Prozesse zur Generierung und Erneuerung von SSL-Serverzertifikaten automatisiert (Let’s Encrypt). und ZeroSSL). Es enthält auch fail2ban zur Intrusion Prevention.
Wir nutzen das Docker-Manifest für die Erkennung mehrerer Plattformen. Weitere Informationen finden Sie hier bei Docker und unsere Ankündigung hier.
Durch einfaches Abrufen lscr.io/linuxserver/swag:latest
sollte das richtige Bild für Ihren Arch abgerufen werden. Sie können jedoch auch bestimmte Arch-Bilder über Tags abrufen.
Die von diesem Image unterstützten Architekturen sind:
Architektur | Verfügbar | Etikett |
---|---|---|
x86-64 | ✅ | amd64-<Versions-Tag> |
arm64 | ✅ | arm64v8-<Versions-Tag> |
armhf |
URL
yoursubdomain.duckdns.org
lautet und die SUBDOMAINS
www,ftp,cloud
mit http-Validierung oder wildcard
mit DNS-Validierung sein können. Sie können unser duckdns-Image verwenden, um Ihre IP auf duckdns.org zu aktualisieren.http
Validierung sollte Port 80 auf der Internetseite des Routers an den Port 80 dieses Containers weitergeleitet werdendns
Validierung sicher, dass Sie Ihre Anmeldeinformationen in die entsprechende INI-Datei (oder JSON für einige Plugins) unter /config/dns-conf
eingebenyoursubdomain.duckdns.org
, lassen Sie die Variable SUBDOMAINS
leer)*.yoursubdomain.duckdns.org
, setzen Sie die SUBDOMAINS
Variable auf wildcard
)--cap-add=NET_ADMIN
ist erforderlich, damit fail2ban iptables ändern kannhttps://yourdomain.url
um auf die Standard-Homepage zuzugreifen (der HTTP-Zugriff über Port 80 ist standardmäßig deaktiviert. Sie können ihn aktivieren, indem Sie die Standard-Site-Konfiguration unter /config/nginx/site-confs/default.conf
)./config/log/letsencrypt
um herauszufinden, warum die Verlängerungen fehlgeschlagen sind. Es wird empfohlen, Ihre E-Mail-Adresse in den Docker-Parametern einzugeben, damit Sie unter diesen Umständen Ablaufbenachrichtigungen von Let's Encrypt erhalten.SWAG enthält viele Certbot-Plugins standardmäßig, es können jedoch nicht alle Plugins enthalten sein. Wenn Sie ein Plugin benötigen, das nicht im Lieferumfang enthalten ist, ist die Verwendung unseres Universal Package Install Docker Mod der schnellste Weg, das Plugin verfügbar zu haben.
Legen Sie die folgenden Umgebungsvariablen für Ihren Container fest:
DOCKER_MODS=linuxserver/mods:universal-package-install
INSTALL_PIP_PACKAGES=certbot-dns-<plugin>
Legen Sie die erforderlichen Anmeldeinformationen (normalerweise in der Plugin-Dokumentation zu finden) in /config/dns-conf/<plugin>.ini
fest. Es wird empfohlen, zunächst zu versuchen, ein Zertifikat mit STAGING=true
zu erhalten, um sicherzustellen, dass das Plugin wie erwartet funktioniert.
dhparams.pem
.docker exec -it swag htpasswd -c /config/nginx/.htpasswd <username>
zu generieren.htpasswd
hinzufügen. Für den ersten Benutzer verwenden Sie den obigen Befehl, für andere verwenden Sie den obigen Befehl ohne das Flag -c
, da dadurch das Löschen der vorhandenen .htpasswd
und die Erstellung einer neuen Datei erzwungen wird/config/nginx/site-confs/default.conf
. Fühlen Sie sich frei, diese Datei zu ändern, und Sie können diesem Verzeichnis weitere Conf-Dateien hinzufügen. Wenn Sie jedoch die default
löschen, wird beim Containerstart eine neue Standarddatei erstellt.README.md
unter /config/nginx/proxy_confs
. Die voreingestellten Konfigurationen befinden sich in diesem Repo und werden von diesem importiert.add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
Dadurch werden Google und andere aufgefordert, Ihre Website nicht zu indexieren und aufzulisten. Seien Sie dabei vorsichtig, da Sie irgendwann von der Liste gestrichen werden, wenn Sie diese Zeile auf einer Website belassen, auf der Sie in Suchmaschinen angezeigt werden möchten-v /path-to-swag-config:/swag-ssl
) und verwenden Sie in den anderen Containern den Zertifikatspeicherort /swag-ssl/keys/letsencrypt/
etc
, der sich unter /config
befindet, in anderen Containern (z. B. -v /path-to-swag-config/etc:/swag-ssl
) und verwenden Sie in den anderen Containern den Zertifikatspeicherort /swag-ssl/letsencrypt/live/<your.domain.url>/
(Dies ist sicherer, da die erste Methode den gesamten SWAG-Konfigurationsordner mit anderen Containern teilt, einschließlich der WWW-Dateien, während die zweite Methode nur den teilt SSL-Zertifikate)cert.pem
, chain.pem
, fullchain.pem
und privkey.pem
, die von Certbot generiert und von nginx und verschiedenen anderen Apps verwendet werdenprivkey.pfx
, ein von Microsoft unterstütztes Format, das häufig von Dotnet-Apps wie Emby Server verwendet wird (kein Passwort)priv-fullchain-bundle.pem
, ein PEM-Zertifikat, das den privaten Schlüssel und die Fullchain bündelt und von Apps wie ZNC verwendet wird/config/fail2ban/jail.local
.conf
-Dateien .local
Dateien mit demselben Namen und bearbeiten Sie diese, da .conf-Dateien überschrieben werden, wenn die Aktionen und Filter aktualisiert werden. .local
-Dateien hängen alles an, was in den .conf
Dateien enthalten ist (z. B. nginx-http-auth.conf
-> nginx-http-auth.local
).docker exec -it swag fail2ban-client status
überprüfen, welche Jails aktiv sinddocker exec -it swag fail2ban-client status <jail name>
überprüfendocker exec -it swag fail2ban-client set <jail name> unbanip <IP>
aufhebenlinuxserver/letsencrypt
-ImageBitte folgen Sie den Anweisungen in diesem Blogbeitrag.
Um Ihnen den Einstieg in die Erstellung eines Containers aus diesem Image zu erleichtern, können Sie entweder Docker-Compose oder die Docker-CLI verwenden.
---
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
Container werden mithilfe von Parametern konfiguriert, die zur Laufzeit übergeben werden (z. B. die oben genannten). Diese Parameter werden durch einen Doppelpunkt getrennt und geben jeweils <external>:<internal>
an. Beispielsweise würde -p 8080:80
Port 80
innerhalb des Containers freigeben, sodass er über die IP des Hosts auf Port 8080
außerhalb des Containers zugänglich wäre.
Parameter | Funktion |
---|---|
-p 443 | HTTPS-Port |
-p 80 | HTTP-Port (erforderlich für http-Validierung und http -> https-Umleitung) |
-e PUID=1000 | für Benutzer-ID – Erklärung siehe unten |
-e PGID=1000 | für GroupID – Erläuterung siehe unten |
-e TZ=Etc/UTC | Geben Sie eine zu verwendende Zeitzone an, siehe diese Liste. |
-e URL=yourdomain.url | Top-URL, über die Sie die Kontrolle haben ( customdomain.com , wenn Sie sie besitzen, oder customsubdomain.ddnsprovider.com , wenn es sich um dynamische DNS handelt). |
-e VALIDATION=http | Zu verwendende Certbot-Validierungsmethode, Optionen sind http oder dns ( dns -Methode erfordert auch DNSPLUGIN Variablensatz). |
-e SUBDOMAINS=www, | Subdomains, die das Zertifikat abdecken soll (durch Kommas getrennt, keine Leerzeichen), d. h. www,ftp,cloud . Für ein Wildcard-Zertifikat stellen Sie dies genau auf wildcard ein (Wildcard-Zertifikat ist nur über dns Validierung verfügbar). |
-e CERTPROVIDER= | Definieren Sie optional den Zertifikatsanbieter. Für ZeroSSL-Zertifikate auf zerossl setzen (erfordert ein vorhandenes ZeroSSL-Konto und die in EMAIL env var eingegebene E-Mail-Adresse). Andernfalls wird standardmäßig Let's Encrypt verwendet. |
-e DNSPLUGIN=cloudflare | Erforderlich, wenn VALIDATION auf dns eingestellt ist. Optionen sind 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 und vultr . Außerdem müssen Sie die Anmeldeinformationen in die entsprechende INI-Datei (oder JSON für einige Plugins) unter /config/dns-conf eingeben. |
-e PROPAGATION= | Überschreiben Sie optional (in Sekunden) die Standardausbreitungszeit für die DNS-Plugins. |
-e EMAIL= | Optionale E-Mail-Adresse, die für Benachrichtigungen über den Ablauf von Zertifikaten verwendet wird (erforderlich für ZeroSSL). |
-e ONLY_SUBDOMAINS=false | Wenn Sie Zertifikate nur für bestimmte Subdomänen erhalten möchten, nicht jedoch für die Hauptdomäne (die Hauptdomäne wird möglicherweise auf einem anderen Computer gehostet und kann nicht validiert werden), legen Sie dies auf true fest |
-e EXTRA_DOMAINS= | Zusätzliche vollqualifizierte Domänennamen (durch Kommas getrennt, keine Leerzeichen), d. h. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org |
-e STAGING=false | Auf true setzen, um Zertifikate im Staging-Modus abzurufen. Die Ratenbegrenzungen werden viel höher sein, aber das resultierende Zertifikat besteht den Sicherheitstest des Browsers nicht. Nur zu Testzwecken zu verwenden. |
-v /config | Persistente Konfigurationsdateien |
Dieses Image verwendet cap_add
oder sysctl
um ordnungsgemäß zu funktionieren. Dies ist in einigen Versionen von Portainer nicht ordnungsgemäß implementiert, daher funktioniert dieses Image möglicherweise nicht, wenn es über Portainer bereitgestellt wird.
Sie können jede Umgebungsvariable aus einer Datei festlegen, indem Sie ein spezielles FILE__
voranstellen.
Als Beispiel:
-e FILE__MYVAR=/run/secrets/mysecretvariable
Setzt die Umgebungsvariable MYVAR
basierend auf dem Inhalt der Datei /run/secrets/mysecretvariable
.
Für alle unsere Bilder bieten wir die Möglichkeit, die Standard-umask-Einstellungen für Dienste, die in den Containern gestartet werden, mit der optionalen Einstellung -e UMASK=022
zu überschreiben. Beachten Sie, dass umask kein chmod ist. Es subtrahiert Berechtigungen basierend auf dem Wert, den es nicht hinzufügt. Bitte informieren Sie sich hier, bevor Sie um Unterstützung bitten.
Bei der Verwendung von Volumes (Flags -v
) können Berechtigungsprobleme zwischen dem Host-Betriebssystem und dem Container auftreten. Wir vermeiden dieses Problem, indem wir Ihnen die Angabe der Benutzer PUID
und der Gruppen PGID
ermöglichen.
Stellen Sie sicher, dass alle Volume-Verzeichnisse auf dem Host demselben Benutzer gehören, den Sie angeben, und alle Berechtigungsprobleme verschwinden wie durch Zauberhand.
In diesem Fall PUID=1000
und PGID=1000
, um Ihre zu finden, verwenden Sie id your_user
wie folgt:
id your_user
Beispielausgabe:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
Wir veröffentlichen verschiedene Docker-Mods, um zusätzliche Funktionalität innerhalb der Container zu ermöglichen. Die Liste der für dieses Bild verfügbaren Mods (falls vorhanden) sowie universelle Mods, die auf jedes unserer Bilder angewendet werden können, können über die dynamischen Abzeichen oben aufgerufen werden.
Shell-Zugriff während der Container läuft:
docker exec -it swag /bin/bash
So überwachen Sie die Protokolle des Containers in Echtzeit:
docker logs -f swag
Container-Versionsnummer:
docker inspect -f ' {{ index .Config.Labels "build_version" }} ' swag
Bildversionsnummer:
docker inspect -f ' {{ index .Config.Labels "build_version" }} ' lscr.io/linuxserver/swag:latest
Die meisten unserer Images sind statisch, versioniert und erfordern eine Image-Aktualisierung und Container-Neuerstellung, um die darin enthaltene App zu aktualisieren. Mit einigen Ausnahmen (siehe entsprechende readme.md) empfehlen oder unterstützen wir die Aktualisierung von Apps im Container nicht. Bitte lesen Sie den Abschnitt „Anwendungseinrichtung“ oben, um zu sehen, ob dies für das Bild empfohlen wird.
Nachfolgend finden Sie die Anweisungen zum Aktualisieren von Containern:
Bilder aktualisieren:
Alle Bilder:
docker-compose pull
Einzelbild:
docker-compose pull swag
Container aktualisieren:
Alle Container:
docker-compose up -d
Einzelbehälter:
docker-compose up -d swag
Sie können die alten hängenden Bilder auch entfernen:
docker image prune
Aktualisieren Sie das Bild:
docker pull lscr.io/linuxserver/swag:latest
Stoppen Sie den laufenden Container:
docker stop swag
Löschen Sie den Container:
docker rm swag
Erstellen Sie einen neuen Container mit denselben Docker-Ausführungsparametern wie oben beschrieben neu (bei korrekter Zuordnung zu einem Host-Ordner bleiben Ihr Ordner /config
und Ihre Einstellungen erhalten).
Sie können die alten hängenden Bilder auch entfernen:
docker image prune
Tipp
Wir empfehlen Diun für Update-Benachrichtigungen. Andere Tools, die Container automatisch unbeaufsichtigt aktualisieren, werden nicht empfohlen oder unterstützt.
Wenn Sie zu Entwicklungszwecken oder einfach zum Anpassen der Logik lokale Änderungen an diesen Bildern vornehmen möchten:
git clone https://github.com/linuxserver/docker-swag.git
cd docker-swag
docker build
--no-cache
--pull
-t lscr.io/linuxserver/swag:latest .
Die ARM-Varianten können mit lscr.io/linuxserver/qemu-static
auf x86_64-Hardware erstellt werden und umgekehrt
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
Nach der Registrierung können Sie die zu verwendende Docker-Datei mit -f Dockerfile.aarch64
definieren.
priv-fullchain-bundle.pem
korrigiert.certbot-dns-dynudns
.stream.conf
aus dem Container entfernen, damit Benutzer ihren eigenen Block in nginx.conf
einfügen können.google-domains
.STAGING=true
und Fehler beim Widerrufen zu beheben.ssl.conf
einen optionalen Header hinzu, um Google FLoC zu deaktivieren.SUBDOMAINS
var als optional markieren.resolver.conf
und Patch für CVE-2021-32637
verwenden.dhparams.pem
gemäß RFC7919. Hinzugefügt wurden worker_processes.conf
, das die Anzahl der Nginx-Worker festlegt, und resolver.conf
, das den DNS-Resolver festlegt. Beide Konfigurationsdateien werden nur beim ersten Start automatisch generiert und können später vom Benutzer geändert werden.CERTPROVIDER
Umgebungsvariable hinzugefügt. Aktualisieren Sie die DNS-Plugins Aliyun, Domeneshop, Inwx und Transip mit den neuen Plugin-Namen. donoteditthisfile.conf
ausblenden, da Benutzer es trotz seines Namens bearbeitet haben. Unterdrücken Sie harmlose Fehler, wenn keine Proxy-Konferenzen aktiviert sind.