Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

動くようにする #11

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .dockerignore

This file was deleted.

191 changes: 82 additions & 109 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,130 +1,103 @@
# docker-mirakurun-chinachu
Mirakurun と Chinachu をDockerコンテナに閉じ込めました

## Constitution
### Mirakurun
- Alpine Linux 3.8(node:10-alpine)
- [Mirakurun](https://github.com/Chinachu/Mirakurun)
- branch: master
[Mirakurun](https://github.com/Chinachu/Mirakurun) + [Chinachu](https://github.com/Chinachu/Chinachu) の Docker コンテナ

### Chinachu
- Alpine Linux 3.8(node:10-alpine)
- [Chinachu](https://github.com/Chinachu/Chinachu)
- branch: gamma

## 動作確認環境
> OS
>>CentOS Linux release 7.2.1511 (Core)
>> Linux 3.10.0-327.22.2.el7.x86_64
>
>>Fedora release 25 (Twenty Five)
>> Linux 4.9.4-201.fc25.x86_64
>
>>Fedora release 27 (Twenty Seven)
>> Linux 4.18.12-100.fc27.x86_64
>
>>Fedora release 30 (Thirty)
>> Linux 5.2.18-200.fc30.x86_64

>Docker
>>version 1.11.2, build b9f10c9
>>version 17.03.0-ce, build 60ccb22
>>version 1.13.1, build 9c9378f-unsupported
>>version 1.13.1, build 47e2230/1.13.1

>Tuner
>>ISDB-S, ISDB-T Tuner PT3

>Smart card reader
>>USB SmartCard Reader NTT Communications Corp. SCR3310-NTTCom

## 利用方法
- 最新のdocker & docker-compose がインストール済
- SELinuxの無効化
- ホストマシンにPT3 Driverがインストール済
```
$ ls -l /dev/pt*video*
crw-rw-rw- 1 root video 246, 0 Jun 26 16:07 /dev/pt3video0
crw-rw-rw- 1 root video 246, 1 Jun 26 16:07 /dev/pt3video1
crw-rw-rw- 1 root video 246, 2 Jun 26 16:07 /dev/pt3video2
crw-rw-rw- 1 root video 246, 3 Jun 26 16:07 /dev/pt3video3
```
- B-CAS 用に利用するスマートカードリーダーはMirakurunコンテナ内で管理しますので
ホストマシン上のpcscdは停止してください
## 前提条件

- [Docker](https://docs.docker.com/engine/install/), [Docker Compose](https://docs.docker.com/compose/install/linux/#install-using-the-repository)の導入が必須
- ホスト上の pcscd は停止する
- DVBドライバ非対応のチューナーはホストへのドライバのインストールが必須 ([例](https://github.com/tsukumijima/px4_drv))

## インストール手順

```sh
#取得
git clone https://github.com/chinachu/docker-mirakurun-chinachu
cd docker-mirakurun-chinachu

#各種設定
nano ./compose.yaml

#mirakurunをセットアップ
sudo docker compose run --rm -e SETUP=true mirakurun

#DVBドライバ非対応チューナー向け
cp ./mirakurun/opt/bin/startup.sample ./mirakurun/opt/bin/startup
sudo nano ./mirakurun/opt/bin/startup
sudo chmod +x ./mirakurun/opt/bin/startup
sudo nano ./mirakurun/config/tuners.yml

#チャンネル設定
sudo nano ./mirakurun/config/channels.yml
```
sudo systemctl stop pcscd.socket
sudo systemctl disable pcscd.socket

## 起動

```sh
sudo docker compose up -d --remove-orphans
```

- docker-composeを利用しておりますので、プロジェクトディレクトリ内で下記コマンドを実行してください
プロジェクトディレクトリ名はビルド時のレポジトリ名になりますので、適当に短いフォルダ名が推奨です
## 状態確認

### 取得例
```shell
git clone https://github.com/Chinachu/docker-mirakurun-chinachu.git tvs
cd tvs
```sh
sudo docker compose ps
```
### 起動
```shell
docker-compose up -d

## ログ

```sh
sudo docker compose logs -f [chinachu|mirakurun]
```
### 停止
```shell
docker-compose down

## 停止

```sh
sudo docker compose down
```

### デーモン化(systemd)
初期では「WorkingDirectory」が「/usr/local/projects/tvs/」となっています
設置した箇所に応じて、書き換えてください
```shell
vi mirakurun-user.service
vi chinachu-user.service
## 更新

```sh
sudo docker compose up -d --pull always --build --force-recreate --remove-orphans
sudo docker container prune -f
sudo docker image prune -f
sudo docker builder prune -f
sudo docker volume prune -f
sudo docker network prune -f
```

ユーザ固有サービスとして動かすため、設定します
```shell
mkdir -p ~/.config/systemd/user/
mv mirakurun-user.service ~/.config/systemd/user/
mv chinachu-user.service ~/.config/systemd/user/
## 永続化(次回OS起動時に自動で起動)
systemctl --user enable mirakurun-user.service
systemctl --user enable chinachu-user.service
sudo loginctl enable-linger `whoami`

# 手動起動
systemctl --user start mirakurun-user.service
systemctl --user start chinachu-user.service

# 動作確認
systemctl --user status mirakurun-user.service
systemctl --user status chinachu-user.service

# 手動停止
systemctl --user stop mirakurun-user.service
systemctl --user stop chinachu-user.service
## 初期化
```sh
sudo docker compose down -v --rmi all --remove-orphans
```

## 設定
エリア、環境によって変更が必要なファイルは下記の通りとなります

### Mirakurun
- ポート番号 : 40772
- mirakurun/conf/tuners.yml
チューナー設定
- mirakurun/conf/channels.yml
チャンネル設定

* ポート番号: 40772

### Chinachu
- ポート番号 : 10772, 20772(local network only), 5353/udp(mDNS)
- chinachu/conf/config.json
チューナー設定
チャンネル設定

### 録画ファイル保存先
また録画ファイルはプロジェクトフォルダ内の./recordedに保存されます
> 保存先を別HDDにしたい場合は、docker-compose.ymlの
>> ./recorded:/usr/local/chinachu/recorded
>
> の./recordedを変更することで保存先を変更可能

* ポート番号: 20772

### 各種ファイル保存先

* 録画データ

`./recorded/`

* Mirakurun 設定ファイル

`./mirakurun/config/`

* Mirakurun OPT

`./mirakurun/opt/`

* Chinachu 設定ファイル

`./chinachu/config/`

## License
This software is released under the MIT License, see LICENSE.
This software is released under the MIT License, see LICENSE.
15 changes: 0 additions & 15 deletions chinachu-user.service

This file was deleted.

121 changes: 61 additions & 60 deletions chinachu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,67 +1,68 @@
FROM node:10-alpine
# 使用するベースイメージを14-alpineに更新する。マルチステージビルドを利用して最終イメージをよりクリーンにする。
FROM docker.io/library/node:14-alpine AS build

RUN set -x && \
\
# パッケージを更新
apk upgrade -U --no-cache && \
\
# ビルドに必要なパッケージを導入
apk add -U --no-cache alpine-sdk python3 git bash && \
\
# Gitの設定を変更しChinachuをクローンできるようにする。
git config --global http.version HTTP/1.1 && \
\
# Chinachuをサブモジュールごとクローン
git clone --recursive https://github.com/chinachu/chinachu /src && \
\
# 必要なディレクトリを作成
mkdir /src/data/ /src/log/ /src/run/ /src/recorded/ /build/ && \
\
# ビルドに必要なファイルのみを移動する。
mv /src/common /src/package*json /build/ && \
cd /build/ && \
\
# Chinachuをビルド
npm install && \
npm update && \
npm audit fix

# processes.jsonをDockerや実行ユーザnodeでも使用可能なものに置き換える。
COPY ./processes.json /src/


####最終イメージ

# node:14-alpineは既にメンテナンスされていない為、最新のパッケージを使用できるようにalpine:latestを取得する。
FROM docker.io/library/alpine:latest AS update_baseImage

# ベースイメージ
FROM docker.io/library/node:14-alpine
LABEL maintainer "h-mineta <[email protected]>"

ENV DOCKER="YES"
ARG REPOSITORY="https://github.com/Chinachu/Chinachu.git"
ARG BRANCH="master"
# パッケージリポジトリの設定を更新
COPY --from=update_baseImage /etc/apk/repositories /etc/apk/repositories

# Chinachuのビルドとソースを、所有者をnodeとしてコピーする。
COPY --chown=node:node --from=build /src/ /app/
COPY --chown=node:node --from=build /build/ /app/

# ワーキングディレクトリを設定
WORKDIR /app/

ARG WORK_DIR="/usr/local/chinachu"
# ポートを開放
EXPOSE 20772

#node container default value
ARG USER_NAME="node"
# パッケージを更新
RUN apk upgrade -U --no-cache && \

RUN set -x \
&& apk upgrade --update \
&& apk add \
bash \
coreutils \
curl \
procps \
ca-certificates \
\
&& apk add --virtual .build-deps \
git \
make \
gcc \
g++ \
autoconf \
automake \
wget \
curl \
sudo \
tar \
xz \
libc-dev \
musl-dev \
eudev-dev \
libevent-dev \
perl-utils \
\
&& mkdir -p ${WORK_DIR} \
&& git clone ${REPOSITORY} ${WORK_DIR} \
&& chown -R ${USER_NAME} ${WORK_DIR} \
&& cd ${WORK_DIR} \
&& git checkout ${BRANCH} \
&& echo 2 | sudo -u ${USER_NAME} ./chinachu installer \
&& echo 4 | sudo -u ${USER_NAME} ./chinachu installer \
&& echo 5 | sudo -u ${USER_NAME} ./chinachu installer \
&& sudo -u ${USER_NAME} ./chinachu service operator initscript | tee /tmp/chinachu-operator \
&& sudo -u ${USER_NAME} ./chinachu service wui initscript | tee /tmp/chinachu-wui \
&& sudo -u ${USER_NAME} mkdir log \
\
&& chmod u+x /tmp/chinachu-operator /tmp/chinachu-wui \
&& mv /tmp/chinachu-operator /etc/init.d/ \
&& mv /tmp/chinachu-wui /etc/init.d/ \
\
# cleaning
&& cd / \
&& npm cache verify \
&& apk del --purge .build-deps \
&& rm -rf /var/cache/apk/*
# 動作に必要なパッケージを導入
apk add -U --no-cache curl ffmpeg bash coreutils procps-ng ca-certificates && \
npm install pm2 -g

COPY services.sh /usr/local/bin
COPY config.sample.json ${WORK_DIR}
# コンテナ内の実行ユーザをnodeとする。
USER node:node

WORKDIR ${WORK_DIR}
CMD ["/usr/local/bin/services.sh"]
EXPOSE 10772 20772 5353
# コンテナをchinachuが起動する実行ファイルとする。
ENTRYPOINT ["pm2-runtime"]
CMD ["./processes.json"]
29 changes: 0 additions & 29 deletions chinachu/config.sample.json

This file was deleted.

Loading