もっと詳しく

Oracle Cloud のAlways Free枠を活用して構築したNextcloudサーバは、httpsのみの利用を前提として最後にhttp/80を閉じていました。実はこれが、 Let’s Encrypt による3ヶ月毎の SSL証明書更新 の弊害になる、とのご指摘いただき(有り難うございます!)まして、今回はその対策に当たり、 Snap 版 Nextcloud パッケージの要点を Snap の基本と共にまとめた、これは純粋な作業メモです。

Snapの基本

先ず、コンピュートインスタンスに現在インストールされている、Snapパッケージの一覧を確認してみます。インスタンスに元々入っているoracle-cloud-agentもSnapパッケージでした。

$ snap list
Name                Version      Rev    Tracking         Publisher   Notes
core18              20210722     2127   latest/stable    canonical✓  base
lxd                 4.0.7        21032  4.0/stable/…     canonical✓  -
nextcloud           21.0.3snap2  28426  latest/stable    nextcloud✓  -
oracle-cloud-agent  1.8.3.2781   15     latest/stable/…  oci.osi     classic
snapd               2.51.4       12886  latest/stable    canonical✓  snapd

続いてSnapベースのデーモンの稼働状況を一覧表示します。

$ sudo snap services
Service                                        Startup  Current   Notes
lxd.activate                                   enabled  inactive  -
lxd.daemon                                     enabled  inactive  socket-activated
nextcloud.apache                               enabled  active    -
nextcloud.logrotate                            enabled  inactive  timer-activated
nextcloud.mdns-publisher                       enabled  active    -
nextcloud.mysql                                enabled  active    -
nextcloud.nextcloud-cron                       enabled  active    -
nextcloud.nextcloud-fixer                      enabled  inactive  -
nextcloud.php-fpm                              enabled  active    -
nextcloud.redis-server                         enabled  active    -
nextcloud.renew-certs                          enabled  active    -
oracle-cloud-agent.oracle-cloud-agent          enabled  active    -
oracle-cloud-agent.oracle-cloud-agent-updater  enabled  active    -

Snapでインストールされたパッケージは、

/snap/bin

にシンボリックリンクが配されていて、インスタンス内では既に

/snap/bin

 へのパスは通っています。

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

$ ls -l /snap/bin
lrwxrwxrwx 1 root root  7 Jul 21 15:26 lxc -> lxd.lxc
lrwxrwxrwx 1 root root 13 Jul 21 15:26 lxd -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Jul 21 15:26 lxd.benchmark -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Jul 21 15:26 lxd.buginfo -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Jul 21 15:26 lxd.check-kernel -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Jul 21 15:26 lxd.lxc -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Jul 21 15:26 lxd.lxc-to-lxd -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Jul 21 15:26 lxd.migrate -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Aug 11 13:36 nextcloud.disable-https -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Aug 11 13:36 nextcloud.enable-https -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Aug 11 13:36 nextcloud.export -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Aug 11 13:36 nextcloud.import -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Aug 11 13:36 nextcloud.manual-install -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Aug 11 13:36 nextcloud.mysql-client -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Aug 11 13:36 nextcloud.mysqldump -> /usr/bin/snap
lrwxrwxrwx 1 root root 13 Aug 11 13:36 nextcloud.occ -> /usr/bin/snap

次に、インストールされているSnapパッケージの手動更新チェックと自動更新を確認してみると、デフォルトで4時間に一度の更新チェックがスケジューリングされていることが分かります。

$ sudo snap refresh --list
All snaps up to date.

$ snap refresh --time
timer: 00:00~24:00/4
last: today at 20:34 HKT
next: tomorrow at 04:30 HKT

 

それでは前回インストールしたSnap版Nextcouldのパッケージの詳細を確認します。

$ 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.logrotate:       simple, enabled, inactive
  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: 20 days ago, at 13:36 HKT
channels:
  latest/stable:    21.0.3snap2               2021-08-06 (28426) 306MB -
  latest/candidate: ↑                                                  
  latest/beta:      21.0.3snap2+git4.1c73b86  2021-08-24 (28436) 317MB -
  latest/edge:      master-2021-06-15         2021-06-15 (28366) 232MB -
  21/stable:        21.0.3snap2               2021-08-06 (28426) 306MB -
  21/candidate:     ↑                                                  
  21/beta:          ↑                                                  
  21/edge:          21-2021-06-15             2021-06-15 (28368) 228MB -
  20/stable:        20.0.11snap1              2021-07-09 (28395) 220MB -
  20/candidate:     ↑                                                  
  20/beta:          20.0.11snap1+git5.eea5f18 2021-08-24 (28434) 298MB -
  20/edge:          20-2021-06-15             2021-06-15 (28367) 220MB -
-略-
  9/stable:         9.0.53snap4               2020-06-26   (101) 134MB -
  9/candidate:      ↑                                                  
  9/beta:           ↑                                                  
  9/edge:           ↑                                                  
installed:          21.0.3snap2                          (28426) 306MB -

Snapパッケージの自動更新によって、最新パッケージへのアップデートが既に適用されていました。

Snapパッケージはその設定もSnapを通じて行うのが流儀らしく、Nextcloudパッケージの設定も次のようなJSON形式になっています。

$ sudo snap get -d nextcloud
{
	"mode": "production",
	"nextcloud": {
		"cron-interval": "5m"
	},
	"php": {
		"memory-limit": "512M"
	},
	"ports": {
		"http": 80,
		"https": 443
	},
	"private": {
		"mode": "production",
		"nextcloud": {
			"cron-interval": "5m"
		},
		"php": {
			"memory-limit": "512M"
		},
		"ports": {
			"http": 80,
			"https": 443
		},
		"snap": {
			"version": "21.0.3snap2"
		}
	}
}

 

ここまでSnapの基礎を一通りおさえてみましたが、次ページではSnap版Nextcloudに含まれるSSL証明書更新サービスを掘り下げてみます。

投稿 Snap版Nextcloudの保守とSSL証明書更新Fun Scripting 2.0 に最初に表示されました。