SWAG 설치 - Stack 작성 및 실행
SWAG - Secure Web Application Gateway
Nginx webserver and reverse proxy + with php support
인터넷 주소창에서 네이버 홈페이지로 이동하게 되면, 도메인 앞에 자물쇠 모양을 확인할 수 있습니다.
아래와 같이 자물쇠 모양을 클릭하여 들어가게 되면, 인증서를 확인할 수 있습니다.
SWAG를 사용하는 목적은 크게 두 가지가 있습니다.
1. https:// 를 사용하기 위한 무료 인증서(letsencrypt)를 발급 받을 수 있습니다.
인터넷 주소창의 주소가 http:// 가 아닌 https:// 로 표기되는 것을 확인할 수 있습니다.
웹통신 프로토콜 http의 보안이 강화된 버전입니다.
2. 와일드카드 인증서(certbot)를 받아, 메인 도메인의 하위 서브 도메인의 인증서가 불필요 합니다.
naver.com이 메인도메인이라면, news.naver.com은 서브 도메인입니다.
도메인의 경우 뒤에서 부터 '.' 단위로 하위 도메인으로 보시면 됩니다.
이 Docker Container를 사용하게 되면 인증서가 만료되기 전에 자동으로 갱신해 주어 편리합니다.
Nextcloud 외에 여러 서비스를 서브 도메인으로 사용할 계획으로 유용한 기능이 되겠습니다.
SWAG 설치 순서
(Portainer 사용 방법 참고)
linuxserver/swag을 Potainer에서 Stack을 작성하여 설치합니다.
(docker-compose.yml으로 작성하는 내용과 동일합니다.)
1. Portainer 에 접속하여 Stack 작성 후 설치를 진행합니다.
version: '3.3'
services:
swag:
image: linuxserver/swag:latest
container_name: swag
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Seoul
- URL=도메인주소
- SUBDOMAINS=wildcard
- VALIDATION=dns
- DNSPLUGIN=luadns
- EMAIL=메일주소
volumes:
- /data_set/swag/config:/config
ports:
- 443:443
- 80:80
restart: unless-stopped
(DNS 호스팅은 LuaDNS 사용 기준으로 설정된 것입니다.)
노란색 영역은 사용자 설정에 맞게 변경해 주시면 됩니다.
메일주소는 luadns 가입 시 사용한 메일 주소를 사용해 주세요.
PUID와 PGID는 Ubuntu 설치 시 설정한 사용자 정보로,
nano /etc/passwd
명령어로 확인이 가능합니다.
가끔 1000;1000 이 아닐 수 있기 때문에 확인하셔야 합니다.
2. 설치가 완료되면 공유기의 포트포워드 설정에서 443, 80 포트를 추가해 줍니다.
3. SWAG의 설정을 변경해 줍니다.
설정 파일을 변경하기 위해 접속하는 방법은 두 가지가 있습니다.
하나, putty를 사용하여 Ubuntu에 접속하고, root (관리자 계정)으로 로그인 합니다.
둘, Portainer에서 Exec Console 로 접속하는 것입니다.
둘 중 편한 방법으로 접속하면 되겠습니다.
1) Stack의 내용에서 volumes의 경로로 이동하여 dns 설정을 입력하여 줍니다.
cd /data-set/swag/config/dns-config
ls
SWAG 에서 제공하는 dns 파일 리스트를 확인할 수 있습니다.
luadns.ini 를 확인할 수 있습니다.
nano luadns.ini
luadns 가입 email 과 token 값을 입력하고 저장하면 되겠습니다.
luadns token 값은 API Key 값으로,
LuaDNS 홈페이지에 가입하고 설정에서 생성할 수 있습니다.
2) 서브도메인을 설정해 줍니다.
서브도메인 설정 디렉토리로 이동하면 sample 이 작성되어 있는 목록을 확인할 수 있습니다.
cd /data-set/swag/config/nginx/proxy-confs
ls
많은 Docker Container 에 대한 Sample 파일이 있으므로,
설정하고자 하는 서버의 설정이 쉽습니다.
nextcloud에 대한 sample을 이용하여 설정을 진행합니다.
LuaDNS에 등록할 서브도메인의 이름을 정하고 파일이름을 변경하여 줍니다.
(예, 발급받은 도메인 주소를 nas.com 이라 할 때)
nextcloud에 대한 서브도메인을 cloud 라고 하면, cloud.nas.com 으로 접속하게 설정하겠습니다.
예제 파일을 사용할 서브도메인이름의 파일로 복사하고 변경합니다.
cp nextcloud.subdomain.conf.sample cloud.nas.com.subdomain.conf
nano cloud.nas.com.subdomain.conf
해당 부분을 cloud.* 로 변경해 주면되고, LuaDNS에 CNAME으로 서브도메인을 동일하게 설정해 줍니다.
주의사항 : conf 파일의
location 에서 upstream_port, proto 정보가 잘못되면
502 bad gateway 오류 발생합니다.
nextclould 를 stack으로 설치 시 내부 port설정을 80 으로 하였기 때문에
proto는 http 로 변경하여야 합니다. (443 일 경우 https)
3) 주석 확인 및 nextcloud config 파일 설정 변경
nextcloud.subdomain.conf.sample 의 내용에서 nextcloud에 반영할 설정내용이 있습니다.
해당 내용을 nextcloud의 config.php 파일에 반영하여야 합니다.
nextcloud가 설치된 config 디렉토리로 이동하여 수정합니다.
cd /data-set/nextcloud/config
nano config.php
4) 서브도메인 허용 설정을 해줍니다.
cd /data-set/swag/config/nginx/site-confs
nano default.conf
아래와 같이 incloud 앞의 #을 제거해 주면 됩니다.
conf 파일의 내용에서 앞에 #을 붙이면 주석처리되어 내용이 활성화 되지 않습니다.
5) cron 설정으로 주기 변경을 해 줍니다.
설정이 되어 있으면 굳이 변경하지 않아도 되겠습니다.
4. Portainer에서 nextcloud Container를 swag_default network에 포함시켜 줍니다.
5. SWAG, nextcloud Container를 재시작해 줍니다.
이제 인터넷 주소창에 nextcloud 서브도메인 (cloud.nas.com)을 입력하면
Nextcloud에 접속할 수 있고, 입력 주소 앞에 자물쇠 모양을 확인하실 수 있습니다.