Language:EN / NE / AE / DE / IT

안녕하세요. 


웹기반으로 저사양 급에서 작동하는 파일 관리자를 찾고 있다가, 쓸만한 것을 발견하여 가이드를 작성하고 있습니다.


<기능> 

1. 파일 작성 가능

2. 파일 업로드 및 폴더 업로드 가능 (용량 제한은 모르겠습니다.)

3. 2분할 창 사용가능

4. 웹 표준을 준수하는 미디어 바로 재생가능

5. 공유링크 생성 기능

6. 기본 인증 (아이디, 비밀번호)

7. 퍼블릭 설정 가능 (Read Only 설정 가능)

--> 아쉽게도 인증 + 퍼블릭 설정은 안됩니다.


<아쉬운점>

다운로드 속도는 빠르나 업로드 속도는 조금 느립니다.






1. nodejs 설치하기


curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -


apt-get install -y nodejs gcc g++ make


그럼 nodejs 안정 버전이 설치됩니다.





2. droppy 설치하기


root@AOL-Debian:~# npm install -g --production droppy

/usr/bin/droppy -> /usr/lib/node_modules/droppy/droppy.js

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/droppy/node_modules/fsevents):

npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"arm"})





3. 초기 구동하기 및 설정하기


# -c 옵션을 주어 초기 설정파일 경로를 지정합니다. 그리고 -f 옵션으로 대상 경로를 지정합니다.


root@AOL-Debian:~# droppy start -c /etc/droppy -f /mnt/media_rw/by-uuid/a7b7ebdc-01/


           .:.

    :::  .:::::.   droppy 9.1.3 running on node 8.11.3

  ..:::..  :::     config at /etc/droppy

   ':::'   :::     files at /mnt/media_rw/by-uuid/a7b7ebdc-01

     '

2018-07-06 01:04:46 [INFO] Configuration: { listeners: [ { host: [ '0.0.0.0', '::' ], port: 8989, protocol: 'http' } ], public: false, timestamps: true, linkLength: 5, linkExtensions: false, logLevel: 2, maxFileSize: 0, updateInterval: 1000, pollingInterval: 0, keepAlive: 20000, allowFrame: false, readOnly: false, compression: true, ignorePatterns: [], watch: true }

2018-07-06 01:04:46 [INFO] Loading resources ...

2018-07-06 01:04:47 [INFO] Loading resources done

2018-07-06 01:04:47 [INFO] The 'uws' module failed to build, falling back to 'ws'

2018-07-06 01:04:47 [INFO] Listening on http://127.0.0.1:8989

2018-07-06 01:04:47 [INFO] Listening on http://192.168.0.151:8989

2018-07-06 01:04:47 [INFO] Caching files ...

2018-07-06 01:04:53 [INFO] Caching files done

2018-07-06 01:04:53 [INFO] Ready for requests!

2018-07-06 01:05:05 [INFO] 192.168.0.149:1882 GET / [200] [21ms]

2018-07-06 01:05:05 [INFO] 192.168.0.149:1882 GET /!/res/client.js [200] [4ms]

2018-07-06 01:05:05 [INFO] 192.168.0.149:1883 GET /!/res/style.css [200] [2ms]

2018-07-06 01:05:05 [INFO] 192.168.0.149:1883 GET /!/res/sprites.png [200] [2ms]

^C2018-07-06 01:05:15 [INFO] Received SIGINT - Shutting down ...


컨트롤 + C 를 눌러 종료합니다.


기본적으로 HTTPS 설정도 가능합니다만, 일단 제외합니다.


사용자 계정 추가는 아래와 같이 진행합니다. droppy 의 기본 명령어들은 아래를 참고하시면 되겠습니다.


Usage: droppy command [options]


 Commands:

   start                  Start the server

   stop                   Stop all daemonized servers

   config                 Edit the config

   list                   List users

   add <user> <pass> [p]  Add or update a user. Specify 'p' for privileged

   del <user>             Delete a user

   build                  Build client resources

   version, -v            Print version


 Options:

   -c, --configdir <dir>  Config directory. Default: ~/.droppy/config

   -f, --filesdir <dir>   Files directory. Default: ~/.droppy/files

   -d, --daemon           Daemonize (background) process

   -l, --log <file>       Log to file instead of stdout

   --dev                  Enable developing mode

   --color                Force-enable colored log output

   --no-color             Force-disable colored log output


# droppy add ID PW [권한]

root@AOL-Debian:/etc/droppy# droppy add djjproject djjproject p


p 옵션을 주시면 설정 변경이 가능합니다.






4. init.d 서비스 등록하기


/etc/droppy/run.sh 파일을 만듭니다. 


-- 실제로 $EXEC 부분에 명령줄을 그대로 넣으면 -- 'f' invaild option 에러가 떠서 어떻게 해결할지 몰라 일단 이렇게 작성해 보았습니다.


root@AOL-Debian:~# nano /etc/droppy/run.sh


#!/bin/bash

/usr/bin/env droppy start -c /etc/droppy -f /mnt/media_rw/by-uuid/a7b7ebdc-01


root@AOL-Debian:~# chmod a+x /etc/droppy/run.sh


그리고 /etc/init.d/droppy 를 생성합니다.


root@AOL-Debian:~# nano /etc/init.d/droppy



#!/bin/sh


### BEGIN INIT INFO

# Provides:          droppy

# Required-Start:    $network $remote_fs $local_fs

# Required-Stop:     $network $remote_fs $local_fs

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: droppy

# Description:       droppy

### END INIT INFO


PROCESS="droppy"

RUNAS="root:root"

CMD="/etc/droppy/run.sh"


do_start() {

    start-stop-daemon --start --background -c $RUNAS --name $PROCESS --exec $CMD

}


do_stop() {

    start-stop-daemon --stop --name $PROCESS

}


case "$1" in

  start)

    do_start

  ;;

  stop)

    do_stop

  ;;

  restart)

    do_stop

    do_start

  ;;

  *)

    echo "Usage: "$1" {start|stop|restart}"

    exit 1

  ;;

esac


exit 0


# 실행 권한 줍니다.
root@AOL-Debian:~# chmod a+x /etc/init.d/droppy

# 부팅시 자동실행 설정합니다.
root@AOL-Debian:~# update-rc.d droppy defaults


정상적으로 작동하는지 봅니다.


root@AOL-Debian:~# ps -ef | grep droppy

root     14485     1  0 02:33 ?        00:00:00 /bin/bash /etc/droppy/run.sh

root     14486 14485 37 02:33 ?        00:00:02 droppy                                                                        

root     14529  2635  0 02:33 pts/0    00:00:00 grep droppy

root@AOL-Debian:~#





5. 접근해보기


http://u5pvr_ip_address:8989/

ID / PW -> 설정한 것 입력














요정도 사용이 가능합니다.


동영상으로 보여드리겠습니다. 재촬영을 하게 되면서 굉장히 말을 더듬더듬 하게 되었네요. 죄송합니다.





6. 맺음말


넥스트 클라우드가 너무 무거워서 구동이 애로하여 찾아본 파일 관리자 중에 굉장히 괜찮은것 같습니다. 


포트의 경우에는 8989 로 되어 있어서 조금 그럴 수 있는 부분입니다.  이 부분은 아파치 프록시 패스나 엔진엑스의 프록시 기능을 사용하여 관리를 해주시면 좋을것 같습니다. 


감사합니다.