시대적 고정 IP가 없는 자사 서버 공개 방법 고려
로컬 개발 환경과 자기 집 서버를 외부에 공개하고 싶을 때 어떻게 할까요?
나는 이전에 고정 IP가 부여된 VPS를 빌려 VPN을 붙이고 싶다.
하지만 최근엔 ngrok 등으로 대표되는 일을 고려하지 않더라도 도구를 넣으면 쉽게 대외적으로 공개할 수 있는 도구가 나왔다
하지만 개발 도중 통신을 통해 제3자에게 약간의 저촉이 있을 수 있다.
또 대용량의 물건을 사용하려면 속도 제한이 있어 번거롭다.
ngrok 같은 걸 스스로 활용할 수 있다면...
공구를 넣지 않고도 쉽게 공개할 수 있다면...
이런 소원을 이룰 수 있는 게 이번에 소개한 sish입니다.
ssh 터널을 사용하는 터널 도구입니다.
(사상적으로 접근
serveo
하류로 삼다PC → (SSH Tuunel) → VPS(sish) → global
이런 느낌이에요.
sish 이외에도 최근에는caddy를 사용할 수 있지만 그곳에서는 사용하는 사용자 수에 따라 매번 설정을 변경해야 하며 이후에도 웹 서버를 만들 필요가 없다.
sish는 특별히 신경 쓰지 않아요. 고객은 ssh만 있으면 돼요. 아주 편해요.
sish는 직접 사용할 수 있지만 시도해 본 적이 없어서 썼어요.
사전 준비: DNS 서버 선택
sish를 사용하기 전에 DNS 서버를 선택하는 것이 가장 중요합니다.
sish 인증서 제작은 다른 사람이 만든 DNS 인증 기반letsencrypt 인증서 생성 소프트웨어를 사용합니다
DNS 기록을 다시 쓰기 전에 DNS 인증이 자동으로 진행될 때까지 자동으로 진행되는 대단한 대체품이지만 기록을 자동으로 다시 쓰기 위해서는 API를 제공하는 DNS 서비스를 이용해야 한다.
해당하는 DNS 서비스는 다음과 같습니다.
주요 구름도 대응하지만 일본의 벚꽃과 코하도 기쁨에 대응하고 있다.
개인용도라면 API를 무료로 두드리고 국내 서비스로 범위를 좁혀 ConoHa를 이용하는 게 좋을 것 같다.
ConoHa의 API는 token 기본과 id/password 기본 방식이 있지만 token 기본은 하루밖에 없어요. id/password를 사용하지 않으면 중장기적으로 활용할 때 귀찮아요.
사전 준비:sish 설정
일단 창고를 clone 해주세요.
그런 다음 설정 파일 덮어쓰기
DNS 설정
사용하는 DNS 서버에 따라 설정하십시오.
deploy/le-config.yml
acme:
email_account: EMAIL
certificates:
- autorestart:
- containers:
- sish
domains:
- 'test.example.com'
- '*.test.example.com'
name: test.example.com
profile: conoha
profiles:
- name: conoha
provider: conoha
sleep_time: 60
sleep_time: 120
delegated_subdomain: 'test.example.com'
provider_options:
auth_username: 'CONOHA_API_USER'
auth_password: 'CONOHA_API_PASS'
auth_tenant_id: 'CONOHA_API_TENANT_ID'
사용자 설정
sish를 사용하는 사용자는
deploy/pubkeys/
에 의해 관리됩니다.파일 이름 사용자 이름
조금 거칠지만 GiitHub 공개 키로sish 사용자를 생성한 ansible playbook이 공개되었으니 참고하세요
인증서 설정
독립역에서sish를 활용해야 돼요.
인증서의 균형 때문에
디렉토리에 기호 링크를 붙여넣어야 합니다.
ln -s /etc/letsencrypt/live/<your domain>/fullchain.pem deploy/ssl/<your domain>.crt
ln -s /etc/letsencrypt/live/<your domain>/privkey.pem deploy/ssl/<your domain>.key
한순간에 뭘 하고 있는지 헷갈리겠지만 sish 컨테이너 안에 path에 상징적인 링크가 붙어있는 걸 생각해 보세요.시용하다
docker-compose -f deploy/docker-compose.yml up
에서 일어나서 증서가 완성되기를 기다리다인증서가 완성되면 준비가 완료됩니다
그리고 클라이언트 쪽에서
ssh -p 2222 -R domain:80:localhost:3000 [email protected]
전화하면방문
domain.test.example.com
하면localhost:3000
방문수고하셨습니다.
Reference
이 문제에 관하여(시대적 고정 IP가 없는 자사 서버 공개 방법 고려), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/306/articles/dcd3d4695dd2d1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)