Support #572
Install ownCloud on a Debian LAMP Server
Description
This is a simple guide for setting up ownCloud on a LAMP server on Debian 7 (wheezy).
Prepare The Server¶
This guide is assumed that a Bare Debian install with only SSH Server access, a user that has sudo access.
- Obtain a root shell and upgrade the server:
sudo -s apt-get update && apt-get upgrade
- Set the hostname in the hosts:
vi /etc/hosts
- And add/modify the following:
127.0.1.1 owncloud.example.com owncloud
- And add/modify the following:
- And also edit the hostname file:
vi /etc/hostname
- And add/modify the following:
owncloud
- And add/modify the following:
- Reboot to apply the hostname settings:
reboot
Install Apache 2¶
- Install apache:
apt-get install apache2
Configure Apache 2¶
- Edit the default apache2 Vhost config:
vi /etc/apache2/sites-available/default
- And add/modify the following VirtualHost block:
<VirtualHost *:80> ServerName owncloud.example.com DocumentRoot /var/www <Directory /var/www> Options -Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost>
- NOTE: Make sure AllowOverride is set to ALL, or else the .htaccess file will not work.
- And add/modify the following VirtualHost block:
- Restart apache2:
service apache2 restart
- Now navigate to http://owncloud.example.com and the default It Works! should be displayed.
Securing Apache with SSL¶
- Install openssl:
apt-get install openssl
- Generate a strong SSL key and a CSR to send for signing by a CA:
mkdir /etc/apache2/ssl && cd /etc/apache2/ssl openssl req -sha512 -out owncloud.example.com.csr -new -newkey rsa:4096 -nodes -keyout owncloud.example.com.key
- Make sure to securely copy the SSL certificate to owncloud.example.com.crt
- Edit the apache2 default ssl Vhost config file:
vi /etc/apache2/sites-available/default-ssl
- And Add the following:
<VirtualHost *:443> ServerName www.example.com DocumentRoot /var/www <Directory /var/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> SSLEngine on SSLCertificateFile /etc/apache2/ssl/owncloud.example.com.crt SSLCertificateKeyFile /etc/apache2/ssl/owncloud.example.com.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost>
- And Add the following:
- Change the SSL certificate and key ownership to the apache user:
chown www-data:www-data /etc/apache2/ssl/owncloud.example.com.{crt,key} chmod o-rwx /etc/apache2/ssl/owncloud.example.com.key
- Enable the ssl apache modules:
a2enmod ssl
Forcing SSL on a Website¶
- Enable forced SSL connection by setting the two lines from earlier in the
.htaccess
file. Open the file for editing:vi /var/www/.htaccess
- Look for the following two lines, and remove the
#
characters before them:RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- Look for the following two lines, and remove the
- Restart apache2:
service apache2 restart
- Now the website will be accessible from https://owncloud.example.com
Install MySQL 5.5¶
- Install MySQL server and client:
apt-get install mysql-server mysql-client
- NOTE: During the setup a prompt will appear to set the root MySQL user password. Set a strong password and do not forget it.
Configure a new MySQL database¶
- Log into the MySQL console:
mysql -h localhost -u root -p
- Create the ownclouduser user with the SuperSecretPassword password and the ownclouddb database:
CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'SuperSecretPassword'; CREATE DATABASE IF NOT EXISTS `ownclouddb` CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON `ownclouddb`.* TO 'ownclouduser'@'localhost'; flush privileges; exit
- Create the ownclouduser user with the SuperSecretPassword password and the ownclouddb database:
Install PHP 5¶
- Install PHP 5 with the apache-php module and a few common PHP extensions:
apt-get install php5 libapache2-mod-php5 php5-cli php5-mysql php5-mcrypt php5-gd php5-gd php5-json php-pear php-xml-parser php5-intl php5-sqlite curl libcurl3 libcurl3-dev php5-curl smbclient cifs-utils mp3info zip
- PHP has many extensions, run the following to get a list of all available extensions:
apt-cache search php5-
- PHP has many extensions, run the following to get a list of all available extensions:
- Increase the max upload size for PHP:
vi /etc/php5/apache2/php.ini
- And modify the following parameters:
upload_max_filesize = 1024M post_max_size = 1032M
- And modify the following parameters:
- Restart apache for the php module to take effect:
service apache2 restart
Install ownCloud¶
- Install git:
apt-get install git
- Install ownCloud:
rm /var/www/* git clone -b stable8 https://github.com/owncloud/core.git /var/www
- Install ownCloud 3rdparty apps:
git clone -b stable8 https://github.com/owncloud/3rdparty.git /var/www/3rdparty
- Install ownCloud 3rdparty apps:
- Change the ownership of the ownCloud files to the apache user:
chown -R www-data:www-data /var/www
(Optional) Install 3rd Party ownCloud Apps¶
Install ownNote¶
- Install the ownNote app:
git clone https://github.com/Fmstrat/ownnote.git /var/www/apps/ownnote
- Edit the owncloud config file:
nano /var/www/config/config/php
- And add the following:
'custom_csp_policy' => "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:; media-src *",
- NOTE: I use MyOwnNotes on Android, available from F-Droid.
- And add the following:
News¶
- Install the News app:
git clone https://github.com/owncloud/news.git /var/www/apps/news
XMPP¶
- Install the XMPP app:
git clone https://github.com/jsxc/jsxc.owncloud.git /var/www/apps/ojsxc
Files Tree¶
- Install the Files Tree app:
git clone https://github.com/EELV-fr/files_tree.git
Related issues
Updated by Daniel Curtis almost 10 years ago
- Copied from Support #568: Install a Linux, Apache2, MySQL, PHP Web Server on Debian added
Updated by Daniel Curtis almost 10 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 100