홈서버 구축기 - 2 ( docker Ubuntu & nginx )
목표
Docker 에서 띄운 Ubuntu 컨테이너에 Nginx 설치 후, 도메인 연결
&
외부에서 Ubuntu SSH 접속
개인적으로 구매해둔 도메인인
" yhjs1211.online "
이라는 도메인을 활용해서 내 개인 블로그 를 구축하고자 하고있다.
거기에 대한 기반으로는
MySQL
Docker
Ubuntu
Nginx
으로 시작해보려 한다.
문제의 발단 - 도메인과 Ubuntu 내 Nginx 와의 연결
일단 내가 든 첫번째 의문점은
" 부트캠프에서 사용했던 클라우드 서비스 (AWS, Ncloud) 에선 공인 IP를 적어줬는데, 내 IP는 유동 IP라 변동될때마다 고쳐야 하나?"
였다.
생각해보면 언제 통신사에서 내 IP를 바꿀지도 모르거니와 변경점이 생길때마다 일일히 수정 작업을 해줘야 한다면 번거로울것이다.
그러던 중 발견한 해결책 !!
현재 나는 공유기로 ipTime을 사용하고있는데 그중 [ DDNS ] 라는 서비스가 존재한다.
Dynamic Domain Name System 의 약자인데, 유동적인 IP일 경우 사용하는 방식으로 해당 도메인으로 실시간 IP 연동을 해준다.
관리자 페이지에 들어가서 DDNS 서비스를 등록을 진행해주면 되고
내게 부여된 도메인을 잘 기억하고 있자.
나는 가비아 라는 도메인 관리 사이트에서 구입을 했다.
보통 도메인 관리 사이트에서 구입을 하게되면, 어떤 아이피로의 라우팅을 해줄지 레코드를 저장을 해주게 되는데 그 방식 같은 경우엔
정적 IP 일 경우에 해당 되는 부분이다. 클라우드 서비스 에서 발급 받았던 공인 IP 같은 경우 변동될 일이 없기때문에
레코드로 저장을 해주면 되었었지만 현재 나와 같은 상황인 경우엔
Name Server 로서 등록을 해주면 되는 부분이었다.
해서 발급 받은 도메인을 Name Server에 등록을 해주었더니 내게 뜬 너무나도 이쁜 화면
정상적으로 Nginx 까지 접근되는것을 확인 했다.
이제 할일은 외부 환경에서 docker 로 띄워놓은 ubuntu에 SSH 접속을 하는것
바로 접속만 하면 되겠지? 라는 생각으로 쉘에서 접속 명령어를 써보자 직면한 메세지는 timeout 이었다.
그래서 찾아보니 의외로 간단한 문제였다. ubuntu 자체에서 SSH 를 처리해주지 않고 있었기 때문이었는데 아래를 보자
# SSH 서버 설치
apt-get install -y openssh-server
# SSH 실행
service ssh start
# SSH 상태 확인
service ssh status
이렇게 실행상태를 확인하면 바로 되는걸까?
❗️ No
해당 우분투에 접속을 위한 방화벽을 허용해주어야 한다.
# 22번 포트 TCP 만 허용
sudo ufw allow 22/tcp
# 22번 포트 UDP 까지 허용
sudo ufw allow 22
SSH 접속을 위한 포트는 22번 포트이고, 해당 포트를 열어줘야 외부에서 접속을 했을때 막히지 않고 잘 접속을 할 수 있다.
허용을 해줄때 어차피 HTTP, HTTPS 에 대한 접속도 허용 해주어야 하기 때문에
[ 80, 443 ] 포트도 허용을 해주었다.
그리고 마지막 작업중 하나가 ssh 관련 config 설정값을 허용해주어야 하는데
vi 나 nano 를 활용해 편집을 통해 설정값을 변경해주자.
두가지 값을 명시해줘야 하는데
PermitRootLogin yes
PasswordAuthentication yes
를 해줘야 내가 SSH를 접속했을때 설정해둔 비밀번호로 접속을 진행할 수있다.
# Ubuntu 내에서 password 설정하기 (root)
passwd root
그렇게 다 해준 후에 외부 쉘에서 접속을 시도해본 결과를 아래에서 보자
명령어를 보게되면 8001번 포트로 접근하고 있는것을 볼수있다.
일단 여기서 다시금 나오게 되는게 홈서버 구축기 (1) 에서 다뤘던 포트포워딩 내용인데
한번 복기를 다시 해보려 한다.
Client
⬇️
공유기 ( Public IP )
⬇️
로컬 ( NAT )
⬇️
Docker Ubuntu
쉘에서 SSH 로 접속을 하게 되는것은 Client에서의 요청과정이 생략되고 직접적으로 ubuntu에 접근을 하는것이라 생각하면 된다.
그래서 바로 해당 공유기 아이피를 명시해주고 그에 해당하는 포트를 명시해주게 된것이다.
공유기 관리 사이트에 들어가면 내가 설정해준 포트포워딩 목록을 볼수있고, 각 포트별로 어디로 연결되어있는지 체크가 가능하다.
근데 나는 8001번 포트가 도커에서는 22번 포트, 즉 SSH 포트로 연결되게끔 해주었고 그래서 쉘에서 8001번 포트를 명시해준것이었다.
이렇게 정상적으로 우분투 SSH 접속까지 마무리 짓고나니 너무나도 후련하다는 사실 ✨
이제 블로그만 구축해서 얼른 올려야지 !!