*当サイトのリンクにはAmazonアソシエイトやアフィリエイトリンクが含まれております。

Amazon Lightsail に NextCloud を入れるメモ

ここに書くような事は割と色々やってるんですが、余裕が無くて久々。
で、今回は会社の別グループの人に頼まれて、クラウドストレージを作る事に。
今所属している会社はIT音痴だらけなんで、使い易いようにNextCloudでオブジェクトストレージを連結したトコロ、好評だったようで別グループのも立てる事になりました。

そんなワケそのメモ。

広告

Amazon Lightsail に NextCloud

今回の環境はAmazon Lightsail。
使って見たかったんですよねー。安いし。

OSはubuntu 20.04
nextcloudは21.0.2
でやっていきます。

では行きます。

最初のお約束

# passwd root
New password: 
Retype new password: 

rootにパスワードを設定。
パスワードログインは許可して無いけど。


# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
# reboot
# apt-get install ubuntu-release-upgrader-core
# do-release-upgrade

アップデート系をやって。

# ufw allow OpenSSH
# ufw enable
# ufw status //確認

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)   

// httpとhttpsのポートも解放しておく
# ufw allow 80,443/tcp

Firewallの設定。
なんでか443のポートが開かなかったので、Lightsailのコンソールで開けた。

apache2 から nextcloud のインストールまで

apache2とかモロモロ


# apt install apache2 mariadb-server libapache2-mod-php7.4
# apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl
# apt install php7.4-gmp php7.4-bcmath php-imagick php7.4-xml php7.4-zip

apache2とかモロモロのインストール。

SQLの設定


# /etc/init.d/mysql start
# mysql -uroot -p

MariaDB [(none)]> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO 'username'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit;

SQLの設定。

NextCloudのダウンロードから設置

# wget https://download.nextcloud.com/server/releases/nextcloud-21.0.2.tar.bz2
# tar -xjvf nextcloud-21.0.2.tar.bz2

# cp -r nextcloud /var/www

apache2 の設定

nextcloud.conf の設定


# vim /etc/apache2/sites-available/nextcloud.conf

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>
</Directory>

<VirtualHost *:80>
  DocumentRoot /var/www/nextcloud/
  ServerName  your.server.com

  <Directory /var/www/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>
</VirtualHost>

設定ファイルの反映とか


# a2ensite nextcloud.conf

# a2enmod rewrite
# a2enmod headers
# a2enmod env
# a2enmod dir
# a2enmod mime

# a2enmod setenvif

# Satisfy Any

# service apache2 restart

userとgroupの変更

上までの流れでnextcloudにアクセス出来るはず。
と思ってたら何故かエラー。

ログを確認したらpermissionがなんちゃらと書いてあるんで、
userを調べたらrootになってた。

なので

# chown -hR www-data:www-data /var/www/nextcloud

で www-data に変更。

これでnextcloudに入ってDBと結びつけを出来ます。

SSLの設定

今の時代SSL必須なので、「Let’s Encrypt」でSSL化します。

# apt install certbot python3-certbot-apache
# vim /etc/apache2/sites-available/nextcloud.conf
...
ServerName your_domain
ServerAlias www.your_domain
...

# certbot --apache

//アドレスを設定
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): youraddress@address.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - -
(Y)es/(N)o: N

そんな感じで流れに沿ってやればSSL出来る。

//チェック
# systemctl status certbot.timer

~~~~
     Active: active (waiting) since Tue 2021-06-22 10:58:55 UTC; 9min ago
    Trigger: Tue 2021-06-22 17:47:42 UTC; 6h left
   Triggers: ● certbot.service
~~~~~

自動化のチェック。

Nextcloud の設定と最適化

cronの設定


//設定
# crontab -u www-data -e
*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

//確認
# crontab -u www-data -l
*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

# service cron restart

cronを設定する。

phpiniの設定

# vim /etc/php/7.4/apache2/php.ini

memory_limit = 512M
upload_max_filesize = 16G
post_max_size = 16G

# service apache2 restart

memory_limit を上げないとNextcloudに怒られます・
upload_max_filesize とかも上げとく。せっかくのクラウドストレージですからね。

“Strict-Transport-Security”の修正

“Strict-Transport-Security” HTTPヘッダが最低でも “15552000” 秒に設定されていません。セキュリティを強化するには、セキュリティTips ↗で解説しているHSTSを有効にすることを推奨します。
と怒られるので修正。


# vim /etc/apache2/sites-available/nextcloud-le-ssl.conf

//追記する
  <IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

# service apache2 restart

ご使用のシステムには、デフォルトの電話地域が設定されていません。の修正

これも修正。

# vim /var/www/nextcloud/config/config.php

//これを配列内に追記。
'default_phone_region' => 'JP',

メモリキャッシュの設定

メモリキャッシュが設定されていません。可能であれば、パフォーマンスを向上するため、memcacheを設定してください。より詳しい情報はドキュメントで参照できます。
と怒られるので設定します。

# apt install memcached
# apt install php7.4-memcached

# vim /etc/php/7.4/cli/conf.d/10-opcache.ini
//追記
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

# apt install php7.4-apcu

#vim /var/www/nextcloud/config/config.php

//これを配列内に追記。
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcache.locking' => '\OC\Memcache\Memcached',

# service apache2 restart

こんな感じ。

php-imagickモジュールのインストール。

このインスタンスのphp-imagickモジュールはSVGをサポートしていません。互換性の向上のために、インストールすることをお勧めします。
と怒られるのでインスト。

# apt install php-imagick imagemagick

mysql.cnfの設定

nextcloudのデベロッパーページのままの設定。


vim /etc/mysql/conf.d/mysql.cnf

//サーバーのメモリが豊富ならもっと上げて良いのだと思う。
innodb_buffer_pool_size=1G
innodb_io_capacity=4000

# systemctl restart mysql

タイムゾーンの設定やらないと mariadb の時間ズレてしまいました。
defaultはOSの設定を使うようなのでタイムゾーンの設定やります。

# timedatectl set-timezone Asia/Tokyo 

# timedatectl

               Local time: Mon 2021-10-20 19:48:26 JST
           Universal time: Mon 2021-10-20 10:48:26 UTC
                 RTC time: Mon 2021-10-20 10:48:27
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no


//SQLが立ち上がってたら再起動
# systemctl restart mysql

AWS S3連結

ストレージをAWS S3に連結します。
コレでストレージは無制限になり、膨大に保存出来ますね。

AWSのIAMでユーザーを作り、S3にプログラムからアクセス出来るようにしておく事が前提です。

#vim /var/www/nextcloud/config/config.php

//配列内に追記
'objectstore' => array(
        'class' => 'OC\\Files\\ObjectStore\\S3',
        'arguments' => array(
                'bucket' => '<バケット名>',
                'autocreate' => true,
                'region' => '<S3のリージョン>',
                'key'    => '<20文字の大文字英数字のアクセスキー>',
                'secret' => '<40文字の英数字記号のシークレットキー>',
                'use_ssl' => true,
                'use_path_style'=> false,
        ),
    ),

これでファイルをアップロードしてみて、S3にデータが出来ていれば終わりです。

お疲れ様でした。

自分用メモなんで、適当でスイマセン。


おすすめのコンテンツ

広告

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください