Install ownCloud on Ubuntu 20.04
Introduction
This is a short guide to installing ownCloud on a fresh installation of Ubuntu 20.04. Run the following commands in your terminal to complete the installation.
Prerequisites
- A fresh installation of Get Ubuntu Server | Download | Ubuntu
- This guide assumes that you are working as the root user.
- Your ownCloud directory will be located in
/var/www/owncloud/
Preparation
First, ensure that all the installed packages are entirely up to date and that PHP is available in the APT repository.
To do so, follow the instructions below:
apt update && \
apt upgrade -y
Create the occ Helper Script
FILE="/usr/local/bin/occ"
/bin/cat <<EOM >$FILE
#! /bin/bash
cd /var/www/owncloud/
sudo -E -u www-data /usr/bin/php /var/www/owncloud//occ "\$@"
EOM
Make the helper script executable:
chmod +x /usr/local/bin/occ
Install the Required Packages
apt install -y \
apache2 \
libapache2-mod-php \
mariadb-server \
openssl redis-server wget \
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 php-ldap
Install smbclient php module
apt-get install -y libsmbclient-dev php-dev php-pear
pecl install smbclient-stable
echo "extension=smbclient.so" > /etc/php/7.4/mods-available/smbclient.ini
phpenmod smbclient
systemctl restart apache2
Install the Recommended Packages
apt install -y \
ssh bzip2 rsync curl jq \
inetutils-ping coreutils \
imagemagick
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"
/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
systemctl start mariadb
mysql -u root -e "CREATE DATABASE IF NOT EXISTS owncloud; \
GRANT ALL PRIVILEGES ON owncloud.* \
TO owncloud@localhost \
IDENTIFIED BY 'password'";
Enable the Recommended Apache Modules
echo "Enabling Apache Modules"
a2enmod dir env headers mime rewrite setenvif
service apache2 reload
Download ownCloud
cd /var/www/
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 && \
tar -xjf owncloud-complete-latest.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" \
--data-dir= "/var/www/owncloud"
Configure ownCloud’s Trusted Domains
my_ip=$(hostname -I|cut -f1 -d ' ')
occ config:system:set trusted_domains 1 --value="$my_ip"
Set Up a Cron Job
occ background:cron
echo "*/15 * * * * /var/www/owncloud/occ system:cron" \
> /var/spool/cron/crontabs/www-data
chown www.data.crontab /var/spool/cron/crontabs/www-data
chmod 0600 /var/spool/cron/crontabs/www-data
echo "*/15 * * * * /var/www/owncloud/occ user:sync 'OCA\User_LDAP\User_Proxy' -m disable -vvv >> /var/log/ldap-sync/user-sync.log 2>&1" >> /var/spool/cron/crontabs/www-data
chown www-data.crontab /var/spool/cron/crontabs/www-data
chmod 0600 /var/spool/cron/crontabs/www-data
mkdir -p /var/log/ldap-sync
touch /var/log/ldap-sync/user-sync.log
chown www-data. /var/log/ldap-sync/user-sync.log
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
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.