도커 기반 셀프 호스팅이 되는 Url 단축 서비스가 있다고?!

Alpha, Orderly·2024년 11월 15일
0

뻘짓거리

목록 보기
3/4

https://github.com/alphaorderly/mrshort-url-shortener


MrShort

도메인 단축 서비스는 참 많은데.. 내가 원하는 기능들은 하나씩 빼먹거나 아니면 다른 사이트에서 막혀버린 경험이 있을겁니다.

그걸 해결하기 위해 만든 서비스!

올리는 방법은 매우 쉽습니다.


docker-compose.yml

version: '3.8'
services:
  app:
    image: ilov1112/url-shortener-alpha:latest
    ports:
      - '6824:3000'
    environment:
      - JWT_SECRET=ea28f835f9be0be2bbc35481ca04543d88ef2474e9500a7baacb6109d4ff7132abba86bdc14f62c6739cff536a042132f0892a668a2750c9b8e897647f8e1bec
      - JWT_REFRESH_TOKEN=ea28f835f9be0be2bbc35481ca04543d88ef2474e9500a7baacb6109d4ff7132abba86bdc14f62c6739cff536a042132f0892a668a2750c9b8e897647f8e1bec
      - HASH_SALT=thisishashsaltforalphaorderly
      - TARGET_URL=http://localhost:6824/
      - ID=example_id
      - PW=example_pw
      - DB_HOST=postgres
      - DB_PORT=5432
      - DB_USERNAME=example_user
      - DB_PASSWORD=example_password
      - DB_DATABASE=urlshortener
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - REDIS_PASSWORD=example_redis
      - SERVICE_NAME=MrShort
    depends_on:
      - postgres
      - redis
    networks:
      - urlshortener

  postgres:
    image: postgres:13
    environment:
      POSTGRES_USER: example_user
      POSTGRES_PASSWORD: example_password
      POSTGRES_DB: urlshortener
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    networks:
      - urlshortener

  redis:
    image: redis:7.2
    command: ['redis-server', '--requirepass', 'example_redis']
    volumes:
      - ./data:/data
    restart: always
    networks:
      - urlshortener

networks:
  urlshortener:
    driver: bridge

도커 Compose에 이걸 적고 올리면 끝 이 아니라

조금의 설정을 하시면 됩니다.

JWT_SECRET : jwt 토큰 secret입니다. 쉘에서 openssl rand -hex 64 를 실행해 생성 후 넣습니다.
JWT_REFRESH_TOKEN : refresh jwt 토큰 secret 입니다. 반드시! JWT SECRET 과 다른것을 사용하세요!
HASH_SALT : 비밀번호 해시 솔트입니다. jwt_secret 과 같이 생성 후 넣습니다. ( openssl rand -hex 64 )
TARGET_URL : 배포할 url 주소입니다. 개발을 원하시면 유지하시고 아니면 바꿔주세요
  - 끝에 반드시 / 을 붙혀야 합니다.
  - Ex. https://testingwebsite.com/
ID : 초기 실행시 만들어질 기본 계정의 아이디입니다. // 초기 실행 이후 삭제하셔도 무방합니다.
PW : 초기 실행시 만들어질 기본 계정의 비밀번호입니다. // 초기 실행 이후 삭제하셔도 무방합니다.
SERVICE_NAME : 메인 화면에 보여질 이름입니다.

기능

  • 각 도메인에 대한 만료 날짜, 비밀번호, 임의 주소 설정이 가능합니다.

  • 생성한 도메인들의 간략한 정보를 확인 가능합니다.

  • 도메인 별 클릭된 자세한 정보와 클릭 그래프도 확인 가능합니다.

  • 회원 가입은 초대 시스템으로!
    • 초대 Url 으로 초대가 가능합니다.

사용된 기술

  • Nest.js
  • Postgres
  • Redis
    • Redis 를 통해 들어간 사이트 주소의 캐싱을 합니다.
  • Handlebars

Github 주소

https://github.com/alphaorderly/mrshort-url-shortener

profile
만능 컴덕후 겸 번지 팬

0개의 댓글