Buffalo NAS WSL/R1 이런 저런 메모들

최근에 Buffalo NAS 장비 하나를 구매했다. 사실 사진 및 동영상 저장 용도로 쓸라고 했는데, 아직 그 용도로 활용 보다는 파일 공유 및 웹서버 설정해서 Django 코드 테스트 해보는데 사용 하고 있는 중이다.

이래저래 많은 시행 착오 끝에, 머신 ssh 로그인을 외부에서도 가능하게 만들어 두었고, 기본적으로 사용할 수 있는 BitTorrent 웹 클라이언트까지 외부 접속이 가능하게 오픈해 뒀다.

일단 최신 펌웨어인 1.37에서 ssh 콘솔 로그인이 되게 만들기 위해서 몇몇 자료를 찾아봤고 정확하게 동작하는 방법을 찾았다.

Enabling ssh login – Tested in FW 1.34 and 1.37
Assuming that your NAS IP is static 192.168.0.10
Using only acp_commander:
First you can test if your nas will accept the following comands, just do a “ls /” and see the result. If you see your “/” folders, its ok:

java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw adminpasswordhere -c “ls /”

change root password:
java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw adminpasswordhere -c “(echo newrootpass;echo newrootpass)|passwd”

allow root to login on ssh – (this is one way to do it, the other way i know is to remove root from /etc/ftpusers)
java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw adminpasswordhere -c “sed -i ‘s/UsePAM yes/UsePAM no/g’ /etc/sshd_config”

Only for fw 1.37 – execute this additional command to enable root login on ssh
java -jar acp_commander.jar -t 192.168.0.10 -ip 192.168.0.10 -pw adminpasswordhere -c “sed -i ‘s/PermitRootLogin no/PermitRootLogin yes/g’ /etc/sshd_config”

restart ssh service
java -jar acp_commander -t 192.168.0.10 -ip 192.168.0.10 -pw adminpasswordhere -c “/etc/init.d/sshd.sh restart”

위 방법의 원문은 여기서 찾을 수 있다.

acp_commander만 찾아서 그대로 실행해주면 ssh로그인이 가능해진다.

외부에서 로그인이 가능하게 하려면 외부 포트와 주소를 내부주소로 변경하게끔 포트포워딩을 해야 한다. 물론 보안상 위험이 있을 수 있겠지만 내 공유기가 Tomato firmware 를 사용하고 있어서 공유기 내의 ssh 데몬을 뜨워두어 두번의 로그인으로 내부 NAS장비의 쉘에 접근하게끔 만들어 두었다.

물론 유동 IP를 고정적인 주소로 만들어 주는 DDNS서비스를 이용하는게 훨씬 편한데, 공짜 서비스인 Dyndns.org를 tomato firmware를 기반으로 연결하는 방법은 이미 이 자료에서 소개하고 있으니 참고하기 바란다.

php는 웹서버에서 기본으로 설정이 되어 있는바 별로 손댈 필요는 없고, Django를 돌리기 위해서 파이썬 버전을 확인 해봤더니. 2.6버전이 깔려 있었다.

일 단 django사이트에서 설치파일을 다운받고, “python setup.py install”을 기분좋게 실했했으나, NAS내에서 몇몇 누락된 파일 때문에 설치 에러가 난다. 그래서 귀찬아서 그냥 DjangoXX/django 디렉토리를 /usr/lib/python2.6/site-packages/ 아래에 몽땅 옮겨 두었다.

“django-admin help” 가 잘 먹는거 확인하고 장고 설치는 끝…

그럼 이제 NAS장비에 설치되어 있는 lighttpd하고 연동을 하기 위한 작업을 해야한다.

일단 이 페이지를 참고하니, flup를 설치 해야 한다고 한다. 이것도 python setup.py가 안먹으니 같은 방법으로 내부 파일을 옮겨 버린다.

그러고 난 후 장고용 fastcgi 서버를 아래와 같이 띄운다.

./manage.py runfcgi method=threaded daemonize=true host=192.168.X.X port=3033

그리고 “/etc/lighttpd/lighttpd.conf”를 아래와 같이 수정한다.

server.modules = (
“mod_rewrite”,
“mod_redirect”,
“mod_alias”,
“mod_access”,
# “mod_cml”,
# “mod_trigger_b4_dl”,
# “mod_auth”,
# “mod_status”,
# “mod_setenv”,
# “mod_proxy”,
# “mod_simple_vhost”,
# “mod_evhost”,
# “mod_userdir”,
# “mod_compress”,
# “mod_ssi”,
# “mod_usertrack”,
# “mod_expire”,
# “mod_secdownload”,
# “mod_rrdtool”,
# “mod_webdav”,
“mod_accesslog”
)

……………………..

………………………

server.document-root = var.basedir + “/htdocs/”
fastcgi.server = (
“/django_bookmarks.fcgi” => (
“main” => (
# Use host / port instead of socket for TCP fastcgi
“host” => “192.168.X.X”,
“port” => 3033,
#”socket” => “/home/user/mysite.sock”,
“check-local” => “disable”,
)
),
)
alias.url = (
“/phpMyAdmin” => “/var/www/localhost/phpMyAdmin/”,
“/media” => var.basedir + “/media/”,
)
url.rewrite-once = (
“^(/media.*)$” => “$1”,
“^/favicon\.ico$” => “/media/favicon.ico”,
“^(/.*)$” => “/django_bookmarks.fcgi$1”,
)

볼드체로 표현한 부분이 가장 중요한 부분이다. 게다가 어떤 모듈을 로딩할지 꼼꼼히 확인해야 한다. 내 경우에는 rewrite모듈이 꺼진줄 모르고 작업하느라 시간 허비좀 했었다.

이렇게 한뒤 웹서버를 재시작 하면 된다.

>> /etc/init.d/lighttpd.sh restart
* Stopping lighttpd … [ ok ]
* Starting lighttpd … [ ok ]

>>

아래는 장고 북마크 프로그램 구동 화면..

 

화면 갈무리-1

 

이제 웹서버로서도 잘 이용할 수 있게 되었다. 게다가 조만간 남은 블로그 호스팅 기간동안 NAS장비로 호스팅을 옮겨 볼까도 생각중이다.

CC BY-NC 4.0 Buffalo NAS WSL/R1 이런 저런 메모들 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.