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 (너무 재귀하죠!)