amazon lightsail 에 설치된 ubuntu 서버에서 storybook 을 세팅하려고 하는데 IP가 다른 것으로 표시된다.
private ip가 세팅이 된다. lightsail에는 서버에 할당되는 private ip가 있고 여기에 맵핑되는, 외부에서 접속 가능한 public ip가 따로 있다.
브라우저에서 private ip로 접근하려면 안되고 public ip로 접근해야 한다. 서버에서도 ip 확인해보면 private ip만 할당되어 있다.
여기서 사고의 오류. public ip로 접근할 것이니 storybook 에서도 public ip를 맵핑해 줘야지. package.json에 아래와 같이 public ip를 맵핑해 줬더니 바로 에러가 발생한다.
"storybook": "start-storybook -h publicIp -p 6006",
이짓 저짓 다 해봐도 안 된다. address가 유효하지 않다고 한다. lightsail 의 networking 탭에서 확인하다 보니 아하~방화벽 포트를 오픈 안 해줬구나. 잽싸게 storybook이 사용하는 6006 포트를 추가.
그러나 여전히 ip를 사용할 수 없다는 에러가 나온다. 그러다 사고의 전환.
storybook에 맵핑하려는 public ip는 lightsail에서 외부와 통신하는 가상 ip이고 storybook에서는 서버의 ip인 private ip로 데몬이 떠도 둘이 통신이 가능하지 않을까?
아래와 같이 기본 세팅으로 두면 private ip로 데몬이 뜬다.
"storybook": "start-storybook -p 6006",
그리고 방화벽 포트 6006번은 오픈하고 public ip로 브라우저에서 접근해 봤더니 잘 된다.
오늘도 대수롭지 않은 것으로 많은 시간을 날려보내니 허탈함. lightsail에서 제공하는 ip에 대해 별달리 생각하지 않고 쓰다가 이런 부분을 만났을 때 대충 넘어간 것에 대한 수수료를 청구받게 된다.
결론: 새로운 포트를 열려면 lightsail 방화벽에서 오픈해야 하고 public ip는 외부에서 내부 접근 용도로만 사용되며 이는 private ip에 맵핑되서 연결된다.