メインメニューを開く

差分

編集の要約なし
= インストール =とても簡単で、以下のコマンドを実行して、ReadyMediaをインストールするだけです。「外部からSSH接続したい」でも「IPアドレスが半固定」しかも「IPv6プラス」ってなると、なかなかIPv6に対応したDDNS(ダイナミックドメインネームサーバー)が見つからないです。<prebr/>sudo apt-get install minidlna<今のところメジャーなのが「[https://i.open.ad.jp/pre>OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」みたいなので、これを利用して外部から接続できるようにしてみたいと思います。
= 準備 = 現在のIPv6アドレスの確認 ==DLNAで共有?するためのディレクトリを適当に作成します。外部に公開したいサーバーのIPv6アドレスを調べます。<br/>googleで調べると「ifconfigで調べる」というのがたくさんヒットしますが、Debian9.9では「ifconfig」が非推奨になってしまったので、代わりに「ip」で調べます。(Raspbianは「ifconfig」で調べられます)今回は、「/share」ディレクトリを作成し、その配下に「movies」「photos」「musics」のディレクトリを作成し、それを共有するようにしてみます。<brsyntaxhighlight lang="bash">ip a</syntaxhighlight>以下のコマンドを実行して、それぞれのディレクトリを作成します。で、以下のような結果が得られるかと思います。<syntaxhighlight lang="bash">sudo mkdir 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/shareloopback 00:00:00:00:00:00 brd 00:00:00:00:00:00sudo mkdir inet 127.0.0.1/share8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/movies128 scope host valid_lft forever preferred_lft forever2: enxAABBCCDDEEFF: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000sudo mkdir link/shareether AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/photos24 brd 192.168.1.255 scope global enxAABBCCDDEEFF valid_lft forever preferred_lft foreversudo mkdir inet6 HHHH:IIII:JJJJ:KKKK:LLLL:MMMM:NNNN:OOOO/share64 scope global noprefixroute dynamic valid_lft 86398sec preferred_lft 14398sec inet6 PPPP:QQQQ:RRRR:SSSS:TTTT:UUUU/musics64 scope link valid_lft forever preferred_lft forever</syntaxhighlight>※ディレクトリパスは環境に合わせて変更してください。「inet6」の「scope global」となっている「HHHH:IIII:JJJJ:KKKK:LLLL:MMMM:NNNN:OOOO」がグローバルIPv6アドレスとなります。<br/>(セキュリティ的には危険ですが、試しにルーターの設定を「パススルーを許可する」にして、このアドレスにSSH接続してみると接続できるかと思います。もちろんアドレスが変わってしまえば接続できなくなりますが…)
また、ReadyMediaがアクセスできるように各ディレクトリの所有権を変更します。== 「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」に登録 ==次に「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」に登録していきます。<syntaxhighlight lang="bash"br/>sudo chown piまずは「[https:pi /sharesudo chown pi:pi /sharei.open.ad.jp/moviessudo chown pi:pi OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」にアクセスします。<br/share/photossudo chown pi:pi /share/musics>すると、画面下部に以下のような項目があるかと思いますので、入力していきます。<br/syntaxhighlight>[[ファイル:Ddns-setting-001.png | 400px]]
= 設定 =* ホスト名:任意のホスト名を入力します「/etc」ディレクトリに「minidlna.conf」ファイルが作成されるので、「nano」等のエディタで設定を変更します。<br/>* 初期IPv6アドレス(オプション):前段で取得したIPv6アドレスを入力します(デフォルトで「media_dir=/var/lib/minidlna」が設定されています。必要に応じてコメントアウトしてください。)* メールアドレス:ホストキー(後述します)紛失時に使用します。(登録しておいたほうが安全です)
== 共有設定 ===== 動画の共有 ===明示的に動画を共有したい場合は、「minidlna.conf」に以下の行を追記します。入力し終わったら「作成」ボタンをクリックします。<prebr/>media_dir=V,/share/movies「新しい DDNS ホスト 「example.i.open.ad.jp」 の作成が完了しました。」と表示されればOKです。<br/pre>「OK」ボタンをクリックします。
=== 画像の共有 ===すると以下の様な一覧が表示されます。(横長ではみ出てますwww)<br/>動画と同様に、画像を共有したい場合は、「minidlna[[ファイル:Ddns-setting-002.conf」に以下の行を追記します。png]]<pre>media_dir=P,br/share/photos</pre>* ホスト名(FQDN):IPアドレスの代わりに使うホスト名になります* IPv6アドレス:上の画像では「::1」と表示されてしまっていますが、実際は現在のIPv6アドレスが表示されます* ホストキー情報:ホストキーと合わせて、更新用の「ホスト名」「アドレス」「URL」が表示されています* 登録メールアドレス:登録時に入力したメールアドレスが表示されています* クエリ回数~操作:省略
=== 音楽の共有 ===音楽を共有したい場合は、「minidlnaちなみに、登録したWEBブラウザで「[https://i.open.conf」に以下の行を追記します。<pre>media_dir=M,/sharead.jp/musicsOPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」を開くと登録したホスト一覧が表示されるのですが、別のWEBブラウザで開くとホスト一覧が表示されません…。<br/pre>そんなときは、「過去に作成した DDNS ホストをリストに追加」機能を利用して、表示させたい「ホストキー」を入力するとこで表示できるようになります。
=== 組み合わせ ===例えばディレクトリに動画と画像が保存されていて、両方共有したい場合は、以下の様に設定します。<pre>media_dir=VP,/share/MoviesAndPhotosまた、その下の更新用「ホスト名」「アドレス」「URL」ですが、公開したいサーバーのIPv6アドレスが変わってしまったときに、公開したいサーバーから「ホスト名」「アドレス」にpingや「URL」にアクセスするとIPv6アドレスが最新の情報に更新されます。<br/pre>(ルーターからやっちゃダメですよ…ルーターのIPv6アドレスに書き換わっちゃうので…私はしばらくルーターからやってましたwww)
== 新しいファイルの監視 ==ファイルを格納したときに、自動的に共有する設定をします。<br/>【修正前】<pre>#inotify=yes</pre>【修正後】<pre>inotify=yes</pre>登録は以上です。
== systemdでIPv6の更新をする ==
systemdを使用して、一定間隔で「アドレス」にpingをするようにしてみます。<br/>先ずは、公開したいサーバーにログインして、以下のコマンドを実行します。
<syntaxhighlight lang="bash">sudo nano /etc/systemd/system/ddns-update.service</syntaxhighlight>
新しくファイルを作成しているので、中身はなにもないはずです。<br/>ちなみに「/etc/systemd/system」ディレクトリは「systemd」で動かすサービスファイル置き場みたいです。<br/>つまり今回は「ddns-update」サービスを作成していきます。
また監視間隔を設定します。<br/>【修正前】次にファイルの中身ですが、以下の様にします。<pre>#notify_intervalsyntaxhighlight lang=895</pre"bash">[Unit]【修正後】<pre>notify_intervalDescription=60</pre>(単位は「秒」です。上記の例では1分間隔で監視します)ddns ipv6 update
[Service]
Type=simple
ExecStart=/bin/ping6 -c 1 [更新用IPv6アドレス]</syntaxhighlight>
[更新用IPv6アドレス]は先程の一覧の「更新用アドレス」に置き換えてください。<br/>上記の一覧の例を反映すると…
<syntaxhighlight lang="bash">[Unit]
Description=ddns ipv6 update
監視が必要なファイル数が非常に多い場合は、以下のコマンドを実行してファイル数を増やしておく必要があります。<br/>[Service](デフォルトは8192です)Type=simple<syntaxhighlight langExecStart="bash">sudo sysctl fs.inotify.max_user_watches=100000/bin/ping6 -c 1 2409:11:c0e0:468:6b16:a7eb:503e:c23b</syntaxhighlight>となります。
ちなみに「ping6」はIPv6用のpingコマンド、「-c 1」は1回実行という意味です。<br/>「Description」は好きな内容に変更しても大丈夫です。
ただ…このままだと再起動すると値がもとに戻ってしまいます。次にこれを一定間隔で起動するタイマーを作成します。<br/>以下のコマンドを入力してください。そこで「<syntaxhighlight lang="bash">sudo nano /etc/sysctlsystemd/system/ddns-update.conf」に以下の行を追記します。timer</syntaxhighlight>これも新規作成です。<br/>内容は以下の様にします。<syntaxhighlight lang="bash">fs.inotify.max_user_watches[Unit]Description=100000</syntaxhighlight>ddns ipv6 update timer
[Timer]
OnCalendar=*-*-* *:00:00
[Install]WantedBy= コマンド =timers.target</syntaxhighlight>内容的には「ddns-update.serviceを毎時0分0秒に起動する」と言って感じです。<br/>「ddns-update.service」ファイルと同様に「Description」は好きな内容に変更しても大丈夫です。インストールした状態でサービスは有効になっていますが…各コマンドは以下のとおりです。== 起動 ==準備ができたので、動かしてみます。<br/>動かすときは以下のコマンドを実行します。<syntaxhighlight lang="bash">sudo systemctl start ddns-update.timer</etcsyntaxhighlight>エラーが出なければOKです。<br/init.d>エラーが出たときは内容を確認してください。<br/minidlna start>内容が合っているのにエラーになるときは…「nano」上で改行をし直してみてください。<br/syntaxhighlight>(私は改行コードの違いでエラーが出ていることに気づくまで、結構時間がかかってしまいました)== 終了 ==正常に動いたなら、今度は起動時に動くようにします。<br/>以下のコマンドで起動時に動くようになります。<syntaxhighlight lang="bash">sudo /etc/initsystemctl enable ddns-update.dtimer</minidlna syntaxhighlight> ちなみに、止めたいときは…<syntaxhighlight lang="bash">sudo systemctl stopddns-update.timer</syntaxhighlight>== 状態確認 ==起動時に動かないようにするには…<syntaxhighlight lang="bash">sudo systemctl disable ddns-update.timer</etcsyntaxhighlight> です。  ここで少し疑問に思う人がいるかも知れません…<br/init>「ddns-update.service」と「ddns-update.dtimer」と実行コマンドの「sudo systemctl start ddns-update」の3つを関連付ける設定をしていません。<br/minidlna status>実は単純な話で、ファイル名だけで関連付いています。<br/>「ddns-update.service」と「ddns-update.timer」は「ddns-update」が同じになっています。<br/>これで「*.service」ファイルと「*.timer」ファイルはセットだと認識しています。<br/>また実行コマンドは「ddns-update.timer」と指定するだけで「*.service」ファイルを探しに行きます。 == ルーターの設定 ==「[[PiVPNによるOpenVPNのインストール#ルーターの設定]]」に書いているので、そちらを参照してください。<br/syntaxhighlight>sshのデフォルトポートを開放したいなら22番ポートを開放してください(22番ポートを開放するのは危険だと思いますが…)
= 参考サイト =
[httphttps://www.lanhome.co.jp/device/raspberry-pii.html Raspberry Piを用いたDLNAホームサーバー|Lanhome]<br/>[https://wikiopen.archlinuxad.jp/index.php/ReadyMedia ReadyMedia - ArchWiki]<br/>[https://www.wassyoi-hack.com/solve_no_space/ ラズパイのNo space left on deviceに対処する方法OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]
[[Category:Debian]]
[[Category:Raspbian]]
[[Category:Raspberry Pi]]
[[Category:DLNADDNS]]