Install ownCloud on Ubuntu 18.04

This is an ultra-short guide to installing ownCloud on a fresh installation of Ubuntu 18.04. Run the following commands in your terminal to complete the installation.

Prerequisites

  • A fresh install of Ubuntu 18.04 with SSH enabled.

  • This guide assumes that you are connected as the root user.

Preparation

First, ensure that all of the installed packages are entirely up to date.

apt update && apt upgrade -y

Create the occ Helper Script

Create a helper script to simplify running occ commands.

FILE="/usr/local/bin/occ"
/bin/cat <<EOM >$FILE
#! /bin/bash

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

Make helper script executable:

chmod +x /usr/local/bin/occ

Install the Required Packages

apt install -y \
  apache2 \
  libapache2-mod-php7.2 \
  mariadb-server \
  openssl \
  php-imagick php7.2-common php7.2-curl \
  php7.2-gd php7.2-imap php7.2-intl \
  php7.2-json php7.2-mbstring php7.2-mysql \
  php-ssh2 php7.2-xml php7.2-zip \
  php-apcu php-redis redis-server \
  wget
apt install -y \
  ssh bzip2 rsync curl jq \
  inetutils-ping smbclient\
  php-smbclient coreutils php7.2-ldap
Ubuntu 18.04 includes smbclient 4.7.6, which has a known limitation of only using version 1 of the SMB protocol.

Installation

Configure Apache

Change the Document Root

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

service apache2 restart

Create a Virtual Host Configuration

FILE="/etc/apache2/sites-available/owncloud.conf"
sudo /bin/cat <<EOM >$FILE
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>
EOM

Enable the Virtual Host Configuration

a2ensite owncloud.conf
service apache2 reload

Configure the Database

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

a2enmod dir env headers mime rewrite setenvif
service apache2 reload

Setup ownCloud

Download ownCloud

cd /var/www/
wget https://download.owncloud.org/community/owncloud-10.4.1.tar.bz2 && \
tar -xjf owncloud-10.4.1.tar.bz2 && \
chown -R www-data. owncloud

Install ownCloud

occ maintenance:install \
    --database "mysql" \
    --database-name "owncloud" \
    --database-user "owncloud" \
    --database-pass "password" \
    --admin-user "admin" \
    --admin-pass "admin"

Configure ownCloud’s Trusted Domains

myip=$(hostname -I|cut -f1 -d ' ')
occ config:system:set trusted_domains 1 --value="$myip"

Set Up a Cron Job

echo "*/15  *  *  *  * /usr/bin/php -f /var/www/owncloud/cron.php" \
  > /var/spool/cron/crontabs/www-data
echo "13 0  *  *  * /usr/bin/php -f /var/www/owncloud/occ dav:cleanup-chunks" \
  > /var/spool/cron/crontabs/www-data
chown www-data.crontab /var/spool/cron/crontabs/www-data
chmod 0600 /var/spool/cron/crontabs/www-data

If you need to sync your users from an LDAP or Active Directory Server, add this additional Cron job.

echo "*/15  *  *  *  * /usr/bin/php -f /var/www/owncloud/cron.php" > /var/spool/cron/crontabs/www-data
chown www-data.crontab  /var/spool/cron/crontabs/www-data
chmod 0600  /var/spool/cron/crontabs/www-data

Configure Caching and File Locking

Execute these commands:

occ config:system:set \
   memcache.local \
   --value '\OC\Memcache\APCu'

occ config:system:set \
   memcache.locking \
   --value '\OC\Memcache\Redis'

occ config:system:set \
   redis \
   --value '{"host": "127.0.0.1", "port": "6379"}' \
   --type json

Configure Log Rotation

Execute this command to set up log rotation.

FILE="/etc/logrotate.d/owncloud"
sudo /bin/cat <<EOM >$FILE
/var/www/owncloud/data/owncloud.log {
  size 10M
  rotate 12
  copytruncate
  missingok
  compress
  compresscmd /bin/gzip
}
EOM

Finalise the Installation

Make sure the permissions are correct

cd /var/www/
chown -R www-data. owncloud

ownCloud is now installed. You can confirm that it is ready to use by pointing your web browser to your ownCloud installation.