Source code (main branch) and documentation is available on Github under Apache Licenses, Version 2.0.
This page contains some additional guides and hints provided by users installing the platform:
- Staszek Jankowski, Maciej Brzeźniak (PSNC)
- Dirk Dupont (BELNET)
- Jakub Peisar (CESNET)
- Gui Maluf (RNP)
PSNC - TRUSTED CLOUD DRIVE INSTALLATION INSTRUCTION
Tested configuration:
Centos 5.8
Oracle Java 1.7.0_07-b10
This is a single node installation. All components are installed on the same node.
Instruction:
1. Unzip archive:
unzip VirtualCloudDrive-CloudDrive-88d54c2.zip
2. Run voldemort: cd VirtualCloudDrive-CloudDrive-88d54c2/binaries/metadata/voldemort-0.90.1-patched/bin
./voldemort-server.sh ../config/clouddrive_node_cluster/ &
3. Install and setup MySQL: yum install mysql-server mysql
/etc/init.d/mysqld start
Set root password:
mysqladmin -u root password “newpassword”
mysqladmin -u root -h host_name password “newpassword”
/etc/init.d/mysqld restart
Create database:
mysql -u root -p
create database rightfabric;
quit
4. Setup and run virtual clouddrive webdav module: mkdir /etc/rightfabric
cd .../VirtualCloudDrive-CloudDrive-88d54c2/config/clouddrive
cp config.txt /etc/rightfabric/config.txt
vi /etc/rightfabric/config.txt
change: voldemort = tcp://10.0.0.5:6666
to: voldemort = tcp://localhost:6666
cd .../VirtualCloudDrive-CloudDrive-88d54c2/src/clouddrive
./sbt console
:load ./addme.scala
:quit
./sbt run
test with cadaver:
cadaver localhost:9090
user: maarten
pass: geheim
5. Setup clouddrive website:
Replace the value of db.password with mysql password on src/main/resources/props/default.props file
cd .../VirtualCloudDrive-CloudDrive-88d54c2/src/web_clouddrive
./sbt update
./sbt ~jetty-run
Open http://localhost:8080 in your favourite webbrowser and enjoy!
Authors:
- Staszek Jankowski (staszek ---at--- man.poznan.pl)
- Maciej Brzeźniak (maciekb ---at--- man.poznan.pl)
TODO:
- the instruction to be cross-checked by someone else than the author
- to be checked for other popular distributions
BELNET - TRUSTED CLOUD DRIVE INSTALLATION INSTRUCTION
Tested configuration:
Ubuntu 10.04 32bit
Single node setup
Pre-installations:
apt-get install mysql-server
root password must be geheim
(geheim is Dutch for secret)
apt-get install openjdk-6-jdk
Credits:
Dirk Dupont (dirk.dupont-at-belnet.be)
CESNET - TRUSTED CLOUD DRIVE INSTALLATION INSTRUCTIONS
A) Single VM installation:
All virtual machines were Ubuntu 64-bit 12.04 LTS with OpenJDK 1.7
For a single VM installation I followed the PSNC guide
I didn't bother with setting up SimpleSamlPHP and Apache, I was using just Jetty to serve the webcontent.
cloud@clouddriveApp1:~$ uname -a
Linux clouddriveApp1 3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
cloud@clouddriveApp1:~/CloudDrive-master$ java -version
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.04.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
Only issue I found was with the jquery.js paths (see below)
B) Multiple VMs installation:
I didn't bother with setting up SimpleSamlPHP and Apache, I was using just Jetty to serve the webcontent.
For the multiple VMs installation I followed the https://github.com/VirtualCloudDrive/CloudDrive/wiki/Two-Quick-starts
I made 5 VMs for this setup :
- Voldemort1
- Voldemort2 (I wanted to try the multi-node cluster)
- App1 (WebDAV daemon and the Scala application)
- MySQL (distinct VM for the database)
- Webserver1 (just a one webserver VM to server the traffic, can easily scale)
On all machines I downloaded the source tar from github. All the machines also have the same /etc/rightfabric/config.txt file, which I edited to suit my architecture (file attached). Then on Voldemort machines I changed the CloudDrive-master/binaries/metadata/voldemort-0.90.1-patched/config/clouddrive_node_cluster/config/cluster.xml to have 2 nodes (file attached).
On the MySQL machine I obviously installed the mysql-server and set up the database for the application. For this i used the SQL script at CloudDrive-master/config/database/mysql/mysql-setup.sql.
On the App server I created the directory structure to hold the user files and compiled the WebDAV daemon with sbt. After running the daemon with "./sbt run" the daemon was up and serving requests.
This is how the "storage" looks :
cloud@clouddriveApp1:~$ ls -lh /cloud/data/maarten/
total 8.3M
-rw-r--r-- 1 cloud cloud 128 Nov 26 14:34 01a6cad3-a67a-4129-8457-4aafbd5dceb6
-rw-r--r-- 1 cloud cloud 32 Nov 26 16:54 1b7892b2-281b-4b13-ae7e-9901a1efbba0
-rw-r--r-- 1 cloud cloud 784 Nov 26 14:51 25c61c78-4b0a-4926-8605-978b22157672
-rw-r--r-- 1 cloud cloud 784 Nov 26 16:08 3c43d014-af5c-4a53-95e9-ae1ba6858b0c
-rw-r--r-- 1 cloud cloud 784 Nov 26 16:08 3e0719ab-9458-41f7-a259-65882e08bebf
-rw-r--r-- 1 cloud cloud 16 Nov 28 09:35 5d1520fc-8e78-446a-a7aa-f64ac986f3a3
-rw-r--r-- 1 cloud cloud 8.3M Nov 28 11:30 927058df-09ee-44c6-a05d-8268abaf02b6
-rw-r--r-- 1 cloud cloud 784 Nov 26 16:42 a54b85d6-2f34-4b5d-bdd8-e335365c45ea
-rw-r--r-- 1 cloud cloud 4.1K Nov 28 09:36 d481e8f2-da9f-4957-8e35-17d73eeedc6f
-rw-r--r-- 1 cloud cloud 784 Nov 26 14:47 d9b19d10-1608-45fc-bdb4-5cf841660d75
On the webserver I decided to simply use provided Jetty to start things up. There I only edited the CloudDrive-master/src/web_clouddrive/src/main/props/production.default.props file to connect to the MySQL server on the other VM, packaged it with "./sbt package" and copied the resulting .war file to CloudDrive-master/binaries/website/root.war.
Issuing ./sbt update and then ./sbt ~jetty-run I was able to start the website. You can reach it at http://clouddrivewebserver1.du1.cesnet.cz:8080
Problems:
1)
Both installations have the same problem with serving the jquery.js file. When I am logged in the website and I am at the root of my home directory view, I can click the buttons to create new folder or upload a file with no problems (buttons have javascript onclick listeners on them). The URL of jquery.js file is http://clouddrivewebserver1.du1.cesnet.cz:8080/jquery.js. The URL of the webpage is http://clouddrivewebserver1.du1.cesnet.cz:8080/webdrive .
But when I descend into a subdirectory, say /test/ and I try to create new folder, nothing happens. Back when I check the Jetty log I can see the 404 error and a Java stack trace of NullPointerException (can be seen in included file). My browser is now trying to access the URL http://clouddrivewebserver1.du1.cesnet.cz:8080/webdrive/jquery.js while the URL of the webpage is http://clouddrivewebserver1.du1.cesnet.cz:8080/webdrive/test .
2)
The second problem is with multi-VM setup and downloading files. When I try to download a file via the website in the single-VM setup, it works and I am able to successfully download the file. But when I try to download a file via the website from the multi-VM setup, I get an error webpage and then when I check the folder, the file I tried to download is gone. Debug logging from the Jetty of the failed download attempt can be seen in the atteched file.
After going through the configuration files I suspect the error being in declaration of filesystem_prefix in /etc/rightfabric/config.txt. There it states:
#If you use the local filesystem for data storage, this is the folder or
#mount point to store. Note that it must be shared across all machines in a
#multi-machine setup. E.g. via SMB or NFS or so.
#NOTE THE TRAILING SLASH IN THE PATH
filesystem_prefix = /cloud/data/
The thing is, I have this setup as a directory on the local disk of my App VM as that is the place where I store the blobs (I upload files via cadaver which connects directly to App VM). I can see the files being there:
cloud@clouddriveApp1:~$ ls -lh /cloud/data/maarten/
total 17M
-rw-r--r-- 1 cloud cloud 128 Nov 26 14:34 01a6cad3-a67a-4129-8457-4aafbd5dceb6
-rw-r--r-- 1 cloud cloud 32 Nov 26 16:54 1b7892b2-281b-4b13-ae7e-9901a1efbba0
-rw-r--r-- 1 cloud cloud 784 Nov 26 14:51 25c61c78-4b0a-4926-8605-978b22157672
-rw-r--r-- 1 cloud cloud 784 Nov 26 16:08 3c43d014-af5c-4a53-95e9-ae1ba6858b0c
-rw-r--r-- 1 cloud cloud 784 Nov 26 16:08 3e0719ab-9458-41f7-a259-65882e08bebf
-rw-r--r-- 1 cloud cloud 16 Nov 28 09:35 5d1520fc-8e78-446a-a7aa-f64ac986f3a3
-rw-r--r-- 1 cloud cloud 8.3M Nov 28 11:30 927058df-09ee-44c6-a05d-8268abaf02b6
-rw-r--r-- 1 cloud cloud 784 Nov 26 16:42 a54b85d6-2f34-4b5d-bdd8-e335365c45ea
-rw-r--r-- 1 cloud cloud 8.3M Nov 28 12:21 accfe894-5f04-40dc-84b9-7442bb14b27d
-rw-r--r-- 1 cloud cloud 4.1K Nov 28 09:36 d481e8f2-da9f-4957-8e35-17d73eeedc6f
-rw-r--r-- 1 cloud cloud 784 Nov 26 14:47 d9b19d10-1608-45fc-bdb4-5cf841660d75
Then on the webserver I can see the directory is created but obviously it is empty:
cloud@clouddriveWebserver1:~/CloudDrive-master$ ls -lh /cloud/data/maarten/
total 0
Do I understand correctly, that I need to have the filesystem with binary blobs of stored files mounted even on the webserver nodes ? I would imagine the WebDAV daemon nodes having the need to see the filesystem as they process the files.