目的
RaspberryPiにServiioメディアサービスをインストールする
要件
- Raspbian「Stretch」が機能するインストールを備えたRaspberryPi
- root権限
難易度
簡単
規約
- # –指定されたLinuxコマンドをroot権限で
rootユーザーとして直接実行するか、sudo
を使用して実行する必要があります コマンド - $ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります
はじめに
Serviioは、Javaで記述されたメディアサーバーです。無料版(残念ながらビールのように無料)と、リモートアクセスなどの追加機能を備えた「プロ」版の2つのバージョンがあります。このチュートリアルでは、最小バージョンのRaspbian「Stretch」を実行しているRaspberryPiへのServiioのインストールについて説明します。
依存関係のインストール
ServiioはJavaで記述されているため、使用するにはJava開発キットをインストールする必要があります。 RaspbianStretchリポジトリには2つのバージョンのJDKがあります。GPLv2
でリリースされたオープンソースバージョンです。 OpenJDK
と呼ばれるライセンス 、およびOracleの商用のプロプライエタリバージョン(パッケージは実際にはoracle-java8-jdkと呼ばれます)。どちらも正しく機能するはずですが、このチュートリアルでは前者を使用します。
# apt-get update && apt-get install --no-install-recommends openjdk-8-jdk ffmpeg x264
Serviioを入手してインストールする
必要なパッケージをすべてインストールしたので、Serviio tarballを取得する必要があります。ヘッドレスマシンで作業しているため、wget
を使用します。 タスクを達成するために。したがって、次のように実行します:
wget http://download.serviio.org/releases/serviio-1.9-linux.tar.gz
ダウンロードが完了したら、実際のServiioのインストールに進むことができます。 /opt
内のtarballのコンテンツを抽出します ディレクトリ:明らかに別のディレクトリを選択できますが、/ optは通常、自己完結型のサードパーティアプリケーションをホストするために使用されます。先に進みましょう:
# tar -xvzf serviio-1.9-linux.tar.gz -C /opt
-C
オプション(--directory
の略) )操作を実行する前に、ディレクトリを指定されたディレクトリに変更するようにtarに指示します。
Serviioのsystemdサービスを作成する
Serviioがインストールされたので、/opt/serviio-1.9/bin
内に2つのスクリプトが存在することを確認できます。 ディレクトリ:serviio.sh
およびserviio-console.sh。 1つ目はサーバーを起動し、2つ目はサーバーを制御するためのインターフェースを起動します。
この時点で、システムの起動時にserviioを起動するためにsystemdサービスを作成するために必要なものがすべて揃っています。このタスクを実行するには、小さなサービスファイルを作成する必要があります。ご存知のとおり、systemdは新しいlinux initシステムであり、現在すべての主要なディストリビューションで採用されています。これはオープンソースコミュニティで多くの議論の源となっていますが、間違いなく標準になっています。サービスを作成するには、お気に入りのエディターを起動して、以下のテキストを含むserviio.serviceというファイルを作成します。
[Unit] Description=Serviio media Server After=syslog.target network.target [Service] User=serviio ExecStart=/opt/serviio-1.9/bin/serviio.sh ExecStop=/opt/serviio-1.9/bin/serviio.sh -stop [Install] WantedBy=multi-user.target
systemdサービスファイルの構文を説明することはこのチュートリアルの目的ではありませんが、User=serviio
を含む行に注意してください。 命令。これを使用して取得したいのは、デーモンがserviio
で実行される必要があることを指定することです。 セキュリティ上の理由から、rootとしてではなくユーザー権限。 serviio
ユーザーはまだ存在しないので、作成して/opt/serviio-1.9ディレクトリとその中のすべてのファイルの所有権を与えましょう:
# useradd -r -U -s /sbin/nologin serviio && chown -R serviio:serviio /opt/serviio-1.9
あなたはおそらくuseradd
に精通しているでしょう コマンドですが、わかりやすくするために、提供されているオプションの目的を指定しましょう。 -r
オプションは、system account
を作成することを指定します 。システムアカウントにはエージング情報がなく、uid
値が1000未満の場合。このようなアカウントの場合、ホームディレクトリは作成されません。 -U
オプションは、ユーザーと同じ名前のグループも作成し、ユーザーをそのグループに自動的に追加するようにプログラムに指示します。最後に-s
を使用します 、ユーザーのシェルを指定しました。この場合、/sbin/nologin
を使用しました これはfake shell
です 。セキュリティ上の理由から使用しました。このように、サービスを実行しているユーザーは、実際のシェルを使用してコマンドを実行することはできません。
これで、serviioユーザーを作成し、サービスファイルを作成しました。次に、それを/usr/systemd/system
にコピーする必要があります ディレクトリ:
# cp serviio.service /etc/systemd/system
現在実行しているサービスを有効にするには:
# systemctl enable serviio.service
ここで、システムを再起動します。すべてがうまくいけば、起動プロセスが完了したときに、serviioサービスはすでにアクティブになっています。次のコマンドを実行して、ステータスを確認できます:
$ systemctl status serviio.service
Systemdは、デーモンのステータスについて通知します。例:
● serviio.service - Serviio media Server Loaded: loaded (/etc/systemd/system/serviio.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-09-28 21:29:18 CEST; 31s ago Main PID: 420 (java) CGroup: /system.slice/serviio.service └─420 java -Xmx512M -Xms20M -XX:+UseG1GC -XX:GCTimeRatio=1 -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -Djava.net.preferIPv4Stack=true [...]
ご覧のとおり、サービスはアクティブで実行されているため、すべてが期待どおりに実行されました。何か問題が発生し、サービスの起動に問題がある場合は、同じコマンドで提供されるログを使用して問題を解決できます。
マシンでファイアウォールを実行している場合は、ポート8895/tcp
も開く必要があります 、1900/udp
、23423/tcp
および23424/tcp
。最後の2つのポートは、コンソールを制御し、メディアブラウザにアクセスするためにそれぞれ必要です
制御サービス
サービスを制御するために、いくつかのオプションがあります。ヘッドレスマシンで実行しているため、グラフィカルコンソールにはアクセスできませんが、http://yourmachineip:23423/console/
に移動してWebインターフェースにアクセスできます。 同じLAN内の別のマシンから、またはAndroidアプリ「ServiiDroid」などのサードパーティアプリケーションを使用します。
可能なオプションの完全なリストは、ここで入手できます:http://serviio.org/apps"
。 「プロ」バージョンのserviioを実行している場合は、http://yourmachineip:23424/mediabrowser/
からアクセスできる統合メディアブラウザーを使用してカタログを探索することもできます。 。