
YOURLS는 무엇인가요?
YOURLS는 Your Own URL Shortener의 약자로, 개인이 설치하여 운영할 수 있는 PHP 기반의 URL 단축 서비스입니다.
‘Bitly’, ‘T.LY’ 등 이미 시중에 다양한 URL 단축 서비스가 나와 있지만, 타사의 서비스에 의존하고 싶지 않거나 자신이 소유한 도메인을 가지고 URL을 단축하고 싶다면 사용을 고려해 볼 만합니다.
글에서 사용된 환경은 다음과 같습니다.
- NAS: Synology DS920+
- DSM: 7.1.1-42962 Update 1
- Docker: 20.10.3-1308 패키지
사전 작업
매핑할 폴더 만들기
docker 공유 폴더에 “yourls” 폴더를 만들고, 그 안에 DB가 들어갈 “mariadb” 폴더와 서비스가 들어갈 “www” 폴더를 만들어주세요.

역방향 프록시 설정
도메인을 생성한 컨테이너와 연결하기 위한 준비입니다.
제어판 -> 로그인 포털 -> 역방향 프록시에 들어가 ‘설정’을 클릭해 주세요.

아래 사진과 같이 입력해 주세요.
‘호스트 이름’에는 사용할 자신의 도메인을 입력해 주세요.

상단 ‘사용자 지정 머리글’ 탭을 클릭하고 아래와 같이 생성해 주세요.
머리글 이름 | 값 |
Upgrade | $http_upgrade |
Connection | $connection_upgrade |

인증서 만들기
https 사용을 위해 인증서를 만들고 설정합니다.
제어판 -> 보안 -> 인증서 -> 추가를 누르고 ‘새 인증서 추가’를 체크해 주세요.

‘사전 작업’의 ‘호스트 이름’에 적었던 자신의 도메인을 ‘도메인 이름’과 ‘주제 대체 이름’에 적어주세요.

‘Let’s Encrypt에서 인증서 얻기’를 체크해 주세요.

다음을 누르고 잠시 기다리면 아래 사진과 같이 인증서가 만들어진 것을 확인할 수 있습니다.

만들어진 인증서를 클릭하고 상단의 ‘설정’ 버튼을 클릭해 주세요.
설정한 도메인을 찾아 ‘역방향 프록시’에서 설정한 ‘호스트 이름’과 일치 시켜주고 ‘확인’ 버튼을 클릭해 주세요.

다운로드
도커 레지스트리에서 YOURLS와 MariaDB를 찾고 설치해 주세요.
버전은 ‘lateset’를 선택해 주세요.


MariaDB 컨테이너 생성
네트워크 설정
이미지 -> mariadb를 더블클릭해 주세요.
네트워크는 디폴트 상태(아래 사진과 같은)로 ‘다음’ 버튼을 클릭해 주세요.

‘컨테이너 이름’을 작성하고, 좌측 하단의 ‘고급 설정’ 버튼을 클릭해 주세요.

파라미터 설정
더 많은 파라미터를 확인하고 싶으시면 https://hub.docker.com/_/mariadb 를 참고해 주세요.
변수 | 값 |
TZ | Asia/Seoul |
MARIADB_RANDOM_ROOT_PASSWORD | yes |
MARIADB_DATABASE | yourls (사용될 DB의 이름을 설정합니다. 변경 안 하는 걸 추천) |
MARIADB_USER | yourls (사용될 DB 유저의 이름입니다.) |
MARIADB_PASSWORD | 1q2w3e4r@! (사용될 DB 유저의 비밀번호입니다.) |

포트 설정
디폴트 상태(아래 사진과 같은)로 ‘다음’ 버튼을 클릭해 주세요.

폴더 매핑
‘폴더 추가’버튼을 클릭하고 사전 작업에서 만든 ‘mariadb’ 폴더를 찾아 ‘선택’ 버튼을 클릭해 주세요.

‘마운트 경로’에 “/var/lib/mysql” 를 적어주세요.

모든 내용을 확인하고 ‘완료’ 버튼을 클릭해 주세요.

YOURLS 컨테이너 생성
네트워크 설정
이미지 -> yourls를 더블클릭해 주세요.
네트워크는 디폴트 상태(아래 사진과 같은)로 다음 버튼을 클릭해 주세요.

컨테이너 이름을 작성하고, 좌측 하단의 ‘고급 설정’ 버튼을 클릭해 주세요.

파라미터 설정
더 많은 파라미터를 확인하고 싶으시면 https://hub.docker.com/_/yourls 를 참고해 주세요.
* 만약 ‘MariaDB 파라미터 설정’에서 ‘MARIADB_DATABASE’ 변수를 추가해 줘야 합니다. 이런 경우 링크를 참고해 주세요.
변수 | 값 |
TZ | Asia/Seoul |
YOURLS_SITE | https://your.domain.kr (당신의 도메인을 입력하세요.) |
YOURLS_USER | yourls (로그인에 사용될 id입니다.) |
YOURLS_PASS | 1q2w3e4r@! (로그인에 사용될 PASSWORD입니다.) |
YOURLS_DB_HOST | db |
YOURLS_DB_USER | yourls (위 MariaDB 파라미터에서 작성했던 USER의 닉네임입니다.) |
YOURLS_DB_PASS | 1q2w3e4r@! (위 MariaDB 파라미터에서 작성했던 PASSWORD입니다.) |
DB 컨테이너와 링크
DB 컨테이너와 링크합니다.
MariaDB의 컨테이너의 이름을 선택하고, 별칭을 파라미터의 ‘YOURLS_DB_HOST’와 동일하게 “db”로 작성해 주세요.

포트 설정
‘역방향 프록시’에서 설정했던 포트를 ‘로컬 포트’에 적어주세요.

폴더 매핑
‘폴더 추가’버튼을 클릭하고 사전 작업에서 만든 ‘www’ 폴더를 찾아 ‘선택’ 버튼을 클릭해 주세요.

‘마운트 경로’에 “/var/www/html” 를 적어주세요.

모든 내용을 확인하고 ‘완료’ 버튼을 클릭해 주세요.
“컨테이너가 (mariadb 컨테이너명) 에 의존합니다. 사용자를 위해 그것들을 시작했습니다.” 가 떠야 합니다.

방화벽 설정
외부에서 접근할 수 있도록 방화벽 규칙을 편집해 줘야 합니다.
제어판 -> 보안 -> 방화벽 -> 방화벽 프로파일 -> 규칙 편집 버튼을 클릭해 주세요.
포트에서 ‘내장된 응용 프로그램 목록에서 선택’ 오른쪽의 ‘선택’ 버튼을 클릭해 주세요.

‘Docker yourls’를 찾아 오른쪽 체크박스에 체크해 주세요.

접속하기
브라우저를 열고, “(도메인)/admin/”로 들어갑니다.
* 꼭 “(도메인)/admin/”으로 들어가셔야 합니다. 그냥 도메인만 치면 Forbidden이 뜹니다.

마치며…
블로그의 SEO 점수를 위해 주소표시줄에 포스트의 제목이 들어가게 만들었더니, URL이 길어지고 더러워져 단축 URL 서비스를 찾게 되었습니다. 마침 짧은 도메인을 가지고 있어 이렇게 설치형 서비스로 나만의 단축 URL을 만들어 봤습니다.
YOURLS는 다양한 플러그인도 지원하고 있으니 YOURLS의 홈페이지(클릭)를 꼭 한번 방문하여 확인해 보시길 추천드립니다.
기회가 된다면 YOURLS API를 사용하여 자동으로 단축 URL을 생성하고 가져오는 방법을 다뤄보도록 하겠습니다.
흠 잘 되지 않습니다..
Incorrect DB config, or could not connect to DB
PDOException: SQLSTATE[HY000] [2002] Connection timed out
이렇게 뜨는데…해결 방법을 아실까요?
mariadb와 yourls간의 연결 설정이 안 되어 있는 거 같습니다.
yourls 컨테이너를 생성하실 때, 파라미터 (yourls_db_host)를 db로 하신 게 맞는지, DB 컨테이너와 링크하실 때 mariadb의 별칭을 db로 하셨는지, 혹은 mariadb와 user password를 같게 하셨는지 확인해 주세요.
감사합니다. 본 포스팅 따라해서 덕분에 잘 설치했습니다.
초봅니다.
먼저 설명해 주신바와 같이 도커는 설치했습니다.
그런데 이 이전에 시놀로지 서비스인 웹서버와 PHP 그리고 마리아 DB를 먼저 설치해야 하는게 맞겠죠 ?
Docker가 Container Manager로 이름이 바뀌었습니다.
모든건 Container Manager 위에 설치 하셔야 합니다.
mariadb, yourls 이미지를 찾아 설치하시면 됩니다. 웹서버와 PHP는 yourls 이미지에 포함되어 있습니다.