Pogoplug E02 아치리눅스 설치 후 작업할 것 리스트


한번 다시 갈아 엎으면서 정리

지금 찾아보려고 하니 휴면 블로그 이런것들 때문에

링크가 깨진게 많아서.. 내용을 그대로 복사함.


혼자 사용하기 때문에 권한 같은 것은 대충 설정하고,

samba 는 로컬 네트워크 안에서 모든 권한,

webdav 는 외부에서 사용할 용도로 읽기전용,

업로드는 굳이 빠른 업로드 속도가 필요 없으므로

sftp로 특정 폴더에만 쓰기가능하도록 하였음.

삭제하거나 이동, 복사할때는 ssh 또는 samba 상에서 수정

128GB usb 사용, 8GB는 리눅스, 120GB는 저장용도로 사용



- 2015년 01월 기준


http://archlinuxarm.org/platforms/armv5/pogoplug-v2-pinkgray

위의 링크에서 부트로더 세팅만 하고..

부팅 디스크는 우분투에서 작업해서 생성

mkfs.ext4 /dev/sda1

tune2fs -O ^has_journal /dev/sda1

e2fsck -f /dev/sda1

# ext4로 포맷하고, 저널기능 off 해서 usb 수명 증대.

포고 순정상태에서는 ext4 마운트가 안된다고 해서 우분투에서 작업.

또는 ext2 로 해도 문제는 없을듯..



재부팅 후..

vi /etc/pacman.d/mirrorlist

# 캘리포니아로 설정(geo 기반으로 하면 중국 잡히는데 CA가 더 빠르다고 함)


pacman -Syu

# 리눅스 업데이트


pacman -S samba htop wol transmission-cli udevil vim hd-idle

# 필요한 것들 설치


시간대 설정

ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

#기존 localtime은 삭제 후 링크


한글 사용

/etc/locale.gen

ko_KR.UTF-8 UTF-8

# 주석 제거


/etc/locale.conf

LANG="ko_KR.UTF-8"

# 파일 생성 후 입력, 재부팅


samba 설정 수정

/etc/samba/smb.conf

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072

;log file = /var/log/samba/%m.log
# 어디선가 가져온 삼바 속도 증가 옵션들 + 로그 생성 안함.

smbpasswd -a [유저명]

# 삼바 유저 추가


wol, WOL 스크립트

.bashrc 에 추가

source wakedesktop $$


wakedesktop 스크립트

#!/bin/bash

wol [맥주소]

kill -9 $1

# 데스크탑 WOL 한 다음에 바로 터미널 종료


hd-idle - 하드디스크 일정 후 정지

/etc/conf.d/hd-idle

START_HD_IDLE=true
HD_IDLE_OPTS="-i 0 -a sda -i 0 -a sdb -i 600 -a sdc -i 600"
# 전체 idle 중지 / sda idle 중지 / sdb 10분후 정지 / sdc 10 분 후 정지

usb도 idle 하게 놓으면 왠지 먹통이 되는것 같아서 위에 처럼 하드만 idle


udevil - 자동 usb 마운트

/etc/udevil/udevil.conf #설정 파일

systemctl enable devmon@root # enable

# 자동으로 마운트 시킬때 사용하는 udevil enable. 하지만 따로 개인적인 서비스를 사용.



nginx (webdav)

http://clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=160686

원글이 지워질까봐 그대로 복사..


pacman -S gcc make


http://nginx.org/en/download.html

https://github.com/arut/nginx-dav-ext-module/archive/master.zip

둘 다 다운로드 후 압축해제.


./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=http --group=http --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/client-body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-imap --with-imap_ssl_module --with-ipv6 --with-pcre-jit --with-file-aio --with-http_dav_module --add-module=확장모듈이 있는 폴더 --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_realip_module --with-http_spdy_module --with-http_ssl_module --with-http_stub_status_module


geoip module 은 컴파일시 추가적인 lib 을 필요로 해서 제거하였음.

원래 깔려있는 nginx에도 없었기도 해서..


다 끝나면

make && make install


개별적인 시작 종료 명령어는 다음과 같습니다.

      시작

     /usr/sbin/nginx

      종료

     /usr/sbin/nginx -s stop

 

/etc/nginx/nginx.conf

35번째 줄 쯤부터..

server { 
     listen       80;         # 서비스 포트 
     server_name  localhost; 
   
     charset utf-8;            # 한글 폴더명 파일명 깨지는 문제 처리 
   
     #access_log  logs/host.access.log  main; 
   
     location / { 
         root /usr/share/nginx/html; 
         index  index.html index.htm; 
     } 
   
     location /webdav {    # 접속하고 싶은 뒷부분 주소 
         autoindex on; 
         alias /home/webdav/torrent;            # 공유하고 싶은 위치 
         auth_basic "Restricted Access"; 
         auth_basic_user_file /etc/nginx/security/.htpasswd;    # 비번 저장 위치 
         client_body_temp_path /tmp/nginx/webdav;        # 임시파일 저장 위치 
         dav_methods PUT DELETE MKCOL COPY MOVE;    # 기본모듈 옵션 
         dav_ext_methods PROPFIND OPTIONS;        # 확장모듈 옵션 
         create_full_put_path  on; 
         dav_access user:rw group:rw  all:r;        # 권한에 대한 내용 
     }

 
주소, 공유위치, 임시저장파일 위치만 빼고 똑같이 적으시면 될겁니다.

 비밀번호 파일 설정은

 

echo "계정:$(openssl passwd -crypt 비밀번호)" >> /etc/nginx/security/.htpasswd 

  하면됩니다.

 

계정은 리눅스 로컬계정과 아무런 관련이 없습니다.

  권한부분에서 현재 설정은 유저 읽기쓰기, 그룹 읽기쓰기, other 읽기만 가능하도록 되어있습니다.

 엔진엑스나 아파치나 다른 웹서버 프로그램들도 마찬가지로...
파일에 대한 권한을 가지는 소유주는 웹서버 프로세서가 됩니다.
 
실제로 기본설정으로 nginx를 실행시켜보면
ps -ef | grep 'nginx: worker process'
혹은
htop

로 들여다보면 nginx worker process가 http로 실행되어 있을겁니다

일반적으로 ftp나 samba에서 수정가능한 계정으로 공유하려는 파일이 소유되어있을겁니다..
따라서 nginx에서도 수정을 해줘야 합니다.

설정부분 첫부분에 보면 user 부분이 있습니다.

user 계정명 그룹명;

이렇게 설정하면 됩니다.



ssh

/etc/ssh/sshd_config
PermitRootLogin no ## 루트 로그인 방지

Subsystem sftp /usr/libexec/openssh/sftp-server ## sftp 설정

# 파일은 sftp 로 옮기고 스트리밍시에는 webdav 사용.




전면 LED 켜기/끄기/깜빡이기

(전면 LED는 오랜지색, 녹색 각각 2개있고, 독립적으로 동작)

echo default-on > /sys/class/leds/status:orange:fault/trigger   # 켜기

echo none > /sys/class/leds/status:orange:fault/trigger     # 끄기

echo timer > /sys/class/leds/status:orange:fault/trigger   # 깜빡이기

orange:fault 를 green:health으로 바꾸면 녹색도 깜빡여짐.



shutdown, reboot 시 LED 깜빡이기

/usr/lib/systemd/system/systemd-shutdownd.service

/usr/lib/systemd/system/systemd-reboot.service

[Service]

Type=oneshot

ExecStartPre=[스크립트]

# LED가 깜빡이도록 스크립트 만들어서 추가, ExecStartPre 줄 추가.

이것을 사용해서 완전히 시스템 종료된 후 안전하게 USB 분리.

시스템이 종료되면 깜빡이는것도 꺼짐.


깜빡이는 스크립트

#!/bin/bash
echo timer > /sys/class/leds/status:orange:fault/trigger


개인적인 서비스 추가

/etc/systemd/system/multi-user.target.wants/my.service

[Unit]
Description=My
After=network.target


[Service]
Type=oneshot
ExecStart=/usr/run_all

[Install]
WantedBy=multi-user.target

/usr/run_all 내용

echo none > /sys/class/leds/status:green:health/trigger

echo timer > /sys/class/leds/status:orange:fault/trigger

mount /dev/sda2 /media -o rw,noatime

sleep 5

/usr/bin/devmon &

sleep 20

/usr/bin/nginx &

sleep 5

/usr/bin/transmission-daemon -g /media/usb120/.config/transmission-daemon/ &

echo none > /sys/class/leds/status:orange:fault/trigger

# 삼바 설정 시 media 전체를 공유하도록 하는데, 이 경우 8GB 로 잡아놓은 부팅 파티션을

전체 용량으로 인식해서, 그 이상의 파일들을 하위 폴더인 HDD에 복사 시도하더라도

용량 부족하다고 나오기 때문에 120기가인 sda2 를 media에 먼저 마운트하고 이후

서비스 실행. 상태 확인용 오렌지 LED 깜빡이기.

# 깜빡이는거 보면 서비스는 동작하는거 같은데, 이전에도 잘 썼었고..

devmon 이나 nginx 가 잘 실행안되는것 같음.



journald 로그 조금만 쌓이게.

/etc/systemd/journald.conf

Storage=volatile
SystemMaxUse=1M

# 램에 1M 정도 로그 저장

systemctl restart systemd-journald

# 재시작


다 한다음에 다른 곳에 백업

dd if=/dev/sda1 of=/media/backup.img

또는 그냥 / 전체 압축..


복원할때에는

dd of=/media/backup.img if=/dev/sda1



이후 가끔 /var/log 가서 로그 많이 쌓이는 프로그램에 대해서

log 생성되지 않도록만 설정하고 백업시켜 놓으면 될 것 같다.

fail2ban 은 나중에 해봐야할듯하고


+ Recent posts