2013/06/27

RaspberryPi に ownCloud で俺様専用クラウドを❝再❞構築 (終了)

ownCloud クライアントアプリ アップデート

Androidアプリがアップデートされたのでインストールしてみる。
見事、インスタントアップロードが成功!

なんかスッキリしないけど、
これでようやく俺様専用クラウドの環境が整った。

Google+の自動アップロードをオフにしたほうがいいかもしれない。
巷で噂の予告なし垢BANに備えて。。。
予告なしはイカンよ、予告なしは。

しばらく連続運転して様子をみてみよう。

2013/06/18

Coffee Break

AndroidのownCloudクライアントからInstantUploadが出来ない件、
端末とアプリとの相性問題であることがほぼ確定。
別の端末で試したところ、あっさりと自動アップロードしてくれた。


どうしましょ。。。

2013/06/16

RaspberryPi に ownCloud で俺様専用クラウドを❝再❞構築 (5)

早くなるおまじないをかけてみる

$ sudo apt-get install php-apc

PHPで中間ファイルのキャッシュがどうたらこうたら・・・
うん、たしかに早くなってる気がする。

2013/06/13

Coffee Break

前回同様、AndroidのownCloudクライアントからInstantUploadが出来ない。
アップロードシークエンスに入った途端、アプリケーションが落ちてしまう。

なぜ動かないのか?謎でしょ!

たかが99円でも立派な有料アプリ。なんとしても使えるようにしないと。
サーバーが悪いのか、クライアントが悪いのか。。。



記事、結局自分メモな文体になってる。。。

2013/06/11

RaspberryPi に ownCloud で俺様専用クラウドを❝再❞構築 (4)

ownCloud インストール編

先にsuのパスワード設定と、普段アカウントにwww-dataグループを追加
$ sudo passwd
新しいUNIXパスワードを入力してください: [ パスワード ]
新しいUNIX パスワードを再入力してください: [ パスワード ]
passwd: パスワードは正しく更新されました

$ sudo usermod -G www-data hogehoge
リブートして確認
$ id

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Apache2の設定
$ sudo vi /etc/apache2/sites-enabled/000-default

       
<!--               Options Indexes FollowSymLinks MultiViews  -->
                Options -Indexes ExecCGI FollowSymlinks
<!--               AllowOverride None  -->
                AllowOverride All
                Order allow,deny
                allow from all
     


ownCloud本体のダウンロード
http://owncloud.org/install/
"Tar or Zip File"をクリックしてダウンロードダイアログを表示させ、
"Unix/Mac OS"のリンクアドレスをホストマシンのクリップボードにコピーする。

$ su -
# cd /var/www
# wget http://download.owncloud.org/community/owncloud-x.x.x.tar.bz2

あとは ownCloud Admin Manuals' に従ってインストール続行

# apt-get install apache2 php5 php5-gd php-xml-parser php5-intl
# apt-get install php5-sqlite smbclient curl libcurl3 php5-curl
  (sqliteを使うのでmysqlに関するパッケージは不要)

# tar -xjf owncloud-x.x.x.tar.bz2
# chown -R www-data:www-data owncloud

.htaccessの設定
owncloud の.htaccessをapacheの設定値として流用する
# cp /var/www/owncloud/.htaccess /etc/apache2/conf.d/owncloud.conf

# vi /etc/apache2/conf.d/owncloud.conf
(ファイル先頭に追加)
Alias /owncloud /var/www/owncloud
<Directory /var/www/owncloud>

(ファイル末尾に追加)
</Directory>

Apache2を再起動し、ブラウザでアクセスしてみる。
# service apache2 restart

http://192.168.xxx.yyy/owncloud
管理者アカウントを設定。
その他の詳細設定はお好みで設定(デフォルトのままでもOK)。


これでとりあえずは動く状態。

RaspberryPi に ownCloud で俺様専用クラウドを❝再❞構築 (3)

Raspberry Pi 初期設定編(わすれもの)

ntpを入れ替える
$ sudo apt-get remove ntp
$ sudo apt-get install ntpdate

cron設定
$ sudo crontab -e
# 1時間ごと(毎時0分)に、時刻合わせを行う
0 * * * * /etc/network/if-up.d/ntpdate > /dev/null 2>&1

ntpサーバーを近場に
$ sudo vi /etc/default/ntpdate
# NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
NTPSERVERS="0.ntp.nict.jp 1.ntp.jst.mfeed.ad.jp 2.ntp.ring.gr.jp"

ログを確認
起動時と毎時0分にsyslogに吐かれてるはず。
$ sudo cat /var/log/syslog

RaspberryPi に ownCloud で俺様専用クラウドを❝再❞構築 (2)

Raspberry Pi 初期設定編

Raspberry Pi にSSHでつないで初期設定をおこなう。
> ssh pi@192.168.xxx.yyy

$ sudo raspi-config

・8 Advanced Options → A5 Update
    なにはともあれアップデート

・3 Enable Boot to Desktop
    デスクトップ環境は必要ないので<No>を選択

・4 Internationalisation Options → I1 Change Locale
    en_US.UTF-8 UTF-8
    ja_JP.UTF-8 UTF-8
    を追加
    Default localeで
    ja_JP.UTF-8
    を選択

・4 Internationalisation Options → I2 Change Timezone
    Asia → Tokyo
    を設定

・8 Advanced Options → A2 Hostname
    raspi
    に変更

・8 Advanced Options → A3 Memory Split
    16
    に変更

・8 Advanced Options → A4 SSH
    Enable
    を設定

これでconfigは終了。
Finishを選ぶとリブートするかと聞いてくるのでNoを選択し、
先に普段ユーザーを作成する。

ユーザー追加
$ sudo adduser hogehoge
  パスワードとか色々設定

追加したユーザーがsudoを使えるようにする
$ sudo visudo
hogehoge ALL=(ALL) ALL
を追加

/var/wwwマウントポイントの作成
$ sudo mkdir /var/www

リブート
$ sudo reboot

新しく作った自分アカウントでRPiにログイン
> ssh hogehoge@192.168.xxx.xxx

アカウントpiの削除
$ sudo userdel -r pi

$ sudo visudo
pi に関する記述を消しておく


Raspbianのアップデート
※国内サーバーにリポジトリをミラーリングしてくれてる奇特な方がおられるので、
    ありがたく利用させていただく。
    https://twitter.com/kfujieda/status/301119397064486912

$ sudo vi /etc/apt/sources.list
 # deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
 deb http://ftp.jaist.ac.jp/raspbian/ wheezy main contrib non-free rpi

$ sudo apt-get update
$ sudo apt-get upgrade
を実行し、最新にアップデートする。

swapの設定
dphys-swapfileのリムーブ
$ sudo apt-get remove dphys-swapfile

swap領域に名づけ
$ sudo mkswap -L swappat /dev/sda3

swap領域の有効化
$ sudo swapon -L swappat

状態確認
$ cat /proc/swaps
Filename    Type  Size Used Priority
/dev/sda3                               partition 2191356 0 -1

fstabに登録
$ sudo vi /etc/fstab
LABEL=swappat   swap            swap    defaults        0       0

rebootしてチェック
$ cat /proc/swaps

不要になったswapファイルの削除
$ sudo rm /var/swap

2013/06/10

RaspberryPi に ownCloud で俺様専用クラウドを❝再❞構築 (1)

OSインストール編

不慮の事故(謎なスクリプトを動かしてしまい)により
活動停止に陥ってしまったRaspberry Pi
修復よりも、迷わず再構築をしようと考えるあたり、自分はドMなんだなぁ、と。

ついでにこのブログも人様に読んでもらえるものに書きなおす。
なお、ホストマシンはUbuntu

・前回同様、HDDでの運用(BootのみSD、システムをHDD)とする。
・OSのイメージファイルをSDに一旦展開するのではなく、
    イメージのマウント → ブート環境構築、とする。

準備するもの
1.SDカード
  ブート領域だけなので、128MB以上でOK。余ってるカードで十分。

2.USB-HDD
  必要なだけ。余ってるHDDで問題なし。


手順
1.OSイメージのダウンロード
  http://www.raspberrypi.org/downloads から
  「Raspbian "wheezy"」をダウンロード。展開しておく。

2.イメージファイルのマウント
◎オフセット値などを自動で調べる
 $ sudo kpartx -av wheezy-raspbian.img
  add map loop0p1 (252:0): 0 114688 linear /dev/loop0 8192
  add map loop0p2 (252:1): 0 3665920 linear /dev/loop0 122880

◎マウント
 $ sudo mkdir /mnt/sd1
 $ sudo mkdir /mnt/sd2
 $ sudo mount /dev/mapper/loop0p1 /mnt/sd1
 $ sudo mount /dev/mapper/loop0p2 /mnt/sd2

 これで /mnt/sd1 にブート領域、 /mnt/sd2 にシステム領域がマウントされる。

3.ブート領域のコピー
 SDカードを差し込み、dmesgなどでデバイス名を調べる。
 (自動マウントされた場合はアンマウントする)
 fdisk でパーティションを設定、mkfs.vfatでFat32フォーマットする。

 $ sudo fdisk /dev/mmcblk0
  コマンド (m でヘルプ): [ d ]  ← パーティション削除
  コマンド (m でヘルプ): [ n ]  ← パーティション作成
  Partition type: [ ]
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
  Select (default p): [ ]
  Using default response p
  パーティション番号 (1-4, 初期値 1): [ ]
  初期値 1 を使います
  最初 セクタ (2048-1987583, 初期値 2048): [ ]
  初期値 2048 を使います
  Last セクタ, +セクタ数 or +size{K,M,G} (2048-1987583, 初期値 1987583):  [ ]
  初期値 1987583 を使います
  コマンド (m でヘルプ): [ t ]
  選択したパーティション 1
  16進数コード (L コマンドでコードリスト表示): [ c ]
  パーティションのシステムタイプを 1 から c (W95 FAT32 (LBA)) に変更しました
  コマンド (m でヘルプ): [ w ]
  パーティションテーブルは変更されました!

 $ sudo mkfs.vfat -F 32 /dev/mmcblk0p1

 $ sudo mkdir /mnt/sdboot
 $ sudo mount -t vfat /dev/mmcblk0p1 /mnt/sdboot
 $ sudo cp /mnt/sd1/* /mnt/sdboot
 $ sudo umount /mnt/sdboot

4.システム領域のコピー
◎USB-HDDを挿し、fdisk等でパーティションを作成。
  1.システム領域  16GB程度(お好みで)
  2.データ領域   好きなだけ
  3.swap領域    2GB程度(お任せで)

◎mkfs.ext4でext4フォーマットする。
 $ sudo mkfs.ext4 /dev/sdb1
 $ sudo mkfs.ext4 /dev/sdb2

 $ sudo cp -a /mnt/sd2/* /media/SYSTEM/  (コピー先は環境によって異なる)

5.システムを書き換えて起動できるようにする
◎ブート手順を書き換え
 $ sudo vi /mnt/sd1/cmdline.txt
  root=/dev/mmcblk0p2 と定義してあるところを
  root=/dev/sda1 に書き換える。

◎固定IPの設定
 $ sudo vi /media/SYSTEM/etc/network/interfaces
  iface eth0 inet dhcp
  と定義してあるところを
  iface eth0 inet static
    address 192.168.xxx.yyy
    network 192.168.xxx.0
    netmask 255.255.255.0
    broadcast 192.168.xxx.255
    gateway 192.168.xxx.yyy
    dns-nameservers 192.168.xxx.yyy
  に書き換える。(xxx,yyyは環境による)

◎データ領域をマウントするように
 $ sudo vi /media/SYSTEM/etc/fstab
  #/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
  /dev/sda1       /               ext4    defaults          0       0
  /dev/sda2       /var/www        ext4    defaults          0       0

 mmcblk0p2の定義をコメントアウト
 sda1,2の定義を追加

◎tty2〜6を起動させないように
 $ sudo vi /media/SYSTEM/etc/inittab
  #
  1:2345:respawn:/sbin/getty --noclear 38400 tty1
  # 2:23:respawn:/sbin/getty 38400 tty2
  # 3:23:respawn:/sbin/getty 38400 tty3
  # 4:23:respawn:/sbin/getty 38400 tty4
  # 5:23:respawn:/sbin/getty 38400 tty5
  # 6:23:respawn:/sbin/getty 38400 tty6

 2〜6をコメントアウト

◎アクセス制限の設定
 $ sudo vi /media/SYSTEM/etc/hosts.deny
  ALL: ALL

 $ sudo vi /media/SYSTEM/etc/hosts.allow
  ALL: 127.0.0.1
  ALL: 192.168.0.0/255.255.255.0

6.後始末
◎USB-HDDのアンマウント

◎SDカードのアンマウント
 $ sudo umount /mnt/sdboot
 $ sudo rm -rf /mnt/sdboot

◎イメージファイルのアンマウント
 $ sudo umount /mnt/sd1
 $ sudo umount /mnt/sd2
 $ sudo kpartx -dv wheezy-raspbian.img 
  del devmap : loop0p2
  del devmap : loop0p1
  loop deleted : /dev/loop0
 $ sudo rm -rf /mnt/sd1
 $ sudo rm -rf /mnt/sd2


Raspberry Pi を起動して、SSHで接続できればOK

2013/06/09

ownCloudは完全動作していない

どうやら完璧な状態では動作していない。
Androidアプリからのインスタントアップロードが異常終了してしまう。
ログを見るとエラーも出てるし。

これは困った。
インスタントアップロードで写真をバックアップするのが本来の目的なのに
それが正常動作しないとすべてが無意味になってしまう。

さてどうしようか。。。

2013/06/04

swap 設定

どうやらうまくいったようなので、
swapを設定する。

まずdphys-swapfileのリムーブ
$ sudo apt-get remove dphys-swapfile

次にswap領域に名づけ
$ sudo mkswap -L swappat /dev/sda3

有効化
$ sudo swapon -L swappat

チェック
$ cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3                               partition 2191356 0 -1

fstabに登録
$ sudo vi /etc/fstab
LABEL=swappat   swap            swap    defaults        0       0

rebootしてチェック

ぜんぜんできてないことが発覚

rootfs の使用サイズがパーティションサイズ一杯(つまり空き容量なし)になってた。
書き込み等はできてるので使用上は問題ないのかもしれなが、
精神衛生上よろしくないので再構築することにする。

今回はswapパーティション対応にしてみる。

準備
・raspbianを展開したSD
・boot用SD/1GB程度(fatでフォーマット)
・USB-HDDを
  パーティション1/16GB程度(ext4でフォーマット)
  パーティション2/残り全部(ext4でフォーマット)
  パーティション3/2GB程度(linux-swapでフォーマット)
 でフォーマット。


boot用SDの構築
raspbianのパーティション1(bootパーティション)のファイルをboot用SDにコピーする。

cmdline.txt の編集
root=/dev/mmcblk0p2 と定義してあるところを
root=/dev/sda1 に書き換える。

rootfsの構築
raspbianのパーティション2のファイルをUSB-HDDのパーティション1にコピーする。
$ sudo -arp /media/(SDのPat2)/* /media/(USB-HDDのPat1)/


諸々ファイルを直接更新しておくと楽かもしれない。。。

2013/06/02

今更ながらアクセス制限設定

外部からの要求は全部ルーターで遮断してるので設定の必要はないが、
まあとりあえず。。

hosts.deny で全拒否
$ sudo vi /etc/hosts.deny
ALL: ALL

hosts.allow でローカル及び同一セグメントからのアクセス許可
$ sudo vi /etc/hosts.allow
ALL: 127.0.0.1
ALL: 192.168.0.0/255.255.255.0

DHCPサーバーも有効にしちゃえ

しばらくの間、dnsmasqのDHCPサーバーも有効にしてみることにする。

$ sudo vi /etc/dnsmasq.conf

no-dhcp-interface=eth0 ←消す

# ↓↓↓有効にする
# ドメインの付加されていない名前解決は上位DNSに転送しない
domain-needed

# プライベートIPの逆引きは上位DNSに転送しない
bogus-priv

# IPアドレスを払い出すインターフェイスの指定
interface=eth0

# domain= で指定されたドメインで補完する
expand-hosts

# 補完するドメイン
domain=local.example.com

# DHCPで割り当てたい範囲とリース時間 (192.168.0.100 〜 199 リース24時間)
dhcp-range=192.168.0.100,192.168.0.199,24h

# オプション番号3:デフォルトルートのアドレス設定
dhcp-option=3,192.168.0.1


サービス再起動で終わり
$ sudo service dnsmasq restart

ルーターのDHCPを切るのを忘れずに

DNSサーバーを立てる

ownCloud だけでは能力の無駄遣いなので、
いろいろサーバーを立ててみよう。
今回はDNSサーバー。

RPiを起動していない場合でもLAN内の他のマシンに影響がでないよう、
あくまでセカンダリのサーバーとして認識させることが前提。


dnsmasq
が簡単らしいのでそれで。

$ sudo apt-get install dnsmasq

hostsファイルをDNSが参照するので、
LAN内で名前解決したいアドレスを記述する。

$ sudo vi /etc/hosts
192.168.xxx.yyy   hogehoge
などなど

$ sudo vi /etc/resolv.conf
hostsファイルで解決できない場合は上位DNSに問い合わせる仕組みのため
resolv.confに上位DNSのアドレスが記述されていること。


DHCPは動かさないので
dnsmasq.conf に明示
$ sudo vi /etc/dnsmasq.conf
no-dhcp-interface=eth0


dnsmasqを再起動すればおk
$ sudo /etc/init.d/dnsmasq restart


ルーターのLAN側DNSにRPiのIPアドレスを指定する。


・・・で、動かない、と。
ルーターがDNSアドレスの通知を怠ってるようだ。


追記
グーグル先生に教えてもらったところ、
家に設置してる某メーカーのルーターは、
・DHCPはルーターの機能を使用
・しかしDNSはルーター外のDNSサーバーを参照
というのは使用できないらしい。
だったら設定できないようにしとけよ、って話。
古いルーターなので、そろそろ引退してもらってもいいのかもしれない。

フォロワー