반응형

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

+ Recent posts