반응형

 

 

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

 

NAS의 속도및 쾌적한 사용을 위해 2Bay NAS중에 하나는 SSD, 하나는 HDD를 사용하고 있습니다. 2Bay이기에 Raid로 묶지않고 독립적인 볼륨으로 각각 사용중에 있습니다. 이렇게 독립 볼륨임에도 불구하고 SSD를 접근하게되면 HDD도 Wake-up하여 동작하게 되어 HDD Sleep 모드에 진입하지 않는 현상을 보였습니다. 그래서 이를 해결하기 위한 방법을 찾아보다 큐냅 포럼에서 다음과 같은 방법을 찾아서 적용해보니 현재 상태(펌웨어 5.0.0.1870)에서 문제없이 동작하고 있어서 관련 설정 공유하기 위해 포스팅합니다.

조건

저는 2Bay이기에 두개다 독립볼륨인 상태이지만, 4Bay 이상에서는 SSD만 독립볼륨, HDD는 Raid등으로 묶여있어도 활용 가능합니다.

*** 데이터 손실의 위험이 있으니 반드시 백업후 진행하시기 바랍니다 ***
저의 경우는 문제가 없었으나 혹시 다른 문제를 발생시킬 수 있습니다.
  • 독립 볼륨의 SSD(시스템 디스크) - 어플리케이션 및 시스템 모두 SSD상에 위치
  • Raid 혹은 다른 볼륨으로 구성되어있는 HDD

현재 드라이브 확인

현재 SSD와 HDD가 어떤 파티션에 할당되어있는지 확인이 필요합니다.

SSH로 QNAP Nas에 접근하여 다음과 같은 명령어를 입력해 줍니다.

parted -l

현재 NAS에 사용중인 SSD및 HDD정보와 디스크 정보가 기록되어있습니다.

저의 경우에는 다음과 같이 할당되어있는것을 알수 있습니다

  • /dev/sdb : SSD 1TB
  • /dev/sda: HDD 4TB

Internal Raid1 Disconnect

SSD및 HDD가 동시에 Wake-Up이 되는 이유중 하나는 내부의 파티션들이 Raid1으로 구성되어 있기 때문입니다. 그래서 위 포럼의 아이디어는 평소에는 Raid1구성연결을 끊어두고 있다가, 하루에 1번씩 스케쥴링하여 복구시켜주고 다시 끊어주고를 반복하는 형태로 진행됩니다.

Internal Raid 1 볼륨 리스트

  • /dev/md9
  • /dev/md13

두 볼륨의 구성을 확인하려면 mdadm을 통해 확인가능합니다

mdadm -D /dev/md9 
mdadm -D /dev/md13

위의 명령어를 통해 확인해보면 다음과 같이 SSD, HDD의 1번파티션들이 묶여있는 것을 알 수 니다.

다음 과 같은 스크립트를 통해 md9, md13에 연결되어있는 HDD의 Parition을 제거하여 줍니다.

disconnect_internal_raid.sh

#!/bin/bash 
echo "Disconnect md9" 
mdadm /dev/md9 --fail /dev/sda1 
echo "Disconnect md13" 
mdadm /dev/md13 --fail /dev/sda4

 

이제 HDD만 독립적으로 Sleep에 들어갈 수 있도록 파티션을 수정하였습니다. 다음과 같은 명령어를 통해 현재 HDD상태를 확인할 수있습니다. hddparm -C /dev/sda

 

주기적으로 Raid1의 복구를 위해 다음과 같이 다시 연결해주는 스크립트를 추가적으로 작성합니다.

rebuild_internal_raid.sh

#!/bin/bash 
echo "Re-adding md9" 
mdadm /dev/md9 --re-add /dev/sda1 
echo "Re-adding md13" 
mdadm /dev/md13 --re-add /dev/sda4

 

위의 스크립트를 통해 Disconnect된 Internal_raid1의 정보를 복구할 수있습니다. 이제 Crontab에 위에서 작성한 스크립트가 정기적으로 수행될 수있도록 추가해 줍니다

vim /etc/config/crontab

저는 4시에 Rebuild 4시 15분에 Disconnect되도록 스케쥴 하였습니다.

 

SWAP Partition 변경

HDD 상에 존재하는 Swap Partion을 SSD에만 위치하게 함으로써 시스템 접근시 HDD사용이 안되도록 하는 방법이라고 생각하시면 됩니다.

cat /proc/swaps 명령어를 통해 현재의 SWAP영역을 확인할 수있습니다.

다음 명령어를 통해 Home 위치에 512MB SWAP을 생성해 줍니다.

dd if=/dev/zero of=/share/homes/admin/swapfile bs=1024 count=524288

그리고 다음 스크립트를 통해 Swap 파일을 새로 생성한 영역으로 변경하여 줍니다. 그리고 부팅시 실행될 수있도록 autorun.sh상에 반영하여 줍니다.

move_swap_to_file.sh

#!/bin/bash 
echo "Turning SWAP off" 
swapoff -a 
echo "Initializing file swap" 
mkswap /share/homes/admin/swapfile 
swapon /share/homes/admin/swapfile

 

위와같이 세팅을 진행하면, 설정→하드웨어→디스크대기모드 시간 세팅을 진행하면, 해당시간이후 HDD만 Sleep으로 빠지는 것을 확인 할 수 있습니다.

 

반응형

'Software > QNAP TS-251' 카테고리의 다른 글

[QNAP] Rclone VFS Mount  (0) 2021.02.25
[QNAP] autorun.sh 설정 방법  (0) 2021.02.25
[QNAP] Komga 설치  (0) 2021.01.27
[QNAP][HA][EW11] EW11 자동 재부팅(Restart) 스크립트  (0) 2020.11.30
[QANP] 부팅시 Autorun QPKG 생성  (0) 2020.11.30
반응형

Raspberry Pi 에 Torr PHP 를 돌리기 위해서 웹서버 구축을 진행하였습니다. 많은 분들의 친절한 가이드 덕분에 쉽게 설치 및 활용할 수 있었습니다.

설치

다음과 같은 Script를 통nginx해 설치 하시면 됩니다.

#!/bin/bash
sudo apt update
sudo apt install nginx php-fpm php-curl

 

Nginx 설정

nginx 서버 설정을 위해서는 다음 위치에 있는 파일을 수정하시면 됩니다.

/etc/nginx/sites-enabled/default 파일을 통해 우리가 돌리고자 하는 웹서버 설정을 변경할 수있습니다.

저는 이곳에서 다음과 같은 설정을 변경하였습니다.

  1. Listen port: 접속 포트 수정
  1. root: web페이지 root dir 수정
  1. index 수정
  1. php: 수정
  1. ht: 수정
server {
				#수정
        listen 9000 default_server;
        listen [::]:9000 default_server;

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

				#수정
        #root /var/www/html;
        root /home/pi/www;
				
				#수정
        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server
				#수정
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/run/php/php7.3-fpm.sock;
                # With php-cgi (or other tcp sockets):
                #fastcgi_pass 127.0.0.1:9900;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
				#수정
        location ~ /\.ht {
                deny all;
        }
}

 

 

동작 테스트를 위해서 위에서 setting 한 루트폴더를 생성해 줍니다. 웹서버가 파일을 읽어갈 수있는 권한 세팅은 항상 필수 입니다. 기본계정인 www-data 계정이 해당 문서를 읽을 수 있도록 setting 해주시면됩니다.

sudo usermod -a -G www-data pi #Pi계정을 www-data그룹에 추가
mkdir -p /home/pi/www
sudo chown www-data:www-data -R /home/pi/www
sudo chmod -R 755 /home/pi/www

 

/home/pi/www/index.php 파일 생성

<?php phpinfo(); ?>

 

이후 nginx 서버를 restart 해주시면 phpinfo page(http://<ip>:9000)에 접근가능합니다.

sudo systemctl restart nginx

 

 

Torr php 사용

다음 스크립트를 활용하면 설치가 가능합니다. 클리앙에서 해당 스크립트와 환경을 공유해주신 롤케익, 반야지비 님 감사합니다

해당 스크립트의 상세한 사용법은 다음 페이지 참고 바랍니다.

다시 살아 돌아온 torr 입니다. : 클리앙
안녕하세요 예전에 토ㅇㅇ RSS 생성기를 만들어서 torr라는 이름으로 공유한 적이 있었습니다. 토ㅇㅇ 사이트들이 워낙에 자주 폐쇄되다 보니까 언제부턴가 업데이트에 손을 놔버려서 죽은 서비스가 되어버렸죠. 찾아보니까 2017년 6월이 마지막이었었네요. 3년만에 다시 살려보는 거네요 ㅎㅎ 이번에는 저도 쪼금 열심히 써보려고 자동 업데이트 기능을 강화했습니다. 지금 등록된 토ㅇㅇ 사이트가 폐쇄되면 다른 사이트를 찾아 업데이트를 해보려고요.
https://m.clien.net/service/board/cm_nas/15287609
#!/bin/bash
WWW_DIR=$HOME/www
mkdir -p $WWW_DIR/torr
chmod 755 -R $WWW_DIR/torr
pushd $WWW_DIR/torr
    sudo wget https://raw.githubusercontent.com/banyazavi/tsharp/master/defaults/torr.php
    sudo wget https://raw.githubusercontent.com/banyazavi/tsharp/master/defaults/UserConfig.php
popd

sudo chown -R www-data:www-data $WWW_DIR/torr
반응형
반응형

 

 

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

 

HTTP Proxy 서버를 활용함에 있어서 좋은 방법중 하나인 Squid 서버를 Raspberry Pi에 설치하는 방법을 공유드립니다.

설치 및 실행

우선 다음의 스크립트를 통해서 필요한 툴 들을 설치하여 줍니다.

#!/bin/bash
sudo apt update
sudo apt insatll squid3 apache2-utils

 

Squid의 환경설정파일은 /etc/squid/squid.conf 에 위치해 있는데 이파일이 엄청나게 길고 내용이 많습니다. 모든 기능들을 활용하기보다 단순히 허가된 사용자만 프록시에 접속할수 있도록 하는 기능만 사용할예정이여서 기존 conf를 백업하고 다음과 같은 새파일을 만들어 줍니다

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwords
auth_param basic children 2
auth_param basic realm proxy
acl KnowUsers proxy_auth REQUIRED
http_access allow KnowUsers
http_access deny all
http_port 3128

 

계정 생성

다음과 같은 명령어를 통해 계정정보를 생성하여 줍니다

sudo htpasswd -c /etc/squid/passwords <username>
<PW>
<PW>

그리고 생성된 파일의 권한을 설정해줍니다

sudo chmod a+r /etc/squid/passwords

 

이후 squid 서비스를 재시작 해주시면 됩니다.

sudo systemctl restart squid
반응형
반응형
이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

 

QNAP NAS를 거실에두고 SSD로 모두 바꾸었더니 HDD의 소음대신 이상한 고주파음이 들려오는 상황이 되어 QNAP NAS의 기능을 일부를 대신하여 수행해 줄 기기가 필요하여 구석에 잠자고 있던, Raspberry Pi를 새로 세팅해 보았습니다.

QNAP에서 상시로 동작하는 기능들을 위주로 Raspberry Pi로 옮기려고 합니다.

필요사항

  • Raspberry Pi 3 B+ (이후 버전들도 상관없음)
Raspberry pi 라즈베리파이3B+ Raspberry pi3B+ 초소형 싱글보드컴퓨터
COUPANG
https://coupa.ng/bQuu2S

 

Raspberry Pi 설치

  • Raspberry Pi의 Image 설치관련 자세한 포스팅 들은 쉽게 찾을 수 있으실 것 입니다. 간략히 정리하면 다음과 같습니다.
  1. Micro SD(8G이상)카드 준비하고, PC balenaEtcher 프로그램을 설치합니다.
    balenaEtcher - Flash OS images to SD cards & USB drives
    Electron is based on Gtk2, which can't run natively on Wayland. Fortunately, the XWayland Server provides backwards compatibility to run any X client on Wayland, including Etcher. This usually works out of the box on mainstream GNU/Linux distributions that properly support Wayland.
    https://www.balena.io/etcher/
  1. Raspberry pi OS 다운로드 다음 링크에서 각자에 맞는 버전의 OS Image를 다운로드 합니다. 저는 모니터 및 그래픽 기능을 쓸 예정이 없어서 Lite버전을 설치하였습니다.
    Operating system images - Raspberry Pi
    Many operating systems are available for Raspberry Pi, including Raspberry Pi OS, our official supported operating system, and operating systems from other organisations. Raspberry Pi Imager is the quick and easy way to install an operating system to a microSD card ready to use with your Raspberry Pi.
    https://www.raspberrypi.org/software/operating-systems
  2. SD 카드를 마운트하고 앞에설치한 etcher프로그램으로 이미지를 Flash 하면 준비 완료됩니다.
  3. 처음에 모니터연결 없이 무선랜, SSH 접근을 위해서는 Flash된 SD카드 안에 다음과 같은 두가지 파일을 만들어 주시면 됩니다.
    1. ssh - 빈파일
    2. wpa_supplicant.conf
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1
      
      network={
          ssid="«your_SSID»"
          psk="«your_PSK»"
          key_mgmt=WPA-PSK
      }
       
  4. 위와 같이 설정이 마무리 되었다면 SD카드를 설치하고 전원을 넣으면, SSH를 통해 Raspberry pi 접근이 가능합니다
    • ssh pi@<raspberrypi_IP>
      초기 Password: raspberry
      #다음 명령어를 통해 초기 비밀번호 변경 후 사용
      shell>>passwd

Oh-my-zsh, VIM 설치

초기 환경세팅 관련 Script이다. .zshrc .vimrc파일 내부에 Plugin 및 Vundle설정은 개별적으로 맞게 추가하여 사용하시면 됩니다.

#!/bin/bash
#Start
sudo apt install git, curl


#Install ZSH
sudo apt intall zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-autosuggestions $HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/ChesterYue/ohmyzsh-theme-passion.git $HOME/.oh-my-zsh/custom/themes/passion
ln -s $HOME/.oh-my-zsh/custom/themes/passion/passion.zsh-theme $HOME/.oh-my-zsh/custom/themes/.

#Install vim
sudo apt install vi
#개인에 맞게 수정필요
echo "source $HOME/__MY_ENV__/vim/_vimrc" > ~/.vimrc
#-------End---------
mkdir -p $HOME/.vim/backup
mkdir -p $HOME/.vim/bundle
git clone https://github.com/VundleVim/Vundle.vim.git $HOME/.vim/bundle/Vundle.vim
vim +PluginInstall +qall

 

Rclone Mount

이전에 Rclone를 사용하던 configuration을 그대로 사용하도록 하였습니다. 초기 설치 및 마운트는 다른 블로그들 참고 바랍니다. Raspberry pi에 Rclone Mount를 위해서는 두가지 스크립트가 필요합니다. 우선 특정 폴더에 다음 파일들을 생성해 줍니다. rclone config파일은 /home/pi/rclone/rclone.conf 파일로 저장해 두었습니다. 해당부분 변경하시면 됩니다.

 

plexdrive@.service

[Unit]
Description=Rclone Mount Service %i
Documentation=man:rclone(1)
After=network.target

[Service]
Type=simple
ExecStartPre=/bin/mkdir -p %h/gdrive
ExecStart= \
    rclone --config /home/pi/rclone/rclone.conf \
    mount gdrive: /home/pi/gdrive \
    --allow-non-empty \
    --drive-skip-gdocs \
    --log-level ERROR \
    --log-file=/home/pi/rclone/rclone.log \
    --umask 000
ExecStop= \
  fusermount -u %h/gdrive


[Install]
WantedBy=default.target

 

install.sh

#!/bin/bash
sudo cp ./rclone@.service /etc/systemd/system/rclone.service
sudo systemctl disable rclone
sudo systemctl enable rclone
sudo systemctl start rclone

 

이후 install.sh 파일을 실행하면 rclone mount 서비스 등록이 완료되어 ~/gdrive위치에 마운트 되어 부팅시에도 바로 마운트되는 서비스 스크립트가 수행됩니다.

 

Docker 설치

다음 Script 를 수행하면 됩니다.

#!/bin/bash
sudo apt update
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker pi
sudo apt-get install -y python3 python3-pip
sudo apt-get install docker-compose
sudo reboot #재부팅 필수

Portainer 설치

다음 스크립트를 통해 설치 가능합니다

#!/bin/bash
docker run -d --name portainer \
    --restart always -p 9000:9000 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer

이후 http://ip:9000 IP로 접근후 Local 연결을 통해서 메뉴를 사용 가능합니다.

Hass(Home Assistant) 설치

다음과 같은 install.sh 스크립트를 만들고 sudo명령어로 실행 시킵니다.

#!/bin/bash
docker run --init -d \
  --name homeassistant \
  --restart=unless-stopped \
  -v /etc/localtime:/etc/localtime:ro \
  -v /home/pi/HA/config:/config \
  --network=host \
  homeassistant/raspberrypi3-homeassistant:stable

이후 http://ip:8123 도메인을 통해서 접근 가능합니다.

 

Mosquitto 설치

다음 스크립트를 통해 설치 가능합니다.

#!/bin/bash
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key

pushd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list

sudo apt-get update
sudo apt-cache search mosquitto
sudo apt-get install mosquitto
popd

실행 상태확인은 다음과 같이 가능합니다.

sudo /etc/init.d/moquitto status

DuckDNS 연결

duckdns를 연결 업데이트 해주는 Script는 Duckdns사이트에서 자세한 설명과 함께 제공하고있다.

라즈베리안의 경우 다음 사이트에서 로그인후 도메인을 선택하면 자세한 사항을 확인할 수 있다.

Duck DNS
if your linux install is running a crontab, then you can use a cron job to keep updated we can see this with ps -ef | grep cr[o]n if this returns nothing - then go and read up how to install cron for your distribution of linux.
https://www.duckdns.org/install.jsp?tab=pi

Nginx Proxy Manager 설치

Nginx Proxy Manager는 내부 Port나 연결들을 Subdomain으로 연결하여 활용할 수 있는 기능을 제공한다. Nginx폴더를 만들고 해당 폴더에 docker-compose.yml 파일을 다음과 같이 생성해 줍니다.

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    ports:
      # Public HTTP Port:
      - '80:80'
      # Public HTTPS Port:
      - '443:443'
      # Admin Web Port:
      - '81:81'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db
  db:
    image: 'jc21/mariadb-aria:latest'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql

그후 docker-compose up -d 명령어를 통하여 설치를 해줍니다. 이후 reboot을 해주면 해당 서버 사용이 가능합니다.

접근은 http://<ip> 로 접근시 Nginx Proxy Manager설치 환영 페이지를 확인할수 있고, http://<ip>:81으로 관리자 페이지 접근이 가능합니다.

초기 id와 비밀번호는 다음과 같습니다.

  • ID: admin@example.com
  • PW: changeme

상세설정 및 관련은 다음페이지를 참고하셔도 됩니다.

[QNAP][HA] nginx-proxy-manager 설치 (DuckDNS)
이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link Container Station에서 Docker형태로 Nginx Proxy Manager를 설치하는 방법입니다. 별도 DB설치가 필요없는 다음 이미지를 이용하여 설치할 예정입니다. 우선 8080, 8181, 4443 포트가 QNAP에서 사용중이면 안됩니다. 저는 Web서비스랑 포트가 겹쳐서 서비스 포트를 변경하였습니다.
https://proactive.tistory.com/m/94

 

Zigbee2mqtt 설치

다음 스크립트를 통해 도커 설치 진행해 주시면 됩니다. 관련하여 다음 포스팅도 참고하시기 바랍니다.

[QNAP][IoT] zigbee2mqtt 설치
이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link 이번에 광군절에 구매한 Tuya zigbee motor와 QNAP에서 구동중인 HA와 연동하기위해선, Zigbee2mqtt 설치가 필요합니다. zigbee용 usb는 역시 마찬가지로 aliexpress에서 cc2531을 구매하였습니다. cc2531의 flashing은 간단하게 다음 링크의 가이드를 따라하시면 진행 할 수있습니다.
https://proactive.tistory.com/95
#!/bin/bash
docker run \
 -d --name zigbee2mqtt \
 -v /home/pi/HA/zigbee2mqtt/data:/app/data \
 --device=/dev/ttyACM0 \
 --privileged=true \
 --network host \
 koenkk/zigbee2mqtt:latest

 

 

반응형

'Software > Raspberry Pi' 카테고리의 다른 글

[RaspberryPi] Nginx + PHP 웹서버 설치  (0) 2021.04.08
[RaspberryPI] Squid Proxy Server 설치  (0) 2021.04.02
반응형

 

 

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

 

클리앙 아이고성 님의 글을 따라 QNAP에 VFS Rclone Mount 설정을 정리 업로드 합니다.

[수정]rclone vfs 마운트가 더 좋아졌네요. : 클리앙
(수정 내용) vfs-cache-mode full에서도 --vfs-read-chunk-size옵션과 --vfs-read-chunk-size-limit옵션이 유의미하다고 합니다 공식문서를 읽어보실 분들은 여기로. https://rclone.org/commands/rclone_mount/#vfs-virtual-file-system rclone 버전 1.53.0 이상에서 vfs cache 부분에 개선이 이뤄졌고, 실제 성능도 더 좋아졌다고 하네요. 저는 마운트 옵션을 바꾼 뒤, 이전보다 영상파일 로딩시간이 많이 줄어들었습니다. 아래는 해당 옵션 적용방법입니다. 먼저 rclone 버전을 1.53.0 이상으로 업데이트 해주시고, (현재 최신 버전은 1.53.1) 캐시 폴더로 사용할 공간을 20~30기가 이상 확보해주세요.
https://www.clien.net/service/board/cm_nas/15415864?po=0&sk=title&sv=vfs&groupCd=&pt=0

필요사항

  • Rclone ( Qnap Club )

 

설치 및 실행

원하는 위치에 다음과 같은 Script를 작성합니다. Rclone의 실행파일을 절대경로로 넣은 이유는, Autorun script수행시 일부 Path가 접근되지 않는 경우가있어서 입니다.

 

CONFIG

다음 명령어를 통해서 Rclone의 연결 설정을 추가해 줍니다. 해당 연결에는 Google Drive, Onedrive등 본인이 연결하고자하는 Drive와 맞는 설정을 추가 진행하면 됩니다. Rclone의 기본 CONFIG 파일이 /root 폴더아래 존재하면 재부팅시마다 초기화가 되기때문에 /share/my/Rclone 폴더를 별도로 생성하여 해당위치에 저장하도록 하였습니다.

#!/bin/bash 
/share/CACHEDEV1_DATA/.qpkg/RClone/rclone --config /share/my/Rclone/rclone.conf config

Mount

위에서 설정한 Drive(아래에서는 gdrive) 를 이제 Mount원하는 위치(/share/CACHEDEV1_DATA/gdrive )에 Mount 하기위한 옵션과 Configuration입니다. 옵션들의 상세 설명은 다음의 링크에서 확인하실 수 있습니다.

간략히 볼 중요 옵션은 다음 정도라고 생각합니다.

  • —cache-dir: Cache 파일의 위치
  • —vfs-cache-max-size: Cache 파일의 사이즈 ( 풀링타임마다 모니터링 하기에 이보다 더 커질 수 있음 )
Documentation
First, you'll need to configure rclone. As the object storage systems have quite complicated authentication these are kept in a config file. (See the --config entry for how to find the config file and choose its location.)
https://rclone.org/docs/
rclone mount
Mount the remote as file system on a mountpoint. rclone mount allows Linux, FreeBSD, macOS and Windows to mount any of Rclone's cloud storage systems as a file system with FUSE. First set up your remote using rclone config. Check it works with rclone ls etc.
https://rclone.org/commands/rclone_mount/

 

#!/bin/bash 
/share/CACHEDEV1_DATA/.qpkg/RClone/rclone --config /share/my/Rclone/rclone.conf \
mount gdrive: /share/CACHEDEV1_DATA/gdrive \
--daemon \
--allow-other \
--allow-non-empty \
--fast-list \
--drive-skip-gdocs \
--poll-interval=15s \
--vfs-cache-mode full \
--vfs-write-back 5s \
--bwlimit-file 16M \
--buffer-size=16M \
--vfs-read-chunk-size=32M \
--vfs-read-chunk-size-limit 2048M \
--vfs-cache-max-size 150G \
--vfs-cache-max-age 336h \
--vfs-read-ahead 32M \
--dir-cache-time=1000h \
--cache-dir=/share/CACHEDEV2_DATA/gcache \
--timeout 1h \
--log-level ERROR \
--log-file=/share/log/rclone.log \
--umask 000

 

부팅시 자동 실행

앞서 포스팅한 autorun.sh(https://proactive.tistory.com/100) 가 적용되어있다면, 다음의 스크립트를 autorun/script 폴더에 넣어주시면 됩니다.

012-vfs_mount.sh

#!/bin/bash 
export LANG=en_US.UTF-8 
pushd /share/my/Rclone 
./rclone_vfs_mount.sh 
popd

 

반응형
반응형

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

이전에 autorun qpkg를 생성하여 부팅시 실행시켜주는 방법을 포스팅(https://proactive.tistory.com/97) 했었는데, QNAP에는 부팅시 스크립트를 실행해주는 autorun.sh 파일이 존재합니다. 다른 QPKG들과의 의존성 때문에 별도의 autorun package를 만들어 수행하는편을 선호하지만, 기본 형태의 autorun.sh을 편집 수행에 도움을 주는 Script를 찾아 관련내용 포스팅 합니다.

필요사항

  • GIT ( Qnap Club )

설치 및 실행

매우 간단합니다. 다음 Github 링크에 존재하는 Script를 Clone하여, 실행해 주시면 됩니다.

OneCDOnly/create-autorun
This is a run-once BASH script to create an autorun environment on your QNAP NAS. This can be used to automatically execute your own scripts when the NAS boots-up. This installer script writes an autorun.sh processor into your default volume, below the .system directory.
https://github.com/OneCDOnly/create-autorun
git clone https://github.com/OneCDOnly/create-autorun.git cd create-autorun ./create-autorun.sh

실행 및 사용방법

위의 스크립트를 수행하면, autorun.sh에 새로운 코드가 추가가 됩니다. 그리고 설정→전원에 가서 시작하는 동안 사용자가 지정한 프로세스 실행을 키고 저장을 해 줍니다.

그리고 다음의 생성된 경로에 실행하고자 하는 shell script를 넣어주면 부팅시 순차적으로 수행이 됩니다. /share/CACHEDEV1_DATA/.system/autorun/scripts

010-script.sh 011-script2.sh

반응형
반응형

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

만화책을 라이브러리 스트리밍형식으로 보기위한 방법으로 여러 방법들이있지만 그중 Komga 서버가 QNAP에서 QPKG형태로 설치 지원을하여 써보기로 하고 관련 설치 및 설정사항을 정리해 보고자 본 포스팅을 작성합닌다.

필요사항

  • Komga ( Qnap Club )

설치 및 실행

QJDK8 이상의 버전이 Install 되어있어야 Komga가 설치가능합니다. 순서를 지켜 설치 부탁드립니다. Kmoga도 qpkg형태의 설치를 지원하기 때문에 간단히 설치가 가능합니다. 설치 완료이후 다음 주소로 접근하면 Komga서버의 관리페이지에 접근가능합니다. http://<QNAP 내부IP>:10102/

그리고 E-mail과 Password로 User등록을 수행하면 됩니다. 그럼 다음과 같은 welcome page를 만날수 있습니다.

QPKG스크립트를 보면 단순히 JAR를 수행시켜주는 역할만 들어있습니다 최신 Release버전을 업데이트 하고싶은데 QPKG업이 느릴경우 .qpkg/komga/komga.jar 파일을 최신화 하고 서버 재시작 하면 됩니다.

외부접근을 위해서는 공유기에서 10102포트의 포트포워딩 설정이 필요합니다 포트 변경을하고싶으면 .qpkg/komga/komga.sh 내의 포트번호를 변경해야합니다.

서버 설정 에서는 Library와 User추가가 가능합니다. Libraries 옆에 + 버튼을 누르고 NAS내부의 라이브러리 경로를 추가하여 줍니다.

라이브러리 파일 내의 이미지들이 스캔이 완료되면 이제 접근 및 스트리밍이 가능합니다. 스캔에는 약간 시간이소요되므로 스캔완료후에 Read가능합니다

Plex와 같은 라이브러리 들이 다음과 같이 나타나고 각 시리즈들을 누르면 웹리딩 모드로 접근 가능하여 읽을 수 있습니다. Reader모드에는 설정상에서, 읽기방향등이 설정 가능하니 라이브러리에 맞게 잘 세팅하여 사용하시면 될 것 같습니다.

안드로이드 리더

안드로이드에서 서버 접근을위해서는 다음의 APK를 설정합니다

Tachiyomi
Free and open source manga reader for Android Cloud Download icon Download Book Open Variant icon User Guide Automatically keep track of your manga with MyAnimeList, AniList, Kitsu, Shikimori, and Bangumi Online and offline reading from sources like MangaDex, MangaKakalot, and hundreds more A configurable reader with multiple reading modes, custom color filters, and other settings
https://tachiyomi.org/

확장기능에서 Komga를 찾아 설치 후 서버 주소와 아이디 비밀번호를 설정해 줍니다. 설정이후 앱을 재부팅 해야 제대로 접근이 가능합니다.

반응형
반응형

 

 

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

 

 

[해외] HF 최소형 ELFINEW11ELFINEW110 무선 네트워킹 장치 MODBUS TPC IP 기능 RJ45 RS485WIFI 직렬 서버, EW11-0 Single Server, Other

월패드에 EW11을 넣어두었는데 동작의 안정화를 위해 가끔 Restart를 하고싶을 때가 있다. 그래서 Telnet을 통한 주기적으로 Restart해줄 수 있는 Script를 작성하여 활용해본다.

필요사항

  • QPython3 ( Qnap Club )
  • EW11

 

EW11 설정

우선 EW11이 Telenet으로 접근가능하도록 System Setting에서 Telnet을 On하고 Port를 세팅해준다(현재 2323)

실행

그리고 다음과 같은 Script를 작성하여 Telnet상에서 Restart Command를 전송할 수 있도록 Setting 하여 준다. 아래 스크립트상에서 host, port, id, pw모두 본인이 ew11접근을 위해 사용하는 정보로 변경하면된다. 이렇게 작성한 스크립트는 crontab등에 스케줄로 추가하여 주기적으로 초기화가 이루어질 수 있도록 하면 됩니다.

#!/usr/bin/env python3 
from telnetlib import Telnet 
host = "192.168.1.153" 
port = 2323 
id = '<id>' 
wd = '<pw>' 
with Telnet(host, port) as tn: 
  tn.read_until(b"login:") 
  tn.write(id.encode('ascii') + b"\n") 
  if wd: 
    tn.read_until(b"password:") 
    tn.write(wd.encode('ascii') + b"\n") 
  tn.write(b"Restart\n")
  tn.read_until(b"Restart..")

 

[해외] HF 최소형 ELFINEW11ELFINEW110 무선 네트워킹 장치 MODBUS TPC IP 기능 RJ45 RS485WIFI 직렬 서버, EW11-0 Single Server, Other

 

반응형
반응형

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

"재부팅이 되고 특정 프로세스가 자동으로 시작되면 좋겠다" 라는 생각을 기본적으로 많이들 하실거라고 생각합니다. QNAP에서도 autorun.sh를 기본적으로 사용할 수 있지만, 일부 명령어들은 QPKG실행 디펜던시 때문인지는 몰라도 실행이... 안되는 현상을 보이고있었습니다. 그래서 사용가능한 또다른 방법으로 Autorun QPKG를 만들어 APP중의 하나로 제일 마지막에 실행 하도록 하는 방법입니다.

필요사항

  • SSH

설정방법

기본적으로 ssh를 통한 접근을 다 하신다는 가정하에 다음과 같은 스크립트를 특정 폴더에 넣어 줍니다.여기서 실행/멈추고 싶은 명령어들을 변경하여 기입해 주시면됩니다.

#!/bin/sh
CONF=/etc/config/qpkg.conf
QPKG_NAME="MyAutorun"

case "$1" in
  start)
        ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
        if [ "$ENABLED" != "TRUE" ]; then
                /bin/echo "$QPKG_NAME is disabled."
                exit 1
        fi
	# 실행하고자 하는 명령어 
        cd /share/my/HA/sds_wallpad/sds_wallpad
        ./run_standalone.sh &

        ;;

  stop)
	# 실행하였던 명령어
        PID=`ps -eaf | grep run_standalone.sh | grep -v grep | awk '{print $1}'`
        if [[ "" !=  "$PID" ]]; then
           echo "killing $PID"
           kill -9 $PID
        fi
        PID=`ps -eaf | grep sds_wallpad.py | grep -v grep | awk '{print $1}'`
        if [[ "" !=  "$PID" ]]; then
           echo "killing $PID"
           kill -9 $PID
        fi
        ;;

  restart)
        $0 stop
        $0 start
        ;;

  *)
        /bin/echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

exit 0

이렇게 생성된 스크립트에는 실행 권한을 주시고

chmod +x myautorun.sh

"/etc/config/qpkg.conf" 파일의 제일 마지막 줄에 다음과 같은 구문을 추가해 주시면됩니다. 여기서 젤 중요한 부분은 Shell 부분에 위에서 작성한 스크립트 경로를 넣어주시면 됩니다.

/etc/config/qpkg.conf 젤 마지막에 다음 추가

[MyAutorun]
Status = complete
Name = MyAutorun
Version = 1.0.0
Author = moggging
QPKG_File = None
Date = 2020-11-26
Shell = /share/my/myautorun/myautorun.sh
Install_Path = /share/my/myautorun
RC_Number = 101
WebUI = null
Display_Name = MyAutorun
Enable = TRUE

위와같이 수정후 재부팅 진행하면 다음과 같이 App center에서 MyAutorun QPKG가 생성되어 실행 및 정지 가능합니다. 맨뒤에 두었으므로 부팅 순서도 젤 뒤가되어 디펜던시 문제도 없을 것이라 생각됩니다.

반응형
반응형

 

 

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

 

광군절 구매 아이템중의 하나인 TUYA Zigbee 모터입니다. 다음 링크 제품을 구매하여 사용하였습니다.

US $42.89 34% OFF|Tuya 스마트 지그비 전기 커튼 모터 자동 전동 커튼 상태 트랙 타이밍 APP 원격 제어 Alexa Google 홈|홈 자동화 모듈| - AliExpress
Tuya 스마트 지그비 전기 커튼 모터 자동 전동 커튼 상태 트랙 타이밍 APP 원격 제어 Alexa Google 홈,중국을 포함한 전 세계의 판매자들에게서 구매하세요. 무료 배송, 한정 세일 타임, 간편한 반품과 구매자 보호 기능을 누리세요! ✓ 전세계 무료 배송! ✓ 제한된 시간 세일 ✓ 진정한 귀환
https://ko.aliexpress.com/item/4000739390813.html?spm=a2g0s.9042311.0.0.3fb04c4dHilOgz

 

거실과 안방 암막커튼용으로 2개의 모터를 구매하였고, 레일은 마마바에서 가변 전동커튼 레일을 주문하였습니다.

 
https://smartstore.naver.com/mamaba01/products/5152098821

 

 

필요사항

  • 레일 + 모터

설치 및 실행

zigbee2mqtt설정

zigbee2mqtt의 data폴더에 가면 configuration.yaml이 있는데 다음과 같이 설정하시면 됩니다.

configuration에 대한 상세설명은 공식페이지(https://www.zigbee2mqtt.io/information/configuration.html) 참고바랍니다.

 

  • homeassistant: HA에서 MQTT discovery에 발견되게 할것인지를 설정합니다
  • permit_join: 새로운 기기 등록이 가능하게 할건지 확인합니다. (커튼 등록 이후에는 false로 변경)
  • mqtt: server: mosquitto 서버의 접속 방법에 대한 IP (ID/PW)등을 설정하면 됩니다.
  • serial: cc2531이 설치된 포트로 설정하고 disable_led는 LED를 끄기위해 활용합니다
  • devices: devices.yaml 별도로 devices.yaml파일로 관리하기 위하여 위와같이 추가했습니다.
  • advanced: channel: zigbee통신의 채널 설정이가능합니다. wifi와 겹치지 않게 세팅하였습니다.
# Home Assistant integration (MQTT discovery)
homeassistant: true

# allow new devices to join
permit_join: true

# MQTT settings
mqtt:
  # MQTT base topic for zigbee2mqtt MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://localhost'
  # MQTT server authentication, uncomment if required:
  # user: my_user
  # password: my_password

# Serial settings
serial:
  # Location of CC2531 USB sniffer
  port: /dev/ttyACM0
  disable_led: true

devices: devices.yaml
gropus: groups.yaml

advanced:
  channel: 20

zigbee2mqtt에 TS0601 추가

구매한 모터의 경우 뒤에 리셋버튼을 통해 연결을 제어가능하고 다음과 같이 동작합니다.

  • 3번 연달아 누른후 꾹~ (LED 깜빡일때 까지) 누르면 - 네트워크 초기화 를 진행하고
  • 4번을 누르면 Zigbee pairing을 시도합니다.

 

 

 

--Updated 2021.03.30---
제가 갖고 있는 모델 기준으로는 최신 버전에서 자동으로 curtain기기로 등록이되어, 아래의 추가 Set-up을 진행할 필요가 없어졌습니다. 혹시 안되시는 분들을 위해 기존 포스팅은 남겨 두겠습니다
-----------------------------

 

 

 

zigbee2mqtt가 동작중인 상태에서 버튼을 4번 누르면 paring이 진행되고 device에 추가가 되긴 하였습니다. 하지만 Zigbee model이 TS0601로 잡히고 지원하지 않는 모델이라는 메세지가 발생했습니다. ( Unsupported )

info  2020-11-19 13:54:15: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":{"friendly_name":"0x5c0272fffec3d107"},"type":"device_connected"}'
info  2020-11-19 13:54:15: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"interview_started","meta":{"friendly_name":"0x5c0272fffec3d107"},"type":"pairing"}'
info  2020-11-19 13:54:15: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"announce","meta":{"friendly_name":"0x5c0272fffec3d107"},"type":"device_announced"}'
info  2020-11-19 13:54:16: Successfully interviewed '0x5c0272fffec3d107', device has successfully been paired
warn  2020-11-19 13:54:16: Device '0x5c0272fffec3d107' with Zigbee model 'TS0601' is NOT supported, please follow https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html
info  2020-11-19 13:54:16: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"interview_successful","meta":{"friendly_name":"0x5c0272fffec3d107","supported":false},"type":"pairing"}'
warn  2020-11-19 13:54:20: Received message from unsupported device with Zigbee model 'TS0601'
warn  2020-11-19 13:54:20: Please see: https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html.
warn  2020-11-19 13:54:25: Received message from unsupported device with Zigbee model 'TS0601'
warn  2020-11-19 13:54:25: Please see: https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html.
info  2020-11-19 13:54:30: MQTT publish: topic 'zigbee2mqtt/bridge/state', payload 'offline'
info  2020-11-19 13:54:30: Disconnecting from MQTT server
info  2020-11-19 13:54:30: zigbee-herdsman stopped

 

devices.yaml

앞서 발견된 device들의 이름을 수정하여 추후 설정이 편하도록 해 줍니다. configuration.yaml과 같은 폴더 내에 위치한 다음 파일을 열어 friendly_name을 수정해 주시면됩니다.

Devices.js 수정

container-station에서 zigbee2mqtt 도커를 선택하면 단말(console) 클릭후 /bin/sh를 입력하여 docker shell을 실행해 줍니다.

 

 

열린 shell에서 다음 링크에 있는 파일을 열어줍니다.

cd node_modules/zigbee-herdsman-converters/
vi devices.js

 

model: 'TS0601_curtain' 부분을 찾습니다. 현재 기준으로 1700라인 근처에 있습니다.

--------------------------------------------------- Update 20.12.21-----------------------------------------------------------

아래 가이드에서는 zigbeeModel에 TS0601자체를 추가하였지만, 그렇지 않고 fingerprint에 모터의 manufacutrerName을 등록하시면
됩니다.
모터의 manufacutrerName은 zigbee2mqtt 의 data가 저장되어 있는 폴더에서 database.db 파일을 참고하시면 확인 할 수 있습니다.

data/database.db 파일

 

fingerprint추가

 

더보기

 

--------------------------------------------------- Previous ---------------------------------------------------------------------

 

여기에 zigbeeModel에 TS0601을 추가해서 저장해 주시면됩니다.

 

--------------------------------------------------- Previous ---------------------------------------------------------------------


 

이후 zigbee2mqtt를 재시작 해주시면 서비스 등록과 discovery가 되어 HA상의 구성요소에 추가된 것을 확인할 수 있습니다.

 

 

 

커튼 열림 닫힘 상태 바꾸기

상태 확인을 해보니 열림상태일때 → 닫힘 / 닫힘상태일때 → 열림으로 표기되고 있어서 해당 부분 수정을위해 다음과 같은 작업을 수행하였습니다.

통합구성요소 →MQTT →설정에서 다음과같은 페이로드를 날려줍니다.

topic: zigbee2mqtt/curtain/set
{
    "options":{
        "reverse_direction": "true"
    }
}

(이과정은 필요한지 잘 모르겠으나...) 그리고 devices.yaml에 invert_cover: true 를 추가하였습니다.

 

그리고 나니 상태가 변경이되어 제대로 출력되는것을 확인할 수있었습니다.

 

이후 구글홈과 연동하여 60%닫아줘~ 열어줘 ~ 닫아줘 등 모든 명령어가 잘 동작하는것을 확인할 수 있었습니다.

 

반응형

+ Recent posts