alfort's Blog

Linuxエンジニアのメモ

Nextcloudのインストールとデータ置き場の変更


Nextcloud をFedora32にインストールする

Nextcloud とは

NextCloudを使うとDropBoxGoogle Driveのように、複数のマシン間で ファイル共有することができる。

https://nextcloud.com/

DropBoxGoogle Driveと異なり、自分で構築したサーバ上にファイルを置き共有するので 容量に合わせて毎月払ったりする料金の必要はない。

ということで、今回はこのNextCloudをインストールしてみた。

マシン環境

今回はFedora32 Workstation Editionをインストールしたいるサーバ上に構築した。

$ uname -a
Linux XXXXX 5.8.16-200.fc32.x86_64 #1 SMP Mon Oct 19 14:17:16 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/os-release
NAME=Fedora
VERSION="32 (Workstation Edition)"
ID=fedora
VERSION_ID=32
VERSION_CODENAME=""
PLATFORM_ID="platform:f32"
PRETTY_NAME="Fedora 32 (Workstation Edition)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:32"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=32
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=32
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation

構築方法

構築には色々な方法があるのだが、Snappyという パッケージマネージャをインストールして使うのが一番簡単らしい。

以下のようにしてインストールした。

また、他のPCやスマホからアクセス可能にするためにも、httphttpsで使うポートを開放する。

$ sudo dnf update
$ sudo dnf install snapd
$ sudo snap install nextcloud
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload

http://<IPアドレス>にアクセスすると使えるようになっていることがわかる。

Nextcloud上のデータの置き場所を変更する

インストールして使ってみたところ、Nextcloud上においたデータは/var配下にあり、 パーティションをすでに切っている場合は容量が逼迫することがある。

そこで、ファイルの置き場所を変えてみた。

設定ファイルの編集を行えばいいだけなのだが、前後にサービスの停止、起動が必要。

snap stop nextcloud
vi /var/snap/nextcloud/24051/nextcloud/config/config.php
snap start nextcloud

以下のように、datadirectoryの場所を変更すればいいだけ。 また、24051のように数値が入るが、これはPIDなのか毎回変わるように思う。

'datadirectory' => '/home/nextcloud/common/nextcloud/data',

今回は以下のように、比較的容量に余裕のある/home配下に置くようにした

<?php
$CONFIG = array (
  'apps_paths' =>
  array (
    0 =>
    array (
      'path' => '/snap/nextcloud/current/htdocs/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 =>
    array (
      'path' => '/var/snap/nextcloud/current/nextcloud/extra-apps',
      'url' => '/extra-apps',
      'writable' => true,
    ),
  ),
  'supportedDatabases' =>
  array (
    0 => 'mysql',
  ),
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'redis' =>
  array (
    'host' => '/tmp/sockets/redis.sock',
    'port' => 0,
  ),
  'log_type' => 'file',
  'logfile' => '/var/snap/nextcloud/current/logs/nextcloud.log',
  'logfilemode' => 416,
  'instanceid' => 'oc36prog4iwt',
  'passwordsalt' => '7BuO1/+dqsVGSi9d90UimDzAoOg6WU',
  'secret' => 'QtTiQ+0J9S+CQ7a7C6AyPhZfHgxLH1Bh4piHZF3rJ14OYEN9',
  'trusted_domains' =>
  array (
    0 => 'XXX.XXX.XXX.XXX',
  ),
  'datadirectory' => '/home/nextcloud/common/nextcloud/data',
  'dbtype' => 'mysql',
  'version' => '20.0.1.1',
  'overwrite.cli.url' => 'http://XXX.XXX.XXX.XXX',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost:/tmp/sockets/mysql.sock',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => '_yqt4yP-nDzLDL6AwDjdGsatTPzav3lIaCAzh-Rc9B3tiKAvVizFm1LzLl9GBO4p',
  'installed' => true,
  'maintenance' => false,
  'loglevel' => 2,
);