SATA付きARMボードでNextcloudサーバ構築 CubieBoard5

はがきサイズのSATA端子付きシングルボードコンピュータに2.5インチのHDDを取り付けて、最新版のNextcloud(Ver.13)をインストールしてみました。

インストール手順を記録しておこうと思います。


使用する材料

CubieTruck Plus(Cubieboard5)

こちらの記事でご紹介させて頂きました

32bit ARM 8コアCPU、RAM 2GB、eMMC 8GBを搭載したシングルボードコンピュータです。ケース(アクリル板とスペーサー)が付属しており、2.5インチのHDDやSSDを収納することができます。

2.5インチSATAストレージ(HDD、SSD)

Cubieboard5は5Vと12VのSATA電源が用意されているため、容量が大きめのHDDも問題なく取り付ける事ができました。

microSDカード

OSイメージのeMMC書き込みに使用します。容量は2GB程度あれば十分かと思いますが、UHS-I(Class 10)対応品を使用するようにインストールドキュメントに記載がありました。

USB電源(コンセント)

Cubieboard付属のUSB電源ケーブルを使って、ARMボードとHDD/SSDに給電します。2A程度の電源を用意しました。


Nextcloudサーバインストール手順

大まかに次のような流れになります。

  1. Linux(Linaro)インストール
  2. HDD取り付け
  3. PHP 7.2インストール
  4. MariaDBインストール
  5. Nextcloudインストール
  6. Nextcloudチューニング(PHPキャッシュの設定等)

Linaro-Serverインストール

Cubieboard5購入時、内蔵eMMCにAndroidがインストールされています。Linuxイメージを書き込んだmicroSDカードを用意して、eMMCにインストールする流れになります。

  1. Cubieboardのダウンロードサイトにアクセス、Mega cloudのimageリンクをクリックします。
  2. Cubieboard5用のLinaro-serverイメージをダウンロードします。emmc-hdmiを選択しました。
  3. 7zipで展開し、microSDカードにイメージを書き込みます。Win32 Disk Imagerを使ってみました。
  4. Cubieboard5にmicroSDカードを取り付けて起動します。このときHDD/SSDは取り外します。HDDやSSDを取り付けて起動するとeMMCの書込みに失敗するようです
  5. 書込みが終わると自動で電源がOFFになりますので、microSDカードを抜いて電源を入れます。
  6. Linuxが正しく起動するかどうか確認します。大家族ですね!ペンギンさん自動でコンソールへログインされます。
    SSHでログインしてインストールする場合は、IPアドレスを確認しておきます。

    ifconfig

HDD/SSD取り付け

取り付けるドライブは、Windowsのdiskpart等であらかじめパーティションをすべて削除しておきます。FATやNTFSのパーティションがあると、Cubieboard5が起動しませんでした。

  1. Linuxをシャットダウンします。
    shutdown -h now
  2. HDD/SSDを取り付けて起動します。
  3. コンソールまたはsshでログインします。初期ユーザ/パスワードは以下のようです。
    • root/cubieboard
    • linaro/linaro
  4. 内蔵時計を現在時刻にセットします。
    ntpdate-debian
  5. タイムゾーンもセットしておきます。
    dpkg-reconfigure tzdata

    Asia/Tokyoを選択します。

  6. 取り付けたドライブにパーティションを作成、フォーマットしてUUIDを付加します。
    fdisk /dev/sda
    mkfs.ext4 /dev/sda1
    blkid /dev/sda1
  7. /etc/fstabを編集します。表示されたUUIDを使って/optにマウントしようと思います。
    UUID=<表示されたUUID> /opt ext4 user_xattr 0 1
    

  8. ドライブをマウントします。
    mount /opt

swap作成(必須)

後でPHPのビルドを行う都合上、swapを必ず作成します。RAM容量の大小や、空き容量の大小に関わらず、swapを作らないとコンパイルやリンクに失敗するようです(たまたまうまく行く事もありますが)。

  1. swapに使用するファイルを作成しswapを有効にします。容量は1GBにしました。
    dd if=/dev/zero of=/opt/swapfile bs=1024 count=1048576
    mkswap /opt/swapfile
    swapon /opt/swapfile
  2. /etc/fstabにswap行を追加します。
    /opt/swapfile swap swap defaults 0 0

PHP 7.2のビルド・インストール

Nextcloudの次期バージョン14から、PHPバージョン5系統は非対応になるようです。せっかく作ったサーバを永く使えるように、PHPバージョン7系統の最新版をインストールしようと思います。

  1. ビルドに必要なツールやライブラリをインストールします。
    apt-get install build-essential libxml2-dev apache2-dev libzip-dev libgd-dev libarchive-dev libcurl4-openssl-dev bison re2c libwebp-dev
  2. PHPのソースコードをダウンロードして展開します。
    cd /opt
    wget http://jp2.php.net/get/php-7.2.4.tar.bz2/from/this/mirror -O php-7.2.4.tar.bz2
    bzcat php-7.2.4.tar.bz2 |tar xvf -
  3. 次のオプションでオートコンフィグしました。
    ./configure --prefix=/opt/php7.2.4 \
    --with-apxs2 \
    --with-mysqli \
    --with-pdo-mysql \
    --enable-mbstring \
    --enable-zip \
    --with-zlib-dir=/usr/lib/arm-linux-gnueabihf/libz \
    --with-curl --with-openssl \
    --with-gd \
    --with-freetype-dir=/usr/include/freetype2 \
    --enable-fpm \
    --with-webp-dir=/usr/lib/arm-linux-gnueabihf \
    --with-jpeg-dir=/usr/lib/arm-linux-gnueabihf \
    --with-png-dir=/usr/lib/arm-linux-gnueabihf \
    --with-xpm-dir=/usr/lib/arm-linux-gnueabihf \
    --enable-gd-jis-conv
  4. ビルドします。念のためV=1を指定してビルド中のログを表示しました。
    make V=1
  5. ビルドが問題無さそうなら、テスト、インストールします。
    make test
    make install

    インストール先は/opt/php7.2.4になります。

  6. apacheのモジュールを変更してphp5からphp7へ切り替えます。
    a2dismod php5
    a2enmod php7
    service apache2 restart
  7. phpinfoを
    echo "<? phpinfo(); ?>" > /var/www/html/phpinfo.php

    ブラウザでアクセスして見てみると・・・

    http://<cubieboardのIPアドレス>/phpinfo.php

    あれ?

    phpが実行されず、テキストファイルとして見えているようです。

  8. どうやらphp7.confが無いようです。php5.confをコピーしてみました。
    cd /etc/apache2/mods-available/
    cp php5.conf php7.conf
    cd ../mods-enabled/
    ln -s ../mods-available/php7.conf .
    service apache2 restart

    再度ブラウザでアクセスすると、ビルドしたphp7.2が正しく動作しました。

MariaDBインストール

インストール後、データディレクトリをeMMCからHDDに移動しようと思います。

  1. MariaDBをインストールします。
    apt-get install mariadb-server

    途中、管理用のパスワードを入力しますが、あとでNextcloudインストール時に使用しますので控えておきます。

  2. いちど停止して
    service mysql stop
  3. /etc/mysql/my.cnfのdatadirを変更します。
    # datadir               = /var/lib/mysql
    datadir         = /opt/mysql
  4. /var/lib/mysqlディレクトリを/optにコピーします。何となくtarでコピー・・・
    cd /var/lib
    tar c mysql | tar xv -C /opt
  5. 起動して、データディレクトリが移動されたか確認します。
    service mysql start
    mysql -p
    select @@datadir;

  6. /opt/php7.2.4/lib/php.iniを編集してpdo_mysql接続用のソケットを設定します。
    pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
  7. apacheを再起動して設定を反映します。
    service apache2 restart

    これでPHP7.2からMariaDBへアクセスできるようになったと思います。

ホスト名、IPアドレス設定

Nectcloudをインストールする前に設定しておきます。

  1. ホスト名を設定します。
    echo <新しいホスト名> > /etc/hostname
  2. IPアドレスを固定にする場合、/etc/network/interfacesを編集します。
    # iface eth0 inet dhcp
    
    iface eth0 inet static
    address 192.168.○.○
    netmask 255.255.255.0
    gateway 192.168.○.○
  3. 他のPCから<ホスト名.local>でアクセスできるようにする場合、avahi-daemonをインストールします。
    apt-get install avahi-daemon
  4. 再起動して設定を反映します。
    reboot

Nextcloudインストール

インストールは基本的にNextcloud 13 Administration Manualの手順に従うかたちになります。

  1. Nextcloudの最新版をダウンロードして展開します。ディレクトリのオーナーも変えておきます。
    cd /opt
    wget https://download.nextcloud.com/server/releases/nextcloud-13.0.1.tar.bz2
    bzcat nextcloud-13.0.1.tar.bz2 |tar xvf -
    chown -R www-data:www-data /opt/nextcloud
  2. /etc/apache2/sites-available/nextcloud.confファイルを作成します。
    <Directory /opt/nextcloud/>
      Options +FollowSymlinks
      AllowOverride All
    
     <IfModule mod_dav.c>
      Dav off
     </IfModule>
    
     SetEnv HOME /opt/nextcloud
     SetEnv HTTP_HOME /opt/nextcloud
    
    Satisfy Any
    </Directory>
  3. 作成したコンフィグを有効化、nextcloudで使用するapacheモジュールを有効化、apacheを再起動します。
    ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf
    a2enmod rewrite
    a2enmod headers
    a2enmod env
    a2enmod dir
    a2enmod mime
    service apache2 restart
  4. ブラウザでアクセスしてみましょう。画面が表示されるまでしばらく時間がかかるようです。
    http://<cubieboardのIPアドレス>/nextcloud

    初期設定画面が表示されましたでしょうか?

  5. 初期設定情報を入力します。
    • 管理者ユーザ名
    • パスワード
    • データフォルダー:/opt/nextcloud/data
    • データベース:MySQL/MariaDB
      • ユーザ名:root
      • パスワード:MariaDBインストール時に有力したパスワード
      • DB名:nextcloud
      • ホスト名:localhost
  6. 初期設定が完了しました!

Nextcloudチューニング

インストールは終わりましたが、基本設定画面に「キャッシュを有効にしたほうが良い」ような警告が表示されます。

PHPとメモリーキャッシュを有効にします。

  1. /opt/php7.2.4/lib/php.iniを編集してopcacheを設定します。次の内容になりました。
    pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
    zend_extension=opcache
    [opcache]
    opcache.enable=1
    opcache.enable_cli=1
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=10000
    opcache.memory_consumption=128
    opcache.save_comments=1
    opcache.revalidate_freq=1
  2. apacheを再起動して設定を反映します。
    service apache2 restart
  3. /opt/nextcloud/config/config.phpを編集してメモリーキャッシュを有効にします。ArrayCacheを使ってみました。
      'memcache.local' => '\OC\Memcache\ArrayCache',

以上でインストール完了となります。お疲れ様でした!


以前、Raspberry PiでNextcloudサーバを構築しました。

こちらと比較した場合、ファイル転送速度はRaspberry Piが5MB/s程度に対し、Cubieboard5は10MB/s程度で動作していています。

32bit CPUということで、アップロード可能なファイルサイズが2GB以下となりますが、ファイルの転送速度やWeb画面の表示速度等、きびきびと動く感じで、特に問題は無さそうです。

しばらく使って様子を見てみたいと思います。

スポンサーリンク

フォローする

スポンサーリンク