POGO で遊ぶ

泣く子も黙る奇抜な外観で話題になったパーソナルクラウド Pogoplug Classic ですが、購入してみたものの実際に家の外からアクセスして役に立った!というシーンが一度もなく、ただの速度が遅い NAS としてしか使用していませんでした。結局カタツムリ型のオブジェクトとして玄関先に飾っている、という方は割と多いのではないでしょうか?

さて今回はこの物体に Arch Linux を導入して静音かつ省エネなサーバを構築してみる遊びをご紹介します。最近ではお洒落なデザインの Pogoplug Series 4 や Pogoplug Mobile もお手頃な価格になっていますので実験用に数台ポチっても良さそうですね。

まずは必要なものを準備します。

  • USB メモリ (4GB)
  • USB オーディオ (PL-US35AP)

USB メモリの容量は大きくても構いませんが初期化やバックアップにかかる時間を考慮すると 4G か 8G あたりが最適かと思います。それから主な目的は MPD による音楽再生サーバなので USB オーディオと必要に応じて外付けハードディスクをご用意ください。

今回は Pogoplug Classic を使用するので USB ポートが前面に 1 つ、背面に 3 つ。前面に接続すると見た目が汚らしいので背面のみ使用することにします。ちなみに Pogoplug Mobile の場合は USB ポートが背面に 1 つしかありませんが USB ハブ (ACアダプタ付がお勧め) は使用可能です。

それでは早速 Arch Linux をインストールしてみましょう。と言いたいところですが、この作業を行うと保証がきかなくなります。さらに Pogoplug 本来の機能であるパーソナルクラウドは使用できなくなります。すべて自己責任としてください。

シリアル通信できるツールが手元にあれば復旧手段として役に立つと思います。

Pogoplug Classic
http://archlinuxarm.org/platforms/armv5/pogoplug-v2-pinkgray

Pogoplug Series 4, Pogoplug Mobile
http://archlinuxarm.org/platforms/armv5/pogoplug-series-4

上記のサイトで "Installation" の手順に従ってコピペしていけば簡単に導入することができます。

目次

1. 初期設定
2. NTPD で時刻同期
3. SAMBA でファイル共有
4. Lighttpd + PHP で HTTP サーバ構築
5. MySQL で DB サーバ構築
6. PHPMyAdmin で DB 管理
7. MPD で音楽サーバ
8. おわりに

1. 初期設定

はじめに最新の状態に更新にしておきます。

pacman -Syu

ホスト名、タイムゾーン、キーボードマップを設定します。

hostnamectl set-hostname alarm
timedatectl set-timezone Asia/Tokyo
localectl set-keymap --no-convert jp106

2. NTPD で時刻同期

サービスをインストールして自動起動に登録します。

pacman -S ntp
systemctl enable ntpd

ntp.conf で NTP サーバを日本のものに変更します。

vi /etc/ntp.conf
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp

3. SAMBA でファイル共有

サービスをインストールして自動起動に登録します。

pacman -S samba
systemctl enable smbd
systemctl enable nmbd

smb.conf で共有ディレクトリを設定します。共有ディレクトリ (/share) と後で設定する HTTP サーバのドキュメントルート (/srv/http)を共有してみます。

cp /etc/samba/smb.conf.default /etc/samba/smb.conf
vi /etc/samba/smb.conf
workgroup = WORKGROUP
server string = ALARM
;printcap name = /etc/printcap
load printers = no

[share]
   path = /share
   read only = no
   public = yes
   writable = yes
   force user = root

[http]
   path = /srv/http
   read only = no
   public = yes
   writable = yes
   force user = root

SAMBA 用のユーザを追加します。

useradd -m pcguest
passwd pcguest
pdbedit -a -u pcguest

4. Lighttpd + PHP で HTTP サーバ構築

サービスをインストールして自動起動に登録します。

pacman -S lighttpd
systemctl enable lighttpd
pacman -S php-fpm
systemctl enable php-fpm
pacman -S fcgi

fastcgi.conf を編集します。

mkdir /etc/lighttpd/conf.d
cp /usr/share/doc/lighttpd/config/conf.d/fastcgi.conf /etc/lighttpd/conf.d/
vi /etc/lighttpd/conf.d/fastcgi.conf
server.modules += ( "mod_fastcgi" )
index-file.names += ( "index.php" )
fastcgi.server = (
    ".php" => (
      "localhost" => ( 
        "socket" => "/run/php-fpm/php-fpm.sock",
        "broken-scriptfilename" => "enable"
      ))
)

lighttpd.conf を編集します。

vi /etc/lighttpd/lighttpd.conf

末尾に下記を追記します。

include "conf.d/fastcgi.conf"

5. MySQL で DB サーバ構築

Pogoplug Series 4 や Pogoplug Mobile の場合はメモリが小さいのでインストールできませんでした。スワップを有効にすればインストールできるはずですが USB メモリにスワップファイルを作ると USB メモリの寿命が縮まるらしいのでご注意ください。以下、Pogoplug Classic の場合の手順です。

サービスをインストールして自動起動に登録し、初期設定を行います。

pacman -S mysql
systemctl enable mysqld.service
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl start mysqld.service
mysql_secure_installation

php.ini を編集します。

vi /etc/php/php.ini
date.timezone = Asia/Tokyo
extension=mcrypt.so
extension=mysqli.so
extension=pdo_mysql.so

6. PHPMyAdmin で DB 管理

PHPMyAdmin をダウンロードして /srv/http 配下に展開します。(/srv/http/phpmyadmin)

php-mcrypt をインストールします。

pacman -S php-mcrypt

MySQL に専用ユーザを作成します。

mysql -uroot -ppassword
source /srv/http/phpmyadmin/sql/create_tables.sql
grant all on phpmyadmin.* to pma@localhost identified by "pmapass";

config.inc.php を編集します。

cp /srv/http/phpmyadmin/config.sample.inc.php /srv/http/phpmyadmin/config.inc.php
vi /srv/http/phpmyadmin/config.inc.php
$cfg['blowfish_secret'] = '********';

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = '';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

7. MPD で音楽サーバ

サービスをインストールして自動起動に登録します。

pacman -S mpd mpc
systemctl enable mpd

/usr/share/doc/mpd/mpdconf.example を参考に /etc/mpd.conf を編集します。

cp /usr/share/doc/mpd/mpdconf.example /etc/mpd.conf
vi /etc/mpd.conf

下記の部分を編集しました。

music_directory                "/share/Music"
playlist_directory              "~/.mpd/playlists"
db_file                 "~/.mpd/database"
log_file                        "~/.mpd/log"
pid_file                        "~/.mpd/pid"
state_file                      "~/.mpd/state"
bind_to_address                "0.0.0.0"
audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "hw:0,0"        # optional
        mixer_type      "hardware"      # optional
        mixer_device    "default"       # optional
        mixer_control   "PCM"           # optional
        mixer_index     "0"             # optional
}
systemctl start mpd

mpd を起動しようとすると関連ディレクトリが存在しないとのエラーが出る場合があります。その場合は以下のように起動時のエラーを確認して適宜ディレクトリを作成してください。

systemctl state mpd

8. おわりに

以上が私の Pogoplug の環境構築手順です。USB ポートが 4 つもついていてそれなりに安定している省エネ Linux マシンが 3,000 円そこそこで手に入るというのは面白いと思います。普段は NAS であり、MPD による音楽再生サーバとしても活用しています。PHP + MySQL が入っているので WordPress を動かしてみましたところ若干もっさりしていましたが、簡単なシステムであれば快適に動かすことができると思います。興味が沸いた方で、使い道のない Pogoplug を捨てようかと考えている方は一度挑戦されてみてはいかがでしょうか。

Comments (4)

  1. 初めての投稿失礼します。
    新入社員研修でテキストエディタが必要になり、タブ機能や
    マクロが充実しているものは無いのかと探し回って、ようやくMeryに
    たどり着きました。ありがとうございます。
    合わせて、過去のブログも読まさせていただきました。

    最近トップページを一新されたと思いますが、過去の記事を
    読むことはもう不可能なのでしょうか?
    特に「続・ウンコの話」(?)の中に出てきたサプリの紹介が
    もう一度知りたく、コメントしました。

     |  yanai
  2. こんばんは、コメントありがとうございます。
    新入社員研修でお使いくださりありがとうございます、恐縮です。

    ブログシステムの入れ替えに伴い過去の記事の移行が難しかったのと、内容的にひどいものが多かったのでこれを機にインターネット上からは削除いたしました。

    「続・ウンコの話」という記事、手元にありました。

    この記事も内容的にあまり面白くないものなので復活はいたしませんが、サプリにご興味がおありとのことですので一部、記事を抜粋してご紹介させていただきます。記事中で取り上げたのは「セントジョーンズワート」と「BION3」で、両方とも佐藤製薬のサプリです。各サイトを見れば成分・効能などはすぐに分かると思いますので割愛しますが、使用感をお話しますね。

    セントジョーンズワートはハーブティーとしても有名なハーブで、このサプリはストレスの軽減と癒し効果があると言われています。ドイツなどでは実際にうつ病の治療薬として処方されていることもあり、個人差はあると思いますが私の場合は確かに効果があると感じられました。

    BION3 は乳酸菌のサプリですが、ビオフェルミンなどの普通の乳酸菌と違って生きたまま腸に届くというのがポイントです。さらにビタミン、ミネラルも含まれているので他のサプリが不要であり、しかも 1 日 1 錠で良いということなのでコストパフォーマンスが高いのが魅力的です。

    私の場合、過敏性腸炎という持病の改善が目的ですのでセントジョーンズワートでネガティブ思考を減らしてストレスを軽減するという精神的なアプローチと BION3 で腸内環境を整えるという身体的なアプローチを実践しておりました。

    これらで過敏性腸炎が完治したかというと、以前よりはマシになったものの現在も絶賛継続中であり、サプリ以外にもウォーキングをしたり食事のヒット率を記録したり、地味な努力もしております。

    職場に配属になった際にはストレスが溜まることもあるかと思われますので、あまり悩んだり無理をされずがんばってくださいね。

     |  Kuro
  3. 返信ありがとうございます。詳しい説明とても参考になりました。
    高卒でマイコン開発のプログラマーとして入社して1年間研修があり、あと
    2か月したら現場配属となる予定です。私も胃腸が弱く、ストレスなどで
    よく下します。これらのサプリは服用する場面が出てきたら是非使っていきたいと思います。
    これからも"Haijin Boys Online"を読み続けます。

     |  yanai
  4. 応援ありがとうございます。

    マイコン開発ですか!うらやましい限りです。
    昔から興味はあるのですが敷居が高すぎてほとんど理解できません。
    腸の弱さなら負けない自信はあるのですが^^;

    本職の方に読まれるとレベルの低い記事ばかりかもしれませんが、今後ともよろしくお願いいたします。

     |  Kuro

コメントを残す