Shlink - 설치형 url shortener
단축 url 생성을 위한 설치형 서비스 shlink를 설치해봤습니다.
docker 기반으로 손쉽게 설치하고 nginx proxy manager를 통해서 구성도 빠르게 마칠 수 있습니다.
먼저, 아래 docker-compose.yml 파일을 입맛에 맛게 수정하시면 됩니다.
services: shlink: image: shlinkio/shlink:stable container_name: shlink restart: unless-stopped volumes: - data:/etc/shlink/data networks: - local environment: DEFAULT_DOMAIN: url.lamanus.kr IS_HTTPS_ENABLED: true REDIRECT_APPEND_EXTRA_PATH: true shlink-web: image: shlinkio/shlink-web-client container_name: shlink-web restart: unless-stopped networks: - local environment: SHLINK_SERVER_NAME: default SHLINK_SERVER_URL: https://url.lamanus.kr volumes: data: networks: local: external: true
저는 사전에 local 이라는 도커 네트워크가 있어서 이렇게 되는거고, 필요에 따라서 네트워크 설정을 삭제하거나, links를 이용하면 됩니다.
이 상태로 배포 후에 2개의 url에 대해서 nginx proxy를 등록해줘야 합니다.
- url.lamanus.kr : url shortner service -> http://shlink:8080
- shlink.lamanus.kr : web portal -> http://shlink-web:80
이후에 ssl 인증서 적용, access lists를 통해서 web portal은 내부에서만 접근 가능하게 ip 제한을 설정합니다.
아직 web portal에서는 default 서버에 연결을 할 수 없는데요, 이유는 서비스에서 api 키를 발급받아야 하기 때문입니다.
간단하게 host에서 아래 명령으로 혹은 portainer 등을 통해서 컨테이너 내부에 명령을 수행합니다.
docker exec shlink sh -c "shlink api-key:generate"
이렇게 얻은 api 키를 web portal에서 default 서버 설정 편집 화면에 입력하면 서비스가 정상적으로 동작하게 됩니다.
샘플로 url 하나를 줄여보겠습니다. (도메인이 길어서 늘어난 것은 기분탓입니다.)
생성된 url 샘플입니다.
잘 동작하네요.