6
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ARM64のサーバ+DockerでNextcloudを動かす

Last updated at Posted at 2017-10-13

概要

先日ROCK64というメディアサーバに特化したシングルボードコンピュータコンピュータを購入しました。
用途は外付けHDDを繋げてメディアサーバとして用いることですが、その際にDocker使ってNextcloud立てられれば幸せだなぁと思ったのでやりました。
ARM64のOSが動いているものならRaspberry pi3とかでも動くと思います。
NextcloudのDBはMysqlが推奨なのでMariaDBのDockerImageを使いました。

※既にデータがある状態で使用する時はバックアップを取るなど十分注意して下さい。マウント先を間違えるなどするとデータが消えます。

→現在はOfficalでRaspberry Pi等のシングルボードコンピュータをサポートしているようです。

https://ownyourbits.com/nextcloudpi/

必要なもの

  • 64BitのOS (ROCK64の場合は公式のDebianでは動かないのでubuntu minimalを入れました)
  • ドメイン(外部から接続する場合)
  • Docker環境(docker-compose)
  • git(docker-composeのリポジトリを取ってくるのに使う)

手順

dockerの構築は以下のリポジトリに置いてあるのでcloneしてきます。
$git clone https://github.com/Khromium/NextCloudARM64.git

対象リポジトリに入ってdocker-compose.ymlを書き換えます。
#の部分を主に書き換えて下さい。下の実装ではmysqlのrootアカウントをそのまま使っています。

docker-compose.yml
version: '2'
services:
    nextcloud:
        depends_on:
            - db
        build:
            context: "./nextcloud"
            args:
                domain: "your.domain.com" #ドメイン設定
        extra_hosts:
            - "your.domain.com:172.18.0.2" #ドメイン設定
        ports:
            - "80:80"#ドメイン設定
        environment:
            MYSQL_USER: root #MYSQLのユーザ
            MYSQL_PASSWORD: foo #MYSQLのパスワード
            MYSQL_HOST: db
            MYSQL_DATABASE: nextcloud
        volumes:
            - "/mnt/usbhdd:/var/www/html/data" #データのマウント先。外付けHDDに指定しておくと便利
        links:
            - db
    db:
        build: "./maria"
        environment:
            MYSQL_ROOT_PASSWORD: foo #MYSQLのルートのパスワード
        volumes:
            - "./data/maria:/config/databases" #Mysqlのデータ保存先

設定し終わったらdocker-compose.ymlのあるディレクトリ上で
$docker-compose up --build
して一度Dockerを動かします。
問題なく起動すればサーバのipにブラウザから接続するだけでNextcloudが表示されます。初回はadminアカウントの設定があります。
上記コマンドで起動した際はCtrl+Cで停止できます。

これ以降にdockerを起動させる場合は--buildを外して-dを引数に付けて下さい。バックグラウンドで起動するようになります。停止の際は
$docker-compose stop
で止めます。

外部接続する場合

初回起動でadminのアカウントを設定後、dockerコンテナ内の/var/www/html/config/config.phpにドメインを設定します。
デフォルトではnano等のエディタが無いので入れてから行う必要があります。

$docker exec -it  docker_nextcloud_1 /bin/bash #dockerコンテナに接続
$apt-get update; apt-get -y install nano; export TERM=xterm #nanoのインストール&設定
$nano /var/www/html/config/config.php #編集
...
'trusted_domains' =>
  array (
    0 => '192.168.1.23',
    1 => 'your.domain.com' #ドメインを設定する
  ),
...

所感とか

ROCK64のRAMが4GBあるせいか、かなり快適でした。
HDDもUSB3.0対応していたのでダウンロードスピードは20~30MB/sぐらい出ました。
しばらく様子見で使ってみようと思っています。

2018/01/13追記
鯖が飛んだので再構築しようと思って最初からdocker-composeにhddのマウント設定を間違って書いたまま動かした。そしたら初期設定でrsyncが走っているようでHDDのマウント先のデータが消えた\(^o^)/オワタ
HDDマウントする際は慎重に...

おまけ SSL化

Nextcloudはデフォルトではapacheで動いているので設定ファイルを書き換える。

/etc/apache2/sites-available/ssl.conf
# VirtualHost内に Let's encrypt等で作った証明書を入れる。
SSLCertificateFile      /path/to/cert.pem
SSLCertificateKeyFile   /path/to/privkey.pem
SSLCertificateChainFile /path/to/chain.pem
# を設定

リダイレクト設定

/etc/apache2/sites-available/httpd.conf
# VirtualHost内
<ifModule mod_rewrite.c>
RewriteEngine On
LogLevel alert rewrite:trace3
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</ifModule>

設定関連を反映させる

$ a2enmod ssl
$ a2ensite sslconfigname
6
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?