네이버 클라우드

네이버 클라우드 도커 Nginx와 Nginx Proxy Manager 설치하기 그리고 socket() [::]:80 failed 오류

dev.mk 2024. 10. 3. 20:08
반응형

우분투버전

- 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

 

본인의 이메일과 비밀번호를 입력하고 저장하면 기본적인 계정 셋팅은 끝

반응형