단점/불편한 점이 많아서 사용하지 않는 중.

기본 스토로지를 사용하되 s3에 백업하는 방식으로 구성이 더 나을 것 같다.


NextCloud 는 기본적으로 시스템의 디렉토리를 사용하지만,

추가로 External Storage Support 기능을 사용해서 FTP, S3 등등 외부 저장소를 마운트하여 사용할 수 있다.

 

처음엔 이렇게 연결하려고 했는데, 뭔가 안되어서 찾다보니, S3자체를 NextCloud의 주 저장소로 사용하는 방법이 있어서 그냥 그걸 사용해보기로 했음.

참고로 지금 하려는 주 저장소가 아니라 외부저장소로써 S3를 사용할 경우

(1) 사용자마다 S3 연결을 직접하지 못하고 관리자가 해줘야함

(2) 저장공간 사용 제약을 할 수 없음

(3) NextCloud의 공유 기능을 사용할 수 없음

요런 3가지 단점이 있다고 한다.

 

참고로 Amazon S3 뿐만 아니라 S3와 비슷한 object storage 류들도 사용이 가능하다고 함.

또한 S3와 연결된다고 해서 S3에서 직접 파일 브라우징을 할 순 없다고 한다. 파일 자체는 있지만 메타데이터가 없어서...

기존 설치된 NextCloud를 옮길 수도 없다. 새로 설치해야 됨.

 

nextcloud/config/config.php 파일 설정에

  'objectstore' => array(
    'class' => '\\OC\\Files\\ObjectStore\\S3',
    'arguments' => array(
      'bucket' => '버킷이름',
      'autocreate' => true,
      'key'    => 'IAM Access Key',
      'secret' => 'IAM Secret',
      'use_ssl' => true,
      'region' => 'AWS 리전, 서울이면 ap-northeast-2'
    ),
  ),

요 부분을 추가해두고 설치를 진행하면 된다.

 

이미 진행된 인스턴스가 있을 경우 nextcloud/data 폴더와 DB 테이블들을 날려버리고, config.php에 installed: true 라인 지우고, 마지막으로 config 폴더에 CAN_INSTALL 파일을 생성하고 접속하면 다시 설정부터 진행할 수 있다.

 

S3를 주 저장소로 할 경우 php의 파일 업로드 제한에 영향을 받지 않는 것 같다. 아마 S3 API 로 바로 업로드 시키는 듯?

 

참고: Configuring Object Storage as Primary Storage - https://docs.nextcloud.com/server/15/admin_manual/configuration_files/primary_storage.html

 

+ File lock 비활성화

NextCloud 는 공유된 파일을 2명 이상의 사용자가 동시에 편집해서 꼬이는 문제를 방지하기 위해 File locking 기능을 사용한다.

DB, 혹은 설정된 mem cache 에 lock 정보를 가지고 있고, 30분마다 cron이 지워주는 방식으로 작동한다는데, S3를 사용할 경우 끄는걸 권장한다는 듯? ( https://autoize.com/s3-compatible-storage-for-nextcloud/ )

 

일단 당장 내가 lock 으로 인한 문제를 발견해서(생성되고 파일을 빠르게 지울경우 뭔가 이상하게 lock 이 걸려서 파일 삭제가 안됨..) 그냥 꺼버렸음.

 

config.php에

  'filelocking.enabled' => false,

를 추가해주면 된다.

Docker로 설치해봤는데, docker 이미지는 web installer 방식이라 초기 설치시간이 오래걸리길래 그냥 네이티브로 깔았다.

참고로 아래 설치법은 일부 선택 옵션들을 포함하니 참고.

Installation on Linux — Nextcloud 여기 잘 설명되어 있으니 그냥 여길 봐도 된다. 좀 귀찮게 해서 그렇지...


1. apache2 + php7.4 설치

Ubuntu 18.04의 기본 php 는 7.0이다. 7.3 이상을 권장하니 7.4를 깔아주자

nginx도 못쓰는건 아닌데,, 왠지 apache2 가 기본값인 것 같아서 그냥 apache2 로 진행하였다.

sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php

sudo apt install apache2 libapache2-mod-php7.4 php7.4 php7.4-bcmath php7.4-bz2 \
    php7.4-curl php7.4-gd php7.4-gmp php7.4-intl php7.4-json php7.4-mbstring \
    php7.4-mysql php7.4-xml php7.4-zip libxml2


NextCloud 에서 imagic 모듈도 설치를 추천한다.

sudo apt install php-imagick


2. NextCloud 설치

php 기반의 프로그램이다. 웹사이트에서 받아서 적절한 위치에 압축을 풀어만 주면 됨.

https://nextcloud.com/install/#instructions-server


3. apache2 설정

/etc/apache2/site-available/cloud.conf (당연히 이름과 각종 경로는 알아서 수정..)

<VirtualHost *:80>
        ServerName 사이트주소

        DocumentRoot /var/www/nextcloud/
        <Directory /var/www/nextcloud/>
                Require all granted
                AllowOverride All
                Options FollowSymLinks MultiViews
        </Directory>

        LogLevel emerg
</VirtualHost>

apache2 에 필요/선택 모듈을 활성화해준다.

a2enmod rewrite headers env dir mime


4. php 설정

php 기본 설정은 업로드 용량이 2MB이므로, 조금 늘려준다.

메모리 제한값도 기본은 128MB이지만 추천은 512MB

sudo vi /etc/php/7.4/apache2/php.ini
memory_limit = 512M
post_max_size = 10G
upload_max_filesize = 10G


5. HTTPS 설정

이건 알아서 해주자.

zigbee IoT 장치들(End Device)를 사용하기 위해선 장치들이 연결되기 위한 Coordinator가 필요하다.

코디네이터를 중심으로 end device 들이 연결되는데, 중간에 네트워크 확장을 위해서 라우터를 추가하기도 함.

코디네이터 혹은 라우터로 사용할 수 있는 CC2531 을 구매 후 펌웨어 변경 작업을 정리해 보았음.


CC2531 펌웨어 플래싱 with RPi

* 참고: 
    * What do I need? | zigbee2mqtt.io - https://www.zigbee2mqtt.io/getting_started/what_do_i_need.html
    * Flashing the firmware on the CC2531 USB stick | zigbee2mqtt.io - https://www.zigbee2mqtt.io/getting_started/flashing_the_cc2531.html
    * Alternative flashing methods | zigbee2mqtt.io - https://www.zigbee2mqtt.io/information/alternative_flashing_methods.html
    * ConBee implementation #72 - https://github.com/jmichault/flash_cc2531/issues/9


우선 CC2531(약 $5) 이랑 다운로더 케이블(약 $2)를 준비한다. 난 AliExpress 에서 주문하였음.

칩안테나(회로에 안테나가 그려져 있는) 버전이 있고 안테나 단자가 달려 있고 안테나를 같이 파는 버전도 있다.

CC2531 을 그냥 쓸 경우 신호가 약하다는 글을 많이 봐서 난 안테나 버전으로 구매하였음.


펌웨어 작업이 이미 되어 있는 CC2531을 팔기도 한다던데 그걸 살 경우 다운로더 케이블과 이 작업이 필요없다.


위에 참고로 건 글 중 Flashing the firmware on the CC2531 USB stick 글을 보면 Windows, Mac, Linux 에서 플래싱을 할 수 있지만, 왠지 pi에서 하는게 더 편할 것 같았다.

pi나 아두이노로 진행하는 방법은 Alternative flashing methods 글을 참고하면 됨.


1. 파이에 WiringPI 설치

sudo apt install wiringpi


2. 파이에서 툴 다운로드

git clone https://github.com/jmichault/flash_cc2531.git


3. 파이와 다운로더 모듈 간에 GPIO핀 연결

연결을 위해선 암-암 점퍼 케이블 4개가 필요함.

다운로더 모듈

 파이

 pin 1 (GND)

 pin 39 (GND)

 pin 7 (reset)

 pin 35 (GPIO24, BCM19)

 pin 3 (DC)

 pin 36 (GPIO27, BCM16)

 pin 4 (DD)

 pin 38 (GPIO28, BCM20)

다운로더 모듈의 핀보드는 모듈에 적혀있으니 그걸 보면 되고, 파이의 핀 위치는 https://pinout.xyz/ 사이트 참고.


4개 핀도 연결하고 전원 공급을 위해 CC2531 을 파이의 USB단자에도 연결해준다.


4. 플래싱

1) 먼저 잘 연결이 되었는지 확인해본다.

cd flash_cc2531
./cc_chipid -m 90
  ID = b524.

ID가 0000, ffff 등이 나온다면 뭔가 오류가 있음.

원래 -m 90 을 붙여주지 않아도 되는데, 나의 경우 계속 붙여줘야 정상적으로 진행이 가능했다.


2) 펌웨어 파일 다운로드

코디네이터 버전 - https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_Home_1.2/bin/default

라우터 버전 - https://github.com/Koenkk/Z-Stack-firmware/tree/master/router/CC2531/bin

# 코디네이터
wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_20190608.zip
unzip CC2531_DEFAULT_20190608.zip

# 라우터
wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/router/CC2531/bin/CC2531_router_2020_09_29.zip
unzip CC2531_router_2020_09_29.zip


라우터 버전은 펌웨어가 3개가 나온다.

- router-cc2531-std.hex: 라우터 기능만 작동
- router-cc2531-diag.hex: 라우터 + 진단 정보
- router-cc2531-diag-usb.hex: 라우터 + 진당전보 + USB 시리얼포트로 인식 (진단정보를 USB로 읽기 가능)

진단정보가 뭘 말하는건지 모르겠어서 난 그냥 -std 버전을 사용하였음.


3) 펌웨어 플래싱

./cc_erase -m 90
./cc_write -m 90 CC2531ZNP-Prod.hex (혹은 해당하는 펌웨어명)


보통 HA에서 Zigbee 를 사용하기 위해 CC2531 칩 + zigbee2mqtt 를 많이 사용하지만,
ConBee II 라는 애가 "Very powerful"⁽¹⁾ 라고 소개되어 있어서가 있어서 구매해보았다.

아마존에서 $47에 구매, 57,304원이 빠져나갔다. CC2531 한개가 약 $5 인걸 고려하면 무시무시한 금액...ㅠㅠ


zigbee2mqtt 와 아직 호환이 완벽하지 않다고 적혀있어서⁽²⁾ deCONZ 란걸 사용해보았음

(1) Supported adapters | zigbee2mqtt.io - https://www.zigbee2mqtt.io/information/supported_adapters.html
(2) ConBee implementation - #72 https://github.com/Koenkk/zigbee-herdsman/issues/72


deCONZ 설정

# USB 제어를 하기 위해 현재 사용자를 dialout 그룹에 추가
# RPi 에서 pi 계정의 경우 이미 추가가 되어 있음.
sudo usermod -a -G dialout $USER

# 이미지 받아오기
docker pull marthoc/deconz

docker run -d \
    --name=deconz \
    --net=host \
    --restart=always \
    -v /home/pi/ha/deconz:/root/.local/share/dresden-elektronik/deCONZ \
    --device=/dev/ttyACM0 \
    -v /etc/localtime:/etc/localtime:ro \
    -e DECONZ_WEB_PORT=2000 \
    -e DECONZ_WS_PORT=2001 \
    marthoc/deconz


설정 파일 위치는 지정하기 나름. 이전 글에 이어서 /home/pi/ha/deconz으로 지정하였음.

--device=/dev/ttyACM0 부분은,, zigbee 모듈을 연결하고 해당 USB 항목을 넘겨주는건데 알아서 하자.

포트는 기본이 80, 443 인데 마음에 안들어서 각 2000, 2001 로 바꾸었다.

이제 http://RPi주소:2000로 접속 가능.


HA 웹페이지 통합 구성요소로 가면 deCONZ가 나타나고 클릭해서 연결하면 된다.

deCONZ 웹에서도 그룹을 만들거나, 제어를 하는게 가능하지만 어차피 HA로 제어를 할테니 zigbee 장비 연결만하고 돌아오면 됨.

그룹을 만들 경우 HA에도 나타나서 거슬린다.


문제점

 localhost 주소가 아닌 경우 pi의 IP가 바뀌면 HA와 deCONZ가 서로 통신을 못하는 어처구니 없는 일이 발생한다.

로컬주소로 바꿔봤는데도 이상함.. 그냥 deCONZ 자체가 IP가 바뀌면 이상하게 작동을 한다..ㅡㅡ


그리고 다원 DNS의 Zigbee Smart plug 는 연결은 되지만 제어만 되고 전력 소모량 등의 값은 올라오지 않는다.

Zigbee 전등 스위치는 아예 연결도 안됨...


결국 deCONZ 대신 zigbee2mqtt 를 다시 깔았다.. 이건 따로 글을 쓸 예정.

deCONZ 를 안쓸 경우 만들었던 docker 이미지를 꺼주거나, 지워주자.


# 인스턴스 정지
docker stop deconz

# 컨테이너 삭제
docker rm deconz

# 이미지 삭제
docker rmi marthoc/deconz


Home Assistant(이하 HA)를 설치하는 방법은 다양한 것 같지만, 난 RPi3B+ 에다가 docker 로 설치하였음.


# 도커 설치
sudo curl -fsSL https://get.docker.com/ | sudo sh

# 사용자 계정을 docker 그룹에 추가
sudo usermod -aG docker $USER

# HA 이미지 받아오기
docker pull homeassistant/raspberrypi3-homeassistant:stable

# 실행
docker run --init -d \
    --name="home-assistant" \
    --net=host \
    --restart=always \
    -v /home/pi/ha/config:/config \
    -e "TZ=Asia/Seoul" \
    homeassistant/raspberrypi3-homeassistant:stable


타임존은 어차피 다시 설정하던데 왜 적으라는지 모르겠다.. 혹시 모르니 일단 지정.

설정 파일이 저장될 위치는 그냥 적당히 /home/pi/ha/config 으로 지정했다.


실행이 되면 http://RPi주소:8123 으로 HA 관리 페이지에 접속할 수 있다.

계정 생성시에 처음에 적는 이름이 아니라 두번째 란인 사용자 이름이 ID 임에 주의..


HomeBridge 설정

iOS HomeKit 사용을 위해 HomeBridge를 활성화하려면 설정 파일에 한줄 추가해줘야 한다.

sudo vi /home/pi/ha/config/configuration.yaml

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

homekit:

이 후 HA 서버를 재시작

iOS 홈 앱에서 액세서리 추가 - HA 웹페이지 알림에 뜬 QR 혹은 코드로 등록하면 된다.


* 추가한 후에 HA에 새로운 기기가 추가되거나 삭제해도 홈킷에 제깍제깍 반영이 되지 않는다...

그럴 땐 HA를 재시작 하면 바로 반영 되는 것 같음...


근무지에 라벨프린터가 있었고, 업무상 자주 필요했는데, 생각보다 엄청 유용했다.

나도 하나 샀으면 좋겠다 싶어서 구매를 하게 되었음.


근무지에서 사용하던 모델은 EPSON LW-OK730 모델이다. 아래 사진과 같음

키보드가 달려 있어서 입력 후 바로 출력할 수 있고, 배터리로 작동하지만 콘센트를 연결해서 사용할 수도 있다.

우측 상단 초록색 영역을 통해 프린팅된 라벨의 모서리를 둥글게 깍아줄 수도 있는 제품.


저걸 쓰다가 마음에 들어서 라벨프린터를 구매하려는 것이었기에 가능하면 동일 모델을 구매하려 했으나...

음.. 이건 아닌 것 같다... 얼마나 쓸지 모르는 라벨프린터에 250,000원을 지불할 순 없어...


라벨프린터에는 여러 회사의 제품이 있지만 일단 도박을 하고 싶진 않아서 Epson 제품으로 한정하기로 했다.

Epson 라벨프린터엔 되게 다양한 제품이 있지만, Epson에서 분류하기로 대부분 비즈니스용 제품이고, 가정용 제품도 존재한다.


바로 이렇게 두개. K200 은 디자인에 따라 변형이 다양한 듯?


C410 은 휴대폰이나 PC에 블루투스로 연결하여 인쇄를 하는 방식이고, K200 은 키보드로 입력해서 바로 출력하는 방식이다.

C410 의 경우 인쇄 결과는 앱에서 정보를 보내주기 나름이니까 디자인 폼, 폰트, 세로쓰기 등등이 앱이 지원하기 나름에 따라가고, K200은 기기에서 지원을 해야하는데... 왠만한건 다 지원할거다 아마. 세부적인 기능은 일할거 아니면 필요없음...

그 외에 주요 성능상의 차이를 정리해보았다. LW-OK730은 참고용.

 

 LW-C410

 LW-K200

 LW-OK730

 카트리지 크기

 4~18mm

 4~18mm

 4~24mm

 출력 해상도

96 dots / 180 dpi 

 64 dots / 180 dpi

 128 dots / 180dpi

 출력 속도

최대 9mm/s 

 최대 6mm/s

최대 15mm/s 

 연속 인쇄 기능

 O

 X

 O

 자동 컷팅

 O

 X

 O

 전원 어댑터 연결

 X

X

O

카트리지 크기는 라벨의 세로폭을 말한다. 6~24까지 다써봤는데, 18,24는 정말 쓸일 없는 것 같다.

일상에서는 9mm / 12mm 면 충분한 느낌?


연속 인쇄는 같은 내용을 이어서 자동으로 인쇄를 할 수 있는 기능을 의미하는 것 같다. 쉽게 말해 N매 인쇄 기능.

자동컷팅은 인쇄가 끝나고 자동으로 잘라주는 기능이다.

LW-K200의 경우는 우측에 있는 버튼을 눌러줌으로써 칼날을 작동시켜 직접 잘라야 하는 듯?


검색을 해보니 키보드 있는 모델이 무조건 편하다고 하던데... LW-K200 은 별로 사고 싶지 않아서 그냥 LW-C410 모델을 구매하였다.


그리고 수령!

보통 옵션으로 추가테이프를 끼워주는걸 일부러 그거 없고 좀 더 저렴한 판매자를 골랐는데, 샘플용 흰색배경 검정글씨 12mm가 기본으로 들어있었다. AA 건전지 6개가 필요한데 건전지도 동봉.


처음 박스를 열고 당황했던건 생각보다 컸다...

뭔가 휴대폰 크기 정도일거라 생각했는데... 가로세로두께 모든게 내 예상보다 커서 당황...ㅠ


일단 샘플 카트리지로 테스트.

설명서에 카트리지 넣는법이라던가 휴대폰과 연결해서 인쇄하는 법 등이 잘 적혀있다.


앱은 Epson iLabel 혹은 Epson Home & Craft Label 둘중에 하나를 받으라고 적혀있었다.

iLabel 이 좀더 사무적인 느낌이라 난 이걸 다운받았음. (왠지 리뷰가 개판인건.. 기분탓이겠지.. 기분탓일거야...)


내용이나 정렬, 크기, 폰트, 미러모드, 가로세로, 여백, 컷팅 여부 등을 선택한 후 인쇄할 수 있다.

폰트는 그냥 다 영문폰트인 것 같은데.. 안드로이드 버전은 좀 다를려나?


인쇄는 잘 됨!


OK730도 살짝 느리다고 생각했는데 이 친구는 당연히 더 느리다.. 그래도 기다려줄만 함.

이것보다 더 느린 LW-K200 은 대체 어느정도일까...


컷팅 되는 부분이 생각보다 깊숙히라서 잘린 라벨이 튕겨나오지 않는다 (OK730은 툭 하고 라벨이 튀어나가 버림)

튕겨나오는걸 싫어하는 사람도 있던데,, 난 뭔가 튕겨 나오는게 더 좋은 듯.

좁은 여백을 설정해서 앞 쪽 여백이 잘릴 경우 잘린 부분이 안쪽에 갇혀서 안 나오는 문제도 있고...


당연하지만 카트리지도 따로 사야하고.. 막 사모으기에는 부담되게 비싸다.

그래도 한번 사놓으면 오래오래 쓰니까... 생각날때마다 하나씩 사모으면 부담이 덜 될 듯.

개인적으로는 9mm, 12mm 각 흰색, 투명 하나씩 있으면 기본기로는 충분한 것 같다.

Mac의 마이크 소리를 스피커나 이어폰으로 듣기 위해서 예전에 LineIn 이라는 앱을 사용했었다.


단순히 토글해주면 되는 편한 앱이었는데... 현재는 개발사가 오디오와 관련된 각종 유료 프로그램들을 판매하고 20분 데모버전으로만 제공하는 상황.

예전 앱도 32bit로 컴파일되어 있어서 최신버전의 Mac에서는 작동하지 않는다.


그래서 방법을 찾다가 발견한 간단한 방법.

brew 에서 sox 라는걸 깔고 커맨드라인에서 간단하게

sox -d -d

라고 입력해주면 된다.


SoX 는 오디오 파일을 컨버팅해주는 커맨드라인 툴인데, -d -d 는 입력(-d, 시스템 기본 입력 장치: 마이크)을 출력(-d, 시스템 기본 출력 장치)로 보낸다는 의미로 마이크 소리를 그대로 출력할 수 있게 해준다.


다만 약간의 딜레이는 있는데... 난 잠깐 테스트 목적으로 딜레이가 있어도 상관없으니 만족하고 끝.

어느순간부터 티스토리 계정이 로그인되어 있음에도 불구하고 필명과 비밀번호를 직접 입력하는 방식으로만 댓글을 남길 수 있는걸 발견했다.

티스토리 버그인줄 알고 그러려니 했는데 하루이틀 만에 안 고쳐져서 찾아보니 버그는 아니고.. 2차 도메인 문제라고...

참고: [안내] 2차 도메인 사용 시 유의사항


블로그 관리 - 좌측 하단 설정 - 블로그 에서 기본 도메인인 ***.tistory.com 주소로 접속을 하면 일단 원래대로 정상 이용이 가능하다.


브라우저 보안정책이 강화되면서 다른 도메인간 쿠키 공유 같은게 막힌 것 같고, 그로 인해 로그인 세션 유지가 안되는 듯...

공지에서 개선방안을 찾고 있다고 하니 곧 해결해주겠징...

SSO 같은 느낌으로 다른 도메인간 세션 공유를 해주는 방식으로 만들어주면 될 것 같긴 한데,, 완전 새로운 기능 추가이다 보니 오래 걸리나부다..ㅠㅠㅠ

+ Recent posts