시놀로지 Docker를 활용한 AirComix 서버 설치
신형 NAS로 교체한 기념으로 포스팅 해봅니다.
그동안 저는 DS-215j 모델을 사용해오고 있어서 몰랐는데 새로나온 고사양급 모델들은 요즘 IT인프라에서 가장 핫한 아이템인 Docker를 사용 할 수 있도록 업데이트가 되었습니다.
그 Docker로 무얼 할 수 있는가? 고민하다가 예전 버전에서는 어렵게 아파치 서버를 띄워서 구성했던 AirComix 서버를 설치 하기로 했습니다.
근데 DSM이 버전업 해버리면서 아파치의 경로가 바뀌어서 서버가 깨져서 내부에서 꼬여버려 사용하지 못했던 슬픈 역사가 있었죠.
AirComix 서버를 설치하면 막대한 용량의 압축 파일들을 앱에 넣지 않고, 통신망을 사용하여 어디에서든 스트리밍으로 구독이 가능합니다.
그래서 이번엔 아파치가 아닌 Nginx를 가지고 AirComix 서버를 구성해보고자 합니다.
설치과정에 있어서 pagein.net의 글을 많이 참고 했습니다.
설치하면서 제가 답답했던 부분이나 추가적인 부분을 더 포스팅 하려고 합니다.
Nginix PHP 설치
우선 도커 패키지를 설치 후 실행 합니다.
레지스트리를 선택한다음, 검색창에 nginx php 라고 검색을 한 후 나오는 목록에서 richarvey/nginx-php-fpm를 선택합니다.
더블 클릭하면 설치할 버전을 물어봅니다.
실행을 누르면 컨테이너 생성을 할 수 있습니다.
컨테이너 이름에 저는 aircomix-server 라고 넣었습니다. 원하는 이름으로 서버를 생성하시면 됩니다.
고급 설정을 누르면
자동 재시작 활성화에 체크 해주시고
볼륨 탭에서 폴더 추가를 해줍니다.
파일/폴더 있는 곳은 실제 NAS에 만화책들의 압축파일이 있는 경로를 지정해주시고, 마운트 경로는 Docker에 올라간 컨테이너 내에서 실제 책이 있는 경로가 마운트 되어 표현되어지는 경로입니다.
이게 무슨 소리냐? 하실 수도 있는데, 쉽게 말하자면,
만약에 실제 NAS의 /volume2/coimx 경로에 책 파일 있습니다.
하지만 docker로 컨테이너가 구성 되면 나스 안에 새로운 OS가 생성된것 같이 보이는데, 그 안에는 실제 경로인 /volume2/coimx는 보이지 않고,
그 볼륨 구성안에서 /volume1/books 라는 경로로 실제 NAS의 경로가 연결된다는 뜻입니다. (실제 /volume2/comix => 컨테이너 /volume1/books)
윈도우의 바로가기나 리눅스의 ln 링크처럼 말이죠.
저는 만화책 뿐만 아니라 다른 책들도 같이 넣을것이기 때문에 books라고 지정 했습니다. 마운트에 volume1은 바꾸지 마세요.
포트 설정입니다. 다른 포트 다 지우셔도 상관 없습니다.
자동으로 되어 있는 로컬 포트도 31257로 고정하고, 컨테이너 포트도 31257로 설정해 줍니다. TCP, UDP 다 설정 해줍니다.
적용을 누르고 다음으로 넘어가면서 설정을 완료 합니다.
그러면 비디오 형식에 다음과 같이 컨테이너가 실행되고 있음을 확인 할 수 있습니다.
세부사항을 누르고, 터미널 탭으로 가서 생성을 누르면 bash 쉘이 뜹니다.
pwd를 치면 컨테이너 안에서 현재 경로가 보이는데, /var/www/html 이 곳이 nginx의 웹을 구동하기 위해 파일을 넣어두는 디렉토리입니다.
이 곳에서 github에 있는 AirComix 파일을 내려받습니다.
pwd를 치면 컨테이너 안에서 현재 경로가 보이는데, /var/www/html 이 곳이 nginx의 웹을 구동하기 위해 파일을 넣어두는 디렉토리입니다.
이 곳에서 github에 있는 AirComix 파일을 내려받습니다.
bash-4.4# wget https://github.com/song31/comix-server/archive/master.tar.gz
그리고 다운로드가 완료 되면 압축을 풉니다.
bash-4.4# tar -zxvf master.tar.gz
압축을 풀면 /var/www/html/ 아래에 comix-server-master 라는 디렉토리가 생성됩니다.
bash-4.4# cd comix-server-master
우선 index.php를 수정해줍니다.
bash-4.4# vi index.php
기본 값은 manga 라고 되어 있는데, 아까 위에서 /volume1/books로 지정했던 부분의 books를 넣어줍니다.
만약 /volume1/comics 로 지정 했다면 comics를 넣으면 됩니다.
그 다음에 /etc/nginx/sites-enabled 로 이동을 합니다.
bash-4.4# cd /etc/nginx/sites-enabled
이 곳에다 aircomix-server.conf 파일을 만들어 줄것인데, 아래 명령으로 설정 파일을 받아 압축을 풀어도 되고,
bash-4.4# wget https://pagein.net/wp-content/uploads/2018/01/aircomix-server.tar.gz bash-4.4# tar -zxvf aircomix-server.tar.gz
아니면 vi 로 직접 생성해줘도 됩니다.
bash-4.4# vi aircomix-server.conf server { listen 31257; server_name 192.168.xxx.xxx; charset UTF-8; root /var/www/html/comix-server-master; location / { autoindex on; index index.php; #auth_basic "Restricted Access"; #auth_basic_user_file /var/www/html/comix-server-master/.htpasswd; } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ ^/manga(.*)$ { include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_param SCRIPT_FILENAME /var/www/html/comix-server-master/handler.php; } }
NAS-IP에는 실제 시놀로지 NAS가 공유기에서 받은 IP를 넣어주는 겁니다.
편집이 끝났으면 저장. (vi 편집기 사용에 관한 부분은 다른 사이트를 참고하셔서 알아두시는 편이 좋습니다.)
그리고 비디오 형식에 작업 버튼에 다시 시작을 누르거나 오른버튼을 클릭해서 다시 시작을 하거나 오른쪽 버튼을 클릭해서 껐다 키거나 해서 컨테이너를 재시작 해주면 실행이 됩니다.
웹 브라우저를 열고 http://NAS IP:31257 쳐서 books 라고 나오면 성공한겁니다.
제어판에 외부엑세스에서 DDNS 서비스를 이용하고 계시다면 http://해당 도메인:31257 으로 외부에서도 접속이 가능한데,
이건 공유기에서 DMZ 설정이나 포트포워딩 설정이 NAS로 연결되어 있어야지만 가능한 겁니다.
구글에서 포트포워딩 혹은 공유기 DMZ설정을 찾아보세요. 공유기 제조사 마다 설정 방법이 모두 다릅니다.
AirComix 암호설정하기
코믹스 서버 디렉토리로 이동합니다.
bash-4.4# cd /var/www/html/comix-server-master
여기에서 .htpasswd 파일을 생성합니다.
bash-4.4# printf "AirComix:$(openssl passwd -crypt 패스워드)\n" >> .htpasswd bash-4.4# chown nginx:nginx .htpasswd bash-4.4# chmod 640 .htpasswd
그리고 다시 aircomix-server.conf 파일을 수정합니다.
bash-4.4# vi /etc/nginx/sites-enabled/aircomix-server.conf
주석(#)처리된 부분을 지워주고 저장. (아래 그림 빨간 동그라미 안 auth 앞)
이렇게 하면 앱에서 AirComix 서버로 접속하기 위해서는 반드시 패스워드가 필요합니다.
설정 완료.
아이패드나 핸드폰에 Aricomix 앱을 받아서 서버를 등록하고 사용하면 됩니다.
/etc/nginx/sites-enabled 이동할때 php수정하는 화면에서 어떻게 나오나요? ㅠ
:wq! 하시면 됩니다.
볼륨 탭에 폴더 여러개 추가하고 vi index.php에서 경로 수정할 때는 그냥 volume1 입력해도 되나요?
그래도 되긴 하는데 volume1 밑에 생성된 모든 폴더가 보일겁니다. 기본적으로 시스템 폴더기 때문에 많은 것이 설치되는 폴더에요
혹시 지금 에어코믹스 서버 잘 작동되나요?
이 글 보고 따라했는데 안돼서 여기저기 다녀보니
7.0 올라가고부터 안된다는 글이 좀 보이더라구요…
7버전으로 업데이트해도 잘 됩니다. 도커는 컨테이너를 가져다 쓰는거라 OS 버전과는 상관 없어요
아… 글 보고 처음부터 다시 따라하는 데도 안되네요…
일단 보류했다가 나중에 다시 시도해봐야겠습니다
답변해주셔서 감사합니다
여전히 잘 되네요.. 감사합니다.
몇가지 코멘트 하면 openssl 3.0 부터 passwd -crypt 옵션이 사라졌습니다. 그냥 passwd 옵션 없이 진행하시면 됩니다.
패스워드 부분은 잘 안되어서 여러 번 입력하다보면 .htpasswd 파일에 입력한 암호 키들이 쌓이는데 이러면 인증에러가 납니다.
그럴 때는 rm .htpasswd 로 삭제하신 다음에 다시 생성하시면 됩니다.
DSM 7.1.1 에서 적용 완료했습니다.
전부다 똑같이 따라한 거 같은데
브라우저에서 접속을 해 보면
ERR_EMPTY_RESPONS
코드가 나오네요..
어디서 잘못 된건지. 모르겠네요. –; 몇번을 해도 마찬가지입니다. –;