반응형
이 포스팅은 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

 

 

[해외] 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

 

반응형

+ Recent posts