ownCloudをUbuntu 18.04で一から構築してみた

個人用のownCloudサーバー(家サーバー)には、これまで公式で配布されているアプライアンス版(セットアップされたVirtualBoxの仮想マシン)を利用してきました。
中身について全く理解できていなかったので、1からセットアップして勉強した記録です。

あくまでも個人用で、FWの内側で動かすことを想定しているため、セキュリティー的には色々まずい点もある気がします。悪しからず…。


ownCloudのシステム要件はこちら
  • Ubuntu 18.04 LTS
  • Apache 2.4 + mod_php
  • PHP 7.3
  • MySQL

VirtualBox上のUbuntuに構築して、ネットワーク内のWindows共有フォルダーにWEBブラウザやWebDAVクライアントでアクセスできるようにするのが目的です。直接インターネットに公開はせず、サーバーはファイアウォールの内側に置き、別途運用しているnginxのReverse Proxyで公開します。

必須パッケージをインストールする


sudo apt update
sudo apt upgrade -y
sudo apt install -y apache2 libapache2-mod-php mariadb-server openssl php-imagick php-common php-curl php-gd php-imap php-intl php-json php-mbstring php-mysql php-ssh2 php-xml php-zip php-apcu php-redis redis-server wget

推奨パッケージをインストールする


sudo apt install -y ssh bzip2 rsync curl jq inetutils-ping smbclient php-smbclient coreutils php-ldap

  • WARNING
  • Ubuntu 18.04には、smbclient 4.7.6が含まれています。これには、SMBプロトコルのバージョン1のみを使用するという既知の制限があります。


smbclientの最新版をインストールする

ownCloudの外部ストレージ連携機能でLAN内のWindows共有フォルダーを使う場合、smbclientをインストールする必要がある。しかし上記の通り、Ubutnu 18.04のaptで入手できるsmbclientは4.7.6で、これはSMB 1.0にしか対応していない。ランサムウェア対策で最近のWindowsはSMB 1.0を無効化しているため、SMB 2.0以降に対応したsmbclientを別途インストールする。

公式ドキュメントにビルド方法があるのでこれを参照

ビルドに必要なツールをインストール

sudo apt install acl attr autoconf bind9utils bison build-essential debhelper dnsutils docbook-xml docbook-xsl flex gdb libjansson-dev krb5-user libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev libcap-dev libcups2-dev libgnutls28-dev libgpgme-dev libjson-perl libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libpopt-dev libreadline-dev nettle-dev perl perl-modules pkg-config python-all-dev python-crypto python-dbg python-dev python-dnspython python3-dnspython python-markdown python3-markdown python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utils

python-gpgmeとpython3-gpgmeは最近のUbuntuで使用できないらしい。無しで進めても大丈夫だった。

目的のソースをダウンロード

wget https://download.samba.org/pub/samba/stable/samba-4.12.5.tar.gz

展開

tar xvf samba-4.12.5.tar.gz
cd samba-4.12.5

設定を変更

./configure --systemd-install-services --with-systemd --without-ad-dc --enable-fhs --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var

not found や no などと表示される項目もあるが、無視。最終的に finished successfully と表示されたら成功。ビルドする。

make

finished successfullyしたらインストール。その前にaptでインストールされたsmbclientがあれば削除すること。

sudo apt remove smbclient
sudo make install

完了

smbclient -V
Version 4.12.5

ownCloudをインストール

aptにownCloudのリポジトリを登録して、apt installでインストール。

wget -nv https://download.owncloud.org/download/repositories/production/Ubuntu_19.04/Release.key -O Release.key
sudo apt-key add - < Release.key
sudo echo 'deb http://download.owncloud.org/download/repositories/10.0/Ubuntu_18.04/ /' | sudo tee /etc/apt/sources.list.d/owncloud.list
sudo apt update
sudo apt install -y owncloud-files

ドキュメントルートを変更する

Apacheのドキュメントルートディレクトリを変更する

sudo sed -i "s#html#owncloud#" /etc/apache2/sites-available/000-default.conf
sudo service apache2 restart

バーチャルホスト設定


cd /etc/apache2/sites-available
sudo nano owncloud.conf

/etc/apache2/sites-availableowncloud.conf
Alias /owncloud "/var/www/owncloud/"

<Directory /var/www/owncloud/>
  Options +FollowSymlinks
  AllowOverride All

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

 SetEnv HOME /var/www/owncloud
 SetEnv HTTP_HOME /var/www/owncloud
</Directory>

バーチャルホスト構成を有効にする

sudo a2ensite owncloud.conf
sudo service apache2 reload

データベースを構成する

MySQLをセットアップしてアクセスできるようにする

mysql -u root -e "CREATE DATABASE IF NOT EXISTS owncloud; GRANT ALL PRIVILEGES ON owncloud.* TO owncloud@localhost IDENTIFIED BY 'password'";

推奨されるApacheモジュールを有効にする


sudo echo "Enabling Apache Modules"
sudo a2enmod dir env headers mime rewrite setenvif
sudo service apache2 reload

ownCloudのセットアップ

Webブラウザでサーバーにアクセスすると初回セットアップ画面が表示される

管理者アカウントのアカウント名・パスワード、データベース名 owncloud、データベースユーザー名 owncloud、データベースパスワード password、アドレス localhost を入力すればOK

ログローテートの設定

sudo nano /etc/logrotate.d/owncloud

/etc/logrotate.d/owncloudowncloud
/var/www/owncloud/data/owncloud.log {
  size 10M
  rotate 12
  copytruncate
  missingok
  compress
  compresscmd /bin/gzip
}

インストールを完了する

権限が正しいことを確認してください
cd /var/www/
sudo chown -R www-data. owncloud




任意:occヘルパースクリプトを作成する

ownCloudを管理するためのコマンド群。うまく動かなかったので使わなかった。

ヘルパースクリプトを作成して、occコマンドの実行を簡略化します。
cd /usr/local/bin
sudo nano occ

occ ファイルを作成して保存
#! /bin/bash

cd /var/www/owncloud
sudo -u www-data /usr/bin/php /var/www/owncloud/occ "\$@"

ヘルパースクリプトを実行可能に
sudo chmod +x /usr/local/bin/occ

cronジョブを設定する

sudo echo "*/15  *  *  *  * /usr/bin/php /path/to/your/owncloud/occ system:cron" > /var/spool/cron/crontabs/www-data
sudo chown www-data.crontab /var/spool/cron/crontabs/www-data
sudo chmod 0600 /var/spool/cron/crontabs/www-data

コメント