個人用の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
- 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
コメント
コメントを投稿