네이버 클라우드 도커 Nginx와 Nginx Proxy Manager 설치하기 그리고 socket() [::]:80 failed 오류
우분투버전
- 22.04.3 LTS
lsb_release -a
1. 도커 컴포즈 설치
apt 패키지 업데이트
sudo apt update
docker compose 설치
sudo apt install -y docker-compose
2. 도커 컴포즈로 nginx + nginx proxy manager 설치
NPM을 설치할 디렉토리를 만든다
sudo mkdir /home/npm
3. 도커 컴포즈 파일을 작성 docker-compose.yml
vi편집기로 아래의 내용을 입력하여 docker-compose.yml 파일을 생성한다.
vi docker-compose.yml
내용
version: '3' # Docker Compose 파일 버전
services:
npm:
image: jc21/nginx-proxy-manager:latest # 사용할 Docker 이미지 (Nginx Proxy Manager의 최신 버전)
restart: unless-stopped # 컨테이너가 중지된 경우 자동 재시작 (수동으로 중지하지 않는 한)
ports:
- "80:80" # HTTP 포트 (외부 80 포트를 컨테이너의 80 포트에 매핑)
- "81:81" # 관리 UI 포트 (외부 81 포트를 컨테이너의 81 포트에 매핑)
- "443:443" # HTTPS 포트 (외부 443 포트를 컨테이너의 443 포트에 매핑)
volumes:
- ./data:/data # 로컬 ./data 디렉토리를 컨테이너의 /data 디렉토리에 매핑 (데이터 저장소)
- ./letsencrypt:/etc/letsencrypt # 로컬 ./letsencrypt 디렉토리를 컨테이너의 /etc/letsencrypt 디렉토리에 매핑 (SSL 인증서 저장소)
꼭 저장을하고 현재 디렉토리에서 도커 컴포즈를 실행한다.
docker-compose up
nginx 와 nginx proxy manager를 다운받고 설치중이다.
설치가 완료 됐는데 도커 컨테이너를 올릴때 에러가 발생한다.
nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
네이버 클라우드는 IPv6을 지원하지 않는데 nginx 기본설정파일에 IPv6 포트를 맵핑하는 구문이 있어서 시작시 에러가 난다.
nginx 컨테이너 내부로 들어가서 conf파일을 수정해야하는 번거러움이 있다.
내부로 들어가려면 컨테이너 아이디나 컨테이너 이름을 알아야 한다.
docker ps -a
docker exec -it npm-npm-1 /bin/bash
컨테이너 내부로 들어오고 nginx conf파일 디렉토리로 접근한다.
cd /etc/nginx/conf.d
수정해야하는 conf 파일은 2개이다.
default.conf > 80,443 포트
production.conf > 81 포트
컨테이너 내부에 vi 편집기가 설지되어 있지 않다. 설치해야 한다.
apt-get update
apt-get install vim
설치가 완료되면 conf파일을 수정하자
vi default.conf
빨간줄 listen [::] 부분 주석처리.
vi production.conf
빨간줄 listen [::] 부분 주석처리 후 저장
컨테이너를 종료한다.
exit
다시 도커 컴포즈 yml이 있는 디렉토리로 이동
cd /home/npm
도커 컴포즈 재실행
docker compose up -d
그럼 이제 로그를 봐도 오류없이 잘 올라간다.
http://{본인의 Public IP}:81 로 접속한다.
초기 관리자 정보를 입력해주자.
Email : admin@example.com
Password : changeme
본인의 이메일과 비밀번호를 입력하고 저장하면 기본적인 계정 셋팅은 끝