Команда LinuxServer.io представляет вам еще одну версию контейнера, включающую:
Найдите нас по адресу:
SWAG — Secure Web Application Gateway (ранее известный как letsencrypt, не имеющий отношения к Let's Encrypt™) настраивает веб-сервер Nginx и обратный прокси-сервер с поддержкой php и встроенным клиентом certbot, который автоматизирует процессы генерации и обновления бесплатных сертификатов SSL-сервера (Let's Encrypt). и ZeroSSL). Он также содержит Fail2ban для предотвращения вторжений.
Мы используем манифест докера для обеспечения поддержки мультиплатформенности. Дополнительную информацию можно получить в Docker здесь и в нашем объявлении здесь.
Простое нажатие lscr.io/linuxserver/swag:latest
должно получить правильное изображение для вашей арки, но вы также можете получить определенные изображения арки с помощью тегов.
Архитектуры, поддерживаемые этим образом:
Архитектура | Доступный | Ярлык |
---|---|---|
х86-64 | ✅ | amd64-<тег версии> |
рука64 | ✅ | Arm64v8-<тег версии> |
армхф |
URL
будет yoursubdomain.duckdns.org
, а SUBDOMAINS
могут быть www,ftp,cloud
с проверкой http или wildcard
с проверкой DNS. Вы можете использовать наш образ Duckdns, чтобы обновить свой IP-адрес на сайтеuckdns.org.http
порт 80 на интернет-стороне маршрутизатора должен быть перенаправлен на порт 80 этого контейнера.dns
обязательно введите свои учетные данные в соответствующий файл ini (или json для некоторых плагинов) в /config/dns-conf
yoursubdomain.duckdns.org
, оставьте переменную SUBDOMAINS
пустой).*.yoursubdomain.duckdns.org
, установите для переменной SUBDOMAINS
значение wildcard
).--cap-add=NET_ADMIN
необходим для того, чтобы Fail2ban мог изменить iptableshttps://yourdomain.url
, чтобы получить доступ к домашней странице по умолчанию (http-доступ через порт 80 отключен по умолчанию, вы можете включить его, отредактировав конфигурацию сайта по умолчанию в /config/nginx/site-confs/default.conf
)./config/log/letsencrypt
чтобы узнать, почему не удалось продлить срок действия сертификата. Рекомендуется ввести свой адрес электронной почты в параметрах докера, чтобы в таких обстоятельствах вы получали уведомления об истечении срока действия от Let's Encrypt.SWAG включает в себя множество подключаемых модулей Certbot, но не все подключаемые модули могут быть включены. Если вам нужен плагин, которого нет в комплекте, самый быстрый способ получить его — использовать наш мод Docker для установки универсального пакета.
Установите следующие переменные среды в вашем контейнере:
DOCKER_MODS=linuxserver/mods:universal-package-install
INSTALL_PIP_PACKAGES=certbot-dns-<plugin>
Установите необходимые учетные данные (обычно их можно найти в документации плагина) в /config/dns-conf/<plugin>.ini
. Рекомендуется сначала попытаться получить сертификат с STAGING=true
, чтобы убедиться, что плагин работает должным образом.
dhparams.pem
.docker exec -it swag htpasswd -c /config/nginx/.htpasswd <username>
.htpasswd
. Для первого пользователя используйте указанную выше команду, для других используйте указанную выше команду без флага -c
, так как это приведет к принудительному удалению существующего .htpasswd
и созданию нового./config/nginx/site-confs/default.conf
. Не стесняйтесь изменять этот файл, и вы можете добавлять в этот каталог другие файлы конфигурации. Однако если вы удалите файл default
, при запуске контейнера будет создан новый файл по умолчанию.README.md
в /config/nginx/proxy_confs
. Предустановленные конфигурации находятся и импортируются из этого репозитория.add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
Это попросит Google и других не индексировать и не размещать ваш сайт. Будьте осторожны с этим, так как в конечном итоге вы будете исключены из списка, если оставите эту строку на сайте, который хотите видеть в поисковых системах.-v /path-to-swag-config:/swag-ssl
), а в других контейнерах используйте местоположение сертификата /swag-ssl/keys/letsencrypt/
etc
, которая находится в /config
в других контейнерах (т. е. -v /path-to-swag-config/etc:/swag-ssl
), а в других контейнерах используйте местоположение сертификата /swag-ssl/letsencrypt/live/<your.domain.url>/
(Это более безопасно, поскольку первый метод использует всю папку конфигурации SWAG совместно с другими контейнерами, включая файлы www, тогда как второй метод использует только SSL-сертификаты)cert.pem
, chain.pem
, fullchain.pem
и privkey.pem
, которые генерируются Certbot и используются nginx и различными другими приложениями.privkey.pfx
— формат, поддерживаемый Microsoft и обычно используемый приложениями dotnet, такими как Emby Server (без пароля).priv-fullchain-bundle.pem
— сертификат pem, объединяющий закрытый ключ и полную цепочку, используемый такими приложениями, как ZNC./config/fail2ban/jail.local
.conf
создайте файлы .local
с тем же именем и отредактируйте их, поскольку файлы .conf перезаписываются при обновлении действий и фильтров. Файлы .local
будут добавлять все, что находится в файлах .conf
(т. е. 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
Пожалуйста, следуйте инструкциям в этом сообщении блога.
Чтобы помочь вам приступить к созданию контейнера из этого образа, вы можете использовать docker-compose или 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
Контейнеры настраиваются с использованием параметров, передаваемых во время выполнения (например, приведенных выше). Эти параметры разделяются двоеточием и обозначают <external>:<internal>
соответственно. Например, -p 8080:80
сделает порт 80
изнутри контейнера доступным с IP-адреса хоста на порту 8080
вне контейнера.
Параметр | Функция |
---|---|
-p 443 | HTTPS-порт |
-p 80 | Http-порт (требуется для проверки HTTP и перенаправления http -> https) |
-e PUID=1000 | для UserID - см. объяснение ниже |
-e PGID=1000 | для GroupID — пояснения см. ниже. |
-e TZ=Etc/UTC | укажите часовой пояс для использования, см. этот список. |
-e URL=yourdomain.url | Главный URL-адрес, который вы контролируете ( customdomain.com если он принадлежит вам, или customsubdomain.ddnsprovider.com , если динамический DNS). |
-e VALIDATION=http | Используемый метод проверки Certbot, варианты — http или dns (метод dns также требует набора переменных DNSPLUGIN ). |
-e SUBDOMAINS=www, | Субдомены, на которые должен распространяться сертификат (через запятую, без пробелов), т.е. www,ftp,cloud . Для сертификата с подстановочным знаком установите именно wildcard знак (сертификат с подстановочным знаком доступен только через проверку dns ) |
-e CERTPROVIDER= | При необходимости определите поставщика сертификата. Установите значение zerossl для сертификатов ZeroSSL (требуется существующая учетная запись ZeroSSL и адрес электронной почты, введенный в переменную среды EMAIL ). В противном случае по умолчанию используется Let’s Encrypt. |
-e DNSPLUGIN=cloudflare | Требуется, если для VALIDATION установлено значение dns . Возможные варианты: 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 и vultr . Также необходимо ввести учетные данные в соответствующий файл ini (или json для некоторых плагинов) в /config/dns-conf . |
-e PROPAGATION= | При необходимости переопределите (в секундах) время распространения по умолчанию для плагинов DNS. |
-e EMAIL= | Дополнительный адрес электронной почты, используемый для уведомлений об истечении срока действия сертификата (требуется для ZeroSSL). |
-e ONLY_SUBDOMAINS=false | Если вы хотите получать сертификаты только для определенных поддоменов, но не для основного домена (основной домен может размещаться на другом компьютере и не может быть проверен), установите для этого параметра значение true |
-e EXTRA_DOMAINS= | Дополнительные полные доменные имена (через запятую, без пробелов), т.е. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org |
-e STAGING=false | Установите значение true , чтобы получать сертификаты в промежуточном режиме. Ограничения скорости будут намного выше, но полученный сертификат не пройдет проверку безопасности браузера. Использовать только в целях тестирования. |
-v /config | Постоянные файлы конфигурации |
Это изображение использует cap_add
или sysctl
для правильной работы. В некоторых версиях Portainer это реализовано неправильно, поэтому этот образ может не работать при развертывании через Portainer.
Вы можете установить любую переменную среды из файла, используя специальный префикс FILE__
.
В качестве примера:
-e FILE__MYVAR=/run/secrets/mysecretvariable
Будет установлена переменная среды MYVAR
на основе содержимого файла /run/secrets/mysecretvariable
.
Для всех наших образов мы предоставляем возможность переопределить настройки umask по умолчанию для служб, запущенных в контейнерах, с помощью необязательного параметра -e UMASK=022
. Имейте в виду, что umask — это не chmod, он вычитает разрешения на основе значения, которое он не добавляет. Пожалуйста, прочитайте здесь, прежде чем обращаться за поддержкой.
При использовании томов (флаги -v
) могут возникнуть проблемы с разрешениями между ОС хоста и контейнером. Мы избегаем этой проблемы, позволяя вам указать PUID
пользователя и PGID
группы.
Убедитесь, что все каталоги томов на хосте принадлежат тому же пользователю, которого вы указали, и любые проблемы с разрешениями исчезнут как по волшебству.
В этом случае PUID=1000
и PGID=1000
, чтобы найти свой, используйте id your_user
как показано ниже:
id your_user
Пример вывода:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
Мы публикуем различные моды Docker, чтобы обеспечить дополнительную функциональность контейнеров. Доступ к списку модов, доступных для этого изображения (если таковые имеются), а также универсальных модов, которые можно применить к любому из наших изображений, можно получить с помощью динамических значков выше.
Доступ к оболочке во время работы контейнера:
docker exec -it swag /bin/bash
Чтобы отслеживать логи контейнера в реальном времени:
docker logs -f swag
Номер версии контейнера:
docker inspect -f ' {{ index .Config.Labels "build_version" }} ' swag
Номер версии изображения:
docker inspect -f ' {{ index .Config.Labels "build_version" }} ' lscr.io/linuxserver/swag:latest
Большинство наших изображений являются статическими, имеют версии и требуют обновления образа и воссоздания контейнера для обновления приложения внутри. За некоторыми исключениями (отмеченными в соответствующем файле readme.md), мы не рекомендуем и не поддерживаем обновление приложений внутри контейнера. Пожалуйста, обратитесь к разделу «Настройка приложения» выше, чтобы узнать, рекомендуется ли оно для образа.
Ниже приведены инструкции по обновлению контейнеров:
Обновить изображения:
Все изображения:
docker-compose pull
Одно изображение:
docker-compose pull swag
Обновить контейнеры:
Все контейнеры:
docker-compose up -d
Одиночный контейнер:
docker-compose up -d swag
Вы также можете удалить старые висячие изображения:
docker image prune
Обновите изображение:
docker pull lscr.io/linuxserver/swag:latest
Остановите работающий контейнер:
docker stop swag
Удалить контейнер:
docker rm swag
Воссоздайте новый контейнер с теми же параметрами запуска Docker, как указано выше (при правильном сопоставлении с папкой хоста ваша папка /config
и настройки будут сохранены).
Вы также можете удалить старые висячие изображения:
docker image prune
Кончик
Мы рекомендуем Diun для уведомлений об обновлениях. Другие инструменты, которые автоматически обновляют контейнеры без присмотра, не рекомендуются и не поддерживаются.
Если вы хотите внести локальные изменения в эти изображения в целях разработки или просто настроить логику:
git clone https://github.com/linuxserver/docker-swag.git
cd docker-swag
docker build
--no-cache
--pull
-t lscr.io/linuxserver/swag:latest .
Варианты ARM могут быть построены на оборудовании x86_64 и наоборот, используя lscr.io/linuxserver/qemu-static
docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
После регистрации вы можете определить файл dockerfile для использования с помощью -f Dockerfile.aarch64
.
priv-fullchain-bundle.pem
.certbot-dns-dynudns
.stream.conf
внутри контейнера, чтобы пользователи могли включать свой собственный блок в nginx.conf
.google-domains
.STAGING=true
и сбои при отзыве.ssl.conf
.SUBDOMAINS
как необязательную.resolver.conf
и патч для CVE-2021-32637
.dhparams.pem
согласно RFC7919. Добавлен файл worker_processes.conf
, который устанавливает количество рабочих процессов nginx, resolver.conf
, который устанавливает преобразователь DNS. Оба файла конфигурации генерируются автоматически только при первом запуске и могут быть изменены пользователем позже.CERTPROVIDER
. Обновите DNS-плагины aliyun, domeneshop, inwx и transip, указав новые имена. Скройте donoteditthisfile.conf
, поскольку пользователи редактировали его, несмотря на его имя. Подавление безобидной ошибки, если настройки прокси-сервера не включены.