sudo apt install lsb-release ca-certificates curl -y
GPG key and repo for php 7.4
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Update the system with the new repository in place
sudo apt update
Install the dependencies for OwnCloud (LAMP ect) Certbot, or LetsEncrypt is being installed as well, if you are using this installation in a public domain
sudo apt install apache2 mariadb-server imagemagick certbot python3-certbot-apache smbclient redis-server unzip rsync libapache2-mod-php7.4 php7.4 php7.4-intl php7.4-mysql php7.4-mbstring php7.4-imagick php7.4-igbinary php7.4-gmp php7.4-bcmath php7.4-curl php7.4-gd php7.4-zip php7.4-imap php7.4-ldap php7.4-bz2 php7.4-ssh2 php7.4-common php7.4-json php7.4-xml php7.4-dev php7.4-apcu php7.4-redis libsmbclient-dev php-pear php-phpseclib
Enable apache2 and then verify it’s status
sudo systemctl is-enabled apache2
sudo systemctl status apache2
Enable MariaDB and verify status
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
Enable Redis and verify status
sudo systemctl is-enabled redis
sudo systemctl status redis
Configure default php version
sudo update-alternatives --config php
Configure php OwnCloud dependencies
sudo update-alternatives --set phar /usr/bin/phar7.4
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4
sudo update-alternatives --set phpize /usr/bin/phpize7.4
sudo update-alternatives --set php-config /usr/bin/php-config7.4
Upgrade Pear to OwnCloud4 requirements
sudo mkdir -p /tmp/pear/cache
sudo pear upgrade --force --alldeps http://pear.php.net/get/PEAR-1.10.13
sudo pear clear-cache
sudo pear update-channels
sudo pear upgrade --force
sudo pear upgrade-all
Verify Pear version
pear version
Configure MariaDB
sudo mariadb-secure-installation
Log into MariaDB
sudo mariadb -u root -p
Create the OwnCloud database:
This is where many go wrong, we do not use ‘password’ we replace password, with our own password.
CREATE DATABASE owncloud;
We just created a database with the name owncloud
CREATE USER IF NOT EXISTS 'owncloud'@'localhost' IDENTIFIED BY 'password';
We just created a database user called owncloud
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' WITH GRANT OPTION;
We just allowed user owncloud, full privileges on database owncloud
FLUSH PRIVILEGES;
Now verify what we have just done:
SHOW GRANTS FOR 'owncloud'@'localhost';
You can see below I named this database ‘oc’ and the ‘oc’ user has privileges on database ‘owncloud’
quit;
wget the OwnCloud source
cd /var/www
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2
Grab sha256 to verify the download
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2.sha256
BEFORE installing, verify if the download of OwnCloud matches what the OwnCloud team wanted you to have, this is important always.
sudo sha256sum -c owncloud-complete-latest.tar.bz2.sha256 < owncloud-complete-latest.tar.bz2
Out put should say ‘OK’ if everything matches.
Change ownership of the directory to www-data user.
sudo chown -R www-data:www-data /var/www/owncloud
Configure Vhost for OwnCloud
This will open a new file in 'sites-available and name this file ‘owncloud.conf’
Change the ServerName and ServerAlias, as well as log file names, to whatever your domain is. There are many ways to do this keep in mind.
sudo nano /etc/apache2/sites-available/owncloud.conf
<VirtualHost *:80>
ServerName oc
ServerAlias www.oc
DocumentRoot /var/www/owncloud
ErrorLog ${APACHE_LOG_DIR}/oc.io-error.log
CustomLog ${APACHE_LOG_DIR}/oc.io-access.log combined
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>
</VirtualHost>
Enable and verify the owncloud vhost
sudo a2ensite owncloud.conf
sudo apachectl configtest
Now install OwnCloud
Change the database name, user, and password to whatever you named the OwnCloud database earlier;
Change the ‘admin user’ and ‘admin pass’ to whatever you want the new OwnCloud admin account to be.
sudo -u www-data /var/www/owncloud/occ maintenance:install \
--database "mysql" \
--database-name "owncloud" \
--database-user "owncloud"\
--database-pass "password" \
--admin-user "admin" \
--admin-pass "your new owncloud admin password"
Edit the OwnCloud config file to add the domain you used earlier in the Apache2 vhost file:
sudo nano /var/www/owncloud/config/config.php
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'whatever your domain is goes here',
),
Personally I restart the server at this point, which will restart all services.
Then visit the domain / IP of your settings and you should see the OwnCloud login page. Use the credentials you setup for the admin user.
System cron setting:
sudo crontab -u www-data -e
*/15 * * * * /usr/bin/php -f /var/www/owncloud/occ system:cron
Memcache with Redis we installed earlier:
sudo nano /var/www/owncloud/config/config.php
'filelocking.enabled' => true,
'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
],
Go restart the server again and enjoy!