Ubuntu 18.04.4 LTS にTV録画環境をインスト その2

タイトル通りです。忘れても良いように、メモとして残すだけなので、正確じゃ無いと思いますが、気にしないように。ココの内容を再利用する方は自己責任でお願いします。私は責任取りませんので悪しからず。

以下のソースコード中に出てくる「&」が「&」に置き換わってしまっているので、コピペするときは十分注意すること。

viでの痴漢コマンドは、

%s/&/&/g

でよかったはず・・・たぶん。バックスラッシュ必要だったっけな・・・・(汗

日本語環境 と日本時間

#!/bin/bash

sudo dpkg-reconfigure tzdata

sudo apt install -y language-pack-ja-base language-pack-ja ibus-mozc
sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

#ヒアドキュメントって言うらしい
sudo bash -c "cat <<EOF >> .bashrc
case $TERM in
    linux) LANG=C ;;
    *)     LANG=ja_JP.UTF-8;;
esac
EOF"

sudo apt install -y manpages-ja manpages-ja-dev

上記の後、再起動か再ログインで有効になる。はず。

時刻同期

ubuntu18時刻同期はnptではなくsystemdなので、現状確認

sudo systemctl -l status systemd-timesyncd

同期先サーバを変更したい場合は、/etc/systemd/timesyncd.conf 設定ファイルの下記行を変更する。

NTP=ntp.nict.jp

再起動

sudo systemctl restart systemd-timesyncd.service

LAMP一括インスト

参考:Ubuntu 18.04にLAMP環境をインストールする。 – Qiita

#!/bin/bash

sudo apt install -y tasksel
sudo tasksel install lamp-server

#Ver確認
apachectl -v
mysql --version
php --version

#bashの途中で、中断するか選択する。
read -p "ok? (y/N): " yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac


sudo service apache2 start
cd /var/www/html
sudo bash -c "cat <<EOF > index.php
<?php
    phpinfo();
?>
EOF"

#PHPファイルにアクセスして確認ができたらOK.

mysqlデータベース作成

参考:【Ubuntu 18.04 LTS Server】MySQLサーバを動かす | The modern stone age.
MySQLでシェル(bash/sh)からSQLを実行する方法 – それマグで!

ココで、以下のDBを作った。

  • wordpress
  • tt-rss
  • EPGStation

mysqlの初期セキュリティ設定

sudo mysql_secure_installation

以下質問にyesで答えていけば、問題なし。rootパスワードもココで設定するが、通常はシステムのrootユーザーでログインすることになる。つまりパスワードもシステムのパスワード。

sudo mysql -u root -p

EPGStationを使うなら、ログが大量に出るらしいので、ログの保持期間を減らすため、以下に変更。

SET GLOBAL expire_logs_days = 1;

以下の操作で、DBとユーザーを作る。ポリシー違反と言われたら、 set global validate_password_policy = “LOW”; を実行すればいいはず。

CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
CREATE DATABASE データベース名 CHARACTER SET utf8;
FLUSH PRIVILEGES;

tt-rssのインスト

参考:TinyTiny RSSをインストール | goozenlab
Tiny Tiny RSS Install on Ubuntu 18.04 LTS – ShaneTriplett.com
Ubuntu 18.04: ウェブベースRSSリーダのTiny Tiny RSSをインストールする – Narrow Escape

#!/bin/bashcd

/var/www
sudo git clone https://tt-rss.org/git/tt-rss.git tt-rss
sudo chown -R www-data:www-data tt-rss/
sudo apt install -y php-mbstring php-fdomdocument php-intl php-curl
sudo systemctl restart apache2
cd tt-rss/
sudo chmod -R 777 cache/images
sudo chmod -R 777 cache/upload
sudo chmod -R 777 cache/export
sudo chmod -R 777 feed-icons
sudo chmod -R 777 lock

#cron.d辺りに実行スクリプトを組んでおく。
#書き込みエラーなんかを回避するには。
sudo bash -c "cat <<EOF > /etc/cron.d/ttrss
#書き込む内容
*/30 * * * * www-data /usr/bin/php /var/www/tt-rss/updata.php --feeds --quiet > dev/null 2>&amp;1
EOF"

#データベースの初期テーブル作成
mysql DB_NAME -u DB_USER_NAME -p < schema/ttrss_schema_mysql.sql

ttrssの初回起動時の設定。

データベースの初期入力が終わったら、データベースを初期化しますと書いてあるので、それをクリック(英文で:Before you can start using tt-rss, database needs to be initialized. Click on the button below to do that now.と書いてある)
その下に出てくる、textボックスの長いPHP設定をコピーして、/var/www/html/tt-rss/config.php(最初は存在しない)に書き込む。
パーミッションを正確に設定していれば、textボックスの下にあるボタンをクリックするだけで、ファイルが生成されるはず。

初期のログインはUsername:admin Password:password で入れる。

データの移行

設定画面のフィードに移動し、OPMLエクスポートをする。

WordPressインスト

参照:Ubuntu18.04 WordPress + apache2.4 + php7.3 + mysql5.7 – golangの日記

#!/bin/bash

cd /var/www
curl -sSO https://ja.wordpress.org/latest-ja.tar.gz
tar xvf latest-ja.tar.gz

rm latest-ja.tar.gz
sudo chown -R www-data:www-data /var/www/wordpress/

cd wordpress


#***設定を編集***
#秘密キーの取得~書き込み。
tmpdata=`curl https://api.wordpress.org/secret-key/1.1/salt/`
AUTH_KEY=`echo $tmpdata | sed -r "s/.*'AUTH_KEY', '([^']+)'.*$/\1/"`
AUTH_KEY=$(echo $AUTH_KEY | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
SECURE_AUTH_KEY=`echo $tmpdata | sed -r "s/.*'SECURE_AUTH_KEY', '([^']+)'.*$/\1/"`
SECURE_AUTH_KEY=$(echo $SECURE_AUTH_KEY | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
LOGGED_IN_KEY=`echo $tmpdata | sed -r "s/.*'LOGGED_IN_KEY', '([^']+)'.*$/\1/"`
LOGGED_IN_KEY=$(echo $LOGGED_IN_KEY | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
AUTH_KEY=`echo $tmpdata | sed -r "s/.*'AUTH_KEY', '([^']+)'.*$/\1/"`
AUTH_KEY=$(echo $AUTH_KEY | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
SECURE_AUTH_KEY=`echo $tmpdata | sed -r "s/.*'SECURE_AUTH_KEY', '([^']+)'.*$/\1/"`
SECURE_AUTH_KEY=$(echo $SECURE_AUTH_KEY | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
LOGGED_IN_KEY=`echo $tmpdata | sed -r "s/.*'LOGGED_IN_KEY', '([^']+)'.*$/\1/"`
LOGGED_IN_KEY=$(echo $LOGGED_IN_KEY | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
NONCE_KEY=`echo $tmpdata | sed -r "s/.*'NONCE_KEY', '([^']+)'.*$/\1/"`
NONCE_KEY=$(echo $NONCE_KEY | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
AUTH_SALT=`echo $tmpdata | sed -r "s/.*'AUTH_SALT', '([^']+)'.*$/\1/"`
AUTH_SALT=$(echo $AUTH_SALT | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
SECURE_AUTH_SALT=`echo $tmpdata | sed -r "s/.*'SECURE_AUTH_SALT', '([^']+)'.*$/\1/"`
SECURE_AUTH_SALT=$(echo $SECURE_AUTH_SALT | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
LOGGED_IN_SALT=`echo $tmpdata | sed -r "s/.*'LOGGED_IN_SALT', '([^']+)'.*$/\1/"`
LOGGED_IN_SALT=$(echo $LOGGED_IN_SALT | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')
NONCE_SALT=`echo $tmpdata | sed -r "s/.*'NONCE_SALT', '([^']+)'.*$/\1/"`
NONCE_SALT=$(echo $NONCE_SALT | sed -e 's/\&amp;/\\&amp;/g' | sed -e 's/\//\\\//g')


cat wp-config-sample.php | \
sed -e "s/database_name_here/wordpress/" | \
sed -e "s/username_here/wpuser/" | \
sed -e "s/password_here/wpuser123/" | \
sed -r "s/([^']+'AUTH_KEY'[^']*')(put your unique phrase here)/\1$AUTH_KEY/" | \
sed -r "s/([^']+'SECURE_AUTH_KEY'[^']*')(put your unique phrase here)/\1$SECURE_AUTH_KEY/" | \
sed -r "s/([^']+'LOGGED_IN_KEY'[^']*')(put your unique phrase here)/\1$LOGGED_IN_KEY/" | \
sed -r "s/([^']+'NONCE_KEY'[^']*')(put your unique phrase here)/\1$NONCE_KEY/" | \
sed -r "s/([^']+'AUTH_SALT'[^']*')(put your unique phrase here)/\1$AUTH_SALT/" | \
sed -r "s/([^']+'SECURE_AUTH_SALT'[^']*')(put your unique phrase here)/\1$SECURE_AUTH_SALT/" | \
sed -r "s/([^']+'LOGGED_IN_SALT'[^']*')(put your unique phrase here)/\1$LOGGED_IN_SALT/" | \
sed -r "s/([^']+'NONCE_SALT'[^']*')(put your unique phrase here)/\1$NONCE_SALT/" \
> wp-config.php

#apache2の設定。
#ヒアドキュメントって言うらしい
sudo bash -c "cat <<EOF >> /etc/apache2/sites-available/010main.conf
<VirtualHost 鯖IP:80>
        ServerAdmin webmaster@localhost
        ServerName ドメイン名
        DocumentRoot /var/www/wordpress
        ErrorLog /var/log/apache2/適当な名前.error.log
        LogLevel warn
        CustomLog /var/log/apache2/適当な名前.access.log combined

#EPGStation用、フォルダでアクセスできるようにconfig.jsonを変更する必要があるよ。
        <Location /epg/>
                AuthType Basic
                AuthName "Login"
                AuthUserFile /usr/share/apache2/passwd
                require valid-user

                SetEnv force-proxy-request-1.0 1
                SetEnv proxy-nokeepalive 1
                #EPGStation用のproxy
                ProxyPass http://localhost:8888/epg/ 
                ProxyPassReverse http://localhost:8888/epg/
        </Location>

#syncthingのアクセス用。
        <Location /syncthing/>
#                SetEnv force-proxy-request-1.0 1
#                SetEnv proxy-nokeepalive 1
#                #EPGStation用のproxy
                ProxyPass http://localhost:8384/ 
                ProxyPassReverse http://localhost:8384/
        </Location>

#tt-rss用
	Alias /tt-rss /var/www/tt-rss
	<Directory /var/www/tt-rss>
	    AuthType Basic
	   AuthName "Login"
	   AuthUserFile /usr/share/apache2/passwd
	   require valid-user
	</Directory>

#pukiwiki用
	Alias /pukiwiki /var/www/pukiwiki
	<Directory /var/www/pukiwiki>
	    AuthType Basic
	    AuthName "Basic Authentication"
	    AuthUserFile /usr/share/apache2/passwd
	    require valid-user
	</Directory>
</VirtualHost>
EOF"


sudo a2ensite 010main.conf
sudo service apache2 reload



BASIC認証については都度調べるように。

いろいろ一緒くたに書いたが、viで編集するとするとこうなる。

vi wp-config.php

#以下の行を変更
define('DB_NAME', 'wordpress'); // 作成したデータベース名
define('DB_USER', 'wpuser'); // 作成したユーザー名
define('DB_PASSWORD', 'wpuser123'); // 作成したユーザーのパスワード


#設定ファイルwp-config.phpにあるhttps://api.wordpress.org/secret-key/1.1/salt/にアクセスし、一意の認証キーを取得し、defineを書き換える。

sudo vi /etc/apache2/sites-available/010main.conf(新規作成)
#上記のVirtualhostの間を全部書く。

という感じ。

Syncthingのインストール

参考:完全無料で安全なファイル同期ソフト「Syncthing」 | LFI
How to Install and use Syncthing on Ubuntu 18.04 – Computing for Geeks

#!/bin/bash

#Syncthingのインストール
sudo curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
sudo echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt update
sudo apt -y install syncthing

#自動起動
sudo cp /lib/systemd/system/syncthing@.service /etc/systemd/system/syncthing@ユーザー名.service || sudo cp /etc/systemd/system/syncthing@.service /etc/systemd/system/syncthing@ユーザー名.service
sudo systemctl restart syncthing@ユーザー名.service
sudo systemctl enable syncthing@ユーザー名.service

#Ver確認
syncthing --version
#bashの途中で、中断するか選択する。
read -p "syncthing Ver check OK? (y/N):" yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac

#通信port解放
sudo ufw allow syncthing

#設定画面をネットワーク上から参照できるように変更
cp ~/.config/syncthing/config.xml ~/.config/syncthing/config.xml.org
cat ~/.config/syncthing/config.xml.org |
sed -e "s/<address>127.0.0.1:8384<\/address>/<address>0.0.0.0:8384<\/address>/" \
> ~/.config/syncthing/config.xml

EVENCのインスト

参考:ffmpeg に nvenc(cuda)をインストールする | ニコラボ
NVENCを使ったHWEncode環境 – Qiita
ffmpegでNVENCを使ってエンコードしてみる

#!/bin/bash

#EVENCのインスト
# Kernel Headerを入れる
sudo apt install -y linux-headers-$(uname -r)

# aptプライオリティpinファイルをDL
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin

# aptプライオリティpinファイルをaptのフォルダに移動
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600

# GPGキーをインポート
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub

リポジトリを登録
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"

# リポジトリ更新
sudo apt update

# CUDAインストール
sudo apt -y install cuda

# パスを通す
export PATH=/usr/local/cuda-10.2/bin:/usr/local/cuda-10.2/NsightCompute-2019.1${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

#再起動
#sudo shutdown -r now

ffmpegのインスト

今回は、ホームディレクトリ下にbinフォルダを作ってそこにffmpegをインストする。通常の場所にはパッケージでのffmpegと区別するための処置。

なので、インストの途中で、パスを通したりする作業が入る。

#!/bin/bash

#nvidia-smi にてドライバインストールも含め完了しているか確認しましょう。
nvidia-smi
#####*****   *****#####
#bashの途中で、キー入力を待つ。
read -p "nvidia-smi(Enter): "

#FFmpegコンパイルに必要なものを導入
sudo apt update -qq &amp;&amp; sudo apt -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libsdl2-dev \
  libssl-dev \
  libtool \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  libxcb1-dev \
  libxcb-shm0-dev \
  libxcb-xfixes0-dev \
  pkg-config \
  texinfo \
  wget \
  zlib1g-dev

#作業ディレクトリ作成
mkdir -p ~/ffmpeg_sources ~/bin

#NASM インストール
cd ~/ffmpeg_sources &amp;&amp; \
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 &amp;&amp; \
tar xjvf nasm-2.14.02.tar.bz2 &amp;&amp; \
cd nasm-2.14.02 &amp;&amp; \
./autogen.sh &amp;&amp; \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" &amp;&amp; \
make &amp;&amp; \
make install

#Yasm インストール
cd ~/ffmpeg_sources &amp;&amp; \
wget -O yasm-1.3.0.tar.gz https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz &amp;&amp; \
tar xzvf yasm-1.3.0.tar.gz &amp;&amp; \
cd yasm-1.3.0 &amp;&amp; \
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" &amp;&amp; \
make &amp;&amp; \
make install

#libx264 インストール
sudo apt install -y libx264-dev
cd ~/ffmpeg_sources &amp;&amp; \
git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git &amp;&amp; \
cd x264 &amp;&amp; \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic &amp;&amp; \
PATH="$HOME/bin:$PATH" make &amp;&amp; \
make install

#libx265 インストール
sudo apt install -y mercurial libnuma-dev &amp;&amp; \
cd ~/ffmpeg_sources &amp;&amp; \
if cd x265 2> /dev/null; then hg pull &amp;&amp; hg update &amp;&amp; cd ..; else hg clone https://bitbucket.org/multicoreware/x265; fi &amp;&amp; \
cd x265/build/linux &amp;&amp; \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source &amp;&amp; \
PATH="$HOME/bin:$PATH" make &amp;&amp; \
make install

#libvpx インストール
cd ~/ffmpeg_sources &amp;&amp; \
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git &amp;&amp; \
cd libvpx &amp;&amp; \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm &amp;&amp; \
PATH="$HOME/bin:$PATH" make &amp;&amp; \
make install

#libfdk-aac インストール
cd ~/ffmpeg_sources &amp;&amp; \
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac &amp;&amp; \
cd fdk-aac &amp;&amp; \
autoreconf -fiv &amp;&amp; \
./configure --prefix="$HOME/ffmpeg_build" --disable-shared &amp;&amp; \
make &amp;&amp; \
make install

#libmp3lame インストール
cd ~/ffmpeg_sources &amp;&amp; \
wget -O lame-3.100.tar.gz https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz &amp;&amp; \
tar xzvf lame-3.100.tar.gz &amp;&amp; \
cd lame-3.100 &amp;&amp; \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm &amp;&amp; \
PATH="$HOME/bin:$PATH" make &amp;&amp; \
make install

#libopus インストール
cd ~/ffmpeg_sources &amp;&amp; \
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git &amp;&amp; \
cd opus &amp;&amp; \
./autogen.sh &amp;&amp; \
./configure --prefix="$HOME/ffmpeg_build" --disable-shared &amp;&amp; \
make &amp;&amp; \
make install

#libaom インストール
cd ~/ffmpeg_sources &amp;&amp; \
git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom &amp;&amp; \
mkdir -p aom_build &amp;&amp; \
cd aom_build &amp;&amp; \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom &amp;&amp; \
PATH="$HOME/bin:$PATH" make &amp;&amp; \
make install

#Nvidias codec API インストール
cd ~/ffmpeg_sources &amp;&amp; \
git -C nv-codec-headers pull 2> /dev/null || git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers &amp;&amp; \
cd nv-codec-headers &amp;&amp; \
PATH="$HOME/bin:$PATH" make &amp;&amp; \
make install PREFIX="$HOME/ffmpeg_build"

#FFmpeg インストール
cd ~/ffmpeg_sources &amp;&amp; \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 &amp;&amp; \
tar xjvf ffmpeg-snapshot.tar.bz2 &amp;&amp; \
cd ffmpeg &amp;&amp; \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin" \
  --enable-openssl \
  --enable-gpl \
  --enable-libaom \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-static \
  --enable-cuda \
  --enable-cuvid \
  --enable-nvenc \
  --enable-libnpp \
  --extra-cflags=-I/usr/local/cuda/include \
  --extra-ldflags=-L/usr/local/cuda/lib64 \
  --enable-nonfree &amp;&amp; \
PATH="$HOME/bin:$PATH" make &amp;&amp; \
make install &amp;&amp; \
hash -r

#パスを通したり
source ~/.profile
echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath
sudo cp bin/* /usr/local/bin/

#sudo reboot
#動作確認は再起動した後に。

pt1のインストール

#!/bin/bash

#*****pt1のインストール*****
sudo bash -c "echo 'blacklist earth-pt3' >> /etc/modprobe.d/blacklist.conf"
sudo apt install -y dkms
cd /usr/local/src
sudo git clone https://github.com/m-tsudo/pt3 pt3-driver
cd pt3-driver
sudo chmod 755 dkms.install
sudo ./dkms.install
sudo modprobe pt3_drv

#sudo reboot

ドライバを確認出来たら次に進む。

arib25のインスト

#!/bin/bash


#ドライバがインストールされたかの確認。
ls -l /dev/pt3*

#bashの途中で、中断するか選択する。
read -p "pt3 driver check OK? (y/N):" yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac


#*****カードリーダーの準備*****
#カードリーダーの準備
sudo apt install -y pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools
#確認
#pcsc_scan

#*****arib25,recpt1のインストール*****
sudo apt install -y unzip pkg-config autoconf
cd /usr/local/src
sudo wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
sudo unzip c44e16dbb0e2.zip
cd pt1-c44e16dbb0e2/arib25
sudo make
sudo make install
sudo ldconfig

cd /usr/local/src
sudo wget http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2
sudo tar xf tip.tar.bz2
cd pt1-17b4f7b5dccb/recpt1
sudo sed -i 's/pt1video/pt3video/g' pt1_dev.h
sudo ./autogen.sh
sudo ./configure --enable-b25
sudo make
sudo make install

mirakurunのインスト

参考:Mirakurunのインストール手順(Ubuntu・Debian・CentOS) | 自分に負けないラボラトリー
【2019年版】ゼロから始めるlinux録画鯖の書 | Till0196のぼーびろく
Ubuntu18.04で録画サーバーを構築した | おっとあかん | Otakan Blog

#!/bin/bash
#*****mirakurunnのインスト*****

#確認作業から。
#Node.js(インスト直後状態だと入ってないかも。
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
node -v
#bashの途中で、キー入力を待つ。
read -p "nodejs ver10.xx OK? (y/N):" yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac


#インストール開始
sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe --production
sudo npm install rivarun -g
sudo npm install arib-b25-stream-test -g --unsafe

#*****ログローテーション設定 毎日ログを圧縮して1週間分保存する設定*****
sudo pm2 install pm2-logrotate
sudo bash -c "cat <<EOF > /etc/logrotate.d/mirakurun
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
  daily
  compress
  rotate 7
  missingok
  notifempty
}
EOF"

#ポート開放
sudo ufw allow 40772

#sudo vi /usr/local/etc/mirakurun/tuners.yml
#true を falseに変えて有効化。

#チャンネル情報更新。
#curl -X PUT "http://localhost:40772/api/config/channels/scan"
#sudo mirakurun stop
#sudo mcconfig.pl -f 		#20分ほどかかります。
#sudo mirakurun start
#チャンネルの設定は以下のコマンドで書き換え可能
#sudo mirakurun config tuners

#*****ログローテーション設定 毎日ログを圧縮して1週間分保存する設定*****
sudo pm2 install pm2-logrotate
sudo bash -c "cat <<EOF > /etc/logrotate.d/mirakurun
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
  daily
  compress
  rotate 7
  missingok
  notifempty
}
EOF"

#ポート開放
sudo ufw allow 40772

#再起動時に自動開始するように

####      *****Mirakurunをアップデートする場合*****
####   sudo mirakurun stop
####   sudo npm update rivarun -g
####   sudo npm install mirakurun@latest -g --unsafe --production
####   sudo mirakurun start

tuners.ymlでチューナーをfalseにするのを忘れないように。これをfalseに変えないと動かない。

EPGStationのインスト

参考:EPGStation/linux-setup.md at master · l3tnun/EPGStation · GitHub

#####*****EPGStationのインスト*****#####

node --version
#bashの途中で、キー入力を待つ。
read -p "node --version OK? (y/N):" yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
curl -o - http://localhost:40772/api/version
#bashの途中で、キー入力を待つ。
read -p "Mirakurun version OK? (y/N):" yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
ffmpeg -version
#bashの途中で、キー入力を待つ。
read -p " ffmpeg -version OK? (y/N):" yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
python --version
#bashの途中で、キー入力を待つ。
read -p "python --version OK? (y/N):" yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac
gcc --version
#bashの途中で、キー入力を待つ。
read -p "gcc --version OK? (y/N):" yn
case "$yn" in [yY]*) ;; *) echo "abort." ; exit ;; esac

cd ~
sudo apt install -y node-gyp
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm install
npm run build

#sudo chown -R hiyori:hiyori EPGStation/

cp config/config.sample.json config/config.json
cp config/operatorLogConfig.sample.json config/operatorLogConfig.json
cp config/serviceLogConfig.sample.json config/serviceLogConfig.json

npm install pm2 -g
sudo pm2 starup tvrec
sudo pm2 start dist/server/index.js --name "epgstation"
sudo pm2 save
sudo ufw allow 8888

#config.jsonに以下を追加、訂正
#  "subDirectory": "subdir"
#    "dbType": "mysql",
#        "streamFilePath": "/tmp",
#        "recorded": "/var/www/video",
#        "mysql": {
#            "host": "localhost",
#            "port": 3306,
#            "user": "mysqlのユーザー名",
#            "password": "ぱすわーど",
#            "database": "データベース名",
#            "connectTimeout": 20000,
#            "connectionLimit": 10
#        },


fail2banインスト

参考:Fail2Banでアクセス制限 – Koji Noshita

#****fail2banインスト*****

sudo apt install -y fail2ban

fail2banはapache2の不正アクセス対策。

plexのインスト

参考:Fail2Banでアクセス制限 – Koji Noshita
Plex Media Serverをサブドメインで運用&SSL通信化する | web net FORCE

#!/bin/bash

sudo apt update
sudo apt upgrade

sudo apt install curl -y 
sudo curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list

sudo apt update -y
sudo apt upgrade -y
sudo atp install apt-transport-https
sudo apt install plexmediaserver

#ufwポート制限用のapplication設定ファイルを作る
#書き込みエラーなんかを回避するには。
#書き込む内容(シングルクオーテーションをエスケープすること)
sudo bash -c 'cat <<'EOF' > /etc/ufw/applications.d/test
[plexmediaserver]
title=Plex Media Server (Standard)
description=The Plex Media Server
ports=32400/tcp|3005/tcp|5353/udp|8324/tcp|32410:32414/udp

[plexmediaserver-dlna]
title=Plex Media Server (DLNA)
description=The Plex Media Server (additional DLNA capability only)
ports=1900/udp|32469/tcp

[plexmediaserver-all]
title=Plex Media Server (Standard + DLNA)
description=The Plex Media Server (with additional DLNA capability)
ports=32400/tcp|3005/tcp|5353/udp|8324/tcp|32410:32414/udp|1900/udp|32469/tcp
'EOF''

#有効化
sudo ufw allow plexmediaserver-all

#確認
sudo ufw status verbose





sudo mkdir -p /opt/plexmedia/{movies,series}
sudo chown -R plex: /opt/plexmedia


#サーバーの設定はweb上でするので、URLに192.168.x.xxx:32400/web/index.html#!/setup
#を入力し、設定を行う。