FreeNASによる家庭内FileServerの構築

FreeNAS9.3をHP MicroServerNL54にインストールして、家庭内のFileServerを構築しました。 写真や撮影動画、年賀状データなど、いろいろ安全に保存することを目的としています。

FileServerの特徴

  1. なるべく低消費電力(以前ラズパイで作ったNASよりは増えるが・・・)
  2. 安全に、古い低容量のHDD(SATA)の有効活用
    ⇒ いつ壊れるかわからない為、RAID-Z2(ダブルパリティ)によりDISK障害が2台までOK
  3. HDD交換時に容量を増やすことが可能
  4. 全データのデイリースナップショット、デイリーバックアップ
  5. (予定)iPhone/iPad、REGZA等から再生可能なメディアサーバーとしての利用
  6. (予定)外出先からクラウド的に、DropBoxのような使い方

 

構築手順

  • BIOSの設定 F10押す
  • Advanced PCI Express Configuration 32MB(デスクトップOSではないので128MBは不要)
  • Boot USB 1St,2ndにUSBメモリが来るようにする
  • FreeNAS最新をD/L
    http://www.freenas.org/download-freenas-release.html

  • FreeNASのISOイメージをUSBメモリに焼く
    Rufusというツールを使用する。書き込み先を間違えないように要注意!
    https://rufus.akeo.ie/

  • サーバにLAN、Keyboard、Display、USBスティックを接続

  • FreeNASインストーラが立ち上がる(立ち上がらない場合はBiosでUSB起動になってるか確認)

  • USBドライブ2つをチェック”*” する(これでミラー:Raid1的になる)

  • パスワード設定:root/xxxxxxxx

  • インストール始まる⇒すごく早い。3分くらい掛かる。

  • CUIのメニューが起動したら表示されているDHCPのURLに対して別マシンからブラウザで接続

  • ブートドライブ(USBメモリ)ミラーの故障テスト

       1)  Bootディスクの片方を引っこ抜く
       2)  Degradedになる(赤ランプ)
       3)  新しいUSBメモリまたは、引っこ抜いたUSBメモリをフォーマットしたものを差し込む
       4)  システム⇒Boot⇒状態でDegradedのディスクをクリック⇒画面下の「replace」または「交換」ボタンを押す
       5)  新しいディスクを選択⇒しばし待つ⇒正常(緑ランプ)になる

  • SATAディスク装填
    ※いろいろな古いSATAを取り混ぜてもOK
    ※ただし下記の場合、160GBが最小なので、(160GB×6台)-(160GB×2台…パリティ分2台固定)=640GBが有効容量となる

    ada0 WMAYP0E94WPR 500.1 GB Auto Always On Disabled Disabled true
    ada1 WD-WMANU1464793 500.1 GB Auto Always On Disabled Disabled true
    ada2 L3ACAQTG L3ACAQTG 160.0 GB Auto Always On Disabled Disabled true
    ada3 L3ACAM9G L3ACAM9G 160.0 GB Auto Always On Disabled Disabled true
    ada4 WD-WCAZA1150268 1.5 TB Auto Always On Disabled Disabled true
    ada5 S1XGJ9CS602168 1.0 TB Auto Always On Disabled Disabled true

  • USB外部ディスク(バックアップ用)接続

    da1 3.0 TB Auto Always On Disabled Disabled true

  • USBディスクが起動しないようにBIOSで優先度下げる

  • ボリュームの作成

    tmp_home_3t 304.8 GiB (10%) 2.4 TiB – – HEALTHY
    tmp_home_3t 304.8 GiB (11%) 2.3 TiB lz4 1.07x –
    raid_z2 200.5 GiB (22%) 679.5 GiB – – HEALTHY
    raid_z2 133.5 GiB (23%) 434.3 GiB lz4 1.08x –

  • autoexpandを有効に

    Shellから raid_z2,freenas-bootのautoexpand を onとして、一番小さなのHDDの容量が大きくなった際に、自動で raid_z2 の容量が大きくなる。

    [root@freenas ~]# zpool set autoexpand=on raid_z2
    [root@freenas ~]# zpool set autoexpand=on freenas-boot
    [root@freenas ~]# zpool get autoexpand

    NAME PROPERTY VALUE SOURCE
    freenas-boot autoexpand on default
    raid_z2 autoexpand on local
    tmp_home_3t autoexpand on local

  • Smart情報を監視してアラートをメールする。
    Tasks⇒S.M.A.R.Tテストの追加

  • メール送信設定
    アカウント⇒ユーザ⇒Rootのメールを設定

    システム⇒メール⇒
    メールサーバ設定
    xxxxxxxxxxxxxxxx
    送信元
    xxxxxxxxxxxxxxxx

  • IP固定化
    ネットワーク⇒インタフェースの追加
    NICを選択
    IPアドレス入力
    192.168.1.74

  • ネットワーク⇒全般設定
    DNS 192.168.1.1
    8.8.8.8
    GW 192.168.1.1

  • CIFS設定
    文字コード
    cp932

    補助パラメータ(レグザ向け)
    unix extensions = off

 

以上となる。

ラズベリーパイ2

欲しい!

ワンタイム「はんこ」サービス

社内の電子書類の承認印に最適!!

ワンタイム「はんこ」サービスを作りました。

ワンタイムはんこ

WordやExcelに貼り付け可能な押印証明つきの「はんこ」を簡単作成!

 

 

 

 

あなたの名前(苗字)とメールアドレスを入力するだけで、あなたの押印を証明するリンク付きの画像を簡単に作成できます。

WordやExcelに貼り付けすれば、あらゆる書面の承認印として利用することが出来ます。

※公的な文書や通常の印鑑の代わりとしての利用はできませんのでご注意ください。

ワンタイムマシンメール

未来や過去にメールを送れる!?

ワンタイムマシンメールサービスを作りました。

ワンタイムマシンメール

ワンタイムマシンメールは過去や未来にメールを送信します!!

 

 

 

 

使い方は簡単。未来や過去の日付を入力して「送信」ボタンをクリックするだけ。

あなたも、未来の自分にメッセージを贈りませんか?

Eclipse+Cordova(PhoneGap)事始め

そろそろ、Cordova(PhoneGap)によるAndroidアプリ開発を試してみたいと思っていた矢先、家族旅行がインフルでキャンセルに・・・そこで、簡単なアプリを作ってGooglePlayへの公開までしてみたので、構築手順をメモする。

  1. Eclipse/Java(JDK)のインストール
    下記にて、Eclipseの日本語化済みのAllInOneパッケージをDL&導入
    ⇒http://mergedoc.sourceforge.jp/
  2. Android SDKのインストール
    下記あたりにて、スタンドアローンのSDKをDL&導入
    ⇒http://developer.android.com/sdk/index.html#Other
  3. 上記 tools/android.bat から、Android開発に必要なライブラリをDL&導入
    □Android SDK Tool
    □Android SDK Platform-tools
    □Android SDK Build-tools
    □Android 5.0.1(API21) ・・・すべて
    □Android Support Liblary
    □Google USB Driver  など適当に
  4. Eclipseから、ADT Plugin for EclipseのDL&導入
    下記などを参考に導入
    ⇒http://www.javadrive.jp/android/adt/index1.html
  5. いよいよCordova(PhoneGapの派生)をDL&導入
    下記をまるごと参考にした
    ⇒http://zeninashi.com/eclipse-phonegap/
    ※作成したプロジェクトに対して必要なライブラリなどのビルドパスの追加とかも必要
  6. JqueryMobileを使いたいのでDL
    JqueryMobile(・・・min.js/・・・min.css)やJquery(・・・min/js)の最新D/L&導入
    プロジェクト>assets>www>配下にコピーして設置
  7. 実機デバッグするので、Android端末の「設定」で端末情報-ビルド番号を7回タップして開発モードにしたり、USBデバッグを許可したり、セキュリティーでどんなアプリでもインストール可能的な設定をONにしたり・・・
  8. index.htmlの実装
    今回は、GoogleMapを使用した1ファイルJavaScriptアプリをサンプル的に実装
    アプリ利用者の全員の所在をMapに表示するだけのアプリを作成・・・アプリ名:「いまどこ」
    Map周りは、この辺を参考に実装
    ⇒http://ghweb.info/post-2709.html
    位置情報の連続取得について
    ⇒http://www.adobe.com/jp/devnet/phonegap/articles/phonegap_api_tutorial_3.html
    ⇒http://www6.ocn.ne.jp/~wot/web/html5/geoapi/wp.html
  9. サーバ側はPHP+PgSQL実装
    ※このへんはいつもの感じなので割愛
  10. GooglePlayへの登録
    下記を参考にDeveloper登録(2000円位)
    ⇒http://dev.classmethod.jp/smartphone/android/android-app-how-to-release/
  11. EclipseからAPKファイルのインポートしてGoogleにアップロード
    ※詳細は上記参照
    ※アプリのキャプチャ画像が必須で必要
    ・・・数時間後に登録されるらしいので翌日試すことに。
  12. 翌日・・・実機よりGooglePlayから実際にアプリをDLしてみる
    下記が今回登録した超適当サンプルアプリ
    ⇒https://play.google.com/store/apps/details?id=jp.tkn.imadoko_tet
  13. 動作確認OK。バグバグなので要注意。

Eclipse苦手なこともあり、ここまでで4,5時間を要してしまったが、ひと通り試せたのでOKとした。このサンプルアプリをブラッシュアップしてワンタイムシリーズ化するか、すでに提供済みのワンタイムシリーズものを、Androidアプリ化するか、検討中。あんど、せっかくマルチデバイス可能なPhoneGapを使用しているので、Xcode+CordovaでIOS開発を試してみるとかもやってみたいと思っています・・・

祝日休日一覧API

とある方面からのご要望で、「指定年月」や「指定年」の祝日一覧取得APIを作成したので公開いたします。祝日データは、ほとんどGoogleCalendarのものを使用しています。

URL

http://api.tkn.jp/holiday.php

引数

  • dn=1  土日含める
  • html=1  ブラウザ表示用
  • yyyy=[年]  指定した西暦年(1年分)の祝休日を表示
  • yyyymm=[年月]  指定した年月の祝休日(1ヶ月分)を表示

例)現在月±1ヶ月の祝日 CSV形式のAPI出力

http://api.tkn.jp/holiday.php

例)2014年4月の祝日+土日、HTML出力(Excelにコピペ用)

http://api.tkn.jp/holiday.php?dn=1&yyyymm=201404&html=1

例)2014年の1年間の祝日 CSV形式のAPI出力

http://api.tkn.jp/holiday.php?yyyy=2014

さくらVPS が Kernel Panic で復旧作業メモ

 

 

本日朝、いつもの様にVPSへSSH接続しようとしたところ、接続できず・・・
で、VPSのコンパネから、VNC経由で確認した所、何やらエラーたくさん出力されており・・・うんともすんともいわず・・・

仕方なくハードリセットしたのですが、起動せず・・・Kernel Panicの文字が・・・

もしや、最近話題になっていた、Bashの脆弱性をついてクラッキングされたのか?確かにまだパッチ当ててなかったなぁと反省している場合ではなく、このサーバには、いろいろ作りかけのソースの類がバックアップされていないことを思い出し、取り急ぎは、ソースの復活を目標に作業開始。メモを残す。

レスキューモードで起動の巻

まずは、ファイルが残っているのか確認するためにも、CentOSインストールメニューのレスキューモードを起動することにした。

・さくらのVPSのコンパネから【カスタムOSのインストール】を選択
・OSはデフォで使っていたので、【CentOs6(x86_64)】を選択
・すぐに、【リモートコンソール】⇒【VNCコンソールを開く】⇒【HTML5】で画面を表示
・インストーラが起動するのでレスキューモードを選択
・言語設定、キーボード設定(JをクリックしてどちらもJPにする)などを行い、ネットワーク設定は一旦スキップした。
・シェルを起動し、/mnt/sysimage にマウントされているファイルシステムを確認した所、ソースが残っていた!!ひとまず安心~。一旦、shutdown -r now で再起動。

ネットワーク設定の巻

インストーラで前回スキップしたネットワーク設定を行う。
・eth0 を選択
・IPにGlobalIPを入力、サブネットは23を入力
・GateWayアドレスは下記のような規則性があるみたい。
[GlobalIPの1組目].[GlobalIPの2組目].[GlobalIPの3組目の数値-1 したもの].1 を入力
・DNSはとりあえずGoogleのやつ。8.8.8.8
・これでレスキューモードのシェル開いたらとりあえずネットワークつながった。これでSCPできる。

SCPでファイルをネットワークコピー

ターゲットのディレクトリをscp で別のVPSにコピーした

scp -r /mnt/sysimage/[targetPath] [user]@[GlobalIP]:/home/[user]

SCPのコピー先がない場合は、さくらのVPSは2週間無料お試しがあるので、新規で申し込みして、利用させてもらうのも良いかもしれない。

 

WindowsPCからNexus7にUbuntu13インストール

 

不注意で画面にヒビの入ったNexus7(2012モデル)ですが、使い道に困っていた所、UbuntuDesktopの導入記事が目についた。
こちらの記事では、母艦がLinuxからの導入ですが、Windows7から今回試したので、メモを残す。

今回の注意点は大きく3つ

・adb,fastboot等の複数のドライバがきちんと動作すること
・nexus7の設定画面で、開発者モード、USBデバッグをONになっていること
・Wifiの通信が不安定/ソフトキーボードが不安定

Nexus7を開発者モード/アンロック/ubuntuイメージ焼き

・nexus7を起動し、設定⇒タブレット情報⇒ビルド番号を7回タップして開発者モードに突入
・USBデバッグを許可(詳しい記事はこちら
・NexusRootToolkitをインスコ(詳しい記事はこちら
・同ツールの、FullDriverInstallGuidを実行
・UnLockを実行
・下記をダウンロード
・gzファイル(ubuntu本体のイメージ)を解凍しておく
・端末をbootloaderモードで起動する(VolDownボタンと電源ボタンを同時に長押し10秒位)
・Windowsのコマンドプロンプトを開きダウンロードしたファイルがあるディレクトリに移動する.
・コマンドプロンプトで以下のコマンドを実行してイメージファイルを端末に書き込む.
>fastboot erase boot
>fastboot flash boot ubuntu-13.04-preinstalled-desktop-armhf+nexus7.bootimg
>fastboot erase userdata
>fastboot flash userdata raring-preinstalled-desktop-armhf+nexus7.raw
・再起動(初期設定スクリプトの実行に少し時間がかかる)
>fastboot reboot

ubuntuの起動とSSH接続設定

・Ubuntuが起動するので、ユーザ/PWの設定等行う
・デスクトップが起動したら左上のUbuntuマークアイコンをクリックしtermを入力してターミナルを開く
※キー入力が出来ない(反応がない)場合は、強制再起動しか方法がないので、仕方なく電源を長押し
・ターミナル開いたら、まずは下記を実行
>sudo /sbin/iwconfig wlan0 power off (SSH経由で通信が遅い場合実行)
・リポジトリを変更(古いバージョンは別URLとなるため)
>sudo vi /etc/apt/sources.list
・最初の2行以外をDELETEして、2行のURLを下記に書き換える
http://ports.ubuntu.com/ubuntu-ports/
http://old-releases.ubuntu.com/ubuntu/
・Updateを実行
>sudo apt-get update
>sudo apt-get install openssl-server
>sudo /etc/init.d/ssh start

Nexus7へSSHでリモート接続しWordPressを動作させる

何故Wordpressをインストールするのか・・・Nexus7が低消費電力のサーバとしてどの程度使えるかを書くにするためです。

・LAMPのインストール
>sudo apt-get install tasksel
>sudo tasksel install lamp-server
・WordPressのインストール
>wget https://ja.wordpress.org/wordpress-4.0-ja.tar.gz
>tar xzvf wordpress-4.0-ja.tar.gz
>sudo mv ./wordpress /var/www/
>sudo chown www-data.www-data -R /var/www/wordpress/
>sudo mysql -ppasswd
※MySQLプロンプトでDB作成
>create database wordpress
・WordPressの動作確認
※下記は実際にNexus7をLinuxサーバ的に動作させているWordPressです

まとめ

今回、利用価値のなくなった、割れたNexus7をLinuxサーバとして動作させる事ができた。
少しもっさりしているような気がするが、消費電力がすくないので、自宅鯖として運用するには面白いかもしれない。

尚、メモリを半分位食っているXWindowを停止したり、サービスの自動起動等、時間が出来たら行う予定。

raspberry pi でFileServer

以前構築した、家庭用Fileserverのパイの電源を強制切断した所、RaspbianがBootしなくなってしまったため、再構築。

手元に余っている4GBのSDカードに2014-06のRaspbianのImgをWin32DiskImagerで焼きこみ、パイを起動。

インストール画面(CmdベースのGUI)でLocaleとかOverClockとかいろいろ設定して、再起動。Raspbianが正常にログインできることを確認した。

FileServerなので、Sambaは必須。下記でインストール。

 

Sambaのインストール
sudo apt-get install samba
sudo apt-get install samba-common-bin
Sambaの設定(レグザから共有できるようglobalの設定必要)
sudo vi /etc/samba/smb.conf
下記を設定ファイルの最下行に追記。
[global]
#下記、レグザ向き設定
unix extensions = no
unix charset = utf-8
dos charset = cp932
[share]
comment = share drive
read only = no
locking = no
path = /mnt/disk1
guest ok = yes
force user = pi

外付けUSB-HDDのマウントができるか確認(今まで使用していたHDD)

sudo mount /dev/sda1 /mnt/disk1

sudo umount /mnt/disk1

できた。自動マウント設定は下記。
sudo vi /etc/fstab
次の行を追加。
/dev/sda1 /mnt/disk1 ext4 defaults 0 0
IP変わるとやなので、固定IP化
固定IP 下記追加
sudo vi /etc/network/interfaces
iface eth0 inet static
address 192.168.1.33
netmask 255.255.255.0
gateway 192.168.1.1
最後に寝る前に、遅いので有名な、アップグレードを実行
システムを更新
sudo apt-get update
sudo apt-get upgrade
今日は一旦ここまで。

Linuxの時刻合わせ(忘れるのでメモ)

ntpdate -b ntp.nict.jp

これだけ。同期するにはNTPDでやるが面倒なので、これをCronに仕込めばOK。