Docker와 YOURLS로 나만의 단축 URL 호스팅하기

전 예전부터 단축 URL 서비스를 호스팅하고 싶었습니다. 주 목적으로는 가끔씩 링크를 나눠줘야 되는 경우가 있는데, 링크는 만료되기 일쑤거든요. (엔트로피를 파괴하거나 우주의 붕괴를 막지 않는다면 말이죠!) 단축 URL 서비스가 있다면 (거의) 영구적인 링크를 나눠줄 수 있는데, 지구가 멸망하거나 서버 요금을 내는 것을 깜빡해서 서버가 종료되기 전까지는 링크를 계속 업데이트할 수 있기 때문이죠.

그래서 YOURLS라는 프로젝트와 Docker(+ Docker Compose)를 사용하여 한번 설정해봤습니다. 어려울 줄 알았는데, 이 파일 하나면 거의 설치가 모두 끝납니다:

docker-compose.yml:

version: "3"

services:
  mariadb:
    image: mariadb:11
    container_name: yourls-mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ROOT_PASSWORD_HERE
      MYSQL_PASSWORD: DATABASE_PASSWORD_HERE
      MYSQL_DATABASE: yourls
      MYSQL_USER: yourls
    volumes:
      - ./mariadb:/var/lib/mysql

  yourls:
    image: yourls:latest
    container_name: yourls-app
    restart: unless-stopped
    depends_on:
      - mariadb
    environment:
      YOURLS_DB_HOST: mariadb
      YOURLS_DB_USER: yourls
      YOURLS_DB_PASS: DATABASE_PASSWORD_HERE
      YOURLS_DB_NAME: yourls
      YOURLS_USER: ADMIN_USERNAME_HERE
      YOURLS_PASS: ADMIN_PASSWORD_HERE
      YOURLS_SITE: "https://yourls.example.com"
      YOURLS_UNIQUE_URLS: "true"
      YOURLS_PRIVATE: "true"
    volumes:
      - ./yourls:/var/www/html/user

  swag:
    image: linuxserver/swag:latest
    container_name: swag
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - URL=yourls.example.com
      - VALIDATION=http
      - EMAIL=letsencrypt-email@example.com
    volumes:
      - ./swag/config:/config
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - yourls

docker-compose up -d를 사용하여 실행한 다음, swag/ 폴더 안 샘플 설정 파일을 복사한 후 설정값 몇개만 건드려주면 설치가 끝납니다.

예시로 이 블로그 글로 연결되는 단축 링크는 다음과 같습니다: https://links.ericswpark.com/blog-ko-yourls (너무 재귀하죠!)

Related Posts

댓글