LinuxServer.io 팀은 다음 기능을 갖춘 또 다른 컨테이너 릴리스를 제공합니다.
우리를 찾으세요:
SWAG - 보안 웹 애플리케이션 게이트웨이(이전의 letsencrypt, Let's Encrypt™와 관련 없음)는 무료 SSL 서버 인증서 생성 및 갱신 프로세스를 자동화하는 내장 certbot 클라이언트와 PHP 지원을 사용하여 Nginx 웹 서버 및 역방향 프록시를 설정합니다(Let's Encrypt 및 ZeroSSL). 침입 방지를 위한 Fail2ban도 포함되어 있습니다.
우리는 다중 플랫폼 인식을 위해 docker 매니페스트를 활용합니다. 자세한 내용은 docker(여기)와 공지사항(여기)에서 확인할 수 있습니다.
lscr.io/linuxserver/swag:latest
가져오기만 하면 아치에 대한 올바른 이미지를 검색할 수 있지만 태그를 통해 특정 아치 이미지를 가져올 수도 있습니다.
이 이미지에서 지원되는 아키텍처는 다음과 같습니다.
건축학 | 사용 가능 | 꼬리표 |
---|---|---|
x86-64 | ✅ | amd64-<버전 태그> |
arm64 | ✅ | arm64v8-<버전 태그> |
팔 |
URL
yoursubdomain.duckdns.org
이고 SUBDOMAINS
www,ftp,cloud
또는 DNS 유효성 검사가 있는 wildcard
일 수 있습니다. duckdns 이미지를 사용하여 duckdns.org에서 IP를 업데이트할 수 있습니다.http
유효성 검사를 위해 라우터 인터넷 측의 포트 80은 이 컨테이너의 포트 80으로 전달되어야 합니다.dns
유효성 검사를 위해 /config/dns-conf
아래의 해당 ini(또는 일부 플러그인의 경우 json) 파일에 자격 증명을 입력해야 합니다.yoursubdomain.duckdns.org
, SUBDOMAINS
변수를 비워 두세요)*.yoursubdomain.duckdns.org
, SUBDOMAINS
변수를 wildcard
로 설정)--cap-add=NET_ADMIN
iptables를 수정하기 위해 Fail2ban에 필요합니다.https://yourdomain.url
로 이동하여 기본 홈페이지에 액세스합니다(포트 80을 통한 http 액세스는 기본적으로 비활성화되어 있으며 /config/nginx/site-confs/default.conf
)./config/log/letsencrypt
아래의 로그를 확인하여 갱신이 실패한 이유를 확인하세요. 이러한 상황에서 Let's Encrypt로부터 만료 알림을 받을 수 있도록 docker 매개변수에 이메일을 입력하는 것이 좋습니다.SWAG에는 기본적으로 많은 Certbot 플러그인이 포함되어 있지만 모든 플러그인이 포함될 수는 없습니다. 포함되지 않은 플러그인이 필요한 경우 플러그인을 사용 가능하게 하는 가장 빠른 방법은 Universal Package Install Docker Mod를 사용하는 것입니다.
컨테이너에 다음 환경 변수를 설정합니다.
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
에 여러 user:pass를 추가할 수 있습니다. 첫 번째 사용자의 경우 위 명령을 사용하고, 다른 사용자의 경우 -c
플래그 없이 위 명령을 사용하십시오. 그러면 기존 .htpasswd
가 강제로 삭제되고 새 사용자가 생성됩니다./config/nginx/site-confs/default.conf
에 있습니다. 이 파일을 자유롭게 수정하고 이 디렉토리에 다른 conf 파일을 추가할 수 있습니다. 그러나 default
파일을 삭제하면 컨테이너 시작 시 새로운 기본값이 생성됩니다./config/nginx/proxy_confs
아래의 README.md
파일을 참조하세요. 사전 설정된 conf는 이 저장소에 있고 이 저장소에서 가져옵니다.add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
그러면 Google 등이 귀하의 사이트를 색인화하고 나열하지 않도록 요청하게 됩니다. 검색 엔진에 표시되기를 원하는 사이트에 이 줄을 남겨두면 결국 목록에서 제외되므로 주의하세요.-v /path-to-swag-config:/swag-ssl
)에 마운트하고 다른 컨테이너에서는 인증서 위치 /swag-ssl/keys/letsencrypt/
사용합니다.-v /path-to-swag-config/etc:/swag-ssl
)의 /config
아래에 있는 SWAG 폴더 etc
을 마운트하고 다른 컨테이너에서는 인증서 위치 /swag-ssl/letsencrypt/live/<your.domain.url>/
를 사용합니다. /swag-ssl/letsencrypt/live/<your.domain.url>/
(첫 번째 방법은 전체 SWAG 구성 폴더를 www 파일을 포함한 다른 컨테이너와 공유하는 반면 두 번째 방법은 SSL만 공유하기 때문에 더 안전합니다. 인증서)cert.pem
, chain.pem
, fullchain.pem
및 privkey.pem
- Certbot에 의해 생성되고 nginx 및 기타 다양한 앱에서 사용됩니다.privkey.pfx
- Microsoft에서 지원하고 Emby Server와 같은 dotnet 앱에서 일반적으로 사용되는 형식(비밀번호 없음)priv-fullchain-bundle.pem
, ZNC와 같은 앱에서 사용되는 개인 키와 풀체인을 번들로 묶는 pem 인증서/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>
를 통해 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
컨테이너 외부의 포트 8080
에 있는 호스트 IP에서 액세스할 수 있도록 컨테이너 내부의 포트 80
노출합니다.
매개변수 | 기능 |
---|---|
-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 , 동적 DNS인 경우 customsubdomain.ddnsprovider.com ) |
-e VALIDATION=http | 사용할 Certbot 검증 방법, 옵션은 http 또는 dns 입니다( dns 방법에는 DNSPLUGIN 변수 세트도 필요함). |
-e SUBDOMAINS=www, | 인증서에서 다루기를 원하는 하위 도메인(쉼표로 구분, 공백 없음), 즉. www,ftp,cloud . 와일드카드 인증서의 경우 이를 정확히 wildcard 로 설정합니다(와일드카드 인증서는 dns 검증을 통해서만 사용할 수 있음) |
-e CERTPROVIDER= | 선택적으로 인증서 공급자를 정의합니다. ZeroSSL 인증서의 경우 zerossl 로 설정합니다(기존 ZeroSSL 계정 및 EMAIL env var에 입력된 이메일 주소 필요). 그렇지 않으면 기본값은 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 . 또한 /config/dns-conf 아래의 해당 ini(또는 일부 플러그인의 경우 json) 파일에 자격 증명을 입력해야 합니다. |
-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
/run/secrets/mysecretvariable
파일의 내용을 기반으로 환경 변수 MYVAR
설정합니다.
모든 이미지에 대해 선택적인 -e UMASK=022
설정을 사용하여 컨테이너 내에서 시작된 서비스에 대한 기본 umask 설정을 재정의하는 기능을 제공합니다. umask는 추가하지 않는 값을 기반으로 권한에서 빼는 chmod가 아니라는 점을 명심하세요. 지원을 요청하기 전에 여기를 읽어보세요.
볼륨( -v
플래그)을 사용할 때 호스트 OS와 컨테이너 간에 권한 문제가 발생할 수 있습니다. 사용자 PUID
및 그룹 PGID
지정할 수 있도록 하여 이 문제를 방지합니다.
호스트의 모든 볼륨 디렉터리를 지정한 동일한 사용자가 소유하는지 확인하세요. 그러면 모든 권한 문제가 마술처럼 사라집니다.
이 경우 PUID=1000
및 PGID=1000
에서 자신의 ID를 찾으려면 아래와 같이 id your_user
사용하세요.
id your_user
출력 예:
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
우리는 컨테이너 내에서 추가 기능을 활성화하기 위해 다양한 Docker Mod를 게시합니다. 위의 동적 배지를 통해 이 이미지(있는 경우)에 사용할 수 있는 모드 목록과 이미지 중 하나에 적용할 수 있는 범용 모드에 액세스할 수 있습니다.
컨테이너가 실행되는 동안 셸 액세스:
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
등록한 후에는 -f Dockerfile.aarch64
와 함께 사용할 dockerfile을 정의할 수 있습니다.
priv-fullchain-bundle.pem
의 권한을 수정합니다.certbot-dns-dynudns
사용하여 DynuDNS에 대한 지원을 복원합니다.nginx.conf
에 자신의 블록을 포함할 수 있도록 컨테이너 내부의 stream.conf
제거합니다.google-domains
추가.STAGING=true
사용 시 실패 및 취소 실패를 수정하기 위해 더 이상 사용되지 않는 LE 루트 인증서 검사를 수정합니다.ssl.conf
에서 Google FLoC를 선택 해제하기 위한 선택적 헤더를 추가합니다.SUBDOMAINS
변수를 선택 사항으로 표시합니다.CVE-2021-32637
에 대해 resolver.conf
및 패치를 사용합니다.dhparams.pem
에 ffdhe4096을 사용하도록 전환합니다. nginx 작업자 수를 설정하는 worker_processes.conf
와 dns 확인자를 설정하는 resolver.conf
추가했습니다. 두 conf 파일은 처음 시작할 때만 자동 생성되며 나중에 사용자가 수정할 수 있습니다.CERTPROVIDER
env var를 통해 ZeroSSL에서 인증서를 가져오는 지원을 추가합니다. aliyun,domeneshop,inwx 및 transip dns 플러그인을 새 플러그인 이름으로 업데이트합니다. 이름에도 불구하고 사용자가 편집하고 있었기 때문에 donoteditthisfile.conf
숨깁니다. 프록시 구성이 활성화되지 않은 경우 무해한 오류를 억제합니다.