OwnCloud is a Dropbox-like solution for self-hosted file sharing and syncing. Installing OwnCloud 10 on CentOS is quite simple. Whether you want to backup, have file-syncing or just have a Google Calendar alternative, this guide is for you.
What is OwnCloud? Is it like a “cloud”?
If you stumbled here by chance and don’t know what OwnCloud is, here is an article explaining its principal features and advantages/disadvantages. In this other article you can find OwnCloud 10 new features. To tell you the truth, OwnCloud is a SaaS cloud, if you want to know more about cloud types you can read this article.
In this article we will cover the installation of the server (not the client).
Looking for an earlier version of this tutorial?
Step 1: Add the repositories
Important
I take absolutely NO responsibility of what you do with your machine; use this tutorial as a guide and remember you can possibly cause data loss if you touch things carelessly.
The first step is to add the repositories to your system. You will need root access during this procedure. The following procedure will install apache as webserver. Since CentOS 7 ships with PHP 5.4 by default but OwnCloud requires at least PHP 5.6 we’ll also be installing PHP 7 from a third-party repository. The following procedure will install apache as webserver. Input the commands one by one to avoid errors! Input the commands one by one to avoid errors!
CentOS 7
If you’d rather use PHP 7.1, you can follow this tutorial: how to install PHP 7.1 on CentOS 7.
Warning!
If you decided to use PHP 7.1 rather than PHP 7.0 using the past tutorial, replace each instance of php70w with php71w in all the successive commands.
Open a terminal and input the following commands:
# yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install httpd php70w php70w-dom php70w-mbstring php70w-gd php70w-pdo php70w-json php70w-xml php70w-zip php70w-curl php70w-mcrypt php70w-pear php70w-intl setroubleshoot-server
# rpm --import https://download.owncloud.org/download/repositories/10.0/CentOS_7/repodata/repomd.xml.key
# curl https://download.owncloud.org/download/repositories/10.0/CentOS_7/ce:10.0.repo | tee /etc/yum.repos.d/owncloud_CE:10.0.repo
# yum install owncloud
These commands will add the repositories that contain the software and install it on your machine.
Step 2: Database selection
Now that you got the OwnCloud software, all that is left is to choose a database that will support the installation. You have three choices:
- SQLite: is a single-file database. It is suggested only for small installations since it will slow OwnCloud down sensibly.
- MariaDB/MySQL: are popular open source databases especially amongst web developers. It is the suggested choice.
- PostgreSQL: a popular enterprise-class database. More complicated than MySQL/MariaDB.
Now, this choice won’t really alter the functionality of OwnCloud (except if you use SQLite), so pick whatever you know best. If you’re unsure pick MariaDB/MySQL.
SQLiteMariaDB/MySQLPostgreSQL
No additional steps are required if you choose SQLite.
Install the software:
# yum install mariadb-server php70w-mysql
# mysql_secure_installation
During the installation you will be prompted to choose a root password, pick a strong one.
Start (and enable at boot) the service:
# systemctl start mariadb
# systemctl enable mariadb
Now you need to enter the database (you will be asked the password you just set):
$ mysql -u root -p
Now that you are in create a database:
CREATE DATABASE owncloud;
Now you need to create the user that will be used to connect to the database:
CREATE USER 'oc_user'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD_HERE';
The last step is to grant the privileges to the new user:
GRANT ALL PRIVILEGES ON owncloud.* TO 'oc_user'@'localhost';
FLUSH PRIVILEGES;
When you’re done type Ctrl-D to exit.
Install the software:
# yum install postgresql postgresql-server php70w-pgsql
Run the setup:
# postgresql-setup initdb
Start (and enable at boot) the service:
# systemctl start postgresql
# systemctl enable postgresql
Now you need to enter the database:
$ sudo -u postgres psql
Now that you are in create a database:
CREATE DATABASE owncloud;
Now you need to create the user that will be used to connect to the database:
CREATE USER oc_user WITH PASSWORD 'YOUR_PASSWORD_HERE';
The last step is to grant the privileges to the new user:
GRANT ALL PRIVILEGES ON DATABASE owncloud to oc_user;
When you’re done type \q and press enter to exit.
Warning!
You may experience difficulties in authenticating OwnCloud with PostgreSQL since the local authentication method is set to ident by default. If you want to change it keep reading.
The configuration file for PostgreSQL is a file located in /var/lib/pgsql/data/pg_hba.conf . Open it with your favourite editor and look for the marked line:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident
Replace ident with md5 on that line and restart PostgreSQL:
# systemctl restart postgresql
Step 3: Setting Apache and SELinux
In this step we’ll start (and enable) the webserver and we’ll set SELinux up. Now, many tutorials will tell you to disable SELinux (because it is a difficult component to manage). Instead, I suggest you to keep it on and add the rules for OwnCloud:
CentOS 7
Add SELinux rules:
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/data(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/config(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/apps(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/.htaccess'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/owncloud/.user.ini'
# restorecon -Rv '/var/www/html/owncloud/'
If you decided to use Mariadb/MySQL/PostgreSQL, you also need to allow apache to access the database:
# setsebool -P httpd_can_network_connect_db 1
Now that you’ve configured SELinux let’s start and enable Apache:
CentOS 7
Start (and enable at boot) the service:
# systemctl start httpd
# systemctl enable httpd
Step 4: Configuring firewall
This step is essential when your firewall is enabled. If your firewall is enabled you won’t be able to access your OwnCloud 10 instance; on the other hand if it isn’t enabled you shouldn’t have any problems and you can simply skip this step.
Tip!
Keep in mind having a firewall enabled is a good security practice and you should already have one enabled.
In order for the firewall to work, it must be enabled. This guide will not include this part. When you enable a firewall many things can go wrong, e.g. you’re using SSH, you enable the firewall and your connection is cut and can’t connect otherwise, hence you should carefully review the documentation from your distribution.
To open the ports needed by OwnCloud 10 follow these steps:
FirewallDIPtables
FirewallD is a newer firewall used to simplify firewall management. If you’re using it you can simply do:
# firewall-cmd --add-service http --permanent
# firewall-cmd --add-service https --permanent
# firewall-cmd --reload
IPtables is an older firewall (still widely used), if you have disabled firewallD you can use IPtables directly.
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Step 5: Install
Once you’re done with selecting the database, it’s time to install everything. Head to http://YOUR_IP_ADDRESS/owncloud/ and you will be facing the following screen:
OwnCloud 10 installation
Select an administrator username and password, then you can select the data folder, but if you don’t know what you’re doing it’s best if you leave it with the default value. Then click on “Storage & Database” to select the database you chose during step 2. Fill everything and if you’ve followed all the steps correctly you should be seeing the Files app:
OwnCloud 10 Files App
The IT guy with a slight look of boredom in his eyes. Freelancer. Current interests: Kubernetes, Tensorflow, shiny new things.
https://uploads.disquscdn.com/images/7e4920cf512dbc2427b3e534ccc0d054928cdc877e74801bfce7b84363e210d7.jpg
Please Help me
Hello Saktii,
a CSRF is a token used to avoid nasty “Cross-site Request Forgery” attacks. These tokens should be validated each time a request is made. If your system is failing to validate said token it must mean something went wrong.
Have you already installed OwnCloud X and got a functioning setup? Or maybe you’re just installing it and can’t complete the process?
In the second case it is mostly a server misconfiguration (take a look at: https://central.owncloud.org/t/login-loop-token-expired-please-reload-page-csrf-check-failed/ ).
In the first case this error can be caused by many factors, it can also be server misconfiguration.
Please review the page I gave you and let me know if you were able to resolve : )
https://uploads.disquscdn.com/images/70d375ca279c429b0c90c362adac70a970066eaab59006b859c70298e334597c.jpg finaly i reinstall and i acces myip/owncloud and i get this in my screen
Hello Saktii,
what you’re seeing is pure PHP code. Of course you shouldn’t be seeing it; this is probably due to the fact mod_php isn’t working. Have you installed the php70w package?
https://uploads.disquscdn.com/images/f4137b8a8f4949b39473879558ca1881eb4da455477df5a96447e46d53ffa31b.jpg I have installed php70w package and is already in the last version
That’s pretty strange, have you got another PHP instance running (stock PHP from CentOS)? If you have it I suggest you remove it, if you haven’t got it try issuing “a2enmod php” and restart apache.
Thanks for the help, I’ve found that the a2enmod inactive, I do to solve this problem is to edit the file/etc/httpd/conf/httpd.conf and make sure that the flag for the AllowOverride block is changed from None to All.
you skipped all the apache config and rules.
Rules were not skipped, OwnCloud provides a htaccess file. About apache and configuration, this guide is for beginners and configuring things the way you want is a different task for each configuration you achieve, therefore there can’t be one way to configure them all. But there can be multiple ways to get to multiple results, but that would be difficult to follow for a beginner, hence they’re not included.
im following word for word and getting an error because permissions weren’t changed. Apache needs write access
I just followed the procedure, there is no such error. You probably didn’t configure SELinux, that’s why you’re getting permission denied.
no, i had to chown apache:apache config/, data/, apps/ and apps-external so it could continue with the install wizard
i completed all step but after i create a admin account it come out blank page and when i refresh it go back to create admin account page
Hello Jayden, this is usually because of an error during script execution, it may depend on many different things such as PHP memory limit, or database connection, or SELinux. Without logs there are way too many possibilities to consider.