Raspberry piをbluetoothスピーカーにする

前回の「Raspberry piをNAS兼音楽プレイヤーにする(MPD編)」でRaspberry Pi にスピーカーを接続したので、今度は Bluetooth スピーカーの機能も持たせてみます。NASストレージ内の音楽だけでなく、スマホ内の音楽を再生したり、スマホからAmazon Musicなどを再生できるようになります。

ただ、音楽再生には十分ですが、遅延が大きいですので、動画再生やゲームなどには向いていません。

また狙ってはいなかったのですが、試してみたらマルチポイント接続もできました! スマホとPCを同時に接続して同時に再生することも可能です。

目指す構成

今までの NAS 内の音楽を再生する機能を持ちつつ、Bluetoothスピーカーの機能も持たせます。これにより、NAS内の音楽再生に加えて、Bluetoothで接続すればスマホ内の音楽やスマホで再生した Youtube、 Amazon Music などのサブスク系音楽も聞けるという、音楽再生を全て 1 つに集約したような音楽サーバを目指します。

A2DPの実装: pulseaudio bluetooth と bluealsa

Linux での Bluetooth スタックと言えば bluez なのですが、A2DPについては bluez 単体ではサポートしておらず、プラグインの形で別のソフトが機能提供しているようです。

そして bluez 用の A2DP プラグインの実装は2つあるようです。

  • pulseaudio bluetooth module
  • bluealsa (bluez-alsa)

ソフトウェアの構造としてはそれぞれ以下のような感じになります。

…続きを読む

Raspberry Pi2 のVPNサーバの実力は?

先日の記事で Raspberry Pi2 を自分専用 OpenVPN サーバにしました。

Raspberry Pi2 というと今ではそれほど性能は高くないので VPN サーバとして実用的な速度が出るのかが気になるところです。

今回、結構速いWiFiスポットがあったので VPN サーバの性能を測定してみました。

結果から言うと十分実用的なスループットが得られました。

 

まずは自宅の環境を説明します。自宅にはマンションタイプの光回線を引いていて、幸運にもマンションまでは 1Gbps で接続されているそうです。

自宅のルータに有線で接続した時のスループットが以下です。

スピードテストはUSENのインターネット回線スピードテストを使いました。

自宅のインターネット回線のスループット(有線LAN接続時)

…続きを読む

raspberry piで自宅VPN環境を構築(openvpn編)

買ってから今まで有効利用されずに家に転がっていた Raspberry pi2 を VPN サーバに仕立てあげてみました。非力な Pi2 ですが、なんとか実用できるレベルで使えています。

今ではコロナの影響もあって外でPC作業をすることはほとんどなくなりましたが、それ以前は気分転換にカフェや漫画喫茶でPC作業をすることもありました。無料のWiFiも増えてきましたし、ワイヤレスゲートを契約しているので、ある程度の場所ではWiFiに困らなくなりました。

ただ、やはりセキュリティ的にはちょっと安心できない気がするので、しばらくは無料の VPN Gate を使っていました。回線速度も結構速く、公衆無線LANの盗聴防止という意味では十分でした。VPNさえ繋いでしまえば、WPAなどの暗号化がされていないオープンなAPでも安心です。

とはいえ、VPN Gate も他人の家の回線を使っているという点では不安はあるので、自宅でもVPNサーバを立ち上げることにしました。

そんな VPN サーバを Raspberry Pi にインストールするまでを、忘れたときのために一からメモしていこうと思います。VPN関係なく Raspberry Pi をサーバに仕立てる共通的な作業も書いたので長くなってしまいました・・

…続きを読む

SSH で root のみパスワード認証を禁止する

本来なら SSH での root でログインを禁止したいところですが、ServersMan@VPSでは SSH 以外でのログイン手段が無いので、root ユーザのみ公開鍵認証だけは通して、パスワード認証は無効にする設定を行うことにしました。

一般ユーザはパスワード認証を許可します。

参考にしたのは以下のページ。

sshd_config の PermitRootLogin に without-password を設定するとパスワード認証以外でのみログインできるようになるらしいです。

/etc/ssh/sshd_config の以下の項目を変更しました。

PermitRootLogin without-password
PubkeyAuthentication yes

以下の設定はデフォルトで有効なので設定ファイルを変更していなければそのままで OK でした。

PasswordAuthentication yes
UsePAM yes

設定を変更したら sshd を再起動

# service sshd restart

別のターミナルから root でパスワード認証の場合はログインできないことを確認します。

ここで注意。確認は別のターミナルで行ってください。最悪 root だけでなく他のユーザでもログインできなくなる可能性もあるので、確認が取れるまではログインしているセッションを 1 つは残しておいたほうが安全です。

ちなみに、ajaxterm も ssh 経由で接続しているため、この設定を行うと ajaxterm 経由での root ログインも不可になります。

ServersMans@VPS で ssh のポートを変更する

ServersMan@VPS ではアタックを減らすために、デフォルトで SSH のポートを 22 から変更しています。

ただ全 VPS で共通のため、ServersMan@VPS を使っているとわかってしまえばポート番号もわかってしまうので、念の為ポート番号を変更しておきます。

まずは sshd の設定を変更します。ここでは例として 1234 に変更することします。

/etc/ssh/sshd_config の Port を変更します。

Port 1234

変更できたら sshd を再起動します。

# service sshd restart

別のターミナルから新しいポートに ssh で接続して、ログインできることを確認しておきます。

つづいて airdisplay (ajaxterm) の変更です。 ajaxterm も内部で ssh 接続しているので、こいつも合わせて変更しないと ajaxterm からのログインができなくなってしまいます。

変更するのはスクリプト本体です。(えっ!?)

/usr/local/share/ajaxterm/ajaxterm.py の 403 行目付近の -p オプションの数字を変更します。

    cmd=['ssh']
    cmd+=['-p1234']
    cmd+=['-oPreferredAuthentications=keyboard-interactive,password']
    cmd+=['-oNoHostAuthenticationForLocalhost=yes']
    cmd+=['-oLogLevel=FATAL']
    cmd+=['-F/dev/null','-l',login,'localhost']

設定ファイルじゃなくてハードコーディングなんですねぇ・・。

変更したら ajaxterm を再起動します。

# service ajaxterm restart

これでブラウザからログイン出来れば変更完了です。