snapでNextcloudを導入して手軽にGoogleDocぽく使う(snap版Nextcloud + OnlyOffice)

Nextcloud導入が面倒?snapを使うとこれだけでGoogleDocみたいなことができます(Debian sid amd64/Ubuntu 20.04 LTSで確認済み)．

$ sudo apt update && sudo apt upgrade
$ sudo apt install snapd
$ sudo snap install nextcloud
$ sudo /snap/bin/nextcloud.occ app:install documentserver_community
$ sudo /snap/bin/nextcloud.occ app:install onlyoffice

簡単に説明していきます．

OSの状態を最新にしておきます．

$ sudo apt update && sudo apt upgrade

snapを使うためにsnapdを導入します(最近のUbuntuだと標準で入ってると思います)．

$ sudo apt install snapd

snapでNextcloudを検索してみます．

$ snap find nextcloud
Name Version Publisher Notes Summary
nextcloud 18.0.4snap3 nextcloud✓ - Nextcloud Server - A safe home for all your data
spreedme 0.29.5snap1 nextcloud✓ - Spreed.ME audio/video calls and conferences feature for the Nextcloud Snap
onlyoffice-desktopeditors 5.5.1 onlyoffice✓ - A comprehensive office suite for editing documents, spreadsheets and presentations
qownnotes 20.6.2 pbek - Plain-text file markdown note taking with Nextcloud / ownCloud integration
nextcloud-port8080 1.01 arcticslyfox - Nextcloud Server
nextcloud-snap-abacao 11.0.3snap4 abacao - Nextcloud Server
nextcloud-nextant 11.0.0snap3 rmescandon - Nextcloud Server + search support
nextcloud-abacao 11.0.3snap4 abacao - Nextcloud Server
cashbox-nextcloud 11.0.2snap2 cashbox - Nextcloud Server for www.cashBOX.plus
nextcloudsnap 12.0.4snap1 oscarbrolin - Nextcloud Server - A safe home for all your data
ghostcloud 0.9.5 beidl - A modern cross-platform client for Nextcloud, ownCloud, WebDav.
htxucloud 12.0.3snap7 htxu - Nextcloud Server
carnet 0.22.1 alexandre-roux-m - Powerful note taking app with sync, online editor and android app
opentodolist 3.23.0 mhoeher - Todo list and note taking application
solr 0.1 rmescandon - Starts up solr as forking daemon
mdns-hostname 0.0.1 welike - mDNS mini-daemon to published hostname.local
nextcloud-stondino 15.0.10snap3+git1.ff25cb9 zmusselman - Nextcloud Server - A safe home for all your data
vmcloud-nextcloud 1.0.0 victoriususm - Nextcloud 16.0.3 Optimized-Boosted
feedreader 0+git.9ac478f7 ken-vandine - RSS client for various webservices
test003-nc 13.0.4.snap1 reinism - Nextcloud Server - A safe home for all your data
$ snap info nextcloud
name: nextcloud
summary: Nextcloud Server - A safe home for all your data
publisher: Nextcloud*
store-url: https://snapcraft.io/nextcloud
contact: https://github.com/nextcloud/nextcloud-snap
license: unset
description: |
Where are your photos and documents? With Nextcloud you pick a server of
your choice, at home, in a data center or at a provider. And that is where
your files will be. Nextcloud runs on that server, protecting your data and
giving you access from your desktop or mobile devices. Through Nextcloud
you also access, sync and share your existing data on that FTP drive at
school, a Dropbox or a NAS you have at home.
commands:
- nextcloud.disable-https
- nextcloud.enable-https
- nextcloud.export
- nextcloud.import
- nextcloud.manual-install
- nextcloud.mysql-client
- nextcloud.mysqldump
- nextcloud.occ
services:
nextcloud.apache: simple, enabled, active
nextcloud.mdns-publisher: simple, enabled, active
nextcloud.mysql: simple, enabled, active
nextcloud.nextcloud-cron: simple, enabled, active
nextcloud.nextcloud-fixer: simple, enabled, inactive
nextcloud.php-fpm: simple, enabled, active
nextcloud.redis-server: simple, enabled, active
nextcloud.renew-certs: simple, enabled, active
snap-id: njObIbGQEaVx1H4nyWxchk1i8opy4h54
tracking: latest/stable
refresh-date: yesterday at 21:53 JST
channels:
latest/stable: 18.0.4snap4 2020-06-08 (21413) 264MB -
latest/candidate: ^
latest/beta: 18.0.4snap4+git5.31f0acd 2020-06-09 (21469) 264MB -
latest/edge: master-2020-06-10 2020-06-10 (21487) 267MB -
18/stable: 18.0.4snap4 2020-06-08 (21413) 264MB -
18/candidate: ^
18/beta: ^
18/edge: 18-2020-06-10 2020-06-10 (21482) 265MB -
17/stable: 17.0.6snap1 2020-05-03 (20616) 229MB -
17/candidate: ^
17/beta: 17.0.6snap1+git10.8f765f8 2020-06-09 (21474) 249MB -
17/edge: 17-2020-06-10 2020-06-10 (21483) 250MB -
16/stable: 16.0.11snap1 2020-06-08 (21459) 225MB -
16/candidate: ^
16/beta: ^
16/edge: ^
15/stable: 15.0.14snap1 2020-01-20 (18374) 216MB -
15/candidate: ^
15/beta: ^
15/edge: ^
14/stable: 14.0.10snap1 2019-05-04 (13208) 202MB -
14/candidate: ^
14/beta: ^
14/edge: ^
13/stable: 13.0.12snap1 2019-05-03 (13155) 193MB -
13/candidate: ^
13/beta: ^
13/edge: ^
12/stable: 12.0.13snap1 2019-01-07 (10632) 206MB -
12/candidate: ^
12/beta: ^
12/edge: ^
11/stable: 11.0.8snap1 2018-05-10 (6942) 202MB -
11/candidate: ^
11/beta: ^
11/edge: ^

いくつかでてきますが，Publisherが nextcloud になっている公式のstableを使います．ちなみにこのコマンドを叩いた時点で19.0.0や18.0.5が出ていてこの記事執筆時点で18.0.6が出ています．ちょっと反映が遅いみたいですね．

snap版Nextcloudを導入

$ sudo snap install nextcloud

Install Nextcloud for Linux using the Snap Store | Snapcraft

しばらく時間がかかりますが，これでNextcloudと関連のApache httpd/PHP/MySQL等が設定済みの状態で導入されます．

$ ps aux | grep -i nextcloud
root 17628 0.0 0.0 1872 196 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/delay-on-failure mdns-publisher nextcloud
root 17615 0.0 0.1 1872 1168 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/nextcloud-cron
root 17657 0.0 0.1 1872 1200 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/renew-certs
root 17681 0.0 0.1 1872 1272 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/start-php-fpm
root 17712 0.0 0.1 1872 1216 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/start-redis-server
root 17765 0.0 0.6 258120 6008 ? Sl 00:10 0:00 mdns-publisher nextcloud
root 17987 0.0 0.1 1872 1200 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/run-httpd -k start -DFOREGROUND
root 18069 0.1 0.1 1872 1168 ? Ss 00:10 0:01 /bin/sh /snap/nextcloud/21169/bin/start_mysql
root 18111 0.0 0.1 1872 1100 ? S 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/mysqld_safe --datadir=/var/snap/nextcloud/21169/mysql --pid-file=/tmp/pids/mys
ql.pid --lc-messages-dir=/snap/nextcloud/21169/share --socket=/tmp/sockets/mysql.sock
root 18128 0.9 22.0 1815000 210060 ? Sl 00:10 0:08 /snap/nextcloud/21169/bin/mysqld --basedir=/snap/nextcloud/21169 --datadir=/var/snap/nextcloud/21169/mysql --plu
gin-dir=/snap/nextcloud/21169/lib/plugin --lc-messages-dir=/snap/nextcloud/21169/share --log-error=error.log --pid-file=/tmp/pids/mysql.pid --socket=/tmp/sockets/mysql.sock
root 18196 0.0 2.1 200580 21712 ? Ss 00:10 0:00 php-fpm: master process (/snap/nextcloud/21169/config/php/php-fpm.conf)
root 18980 0.0 0.1 1872 1276 ? S 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/httpd-wrapper -k start -DFOREGROUND
root 19017 0.0 0.0 6168 0280 ? S 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
root 19018 0.0 0.1 1211772 1612 ? Sl 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
root 19019 0.0 0.1 880108 1668 ? Sl 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
root 19020 0.0 0.1 1080512 1656 ? Sl 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
root 19221 0.0 0.0 1716012 0292 ? Sl 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND

これでもうデーモンも起動しているので対象マシンのホスト名やipアドレスをウェブブラウザに入力して任意の管理者ユーザのユーザ名とパスワードを入力して登録します．同じネットワークだと誰でも繋いで設定できてしまうので注意しましょう．

管理者ユーザ登録画面

「推奨アプリをインストール」にチェックを入れておくと便利な推奨アプリが導入されます．時間がかかるので後でもいいかもしれません．

これでとりあえずNextcloudが利用できるようになりました．実はここまでは snapパッケージが amd64以外にも arm64. armhf, i386, ppc64el に対応しているので armhf/arm64 な Raspberry Pi などでも動作します．

続いて OnlyOffice, community edition の server版を導入します．

ONLYOFFICE – ビジネス向けオンライン オフィス アプリケーション | ONLYOFFICE

Community Document Server – アプリ – App Store – Nextcloud

Nextcloudのウェブからも導入できるのですが，300MB程とサイズが大きく回線によってはタイムアウトしてしまいます．

その場合は occ コマンドで導入します．(snapなので nextcloud.occ コマンドを使います)

$ sudo /snap/bin/nextcloud.occ app:install documentserver_community

これでも失敗することがあります．その場合は手動でGitHub からアーカイブを入手して手動で展開して有効化します．(この方法だとamd64以外でも導入はできちゃいますが動かないので注意)

Releases · nextcloud/documentserver_community

$ COUNT=1; while :;do wget https://github.com/nextcloud/documentserver_community/releases/download/v0.1.6/documentserver_community.tar.gz && break; c=$(( $c + 1 )) ;sleep 10; done;echo $COUNT
$ sudo tar xvf ./documentserver_community.tar.gz -C /var/snap/nextcloud/current/nextcloud/extra-apps/
$ sudo chown -R root.root /var/snap/nextcloud/current/nextcloud/extra-apps/documentserver_community
$ sudo /snap/bin/nextcloud.occ app:enable documentserver_community

CollaboraはAppImageを使っていたのでファイル数は少なかったですがこちらは普通にディレクトリに展開されるようでたくさんあります．

$ sudo find /var/snap/nextcloud/current/nextcloud/extra-apps/documentserver_community | wc -l
12935

続いてOnlyOfficeアプリも導入します．

ONLYOFFICE – アプリ – App Store – Nextcloud

これはOnlyOffice Serverに繋いでやり取りするものです．Nextcloud のアプリ画面若しくは以下のコマンドで導入します．

$ sudo /snap/bin/nextcloud.occ app:install onlyoffice

これでNextcloudに戻って対応ドキュメントを開いたり新規作成するとOnlyOfficeが起動して編集できるはずです :)

アプリが導入されているけどうまく行かない場合はOnlyOfficeアプリを導入し直すとうまく行くかもしれません．(OnlyOfficeアプリがServerより先に導入されるとうまく行かない)

$ sudo /snap/bin/nextcloud.occ app:remove onlyoffice
$ sudo /snap/bin/nextcloud.occ app:install onlyoffice

とりあえずこれでお試しは出来る感じです．実際に運用するにはhttps化したりバックアップを定期的に取るようにしたりなど設定したほうがいいですがパスやコマンド以外は通常のNextcloudと同じだと思います．
主なパスやコマンドはこうなっています．

設定ファイル /var/snap/nextcloud/current/nextcloud/config/config.php

Nextcloudデータ，ログ /var/snap/nextcloud/common/

関連アプリ格納 /var/snap/nextcloud/current/

occ /snap/bin/nextcloud.occ

mysql-client /snap/bin/mysql-client

mysqldump /snap/bin/nextcloud.mysqldump

dbのアカウント情報は設定ファイルに載っています．

$ sudo grep db /var/snap/nextcloud/current/nextcloud/config/config.php
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbhost' => 'localhost:/tmp/sockets/mysql.sock',
'dbport' => '',
'dbtableprefix' => 'oc_',
'dbuser' => 'nextcloud',
'dbpassword' => 'wdwYevflNhziZDUxxG2OXJs6el4zThtkmX20Bijih7Zh_4XU58OkZs3TAt7TCJjt',

設定ファイルを編集してデーモンを再起動したい場合はこんな感じで再起動できます．

$ sudo snap restart nextcloud

てことでsnap版Nextcloudはお試しにはおすすめです．
OnlyOfficeは今のところamd64環境しか提供されていませんがRaspberry Pi などでも動くようにしたいと言っているのでこれも期待です．

ARM support planned? · Issue #69 · nextcloud/documentserver_community

try ubuntu core and nextcloud snap · Issue #90 · nextcloud/documentserver_community Raspberry Pi には導入できるけど動かない

Nextcloud 19 だと先日紹介したCollaboraも同様にWebから導入できるのでおすすめです．

Nextcloud 19からのNextcloudアプリ化したCollabora Online を試す – matoken’s meme