屑籠というかゴミ箱

主に家のサーバーの遍歴と使った製品のレビュー

ClamAV入れる

ClamAV入れる

そのうちそのうち思ってて導入していなかったウイルスチェック系のソフトやっと導入する

# sudo apt install clamav clamav-daemon
# sudo systemctl start clamav-daemon.service
# sudo systemctl enable clamav-daemon.service

# sudo systemctl start clamav-freshclam.service
# sudo systemctl enable clamav-freshclam.service

パーミッションの問題があるようなので、実行ユーザを設定ファイルから変更してみる

# sudo vi /etc/clamav/clamd.conf

10行目
User clamav ← これをコメントアウト

検出時の通知方法はちょっと検討中
スキャン中に1.2GBほどメモリ食ってるけどCPUとかは他のサーバ動作には影響ないくらいかな?

1日経過

翌日手動でチェックしてみようと思ったらclamdが死んでた
周りのログ調べてみたらoom-killer動いているので完全にメモリ不足

ということでメモリ購入しつつ、暫定的にスワップファイルを追加
確かにスワップフルになってたし、タイミング次第でメモリ1GB切っていたので夜中に色々動いたら死ぬ可能性あるわ

メモリを8GB→16GBに更新予定
スワップも2GBしかなかったので暫定で16GBに。メモリ更新後もこれでいいかな

1週間経過

clamonaccまでは導入
検出はログからGraylogのダッシュボードに表示ってくらいのゆるゆるにしている状態
色々途中経過は書いておきたいけどそのうち

メモとしては「パーミッション

clamonaccの起動設定

systemdで起動しようとした際に何も考えずに起動したらclamdがちゃんと起動する前に実行しようとして起動失敗していて色々試していた。
systemd側で対応しようと色々やってたのに、結局clamonaccのマニュアル見たら--waitオプションがあってclamdの起動待ってくれるオプションがあったという罠

エラーが出て止まっていた

2024/03/30にログ管理ツールのダッシュボードの移行とか考えていて色々やってたらclamonaccが止まっててリアルタイムスキャンできなくなってた。やばい。
原因探ったところあるスキャンディレクトリでエラーが出ていた。検索したところ以下が引っかかっておそらく同じ原因。大量の小さいファイルをバックアップしているディレクトリだったので制限に引っかかっていると思われる。

www.masm11.me

とりあえず除外したら復帰した

Metabaseの時刻の取り扱い

Metabaseのアップデートでエラー

Metabaseをアップデートしたらエラーが出たので色々調べていたんだけど、データ取得時間を入れていたフィールドでエラーが出ていることが分かったので備忘録メモ。

もともとここはUnixtimeを入れてMetabaseで変換して表示させていたんだけど、バージョンアップしたことでここの変換ができなくなった様子だったのでどうするか検討。

特に破棄しても問題ないデータだったので破棄して時刻情報をJSTのISODATEフォーマットに変更して入れることに。 Metabase、というかMongoDBがISODATEしか時刻扱いしてくれないようなのでこれが正しいんだろうけどなんか気持ち悪い

Javascriptはほとんど書いた記憶がないので色々調べながら。

参考は以下あたり

dqn.sakusakutto.jp

qiita.com

docs.mongodb.com

developer.mozilla.org

www.tohoho-web.com

so-zou.jp

後からメモ

NodeRedからMongoDBへ時刻を入れる場合、型をDateで作らないとISODate形式で入らないので注意

テキストで作ったら駄目だった

オムロン環境センサの導入

2JCIE-BU01 の導入

オムロンのUSBタイプ環境センサ2JCIE-BU01を購入したので、家のサーバに導入する履歴をメモ

とりあえず接続

# dmesg
~~~
usb 1-1.1: new full-speed USB device number 4 using ehci-pci
usb 1-1.1: New USB device found, idVendor=0590, idProduct=00d4, bcdDevice=10.00
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.1: Product: 2JCIE-BU01
usb 1-1.1: Manufacturer: OMRON
~~~

OK,認識はする。
参考情報をベースに進める
blog.plathome.co.jp

# sudo modprobe ftdi_sio
# sudo echo "0590 00d4" > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
# sudo vi /etc/udev/rules.d/80-rename-2JCIE-BU.rules

ACTION=="add", ATTRS{idVendor}=="0590", ATTRS{idProduct}=="00d4", GROUP="dialout", MODE="0666", RUN+="/sbin/modprobe ftdi_sio" RUN+="/bin/sh -c 'echo 0590 00d4 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'", SYMLINK+="2JCIE-BU"

処理は基本的にDocker内でやるつもりなので、Node-Redをdockerで動かして対応するつもり。
ということで色々やったけどデバイスパーミッション問題が出るので気をつける必要がある。
MODE設定でパーミッションを設定してやらないとエラーになった。

使用するDBはMongoDBの想定で作業をすすめる。
とりあえず
Node-RED --> MongoDB --> metabase
の構成で大体OKなところまでは進めた。
大丈夫かなとコンテナ再起動させたらmetabaseの設定消えた。
metabaseの設定をDBに入れないといけないようなのでmariadbあたり立てて設定入れるようにしてダッシュボード作って完了。
あとはIIJのサービスを使ってみるかだけ迷うのと、eCO2濃度でGoogleHomeに警告喋らせるか

f:id:teandt:20210320230955p:plain
metabaseグラフ


Node-REDはそのままだとアクセス制限かかっていないのでとりあえずはパスワード制限をできるように設定変更
コンテナ内で

# cd /usr/src/node-red/node_modules/node-red
# node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" your-password-here
# vi settings.js

ここでadminAuth項目を追加(コメントアウトされているので編集)パスワードは先程のコマンドで作成したハッシュを貼り付ける

adminAuth: {
    type: "credentials",
    users: [
        {
            username: "admin",
            password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
            permissions: "*"
        },
        {
            username: "george",
            password: "$2b$08$wuAqPiKJlVN27eF5qJp.RuQYuy6ZYONW7a/UWYxDTtwKFCdB8F19y",
            permissions: "read"
        }
    ]
}

nodered.jp

やり方は分かったので、設定ファイルを外部から読み込ませるようにすればいいかな…

Ubuntu20.04 LTS + EPGStation

Ubuntuインストール

CentOS Streamを諦めてUbuntuへ。apt派閥初だわ

以下、最小構成でインストールしてからの作業

初期設定

まず必要なところから

$ sudo apt upgrade
$ LANG=C xdg-user-dirs-gtk-update
$ sudo apt-get install vim
$ sudo apt-get install ssh
$ sudo systemctl start ssh
$ sudo apt-get install xfsprog

あとリモートで作業
最近はWin10もPowershellssh使えて楽になった。

Ubuntu 20.04 LTSの場合:
$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
$ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
$ sudo wget https://www.ubuntulinux.jp/sources.list.d/focal.list -O /etc/apt/sources.list.d/ubuntu-ja.list
$ sudo apt update
$ sudo apt upgrade
$ sudo apt-get install ubuntu-defaults-ja

ubuntulinux.jp

ここで再起動。

Docker

$ sudo apt-get update

$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo apt-key fingerprint 0EBFCD88

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

$ sudo systemctl start docker
$ sudo systemctl enable docker

Docker-compose

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose

xrdp

$ sudo apt-get install xrdp

$ sudo apt-get install tigervnc-standalone-server

$ sudo systemctl set-default multi-user.target

再起動

samba

$ sudo apt-get install samba
$ sudo systemctl start samba
$ sudo systemctl enable samba
$ smbpasswd -a user1

smbpasswdとかもう忘れたよ…(ログインできなくて困ってた

Graylog

以前作ったdocker-composeファイルから起動してadminユーザからログインすればOK
teandt.hatenablog.com

VSCode

$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
$ sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
$ sudo apt update
$ sudo apt install code

qiita.com

docker-mirakurun-epgstation

公式設定の通りやればOK
自分の場合は、
ポート番号の変更
ログをsyslogでGraylogへ
出力ファイル名の修正
チャンネル設定の変更

github.com

JDownloader2

インストーラー実行前に

$ sudo apt-get install libcanberra-gtk-module

GNOME画面のメンテ

Tweak入れて拡張も入れてWindow Listとか入れる

$ sudo apt-get install gnome-tweak-tool
$ sudo apt-get install gnome-shell-extensions

ffmpeg

スクリプトで使ってるものをpullしておく

$ docker pull jrottenberg/ffmpeg:4.1-alpine

CentOS8の切り替え

経緯

CentOS8が当初の予定を大幅に切り上げてEOLを来年の2021年に迎えると発表があり、ほとんどの用途ではCenOS Streamに切り替えるのを推奨するとありました。
私の用途だと別にそれでも良かったのですが、CentOS8のDocker対応が怪しかったのでUbuntuも検討することに。

Ubuntu Server

まずは最小構成で入れられそうなUbuntu Serverから。
自分の使い方だとコンソールはいじらず、リモートでログインしてってことが多いのでこちらを検証。

とりあえずメンテの際に日本語環境を最低限構築しておきたかったものの、面倒そうなので却下。

Ubuntu Desktop

じゃあDesktopでええやんけと思って試行
結論としてはほぼ大丈夫そうだったものの、Firewallのメンテがちゃんとやろうとするとufwじゃダメでiptables直接いじらないとダメそうだったので一時保留

CentOS Stream

そして戻ってきたCentOS Stream
問題はDockerの対応だったものの、調べたら今年の9月にDocker-ceがCentOS8に対応してた。解決してるやん。
ということでアップデート

アップデートするとEPG Stationが使用できなくなったので、だいたい予想通り。
containerd.ioを新しくすると駄目になるのは分かっていたので、諦めてドライバをカーネル標準のDVBに移行することに。

ここでつまりまくる。アップデート前にDKMS無効化しておけば勝手に消えたはずなのに、入れてしまったので消えない消えない
とりあえずpt3_drvをblacklist行きにして解決…せんかった

6時間位色々やったけどデフォルトだとPT3のDVBドライバ入ってないので諦めてUbuntuにした

VSCodeをyumで入れる

入れ方

rpmで入れればいいやと思ってたけど自動更新できるようなので

$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'

qiita.com

CentOS8を入れる2

PT3関連

makeに必要なやつら

忘れてた

# sudo yum install kernel-devel
# sudo yum install libelf*
# sudo yum install elfutils*

あとDKMS

# sudo yum install dkms

ドライバ

# mkdir install
# cd install
# mkdir pt3
# cd pt3
# git clone https://github.com/m-tsudo/pt3.git
# cd pt3
# make
# sudo make install

確認

# dmesg | grep -i PT3
PT3: card_number=0 channel=0
PT3: card_number=0 channel=1
PT3: card_number=0 channel=2
PT3: card_number=0 channel=3

# ls /lib/modules/`uname -r`/kernel/drivers/video/|grep pt3
pt3_drv.ko と表示されればOK
# ls /etc/udev/rules.d/|grep pt3
99-pt3.rules と表示されればOK
# lsmod | grep pt3
pt3_drv 31806 0 のような形で表示されればOK
# ls -l /dev/pt3*
crw-rw-rw-. 1 root video 249, 0 6月 16 17:57 2012 /dev/pt3video0
crw-rw-rw-. 1 root video 249, 1 6月 16 17:57 2012 /dev/pt3video1
crw-rw-rw-. 1 root video 249, 2 6月 16 17:57 2012 /dev/pt3video2
crw-rw-rw-. 1 root video 249, 3 6月 16 17:57 2012 /dev/pt3video3

が出れば認識OK
過去の作業履歴から引用

OKならDKMSインストール

# sudo ${SHELL} ./dkms.install

mirakurun-epgstation

docker-composeから

# git close https://github.com/l3tnun/docker-mirakurun-epgstation.git
# cd docker-mirakurun-epgstation

#チャンネル設定
# vi mirakurun/conf/channels.yml

#コメントアウトされている restart や user の設定を適宜変更する
# vim docker-compose.yml

# docker-compose pull
# docker-compose build
# カードリーダーのデバイスIDを確認
# lsusb

SCM~~~のデバイスの
BusとDeviceのIDを確認してcomposeファイルのdevice設定に指定

設定後、起動してストリーム視聴可能か確認

# docker-compose up -d
http://192.168.1.1:40772/api/channels/GR/20/stream

な感じでVLCからストリーム接続して再生できればOK
EPG Stationは

http://192.168.1.1:8888
な感じでログインして、一定時間経過すれば番組表が表示されるはず。
ログはcomposefileにgraylogに飛ばすようにして管理
デフォルトだと出力ファイル名が気に入らないのとH.264エンコードがデフォルトになっているのでepgstation/config/config.jsonの記述を変更して

  • recordedFormatを追加してファイル名指定
  • encodeのH.264設定のdefault項目falseに変更

github.com

メモ

docker-composeでrestart: always指定していたのに起動しない奴らがいたので確認したところ、log出力をGraylogにTCPで出している場合、Graylog起動前に立ち上がろうとするとエラーで落ちてるっぽいので、UDPで渡すように変更

さらにメモ

# yum install sysstat
# systemctl start sysstat
# systemctl enable sysstat

GNOMEのtweaks入れて画面の設定をやる
画面下にアプリケーションの表示をできるようにしないと使いにくいので(下じゃなくてもいいけど