If privacy is a concern and you’d be feeling better to host your own CalDav and CarDav (calendar and contact) data but still would like to access it from your smartphone and web Owncloud is a straightforward open-source tool to use. Remark: hosting your email would only be a possibility if high availability server hardware and internet connection is available for use.
- Register a cheap domain with Namecheap and configure DynamicDNS
- Add this script to CRON to regularly update Namecheap on your IP address
- Do this on the Internet interface of your host or OpenWRT router
- Use this script
urllib2.urlopen("http://dynamicdns.park-your-domain.com/update?host=%s&domain=%s&password=%s" % ("subdomain", "yourdomain.com", "hash.by.namecheap..82d9365e23be655"))
- Set it in crontab
crontab -e
#Add this to run IP update script every 0:05
5 0 * * * /path/to/script
- Use an Ubuntu Server (14.04 64)
#Install Owncloud from Repository
cd ~
wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_14.04/Release.key
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud.list"
sudo apt-get update
sudo apt-get install owncloud
sudo apt-get install mysql-server
#Define MySQL password
#Create MySQL table
sudo mysql -u root -p #DefinedPwHere
CREATE DATABASE owncloud;
GRANT ALL ON owncloud.* to 'owncloud'@'localhost' IDENTIFIED BY 'database_password';
exit
#Set file permissions
sudo chown -R www-data:www-data /var/www/owncloud
find /var/www/owncloud -type d -exec chmod 750 {} ;
find /var/www/owncloud -type f -exec chmod 640 {} ;
#Enable Apache SSL
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload
sudo a2enmod rewrite
#Generate SSL certs
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
#Modify Apache configuration
sudo nano /etc/apache2/sites-available/default-ssl
#Add this to the file being edited with Nano
ServerName YourServerName
ServerAdmin webmaster@localhost
DocumentRoot /var/www
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
".(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
# add any possibly required additional directives here
# e.g. the Satisfy directive (see below for details):
Satisfy Any
sudo service apache2 restart
- Access your Owncloud at http://host/owncloud
- Follow install steps, use MySQL, owncloud as database and use your database password as root or owncloud user
- Use your Owncloud
- Configure your router to forward requests of yourdomain:443 to yourowncloudhost:443 to access Owncloud from the Internet
- Configure mobile device sync
- Use DavDroid for your Android phone
- CalDAV: https://yourowncloudhost/remote.php/caldav/
- CardDAV: https://yourowncloudhost/remote.php/carddav/
- As most likely a self-signed certificate is used, set it up with CADroid accessible from FDroid market
- Use DavDroid for your Android phone