ログイン
ログイン

KAGOYA CLOUD チュートリアル

第7回
Nextcloudでクラウドストレージをつくってみた

Nextcloudとは?

中小企業において「働き方改革」の文脈で、クラウド上に簡単にファイルを保存したり共有できるオンラインストレージへの関心が高まっています。Dropbox などさまざまな有料サービスがありますが、コストやセキュリティの観点から導入に踏み切れないケースも多いようです。

 

そんなご要望にお応えできるのが、Nextcloud です。▼

 

Nextcloud はオープンソースソフトウェアなので利用料金はかかりませんし、自分が管理するサーバーにインストールして運用すれば、保存されるデータを完全に自身の制御下に置くことができます。また、外部ストレージ連携機能もあるので、既存のストレージも有効活用できることが大きなメリットです。

ファイル操作は Webブラウザからのアクセス、アップロードなどができるのはもちろんのこと、Windows用、Mac用のデスクトップアプリや、iOS用、Andloid用のスマートフォンアプリを利用すれば、データの同期やバックアップも行え、どこからでも簡単に写真や動画を共有できるようになります。また、外部とファイルを共有したいときには公開URLをメールで通知することもシェアボタンから簡単に行えます。

その他にも、ユーザーとグループ間の読み書き権限の定義や、バージョン管理、監査ログなどビジネス用途で必須となる機能も充実していることが導入しやすいポイントです。

ここでは、KAGOYA CLOUDのVPS インスタンスに Nextcloud をインストールする方法を説明します。

  • CentOS 7 のインスタンスを作成

    1. CentOS 7 でインスタンスを作成します。

      ◇コントロールパネル > KVM > インスタンス
      https://vps.kagoya.com/#/kvm/server

    2. インスタンス一覧が表示されます。▼

    3. インスタンス作成
    4. 「インスタンス作成」をクリックします。▲

    5. インスタンス作成画面が開きます。▼

    6. スペック
    7. 任意のスペックを選択します。▲

    8. パッケージは、CentOS 7 64bit を選択します。▼

    9. パッケージ
    10. ログイン認証キーを選択します。▲
      ※ 未作成の場合はログイン認証キーを追加してください(ログイン用認証キー作成)。

    11. その他必須項目を入力し、「インスタンス作成」をクリックします。

  • サーバー環境の構築

    1. はじめに CentOS のパッケージを最新の状態にします。▼

      # yum update –y
    2. Nextcloud のインストールに必要なパッケージをインストールします。▼

      # yum install -y epel-release yum-utils unzip curl wget git bash-completion policycoreutils-python
    3. Apache をインストールします。▼

      # yum install -y httpd
    4. 必要なPHPモジュールをインストールします。▼

      # yum install -y rh-php72 rh-php72-php rh-php72-php-gd rh-php72-php-mbstring rh-php72-php-intl rh-php72-php-pecl-apcu rh-php72-php-mysqlnd rh-php72-php-pecl-redis rh-php72-php-opcache rh-php72-php-imagick
    5. シンボリックリンクを張ります。▼

      # ln -s /opt/rh/httpd24/root/etc/httpd/conf.d/rh-php72-php.conf /etc/httpd/conf.d/
      # ln -s /opt/rh/httpd24/root/etc/httpd/conf.modules.d/15-rh-php72-php.conf /etc/httpd/conf.modules.d/
      # ln -s /opt/rh/httpd24/root/etc/httpd/modules/librh-php72-php7.so /etc/httpd/modules/
      # ln -s /opt/rh/rh-php72/root/bin/php /usr/bin/php
    6. MariaDB をインストールします。▼

      # curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
      # yum install -y mariadb mariadb-server
    7. MariaDB の設定をします。▼

      # vi /etc/my.cnf.d/server.cnf
    8. 下記(緑色の文字列部分)を追記します。▼

      [mysqld]
      character-set-server = utf8
      innodb_buffer_pool_size=1G
      innodb_io_capacity=4000
      innodb_large_prefix=true
      innodb_file_format=barracuda
      innodb_file_per_table=1
    9. MariaDB を起動します。▼

      # systemctl start mariadb
    10. 自動起動設定を追加します。▼

      # systemctl start mariadb
    11. 初期設定をします。▼

      # systemctl start mariadb

      ※インストーラの指示に従ってmysqlのrootパスワード等を設定します。▲

    12. MariaDB にログインします。▼

      # mysql -u root -p

      ※パスワードの入力を求められるので先ほど設定したmysqlのrootパスワードを入力します。▲

    13. ログインできるとプロンプトが表示されます。▼

      MariaDB [(none)]>
    14. データベースを作成します。▼

      MariaDB [(none)]> CREATE DATABASE nextcloud;
      MariaDB [(none)]> GRANT ALL ON nextcloud.* to nextcloud@'localhost' identified by 'password';
      MariaDB [(none)]>FLUSH PRIVILEGES;
      MariaDB [(none)]>exit

      ※ここでは、例として以下の情報でデータベースを作成します。▼

      データベース名nextcloud
      データベースユーザー名nextcloud
      データベースパスワードpassword
      ※安全なパスワードを設定してください。
  • Nextcloud のインストール

    1. Nextcloudの最新パッケージのダウンロードURLを確認します。▼

      Nextcloud Download Page
      https://nextcloud.com/install/
      ◇Download for server > Archive file > Download Nextcloud

    2. 確認したURLでサーバーにNextcloudをインストールします。▼

      # wget https://download.nextcloud.com/server/releases/nextcloud-16.0.1.zip
      # unzip nextcloud-16.0.1.zip -d /var/www/html
      # mkdir /var/www/html/nextcloud/data
      # chown -R apache:apache /var/www/html/nextcloud
    3. ※ここではバージョン16.0.1を /var/www/html/nextcloudにインストールします。

    4. Apache の設定ファイルを追加します。▼

      # vi /etc/httpd/conf.d/nextcloud.conf
    5. 下記を記述します。▼

      <VirtualHost *:80>
       DocumentRoot /var/www/html/nextcloud/
       ServerName  storage.example.com
      
      <Directory "/var/www/html/nextcloud/">
       Require all granted
       AllowOverride All
       Options FollowSymLinks MultiViews
       <IfModule mod_dav.c>
        Dav off
       </IfModule>
      </Directory>
      
      </VirtualHost>
      
      <Directory "/var/www/html/nextcloud/data/">
       Require all denied
      </Directory>
      
      Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav
      Redirect 301 /.well-known/caldav  /nextcloud/remote.php/dav
      Redirect 301 /.well-known/webfinger  /nextcloud/public.php?service=webfinger
    6. ※ここでは例としてstorage.example.comというホスト名で設定します。設定するホスト名でアクセスできるよう事前にDNS設定をお済ませください。

    7. Apache を起動します。▼

      # systemctl start httpd
    8. 自動起動設定を追加します。▼

      # systemctl enable httpd
    9. SELinuxを設定します。▼

      # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
      # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
      # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
      # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess'
      # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
      # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty(/.*)?'
      # restorecon -R '/var/www/html/nextcloud/'
      # setsebool -P httpd_can_network_connect on
    10. http://storage.example.com/ にアクセスし、ログイン画面が表示されることを確認します。▼

    11. パッケージ

      ※設定はまだ行いません。DNSが反映し、設定したホスト名のURLでアクセスができることを確認してください。

  • SSLの設定

    1. ここではLet’sEncryptを設置します。▼

      # git clone https://github.com/letsencrypt/letsencrypt
      # cd letsencrypt
      # ./letsencrypt-auto certonly --webroot -w /var/www/html/nextcloud/ -d storage.example.com
    2. インストーラーの指示に従って次の項目を入力し、証明書を取得します。▼

      Enter email address: admin@example.com
      (A)gree/(C)ancel: A
      (Y)es/(N)o:: Y
    3. Apache に443番ポートのVirtualHost の設定をします。▼

      # vi /etc/httpd/conf.d/ssl.conf
    4. 最後の行に下記を追記します。▼

      <VirtualHost *:443>
       DocumentRoot /var/www/html/nextcloud/
       ServerName  storage.example.com
       
      <Directory "/var/www/html/nextcloud/">
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
        <IfModule mod_dav.c>
         Dav off
        </IfModule>
      </Directory>
        
      <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
      </IfModule>
        
      SSLEngine on
      SSLCertificateFile /etc/letsencrypt/live/storage.example.com/cert.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/storage.example.com/privkey.pem
      SSLCertificateChainFile /etc/letsencrypt/live/storage.example.com/chain.pem
        
      </VirtualHost>
    5. 常時SSLにするため80番ポートのVirtualHost の設定にリダイレクトの設定をします。▼

      # vi /etc/httpd/conf.d/nextcloud.conf
    6. 最後の行の直前の行に下記を追記します。▼

      Redirect permanent / https://storage.example.com/
    7. Apache を再起動します。▼

      # systemctl restart httpd
    8. Let’sEncryptの自動更新をするためにcron設定をします。▼

      # vi /etc/crontab
    9. 下記を追記します。▼

      0 5 1 * * /bin/certbot renew --force-renew --webroot-path /var/www/html/nextcloud/ --post-hook "systemctl reload
    10. cronを再起動します。▼

      # systemctl restart crond
    11. https://storage.example.com/ にアクセスして初期設定を行います。▼

      インスタンス作成
      管理者アカウント名nextcloud
      パスワードpassword
      ※安全なパスワードを設定してください。
      データフォルダーこのマニュアルの例では
      /var/www/html/nextcloud/data
      データベースを設定してください「MySQL/MariaDB」を選択
      データベースのユーザー名このマニュアルの例では
      nextcloud
      データベースのパスワードpassword
      データベース作成時に設定したデータベースパスワード
      データベースを設定してくださいこのマニュアルの例では
      nextcloud
      localhostlocalhost
    12. 設定項目を入力後、「セットアップを完了します」をクリックします。▼
      Nextcloudのインストールが完了するとスタートアップ画面が表示されます。

      スタートアップ画面
    13. スタートアップ画面を閉じると、Nectcloudの画面が表示されます。▼

      スタートアップ画面
    14. 以上でNextcloudのインストールは完了です。

    15.  
  • PHPの各種設定

      Nextcloud>設定>管理>概要 を開くと、セキュリティ&セットアップ警告が表示されます。
      パフォーマンス向上のためには次の設定を行います。

    1. PHPの設定をします。▼

      # vi /etc/opt/rh/rh-php72/php.ini
    2. 以下を編集します。▼

      memory_limit = 512M
      post_max_size = 2048M
      upload_max_filesize = 2048M

      ※Nextcloudの使用環境に合わせ、任意の値で設定を調整します。▲

    3. APCuの設定をします。▼

      # vi /var/www/html/nextcloud/config/config.php
    4. 下記(緑色の文字列部分)を追記します。▼

      <?php
      $CONFIG = array (
      'instanceid' => 'ocpdajlkefwz',
      'passwordsalt' => '1BCohF46WbFgJcxJKaOt6YZJOu1R+r',
      'secret' => 'wM6YKJ8T1Rna2s7QxI22+AZV1sBZh+m1EcRBJk4MFJI4cpOe',
      'trusted_domains' =>
      array (
      >0 => 'storage.example.com',
      ),
      'datadirectory' => '/var/www/html/nextcloud/data',
      'dbtype' => 'mysql',
      'version' => '16.0.1.1',
      'overwrite.cli.url' => 'http://storage.example.com/',
      'dbname' => 'nextcloud',
      'dbhost' => 'localhost',
      'dbport' => '',
      'dbtableprefix' => 'oc_',
      'dbuser' => 'nextcloud',
      'dbpassword' => 'password',
      'installed' => true,
      'memcache.local' => '\OC\Memcache\APCu',
      );
    5. OPcacheの設定をします。▼

      # vi /etc/opt/rh/rh-php72/php.d/10-opcache.ini
    6. 以下を編集します。▼

      opcache.enable=1
      opcache.interned_strings_buffer=8
      opcache.max_accelerated_files=10000
      opcache.memory_consumption=128
      opcache.save_comments=1
      opcache.revalidate_freq=1
    7. Apache を再起動します。▼

      # systemctl restart httpd
    8. 以上でNextcloudの初期設定は完了です。

    9.  
KAGOYA CLOUD
チュートリアル トップへ