commit 301294a9a7e9a3cbbc5774a67209dc0afd05cb5d
Author: Constantinos Venetsanopoulos <cven@grnet.gr>
Date:   Tue Feb 12 18:15:30 2013 +0200

    Major documentation fixes/updates for 0.13
    
     * Various semantic fixes on different guides
     * Various shpinx related fixes
     * New pictures for the overall Synnefo architecture
     * Update the scaling-up section of the admin guide

diff --git a/docs/admin-guide.rst b/docs/admin-guide.rst
index 9307f30..2815d9b 100644
--- a/docs/admin-guide.rst
+++ b/docs/admin-guide.rst
@@ -16,9 +16,9 @@ Guide you will be able to understand every component and all the interactions
 between them. It is a good idea to first go through the Quick Administrator's
 Guide before proceeding.
 
-.. image:: images/synnefo-architecture1.png
+.. image:: images/synnefo-arch2.png
    :width: 100%
-   :target: _images/synnefo-architecture1.png
+   :target: _images/synnefo-arch2.png
 
 
 
@@ -557,18 +557,28 @@ Archipelago is used by Cyclades and Ganeti for fast provisioning of VMs based on
 CoW volumes. Moreover, it enables live migration of thinly-provisioned VMs with
 no physically shared storage.
 
-Architecture
-------------
+Archipelago Architecture
+------------------------
+
 .. image:: images/archipelago-architecture.png
    :width: 50%
    :target: _images/archipelago-architecture.png
 
+.. _syn+archip+rados:
+
+Overview of Synnefo + Archipelago + RADOS
+-----------------------------------------
+
+.. image:: images/synnefo-arch3.png
+   :width: 100%
+   :target: _images/synnefo-arch3.png
+
 Prereqs
 -------
+
 The administrator must initialize the storage backend where archipelago volume
 blocks will reside.
 
-
 In case of a files backend, the administrator must create two directories. One
 for the archipelago data blocks and one for the archipelago map blocks. These
 should probably be over shared storage to enable sharing archipelago volumes
@@ -579,9 +589,9 @@ In case of a RADOS backend, the administrator must create two rados pools, one
 for data blocks, and one for the map blocks. These pools, must be the same pools
 used in pithos, in order to enable volume creation based on pithos images.
 
-
 Installation
 ------------
+
 Archipelago consists of
 
 * ``libxseg0``: libxseg used to communicate over shared memory segments
@@ -702,15 +712,15 @@ The ``vlmc`` tool provides a way to interact with archipelago volumes
 
 * ``vlmc create <volumename> --snap <snapname> --size <size>``: creates a new
   volume named <volumename> from snapshot name <snapname> with size <size>.
-    The ``--snap`` and ``--size`` are optional, but at least one of them is
-    mandatory. e.g:
+  The ``--snap`` and ``--size`` are optional, but at least one of them is
+  mandatory. e.g:
 
-    ``vlmc create <volumename> --snap <snapname>`` creates a volume named
-    volumename from snapshot snapname. The size of the volume is the same as
-    the size of the snapshot.
+  ``vlmc create <volumename> --snap <snapname>`` creates a volume named
+  volumename from snapshot snapname. The size of the volume is the same as
+  the size of the snapshot.
 
-    ``vlmc create <volumename> --size <size>`` creates an empty volume of size
-    <size> named <volumename>.
+  ``vlmc create <volumename> --size <size>`` creates an empty volume of size
+  <size> named <volumename>.
 
 * ``vlmc remove <volumename>``: removes the volume and all the related
   archipelago blocks from storage.
@@ -859,7 +869,8 @@ Currently, RabbitMQ is used by the following components:
   the above components, and updates the Cyclades DB accordingly.
 
 Installation
-````````````
+~~~~~~~~~~~~
+
 Please check the RabbitMQ documentation which covers extensively the
 `installation of RabbitMQ server <http://www.rabbitmq.com/download.html>`_ and
 the setup of a `RabbitMQ cluster <http://www.rabbitmq.com/clustering.html>`_.
@@ -951,35 +962,197 @@ By default, the Django webapp and snf-manage logs to syslog, while
 Scaling up to multiple nodes
 ============================
 
-Here we will describe how to deploy all services, interconnected with each
-other, on multiple physical nodes.
+Here we will describe how should a large scale Synnefo deployment look like. Make
+sure you are familiar with Synnefo and Ganeti before proceeding with this section.
+This means you should at least have already set up successfully a working Synnefo
+deployment as described in the :ref:`Admin's Quick Installation Guide
+<quick-install-admin-guide>` and also read the Administrator's Guide until this
+section.
 
-synnefo components
-------------------
+Graph of a scale-out Synnefo deployment
+---------------------------------------
 
-You need to install the appropriate synnefo software components on each node,
-depending on its type, see :ref:`Architecture <cyclades-architecture>`.
+Each box in the following graph corresponds to a distinct physical node:
 
-Please see the page of each synnefo software component for specific
-installation instructions, where applicable.
+.. image:: images/synnefo-arch2-roles.png
+   :width: 100%
+   :target: _images/synnefo-arch2-roles.png
+
+The above graph is actually the same with the one at the beginning of this
+:ref:`guide <admin-guide>`, with the only difference that here we show the
+Synnefo roles of each physical node. These roles are described in the
+following section.
+
+Physical Node roles
+-------------------
+
+As appears in the previous graph, a scale-out Synnefo deployment consists of
+multiple physical nodes that have the following roles:
+
+* **WEBSERVER**: A web server running in front of gunicorn (e.g.: Apache, nginx)
+* **ASTAKOS**: The Astakos application (gunicorn)
+* **ASTAKOS_DB**: The Astakos database (postgresql)
+* **PITHOS**: The Pithos application (gunicorn)
+* **PITHOS_DB**: The Pithos database (postgresql)
+* **CYCLADES**: The Cyclades application (gunicorn)
+* **CYCLADES_DB**: The Cyclades database (postgresql)
+* **MQ**: The message queue (RabbitMQ)
+* **GANETI_MASTER**: The Ganeti master of a Ganeti cluster
+* **GANETI_NODE** : A VM-capable Ganeti node of a Ganeti cluster
 
-Install the following synnefo components:
+You will probably also have:
 
-Nodes of type :ref:`APISERVER <APISERVER_NODE>`
-    Components
-    :ref:`snf-common <snf-common>`,
-    :ref:`snf-webproject <snf-webproject>`,
-    :ref:`snf-cyclades-app <snf-cyclades-app>`
-Nodes of type :ref:`GANETI-MASTER <GANETI_MASTER>` and :ref:`GANETI-NODE <GANETI_NODE>`
-    Components
-    :ref:`snf-common <snf-common>`,
-    :ref:`snf-cyclades-gtools <snf-cyclades-gtools>`
-Nodes of type :ref:`LOGIC <LOGIC_NODE>`
-    Components
-    :ref:`snf-common <snf-common>`,
-    :ref:`snf-webproject <snf-webproject>`,
-    :ref:`snf-cyclades-app <snf-cyclades-app>`.
+* **CMS**: The CMS used as a frotend portal for the Synnefo services
+* **NS**: A nameserver serving all other nodes
+* **CLIENT**: A machine that runs the Synnefo clients (e.g.: kamaki, Web UI),
+              most of the times, the end user's local machine
+
+From this point we will also refer to the following groups of roles:
+
+* **SYNNEFO**: [ **ASTAKOS**, **ASTAKOS_DB**, **PITHOS**, **PITHOS_DB**, **CYCLADES**, **CYCLADES_DB**, **MQ**, **CMS**]
+* **G_BACKEND**: [**GANETI_MASTER**, **GANETI_NODE**]
+
+Of course, when deploying Synnefo you can combine multiple of the above roles on a
+single physical node, but if you are trying to scale out, the above separation
+gives you significant advantages.
+
+So, in the next section we will take a look on what components you will have to
+install on each physical node depending on its Synnefo role. We assume the graph's
+architecture.
+
+Components for each role
+------------------------
 
+When deploying Synnefo in large scale, you need to install different Synnefo
+or/and third party components on different physical nodes according to their
+Synnefo role, as stated in the previous section.
+
+Specifically:
+
+Role **WEBSERVER**
+    * Synnefo components: `None`
+    * 3rd party components: Apache
+Role **ASTAKOS**
+    * Synnefo components: `snf-webproject`, `snf-astakos-app`
+    * 3rd party components: Django, Gunicorn
+Role **ASTAKOS_DB**
+    * Synnefo components: `None`
+    * 3rd party components: PostgreSQL
+Role **PITHOS**
+    * Synnefo components: `snf-webproject`, `snf-pithos-app`, `snf-pithos-webclient`
+    * 3rd party components: Django, Gunicorn
+Role **PITHOS_DB**
+    * Synnefo components: `None`
+    * 3rd party components: PostgreSQL
+Role **CYCLADES**
+    * Synnefo components: `snf-webproject`, `snf-cyclades-app`, `snf-vncauthproxy`
+    * 3rd party components: Django Gunicorn
+Role **CYCLADES_DB**
+    * Synnefo components: `None`
+    * 3rd party components: PostgreSQL
+Role **MQ**
+    * Synnefo components: `None`
+    * 3rd party components: RabbitMQ
+Role **GANETI_MASTER**
+    * Synnefo components: `snf-cyclades-gtools`
+    * 3rd party components: Ganeti
+Role **GANETI_NODE**
+    * Synnefo components: `snf-cyclades-gtools`, `snf-network`, `snf-image`, `nfdhcpd`
+    * 3rd party components: Ganeti
+Role **CMS**
+    * Synnefo components: `snf-webproject`, `snf-cloudcms`
+    * 3rd party components: Django, Gunicorn
+Role **NS**
+    * Synnefo components: `None`
+    * 3rd party components: BIND
+Role **CLIENT**
+    * Synnefo components: `kamaki`, `snf-image-creator`
+    * 3rd party components: `None`
+
+Example scale out installation
+------------------------------
+
+In this section we describe an example of a medium scale installation which
+combines multiple roles on 10 different physical nodes. We also provide a
+:ref:`guide <i-synnefo>` to help with such an install.
+
+We assume that we have the following 10 physical nodes with the corresponding
+roles:
+
+Node1:
+    **WEBSERVER**, **ASTAKOS**
+      Guide sections:
+        * :ref:`apt <i-apt>`
+        * :ref:`gunicorn <i-gunicorn>`
+        * :ref:`apache <i-apache>`
+        * :ref:`snf-webproject <i-webproject>`
+        * :ref:`snf-astakos-app <i-astakos>`
+Node2:
+    **WEBSERVER**, **PITHOS**
+      Guide sections:
+        * :ref:`apt <i-apt>`
+        * :ref:`gunicorn <i-gunicorn>`
+        * :ref:`apache <i-apache>`
+        * :ref:`snf-webproject <i-webproject>`
+        * :ref:`snf-pithos-app <i-pithos>`
+        * :ref:`snf-pithos-webclient <i-pithos>`
+Node3:
+    **WEBSERVER**, **CYCLADES**
+      Guide sections:
+        * :ref:`apt <i-apt>`
+        * :ref:`gunicorn <i-gunicorn>`
+        * :ref:`apache <i-apache>`
+        * :ref:`snf-webproject <i-webproject>`
+        * :ref:`snf-cyclades-app <i-cyclades>`
+        * :ref:`snf-vncauthproxy <i-cyclades>`
+Node4:
+    **WEBSERVER**, **CMS**
+      Guide sections:
+        * :ref:`apt <i-apt>`
+        * :ref:`gunicorn <i-gunicorn>`
+        * :ref:`apache <i-apache>`
+        * :ref:`snf-webproject <i-webproject>`
+        * :ref:`snf-cloudcms <i-cms>`
+Node5:
+    **ASTAKOS_DB**, **PITHOS_DB**, **CYCLADES_DB**
+      Guide sections:
+        * :ref:`apt <i-apt>`
+        * :ref:`postgresql <i-db>`
+Node6:
+    **MQ**
+      Guide sections:
+        * :ref:`apt <i-apt>`
+        * :ref:`rabbitmq <i-mq>`
+Node7:
+    **GANETI_MASTER**, **GANETI_NODE**
+      Guide sections:
+        * :ref:`apt <i-apt>`
+        * :ref:`general <i-backends>`
+        * :ref:`ganeti <i-ganeti>`
+        * :ref:`snf-cyclades-gtools <i-gtools>`
+        * :ref:`snf-network <i-network>`
+        * :ref:`snf-image <i-image>`
+        * :ref:`nfdhcpd <i-network>`
+Node8:
+    **GANETI_NODE**
+      Guide sections:
+        * :ref:`apt <i-apt>`
+        * :ref:`general <i-backends>`
+        * :ref:`ganeti <i-ganeti>`
+        * :ref:`snf-cyclades-gtools <i-gtools>`
+        * :ref:`snf-network <i-network>`
+        * :ref:`snf-image <i-image>`
+        * :ref:`nfdhcpd <i-network>`
+Node9:
+    **GANETI_NODE**
+      Guide sections:
+        `Same as Node8`
+Node10:
+    **GANETI_NODE**
+      Guide sections:
+        `Same as Node8`
+
+All sections: :ref:`Scale out Guide <i-synnefo>`
 
 
 Upgrade Notes
diff --git a/docs/cyclades-api-guide.rst b/docs/cyclades-api-guide.rst
index 6445cf8..4cdc381 100644
--- a/docs/cyclades-api-guide.rst
+++ b/docs/cyclades-api-guide.rst
@@ -563,7 +563,7 @@ overLimit (413)
 
 This operation changes the name of the network in the Compute system.
 
-**Example Update Network Name Request: JSON**::
+**Example Update Network Name Request: JSON**:
 
 .. code-block:: javascript
 
diff --git a/docs/dev-guide.rst b/docs/dev-guide.rst
index 8b5539e..fec289a 100644
--- a/docs/dev-guide.rst
+++ b/docs/dev-guide.rst
@@ -3,13 +3,8 @@
 Synnefo Developer's Guide
 ^^^^^^^^^^^^^^^^^^^^^^^^^
 
-This is the complete Synnefo Developer's Guide
-
-Tying it all up with kamaki
-===========================
-
-kamaki
-------
+This is the complete Synnefo Developer's Guide. Here we document all Synnefo APIs
+to allow external developers write independent tools that interact with Synnefo.
 
 IM API (Astakos)
 ================
@@ -49,10 +44,10 @@ This is the Plankton Image API:
    Image API <plankton-api-guide>
 
 
-Storage API (Pithos+)
+Storage API (Pithos)
 =====================
 
-This is the Pithos+ Object Storage API:
+This is the Pithos Object Storage API:
 
 .. toctree::
    :maxdepth: 2
@@ -67,8 +62,8 @@ take into account before writing his own client for the above APIs. Before,
 starting your client implementation, make sure you have thoroughly read the
 corresponding Synnefo API.
 
-Pithos+ clients
----------------
+Pithos clients
+--------------
 
 User Experience
 ~~~~~~~~~~~~~~~
diff --git a/docs/i-apache.rst b/docs/i-apache.rst
deleted file mode 100644
index ecedb89..0000000
--- a/docs/i-apache.rst
+++ /dev/null
@@ -1,91 +0,0 @@
-.. _i-apache:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-apache ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Apache Setup
-++++++++++++
-
-The following apply to ``astakos``, ``pithos``, ``cyclades`` and ``cms`` nodes.
-Here we assume that these nodes have FQDM ``nodeX.example.com``.
-
-First install corresponding packet:
-
-.. code-block:: console
-
-   # apt-get install apache2
-
-In `/etc/apache2/sites-available/synnefo` add:
-
-.. code-block:: console
-
-   <VirtualHost *:80>
-     ServerName nodeX.example.com
-
-     RewriteEngine On
-     RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
-   </VirtualHost>
-
-In `/etc/apache2/sites-available/synnefo-ssl` add:
-
-.. code-block:: console
-
-   <IfModule mod_ssl.c>
-   <VirtualHost _default_:443>
-     ServerName nodeX.example.com
-
-     Alias /static "/usr/share/synnefo/static"
-
-     AllowEncodedSlashes On
-
-     RequestHeader set X-Forwarded-Protocol "https"
-
-     <Proxy * >
-       Order allow,deny
-       Allow from all
-     </Proxy>
-
-     SetEnv                proxy-sendchunked
-     SSLProxyEngine        off
-     ProxyErrorOverride    off
-
-     ProxyPass        /static !
-     ProxyPass        / http://localhost:8080/ retry=0
-     ProxyPassReverse / http://localhost:8080/
-
-     SSLEngine on
-     SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
-     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
-   </VirtualHost>
-   </IfModule>
-
-Now enable sites and modules by running:
-
-.. code-block:: console
-
-   # a2enmod ssl
-   # a2enmod rewrite
-   # a2dissite default
-   # a2ensite synnefo
-   # a2ensite synnefo-ssl
-   # a2enmod headers
-   # a2enmod proxy_http
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-apt.rst b/docs/i-apt.rst
deleted file mode 100644
index e6fca5e..0000000
--- a/docs/i-apt.rst
+++ /dev/null
@@ -1,49 +0,0 @@
-.. _i-apt:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-apt ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-APT Setup
-+++++++++
-
-The following apply to ``synnefo`` nodes.
-
-To be able to download all synnefo components, you need to add the following
-lines in `/etc/apt/sources.list.d/synnefo.list` file:
-
-.. code-block:: console
-
-    deb http://apt.dev.grnet.gr squeeze main
-    deb-src http://apt.dev.grnet.gr squeeze main
-    deb http://apt.dev.grnet.gr squeeze-backports main
-    deb-src http://apt.dev.grnet.gr squeeze-backports main
-    deb http://backports.debian.org/debian-backports squeeze-backports main
-    deb http://www.rabbitmq.com/debian/ testing main
-
-Import the additional repos' GPG key and get the packages list:
-
-.. code-block:: console
-
-   # wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
-   # apt-key add rabbitmq-signing-key-public.asc
-   # curl https://dev.grnet.gr/files/apt-grnetdev.pub | apt-key add -
-   # apt-get update
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-astakos.rst b/docs/i-astakos.rst
deleted file mode 100644
index 35cef38..0000000
--- a/docs/i-astakos.rst
+++ /dev/null
@@ -1,107 +0,0 @@
-.. _i-astakos:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-astakos ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Astakos Setup
-+++++++++++++
-
-The following apply to ``astakos`` node. In the following sections
-we will refer to its IP as ``accounts.example.com`` . Make sure
-you have db, mq, apache and gunicorn setup already.
-
-IMPORTANT: Currently if astakos coexists with cyclades/pithos roles, your setup is prone to csrf attacks.
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-First install the corresponding package:
-
-.. code-block:: console
-
-   # apt-get install snf-astakos-app
-
-In `/etc/synnefo/astakos.conf` add:
-
-.. code-block:: console
-
-    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
-    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
-    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
-
-    ASTAKOS_IM_MODULES = ['local']
-
-    ASTAKOS_BASEURL = 'https://accounts.example.com'
-
-    ASTAKOS_SITENAME = '~okeanos @ example.com'
-    ASTAKOS_RECAPTCHA_PUBLIC_KEY = '6LeFidMSAAAAAM7Px7a96YQzsBcKYeXCI_sFz0Gk'
-    ASTAKOS_RECAPTCHA_PRIVATE_KEY = '6LeFidMSAAAAAFv5U5NSayJJJhr0roludAidPd2M'
-
-    ASTAKOS_RECAPTCHA_USE_SSL = True
-    ASTAKOS_RECAPTCHA_ENABLED = True
-
-    ASTAKOS_COOKIE_DOMAIN = 'example.com'
-
-If ``astakos`` is on the same node with ``cyclades`` or ``pithos``, add the following
-line in `/etc/synnefo/astakos.conf` but please note that your setup will be prone to
-csrf attacks:
-
-.. code-block:: console
-
-   MIDDLEWARE_CLASSES.remove('django.middleware.csrf.CsrfViewMiddleware')
-
-Then initialize the Database and register services with:
-
-.. code-block:: console
-
-   # /etc/init.d/gunicorn restart
-   # snf-manage syncdb --noinput
-   # snf-manage migrate im
-   # snf-manage loaddata groups
-   # snf-manage service-add "~okeanos home" https://cms.example.com/ home-icon.png
-   # snf-manage service-add "cyclades" https://cyclades.example.com/ui/
-   # snf-manage service-add "pithos+" https://pithos.example.com/ui/
-   # /etc/init.d/gunicorn restart
-   # /etc/init.d/apache2 restart
-
-Please note that in case pithos and cyclades nodes are the same node, the pithos url
-should be ``https://pithos.example.com/pithos/ui/`` .
-
-Let's create our first user. Go at ``http://accounts.example.com/im/`` and
-click the "CREATE ACCOUNT" button and fill all your data at the sign up form.
-Then click "SUBMIT". You should now see a green box on the top, which informs
-you that you made a successful request and the request has been sent to the
-administrators. So far so good, let's assume that you created the user with
-username ``user@example.com``.
-
-Now we need to activate that user. Return to a command prompt aand run:
-
-.. code-block:: console
-
-   # snf-manage user-list
-   # snf-manage user-modify --set-active 1
-
-where 1 should be the id of the user you previously created.
-
-All this can be done with one command:
-
-.. code-block:: console
-
-   # snf-manage user-add --password=12345 --active user@example.com Name LastName
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-backends.rst b/docs/i-backends.rst
deleted file mode 100644
index 9d36da6..0000000
--- a/docs/i-backends.rst
+++ /dev/null
@@ -1,61 +0,0 @@
-.. _i-backends:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-backends
-
-Backends
-++++++++
-
-:ref:`ganeti <i-ganeti>` ||
-:ref:`image <i-image>` ||
-:ref:`gtools <i-gtools>` ||
-:ref:`network <i-network>`
-
-The sections above, guide you though the actions needed to create a synnefo
-backend. Once you have at least one backend up and running you can go back to
-the :ref:`cyclades  <i-cyclades>` section, add the backend, create a public
-network and have full synnefo functionality.
-
-In the following sections we will refer to the following roles:
-
- * ``ganeti`` (all nodes of a Ganeti cluster/synnefo backend)
- * ``master`` (ganeti master node)
- * ``router``
-
-Please note that all these roles can be "played" by the same node.
-
-Prerequisites:
-~~~~~~~~~~~~~~
-
-``master``:
-
- - Available master IP that resolves to FQDN (ganeti.example.com)
-
-``ganeti``:
-
- - primary interface: `eth0` with IP that resolves to FQDN (nodeX.example.com)
- - /etc/hosts: hostname should not resolv to 127.* address.
- - /etc/ssh/ssh_host_rsa_key*: must be identical among all nodes.
- - extra interfaces: `eth1`, `eth2` (vlans can be used too)
- - NFS mount point: `/srv/pithos`
- - lvm: Volume Group named `ganeti`
-
-``router``:
-
- - primary interface: `eth0` with public routable IP
- - extra interfaces: `eth1`, `eth2` (vlans can be used too) connected with ganeti nodes
diff --git a/docs/i-cms.rst b/docs/i-cms.rst
deleted file mode 100644
index 87268d1..0000000
--- a/docs/i-cms.rst
+++ /dev/null
@@ -1,135 +0,0 @@
-.. _i-cms:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-cms ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-CMS Setup
-+++++++++
-
-The following apply to ``cms`` node. In the following sections
-we will refer to its IP as ``cms.example.com`` . Before install make sure
-you have db, apache and gunicorn setup already.
-
-IMPORTANT: Currently cms cannot coexist with astakos, synnefo and pithos roles
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-First install the corresponding package:
-
-.. code-block:: console
-
-   # apt-get install snf-cloudcms
-
-
-In `/etc/synnefo/cloudcms.conf` add:
-
-.. code-block:: console
-
-    CLOUDBAR_ACTIVE = True
-    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
-    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
-    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
-
-    WEBPROJECT_SERVE_STATIC = True
-
-Then restart the services and initialize database:
-
-.. code-block:: console
-
-    # /etc/init.d/gunicorn restart
-    # /etc/init.d/apache2 restart
-    # snf-manage syncdb
-    # snf-manage migrate
-
-Here we can load some initial data. Add in `/tmp/sites.json` :
-
-.. code-block:: console
-
-    [
-        {
-            "pk": 1,
-            "model": "sites.site",
-            "fields": {
-                "domain": "okeanos.grnet.gr",
-                "name": "okeanos.grnet.gr"
-            }
-        }
-    ]
-
-
-and in `/tmp/pages.json`:
-
-.. code-block:: console
-
-    [
-        {
-            "fields": {
-                "_cached_url": "/",
-                "_content_title": "",
-                "_page_title": "",
-                "active": true,
-                "creation_date": "2012-11-16 14:52:19",
-                "in_navigation": false,
-                "language": "en",
-                "level": 0,
-                "lft": 1,
-                "meta_description": "",
-                "meta_keywords": "",
-                "modification_date": "2012-11-16 14:52:19",
-                "navigation_extension": null,
-                "override_url": "/",
-                "parent": null,
-                "publication_date": "2012-11-16 14:50:00",
-                "publication_end_date": null,
-                "redirect_to": "",
-                "rght": 2,
-                "site": 1,
-                "slug": "okeanos",
-                "symlinked_page": null,
-                "template_key": "twocolwide",
-                "title": "Okeanos",
-                "translation_of": null,
-                "tree_id": 1
-            },
-            "model": "page.page",
-            "pk": 1
-        },
-        {
-            "fields": {
-                "ordering": 0,
-                "parent": 1,
-                "region": "main",
-                "text": "Welcome to Okeanos!!\r\n\r\n"
-            },
-            "model": "page.rawcontent",
-            "pk": 1
-        }
-    ]
-
-
-
-and finally run:
-
-.. code-block:: console
-
-    # snf-manage loaddata /tmp/sites.json
-    # snf-manage loaddata /tmp/page.json
-    # snf-manage createsuperuser --username=admin --email=admin@example --noinput
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-cyclades.rst b/docs/i-cyclades.rst
deleted file mode 100644
index e751833..0000000
--- a/docs/i-cyclades.rst
+++ /dev/null
@@ -1,157 +0,0 @@
-.. _i-cyclades:
-
-Synnefo
--------
-
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-cyclades ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Cyclades Setup
-++++++++++++++
-
-The following apply to ``cyclades`` node. In the rest of the sections
-we will refer to its IP with FQDN ``cyclades.example.com``.Please make sure you have
-db, mq, gunicorn, apache, webproject, pithos and astakos already setup.
-
-Install the corresponding package. Please note that memcache is needed for
-versions >= 0.13 :
-
-.. code-block:: console
-
-    # apt-get install memcached
-    # apt-get install python-memcache
-    # apt-get install snf-cyclades-app
-
-In `/etc/synnefo/cyclades.conf` add:
-
-.. code-block:: console
-
-    MAX_CIDR_BLOCK = 21
-    PUBLIC_USE_POOL = True
-
-    CUSTOM_BRIDGED_BRIDGE = 'br0'
-
-    MAX_VMS_PER_USER = 5
-    VMS_USER_QUOTA = {
-        'user@example.com': 20,
-    }
-    MAX_NETWORKS_PER_USER = 3
-    NETWORKS_USER_QUOTA = { 'user@example.com': 10 }
-    GANETI_DISK_TEMPLATES = ('blockdev', 'diskless', 'drbd', 'file', 'plain',
-                             'rbd',  'sharedfile', 'ext')
-    ASTAKOS_URL = 'https://accounts.example.com/im/authenticate'
-
-    SECRET_ENCRYPTION_KEY= "oEs0pt7Di1mkxA0P6FiK"
-
-    GANETI_CREATEINSTANCE_KWARGS = {
-        'os': 'snf-image+default',
-        'hvparams': {'serial_console': False},
-        'wait_for_sync': False}
-
-    GANETI_USE_HOTPLUG = True
-    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
-    CLOUDBAR_ACTIVE_SERVICE = '2'
-    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
-    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
-    BACKEND_DB_CONNECTION = 'postgresql://synnefo:example_passw0rd@db.example.com:5432/snf_pithos'
-    BACKEND_BLOCK_PATH = '/srv/pithos/data/'
-
-    AMQP_HOSTS = ["amqp://synnefo:example_rabbitmq_passw0rd@mq.example.com:5672"]
-
-    CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
-    VMAPI_BASE_URL = 'https://cyclades.example.com/'
-
-
-Restart services and initialize database:
-
-.. code-block:: console
-
-   # /etc/init.d/gunicorn restart
-   # /etc/init.d/apache2 restart
-   # snf-manage syncdb
-   # snf-manage migrate
-   # snf-manage loaddata flavors
-
-Enable dispatcher:
-
-.. code-block:: console
-
-   # sed -i 's/false/true/' /etc/default/snf-dispatcher
-   # /etc/init.d/snf-dispatcher start
-
-In order end-user to have access to the VM's console:
-
-.. code-block:: console
-
-   # apt-get install snf-vncauthproxy
-
-Edit `/etc/default/vncauthproxy`:
-
-.. code-block:: console
-
-   CHUID="www-data:nogroup"
-
-
-At this point you should setup a :ref:`backend <i-backends>`. Please refer to the
-coresponding section.  Here we assume that at least one backend is up and running,
-so we can add it in Cyclades with:
-
-.. code-block:: console
-
-   # snf-manage backend-add --clustername=ganeti.example.com --user=synnefo --pass=example_rapi_passw0rd
-
-After 0.13 every backend added stays in drained mode (no VMs can be added).
-Therefore get your backend ID (propably 1) and run:
-
-.. code-block:: console
-
-   # snf-manage backend-list
-   # snf-manage backend-modify --drained=False 1
-
-Further assumptions:
-
-- Preprovisioned Bridges: ``br0``, ``prv0``, ``prv1..prv20``
-- Available "public" Subnet: ``10.0.1.0/24``
-- Available "public" Gateway: ``10.0.1.1``
-- Connectivity link for public network: ``br0``
-
-
-Here admin has to define two different resource pools in Synnefo:
-
- - MAC prefix Pool
- - Bridge Pool
-
-.. code-block:: console
-
-   # snf-manage pool-create --type=mac-prefix --base=aa:00:0 --size=65536
-   # snf-manage pool-create --type=bridge --base=prv --size=20
-
-Add the synnefo setting in :file:`/etc/synnefo/cyclades.conf`:
-
-.. code-block:: console
-
-   PRIVATE_MAC_FILTERED_BRIDGE = 'prv0'
-
-Add public network where the VM's will eventually connect to in order to
-access Internet:
-
-.. code-block:: console
-
-   # snf-manage network-create --subnet=10.0.1.0/24 --gateway=10.0.1.1 --public --dhcp --flavor=CUSTOM --mode=bridged --link=br0 --name=Internet --backend-id=1
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-db.rst b/docs/i-db.rst
deleted file mode 100644
index 0eaa579..0000000
--- a/docs/i-db.rst
+++ /dev/null
@@ -1,69 +0,0 @@
-.. _i-db:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-db ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Database Setup
-++++++++++++++
-
-The following apply to ``db`` node. For the rest of the sections we will
-refer to its IP as ``db.example.com`` .
-
-First install progresql:
-
-.. code-block:: console
-
-   # apt-get install postgresql
-
-We create a database called ``snf_apps``, that will host all django
-apps related tables. We also create the user ``synnefo`` and grant him all
-privileges on the database. We do this by running:
-
-.. code-block:: console
-
-   # su - postgres
-   postgres:~$ psql
-   postgres=# CREATE DATABASE snf_apps WITH ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0;
-   postgres=# CREATE USER synnefo WITH PASSWORD 'example_passw0rd';
-   postgres=# GRANT ALL PRIVILEGES ON DATABASE snf_apps TO synnefo;
-
-We also create the database ``snf_pithos`` needed by the pithos+ backend and
-grant the ``synnefo`` user all privileges on the database.
-
-.. code-block:: console
-
-   postgres=# CREATE DATABASE snf_pithos WITH ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0;
-   postgres=# GRANT ALL PRIVILEGES ON DATABASE snf_pithos TO synnefo;
-
-Configure the database to listen to all network interfaces. You can do this by
-editting the file `/etc/postgresql/8.4/main/postgresql.conf` with:
-
-| ``listen_addresses = '*'``
-
-Furthermore, edit `/etc/postgresql/8.4/main/pg_hba.conf` to allow the nodes
-to connect to the database. Add the following line:
-
-| ``host		all	all	4.3.2.0/24	md5``
-
-.. code-block:: console
-
-   # /etc/init.d/postgresql restart
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-ganeti.rst b/docs/i-ganeti.rst
deleted file mode 100644
index 0bdddf0..0000000
--- a/docs/i-ganeti.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-.. _i-ganeti:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Backends
-++++++++
-
-ganeti ||
-:ref:`image <i-image>` ||
-:ref:`gtools <i-gtools>` ||
-:ref:`network <i-network>`
-
-
-Ganeti Setup
-~~~~~~~~~~~~
-
-In ``ganeti`` nodes install GRNet specific Ganeti package and enable drbd:
-
-.. code-block:: console
-
-   # apt-get install python-bitarray
-   # apt-get install snf-ganeti ganeti-htools
-   # modprobe drbd minor_count=255 usermode_helper=/bin/true
-
-
-The following apply to ``master`` node. Here we will create a Ganeti cluster with
-all available ``ganeti`` nodes. Please note that Ganeti needs a pair of rsa/dsa keys
-for the root user. If already exist in `/root/.ssh/` in all nodes then --no-ssh-init
-can be used. In omitted then the existing files will be overriden. Upon node add
-Ganeti will replace `/etc/ssh/ssh_host*` files with the master's ones:
-
-.. code-block:: console
-
-    # gnt-cluster init --enabled-hypervisors=kvm \
-                       --vg-name=ganeti \
-                       --nic-parameters link=br0,mode=bridged \
-                       --master-netdev eth0 \
-                       --default-iallocator hail \
-                       --hypervisor-parameters kvm:kernel_path=,vnc_bind_address=0.0.0.0 \
-                       --no-ssh-init --no-etc-hosts \
-                       ganeti.example.com
-
-    # gnt-cluster modify --disk-parameters=drbd:metavg=ganeti
-    # gnt-group modify --disk-parameters=drbd:metavg=ganeti default
-
-    # for n in node2 node3 node4 node5 node6; do
-        gnt-node add --no-ssh-key-check --master-capable=yes --vm-capable=yes $n.example.com
-      done
-
-We need to add a rapi user to Ganeti so that Synnefo can talk with the backend:
-
-.. code-block:: console
-
-   # result=$(echo -n "synnefo:Ganeti Remote API:example_rapi_passw0rd" | openssl md5)
-   # echo "synnefo {HA1} $result" >> /var/lib/ganeti/rapi/users
-   # /etc/init.d/ganeti restart
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-gtools.rst b/docs/i-gtools.rst
deleted file mode 100644
index 61017a9..0000000
--- a/docs/i-gtools.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-.. _i-gtools:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Backends
-++++++++
-
-:ref:`ganeti <i-ganeti>` ||
-:ref:`image <i-image>` ||
-gtools ||
-:ref:`network <i-network>`
-
-gtools Setup
-~~~~~~~~~~~~
-
-The following apply to ``ganeti`` nodes.
-
-.. code-block:: console
-
-   # apt-get install snf-cyclades-gtools
-
-Add this line in `/etc/synnefo/gtools.conf`
-
-.. code-block:: console
-
-   AMQP_HOSTS = ["amqp://synnefo:example_rabbitmq_passw0rd@mq.example.com:5672"]
-
-
-and enable ``snf-ganeti-eventd``:
-
-.. code-block:: console
-
-   # sed -i 's/false/true/' /etc/default/snf-ganeti-eventd
-   # /etc/init.d/snf-ganeti-eventd start
-
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-gunicorn.rst b/docs/i-gunicorn.rst
deleted file mode 100644
index 18a84b5..0000000
--- a/docs/i-gunicorn.rst
+++ /dev/null
@@ -1,54 +0,0 @@
-.. _i-gunicorn:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-gunicorn ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Gunicorn Setup
-++++++++++++++
-
-The following apply to ``astakos``, ``pithos``, ``cyclades`` and ``cms`` nodes.
-
-.. code-block:: console
-
-  # apt-get install -t squeeze-backports gunicorn
-
-In `/etc/gunicorn.d/synnefo` add:
-
-.. code-block:: console
-
-   CONFIG = {
-    'mode': 'django',
-    'environment': {
-      'DJANGO_SETTINGS_MODULE': 'synnefo.settings',
-    },
-    'working_dir': '/etc/synnefo',
-    'user': 'www-data',
-    'group': 'www-data',
-    'args': (
-      '--bind=127.0.0.1:8080',
-      '--workers=4',
-      '--worker-class=gevent',
-      '--log-level=debug',
-    ),
-   }
-
-Setting ``gevent`` for worker-class, requires webproject to support
-pooling and greenlets.
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-image.rst b/docs/i-image.rst
deleted file mode 100644
index abf0540..0000000
--- a/docs/i-image.rst
+++ /dev/null
@@ -1,71 +0,0 @@
-.. _i-image:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Backends
-++++++++
-
-:ref:`ganeti <i-ganeti>` ||
-image ||
-:ref:`gtools <i-gtools>` ||
-:ref:`network <i-network>`
-
-snf-image Setup
-~~~~~~~~~~~~~~~
-
-The following apply to ``ganeti`` nodes.
-
-Firstly mount the ``pithos`` nfs mount point. Assuming that ``pithos`` node
-(the one who does the NFS export) is node1.example.com, append the following
-line in `/etc/fstab`:
-
-.. code-block:: console
-
-   node1:/pithos /srv/pithos nfs4 defaults,rw,noatime,nodiratime,intr,rsize=1048576,wsize=1048576,noacl
-
-and then:
-
-.. code-block:: console
-
-   apt-get install -t squeeze-backports nfs-common
-   mkdir /srv/pithos
-   mount /srv/pithos
-
-.. code-block:: console
-
-   # apt-get install snf-image-host
-
-Append this lines in `/etc/snf-image/default`
-
-.. code-block:: console
-
-    PITHOS_DB="postgresql://synnefo:example_passw0rd@db.example.com:5432/snf_pithos"
-    PITHOS_DATA="/srv/pithos/data"
-    PROGRESS_MONITOR='snf-progress-monitor'
-
-
-and create snf-image-helper with:
-
-.. code-block:: console
-
-   # snf-image-update-helper -y
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-kamaki.rst b/docs/i-kamaki.rst
deleted file mode 100644
index 0a1d1da..0000000
--- a/docs/i-kamaki.rst
+++ /dev/null
@@ -1,88 +0,0 @@
-.. _i-kamaki:
-
-Synnefo
--------
-
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-kamaki ||
-:ref:`backends <i-backends>`
-
-kamaki Setup
-++++++++++++
-
-The following apply to ``client`` node. Here we install a command line tool
-that the end-user can use instead of web UI. Prerequisites are that the
-client node can connect to synnefo nodes by using their FQDN and that
-the user has already aquired an AUTH_TOKEN from his/her profile page after
-signing in.
-
-Install the corresponding package:
-
-.. code-block:: console
-
-    # apt-get install kamaki
-
-and build the correct config file:
-
-.. code-block:: console
-
-    # kamaki config set astakos.url "https://accounts.example.com"
-    # kamaki config set compute.url "https://cyclades.example.com/api/v1.1"
-    # kamaki config set image.url "https://cyclades.example.com/plankton"
-    # kamaki config set store.enable on
-    # kamaki config set store.pithos_extensions on
-    # kamaki config set store.url "https://pithos.example.com/v1"
-    # kamaki config set store.account "user@example.com"
-
-    # kamaki config set global.token AUTH_TOKEN
-
-
-Please download a Debian Base image from our repo:
-
-
-.. code-block:: console
-
-    # wget https://pithos.okeanos.grnet.gr/public/66ke3 -O /tmp/debian_base.diskdump
-
-create a container in pithos, upload it:
-
-.. code-block:: console
-
-   # kamaki store create images
-   # kamaki store upload --container images /tmp/debian_base.diskdump debian_base.diskdump
-
-and register it to plankton:
-
-.. code-block:: console
-
-   # kamaki image register "Debian Base"  pithos://user@example/images/debian_base.diskdump \
-                    --disk-format=diskdump \
-                    --property OSFAMILY=linux \
-                    --property ROOT_PARTITION=1 \
-                    --property description="Debian Squeeze Base System" \
-                    --property size=450M \
-                    --property kernel=2.6.32 \
-                    --property GUI="No GUI" \
-                    --property sortorder=1 \
-                    --property USERS=root \
-                    --property OS=debian \
-                    --public
-
-
-
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-mq.rst b/docs/i-mq.rst
deleted file mode 100644
index c36b1d5..0000000
--- a/docs/i-mq.rst
+++ /dev/null
@@ -1,44 +0,0 @@
-.. _i-mq:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-mq ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Message Queue Setup
-+++++++++++++++++++
-
-The following apply to ``mq`` node. For the rest of the sections we will refer to
-its IP as ``mq.example.com`` .
-
-.. code-block:: console
-
-  # apt-get install rabbitmq-server
-
-
-Add new administrator user named ``synnefo`` and gets full privileges on all
-exchanges:
-
-.. code-block:: console
-
-   # rabbitmqctl add_user synnefo "examle_rabbitmq_passw0rd"
-   # rabbitmqctl set_permissions synnefo ".*" ".*" ".*"
-   # rabbitmqctl delete_user guest
-   # rabbitmqctl set_user_tags synnefo administrator
-   # /etc/init.d/rabbitmq-server restart
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-network.rst b/docs/i-network.rst
deleted file mode 100644
index 0a862ef..0000000
--- a/docs/i-network.rst
+++ /dev/null
@@ -1,71 +0,0 @@
-.. _i-network:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Backends
-++++++++
-
-:ref:`ganeti <i-ganeti>` ||
-:ref:`image <i-image>` ||
-:ref:`gtools <i-gtools>` ||
-network
-
-snf-network Setup
-~~~~~~~~~~~~~~~~~
-
-The following apply to ``ganeti`` nodes.
-
-
-Install the corresponding package:
-
-.. code-block:: console
-
-   # apt-get install nfqueue-bindings-python=0.3+physindev-1
-   # apt-get install snf-network
-   # apt-get install nfdhcpd
-
-In `/etc/snf-network/default` add:
-
-.. code-block:: console
-
-   MAC_MASK = ff:ff:f0:00:00:00
-
-Edit `/etc/nfdhcpd/nfdhcpd.conf` to your preferances (DNS, IPv6) and add the
-following iptables rules:
-
-.. code-block:: console
-
-    # iptables -t mangle -A PREROUTING -i br+ -p udp -m udp --dport 67 -j NFQUEUE --queue-num 42
-    # iptables -t mangle -A PREROUTING -i tap+ -p udp -m udp --dport 67 -j NFQUEUE --queue-num 42
-    # iptables -t mangle -A PREROUTING -i prv+ -p udp -m udp --dport 67 -j NFQUEUE --queue-num 42
-
-    # ip6tables -t mangle -A PREROUTING -i br+ -p ipv6-icmp -m icmp6 --icmpv6-type 133 -j NFQUEUE --queue-num 43
-    # ip6tables -t mangle -A PREROUTING -i br+ -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j NFQUEUE --queue-num 44
-
-
-In router node in case you have a NAT setup run:
-
-.. code-block:: console
-
-    # iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
-    # ip addr add 10.0.1.1/24 dev eth1
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-ns.rst b/docs/i-ns.rst
deleted file mode 100644
index 32362dd..0000000
--- a/docs/i-ns.rst
+++ /dev/null
@@ -1,150 +0,0 @@
-.. _i-ns:
-
-Synnefo
--------
-
-
-:ref:`synnefo <i-synnefo>` ||
-ns ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Name Server Setup
-+++++++++++++++++
-
-The following applies to ``ns`` node. You will  create  an DNS to resolve all
-FQDNs used by both ``synnefo`` and ``backend`` nodes. All we need here is to have
-a physical node - ip - role mapping.
-
-Assumptions:
-~~~~~~~~~~~~
-
- - domain to use:  ``example.com``
- - nodes' IPv4 subnet: ``4.3.2.0/24``
-
-For the sake of simplicity we assume we have 6 nodes assinged the following roles:
-
-========  =========  ========================   ====================
-hostname  IP         roles                      FQDN
-========  =========  ========================   ====================
-node1     4.3.2.1    ns,router,client,astakos   accounts.example.com
-node2     4.3.2.2    cyclades                   cyclades.example.com
-node3     4.3.2.3    pithos                     pithos.example.com
-node4     4.3.2.4    cms                        cms.example.com
-node5     4.3.2.5    db                         db.example.com
-node6     4.3.2.6    mq                         mq.example.com
-node1     4.3.2.100  master                     ganeti.example.com
-========  =========  ========================   ====================
-
-
-First install the corresponding package:
-
-.. code-block:: console
-
-   # apt-get install bind9
-
-In `/etc/bind/zones/example.com` add:
-
-.. code-block:: console
-
-    $TTL 14400
-    $origin example.com.
-    @               IN      SOA     ns.example.com. admin.example.com. (
-    2012111903; the Serial Number
-    172800; the Refresh Rate
-    7200;  the Retry Time
-    604800; the Expiration Time
-    3600; the Minimum Time
-    )
-
-    @               IN        NS      ns.example.com.
-    @               IN        A       4.3.2.1
-    ns              IN        A       4.3.2.1
-
-    localhost       IN        A       127.0.0.1
-    example.com.    IN        MX      10 example.com.
-
-    mail            IN        CNAME   example.com.
-    www             IN        CNAME   example.com.
-    accounts        IN        CNAME   node1.example.com.
-    cyclades        IN        CNAME   node2.example.com.
-    pithos          IN        CNAME   node3.example.com.
-    cms             IN        CNAME   node4.example.com.
-    db              IN        CNAME   node5.example.com.
-    mq              IN        CNAME   node6.example.com.
-
-    node1           IN        A       4.3.2.1
-    node2           IN        A       4.3.2.2
-    node3           IN        A       4.3.2.3
-    node4           IN        A       4.3.2.4
-    node5           IN        A       4.3.2.5
-    node6           IN        A       4.3.2.6
-
-    ganeti          IN        A       4.3.2.100
-
-
-In `/etc/bind/rev/0-24.2.3.4.in-addr.arpa.zone` add:
-
-.. code-block:: console
-
-    $TTL 86400
-    $ORIGIN 0-24.2.3.4.in-addr.arpa.
-    @               IN      SOA     ns.example.com. admin.skata.com. (
-    2012070900; the Serial Number
-    172800; the Refresh Rate
-    7200;  the Retry Time
-    604800; the Expiration Time
-    3600 ; the Minimum Time
-    )
-    @               IN        NS      ns.example.com.
-
-    1               IN        PTR     node1.example.com.
-    2               IN        PTR     node2.example.com.
-    3               IN        PTR     node3.example.com.
-    4               IN        PTR     node4.example.com.
-    5               IN        PTR     node5.example.com.
-    6               IN        PTR     node6.example.com.
-
-
-In `/etc/bind/named.conf.local` add:
-
-.. code-block:: console
-
-    zone "example.com" in {
-            type master;
-            file "/etc/bind/zones/example.com";
-    };
-
-    zone "0-24.2.3.4.in-addr.arpa" in {
-            type master;
-            file "/etc/bind/rev/0-24.2.3.4.in-addr.arpa.zone";
-    };
-
-And then restart the service:
-
-.. code-block:: console
-
-    # /etc/init.d/bind9 restart
-
-
-In all ``synnefo`` and ``backend`` nodes add in `/etc/resolv.conf`:
-
-.. code-block:: console
-
-    domain example.com
-    search example.com
-    nameserver 4.3.2.1
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-pithos.rst b/docs/i-pithos.rst
deleted file mode 100644
index 0b23a40..0000000
--- a/docs/i-pithos.rst
+++ /dev/null
@@ -1,109 +0,0 @@
-.. _i-pithos:
-
-Synnefo
--------
-
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-pithos ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-
-Pithos Setup
-++++++++++++
-
-The following apply to ``pithos`` node. For the rest of the sections we will
-refer to its IP with FQDN ``pithos.example.com``. Please make sure you have db,
-gunicorn, apache, webproject and astakos already setup.
-
-
-First you must setup an NFS server and export `/srv/pithos` directory.
-
-.. code-block:: console
-
-   # cd /srv/pithos
-   # mkdir data
-   # chown www-data:www-data data
-   # chmod g+ws data
-   # apt-get install -t squeeze-backports nfs-kernel-server
-
-Here add these lines in `/etc/exports`:
-
-.. code-block:: console
-
-    /srv/pithos 4.3.2.0/24(rw,sync,no_subtree_check,no_root_squash)
-    /srv 4.3.2.0/24(rw,fsid=0,no_subtree_check,sync)
-
-
-And then install the corresponding package:
-
-.. code-block:: console
-
-   # apt-get install snf-pithos-app
-
-In `/etc/synnefo/pithos.conf` add:
-
-.. code-block:: console
-
-    PITHOS_AUTHENTICATION_URL = 'https:/accounts.example.com/im/authenticate'
-    PITHOS_AUTHENTICATION_USERS = None
-    PITHOS_USER_CATALOG_URL = 'https://accounts.example.com/user_catalogs'
-    PITHOS_USER_FEEDBACK_URL = 'https://accounts.example.com/feedback'
-    PITHOS_USER_LOGIN_URL = 'https://accounts.example.com/login'
-
-    PITHOS_BACKEND_DB_CONNECTION = 'postgresql://synnefo:example_passw0rd@db.example.com:5432/snf_pithos'
-    PITHOS_BACKEND_BLOCK_PATH = '/srv/pithos/data'
-    PITHOS_BACKEND_QUOTA = 20 * 1024 * 1024 * 1024
-    PITHOS_UPDATE_MD5 = False
-    PITHOS_SERVICE_TOKEN = 'XXXXXXXXXXX'
-
-
-Install pithos web UI with:
-
-.. code-block::
-
-   # apt-get install snf-pithos-webclient
-
-In `/etc/synnefo/webclient.conf` add:
-
-.. code-block::
-
-    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
-    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
-    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
-
-    PITHOS_UI_CLOUDBAR_ACTIVE_SERVICE = 'XXXXXXXX'
-
-    PITHOS_UI_LOGIN_URL = "https://accounts.example.com/im/login?next="
-
-    PITHOS_UI_FEEDBACK_URL = "/feedback"
-
-
-The ``PITHOS_SERVICE_TOKEN`` and ``PITHOS_UI_CLOUDBAR_ACTIVE_SERVICE``  should be
-the Pithos+ token and id returned by running on the astakos node:
-
-.. code-block:: console
-
-   # snf-manage service-list
-
-After configuration is done, restart services:
-
-.. code-block:: console
-
-   # /etc/init.d/gunicorn restart
-   # /etc/init.d/apache2 restart
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/i-synnefo.rst b/docs/i-synnefo.rst
deleted file mode 100644
index 327fc2f..0000000
--- a/docs/i-synnefo.rst
+++ /dev/null
@@ -1,75 +0,0 @@
-.. _i-synnefo:
-
-Synnefo
--------
-
-synnefo ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-:ref:`webproject <i-webproject>` ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-
-The above sections are the software components/roles that you should setup in
-order to have full synnefo funtionality.  After successful installation, you
-will have the following services running:
-
- * Identity Management (Astakos)
- * Object Storage Service (Pithos+)
- * Compute Service (Cyclades)
- * Image Registry Service (Plankton)
-
-and a single unified Web UI to manage them all.
-
-It is really useful nodes to have fully qualified domain names. The installation
-needs additional CNAMEs, and therefor in the following section we will guide you
-though how to setup a DNS node so that all IP's (internal/public) will resolve to
-specific FQDN. `/etc/hosts` could be used for simplicity too.
-
-In the following sections we will refer to nodes based on their roles. To this
-end here we define the following roles:
-
- * ``synnefo`` (all available nodes for Synnefo components)
- * ``backend`` (all available VMCs - nodes to host VMs)
- * ``astakos``
- * ``cyclades``
- * ``pithos``
- * ``cms``
- * ``mq`` (message queue)
- * ``db`` (database)
- * ``ns`` (name server)
- * ``client`` (end-user)
-
-Please note that all these roles can be "played" by the same node, but for the
-sake of scalability is highly recommended to deploy Synnefo on more than 6 nodes,
-each with different role(s). In setup synnefo and backend nodes are the same
-ones.
-
-
-Prerequisites:
-++++++++++++++
-
-``synnefo``:
-
- - OS: Debian Squeeze
-
-``pithos``:
-
- - NFS server: export dir /srv/pithos
-
-Assumptions:
-++++++++++++
-
-``synnefo``:
-
- - primary interface: `eth0`
- - primary IP: inside 4.3.2.0/24 IPv4 subnet
diff --git a/docs/i-webproject.rst b/docs/i-webproject.rst
deleted file mode 100644
index f1d6cb6..0000000
--- a/docs/i-webproject.rst
+++ /dev/null
@@ -1,67 +0,0 @@
-.. _i-webproject:
-
-Synnefo
--------
-
-:ref:`synnefo <i-synnefo>` ||
-:ref:`ns <i-ns>` ||
-:ref:`apt <i-apt>` ||
-:ref:`mq <i-mq>` ||
-:ref:`db <i-db>` ||
-:ref:`gunicorn <i-gunicorn>` ||
-:ref:`apache <i-apache>` ||
-webproject ||
-:ref:`astakos <i-astakos>` ||
-:ref:`cms <i-cms>` ||
-:ref:`pithos <i-pithos>` ||
-:ref:`cyclades <i-cyclades>` ||
-:ref:`kamaki <i-kamaki>` ||
-:ref:`backends <i-backends>`
-
-Webproject Setup
-++++++++++++++++
-
-The following apply to  ``astakos``, ``pithos``, ``cyclades`` and ``cms`` nodes.
-
-First install:
-
-.. code-block:: console
-
-   # apt-get install python-psycopg2
-   # apt-get install snf-webproject
-
-In `/etc/synnefo/snf-webproject.conf` add:
-
-.. code-block:: console
-   from synnefo.lib.db.pooled_psycopg2 import monkey_patch_psycopg2
-   monkey_patch_psycopg2()
-
-   from synnefo.lib.db.psyco_gevent import make_psycopg_green
-   make_psycopg_green()
-
-   DATABASES = {
-    'default': {
-        # 'postgresql_psycopg2', 'postgresql','mysql', 'sqlite3' or 'oracle'
-        'ENGINE': 'postgresql_psycopg2',
-        'OPTIONS': {'synnefo_poolsize': 8},
-         # ATTENTION: This *must* be the absolute path if using sqlite3.
-         # See: http://docs.djangoproject.com/en/dev/ref/settings/#name
-        'NAME': 'snf_apps',
-        'USER': 'synnefo',                      # Not used with sqlite3.
-        'PASSWORD': 'examle_passw0rd',          # Not used with sqlite3.
-        # Set to empty string for localhost. Not used with sqlite3.
-        'HOST': 'db.example.com',
-        # Set to empty string for default. Not used with sqlite3.
-        'PORT': '5432',
-    }
-   }
-
-   USE_X_FORWARDED_HOST = True
-
-   SECRET_KEY = 'sy6)mw6a7x%n)-example_secret_key#zzk4jo6f2=uqu!1o%)'
-
-All the above enables pooling (of connections) and greenlet context.
-
-
-Test your Setup:
-++++++++++++++++
diff --git a/docs/images/synnefo-arch2-roles.png b/docs/images/synnefo-arch2-roles.png
new file mode 100644
index 0000000..138b68b
Binary files /dev/null and b/docs/images/synnefo-arch2-roles.png differ
diff --git a/docs/images/synnefo-arch2.png b/docs/images/synnefo-arch2.png
new file mode 100644
index 0000000..de693e9
Binary files /dev/null and b/docs/images/synnefo-arch2.png differ
diff --git a/docs/images/synnefo-arch3.png b/docs/images/synnefo-arch3.png
new file mode 100644
index 0000000..2ce4be5
Binary files /dev/null and b/docs/images/synnefo-arch3.png differ
diff --git a/docs/images/synnefo-architecture1.png b/docs/images/synnefo-architecture1.png
deleted file mode 100644
index 8c71d30..0000000
Binary files a/docs/images/synnefo-architecture1.png and /dev/null differ
diff --git a/docs/index.rst b/docs/index.rst
index 1fb42e7..0df4630 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -17,79 +17,71 @@ Welcome to Synnefo's documentation
    :maxdepth: 1
 
    Identity Management (codename: astakos) <astakos>
-   Object Storage Service (codename: pithos+) <pithos>
+   Object Storage Service (codename: pithos) <pithos>
    Compute Service (codename: cyclades) <cyclades>
    Network Service (part of Cyclades) <networks>
-   Image Registry (codename: plankton) <plankton>
-   Billing Service (codename: aquarium) <http://docs.dev.grnet.gr/aquarium/latest/index.html>
+   Image Service (codename: plankton) <plankton>
    Volume Storage Service (codename: archipelago) <archipelago>
 
 .. image:: images/synnefo-overview.png
    :target: _images/synnefo-overview.png
 
-There are also components for:
+There are also the following tools:
 
 .. toctree::
    :maxdepth: 1
 
-   Secure image deployment (snf-image tool) <snf-image>
-   Command-line cloud management (kamaki tool) <http://docs.dev.grnet.gr/kamaki/latest/index.html>
-   Image bundling/uploading/registering (snf-image-creator tool) <http://docs.dev.grnet.gr/snf-image-creator/latest/index.html>
+   kamaki: Command-line client <http://docs.dev.grnet.gr/kamaki/latest/index.html>
+   snf-image-creator: Image bundling/uploading/registering tool <http://docs.dev.grnet.gr/snf-image-creator/latest/index.html>
+   snf-image: Secure image deployment tool <snf-image>
 
 Synnefo is designed to be as simple, scalable and production ready as possible.
 Furthermore, although it can be deployed in small configurations, its prime
-target is large installations. If you are planning for the latter, you should
-first be completely aware of what you want to provide, the architecture of your
-cluster/s and Synnefo's overall architecture before you start deploying.
+target is large installations.
 
-All Synnefo components use an intuitive settings mechanism, that gives you the
-ability to either deploy the above services independently and standalone, or
-interconnected with each other, in large configurations.
+All Synnefo components use an intuitive settings mechanism, that adds and removes
+settings dynamically as components are getting added or removed from a physical
+node. All settings are stored in a single location.
 
+.. _general-arch:
 
 Synnefo General Architecture
 ============================
 
 The following graph shows the whole Synnefo architecture and how it interacts
-with multiple Ganeti clusters. Right click on the image and select "Open image
-in new tab" to be able to zoom in.
+with multiple Ganeti clusters.
 
-.. image:: images/synnefo-architecture1.png
+.. image:: images/synnefo-arch2.png
    :width: 100%
-   :target: _images/synnefo-architecture1.png
+   :target: _images/synnefo-arch2.png
 
+Synnefo also supports RADOS as an alternative storage backend for
+Files/Images/VM disks. :ref:`Here <syn+archip+rados>` is a graph that shows
+Synnefo running with two different storage backends.
 
 Synnefo Guides
 ==============
 
-There are 5 guides for Synnefo.
+There are 4 guides for Synnefo.
 
-The installation overview walks through the synnefo components and defines roles
-per node so that each role can be installed separately. Please note that
-different roles can still coexist in the same node and there is also a posibility
-to install everything on one node. For the sake of scalability this is not recommended.
-
-The quick installation guide describes how to install the whole synnefo stack
+The quick installation guide describes how to install the whole Synnefo stack
 in just two physical nodes, for testing purposes. This guide is useful to those
-interested in deploying synnefo in large scale, as a starting point that will
-help them get familiar with the synnefo components and overall architecture, as
+interested in deploying Synnefo in large scale, as a starting point that will
+help them get familiar with the Synnefo components and overall architecture, as
 well as the interconnection between different services. Such an installation,
-also provides a quick preview of the basic synnefo features, although we would
-like to think that synnefo unveils its real power while scaling.
+also provides a quick preview of the basic Synnefo features, although we would
+like to think that Synnefo's real power unveils while scaling.
 
 The Administrator's Guide targets system administrators, who want to dive into
-more details and common tasks regarding Synnefo. The Developer's Guide targets
-developers, who want to build on top of Synnefo and so describes all the
-different types of interfaces Synnefo provides to the external world. The
-Integrator's Guide targets developers, who want to actually
-extend/modify/change Synnefo itself, so describes Synnefo's indepth
-architecture and the internals of Synnefo components.
+more details and common tasks regarding Synnefo. For the experienced Synnefo
+administrator, there is also a section that describes how to deploy Synnefo in
+large scale with a corresponding guide.
 
-
-.. toctree::
-   :maxdepth: 1
-
-   Installation Guide/Overview <i-synnefo>
+The Developer's Guide targets developers, who want to build on top of Synnefo
+and so describes all the different types of interfaces Synnefo provides to the
+external world. The Integrator's Guide targets developers, who want to actually
+extend/modify/change Synnefo itself, so describes Synnefo's indepth
+architecture and the internals of Synnefo components (currently out-of-date!).
 
 .. toctree::
    :maxdepth: 1
@@ -107,14 +99,6 @@ architecture and the internals of Synnefo components.
 List of all Synnefo components
 ==============================
 
-Here are all Synnefo components. Combined in different ways, they provide all
-Synnefo services. All components are released as:
-
-.. toctree::
-
-   debian packages <http://docs.dev.grnet.gr/debs/>
-   python packages <http://docs.dev.grnet.gr/pypi/>
-
 They are also available from our apt repository: ``apt.okeanos.grnet.gr``
 
  * `snf-common <http://docs.dev.grnet.gr/snf-common/latest/index.html>`_
@@ -122,7 +106,6 @@ They are also available from our apt repository: ``apt.okeanos.grnet.gr``
  * `snf-astakos-app <http://docs.dev.grnet.gr/astakos/latest/index.html>`_
  * `snf-pithos-backend <http://docs.dev.grnet.gr/pithos/latest/backends.html>`_
  * `snf-pithos-app <http://docs.dev.grnet.gr/pithos/latest/index.html>`_
- * `snf-pithos-tools <http://docs.dev.grnet.gr/pithos/latest/index.html>`_
  * `snf-pithos-webclient <http://docs.dev.grnet.gr/pithos-webclient/latest/index.html>`_
  * `snf-cyclades-app <http://docs.dev.grnet.gr/snf-cyclades-app/latest/index.html>`_
  * `snf-cyclades-gtools <http://docs.dev.grnet.gr/snf-cyclades-gtools/latest/index.html>`_
@@ -142,6 +125,10 @@ You can contact the Synnefo team at the following mailing lists:
  * Users list: synnefo@googlegroups.com
  * Developers list: synnefo-devel@googlegroups.com
 
+The official site is:
+
+ `http://www.synnefo.org <http://www.synnefo.org>`_
+
 Indices and tables
 ==================
 
diff --git a/docs/plankton-api-guide.rst b/docs/plankton-api-guide.rst
index 929150d..b365a0c 100644
--- a/docs/plankton-api-guide.rst
+++ b/docs/plankton-api-guide.rst
@@ -1,4 +1,4 @@
-.. _cyclades-api-guide:
+.. _plankton-api-guide:
 
 Plankton API Guide
 ^^^^^^^^^^^^^^^^^^
diff --git a/docs/quick-install-admin-guide.rst b/docs/quick-install-admin-guide.rst
index 5f88093..6705223 100644
--- a/docs/quick-install-admin-guide.rst
+++ b/docs/quick-install-admin-guide.rst
@@ -1258,11 +1258,10 @@ In the above command:
  * ``img_passwd``: the arbitrary root password of your new instance
  * ``img_format``: set to ``diskdump`` to reflect the type of the uploaded Image
  * ``img_id``: If you want to deploy an Image stored on Pithos+ (our case), this
-               should have the format
-               ``pithos://<username>/<container>/<filename>``:
-                * ``username``: ``user@example.com`` (defined during Astakos sign up)
-                * ``container``: ``pithos`` (default, if the Web UI was used)
-                * ``filename``: the name of file (visible also from the Web UI)
+               should have the format ``pithos://<username>/<container>/<filename>``:
+               * ``username``: ``user@example.com`` (defined during Astakos sign up)
+               * ``container``: ``pithos`` (default, if the Web UI was used)
+               * ``filename``: the name of file (visible also from the Web UI)
  * ``img_properties``: taken from the metadata file. Used only the two mandatory
                        properties ``OSFAMILY`` and ``ROOT_PARTITION``. `Learn more
                        <https://code.grnet.gr/projects/snf-image/wiki/Image_Format#Image-Properties>`_
diff --git a/docs/scale/i-apache.rst b/docs/scale/i-apache.rst
new file mode 100644
index 0000000..ecedb89
--- /dev/null
+++ b/docs/scale/i-apache.rst
@@ -0,0 +1,91 @@
+.. _i-apache:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+apache ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Apache Setup
+++++++++++++
+
+The following apply to ``astakos``, ``pithos``, ``cyclades`` and ``cms`` nodes.
+Here we assume that these nodes have FQDM ``nodeX.example.com``.
+
+First install corresponding packet:
+
+.. code-block:: console
+
+   # apt-get install apache2
+
+In `/etc/apache2/sites-available/synnefo` add:
+
+.. code-block:: console
+
+   <VirtualHost *:80>
+     ServerName nodeX.example.com
+
+     RewriteEngine On
+     RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
+   </VirtualHost>
+
+In `/etc/apache2/sites-available/synnefo-ssl` add:
+
+.. code-block:: console
+
+   <IfModule mod_ssl.c>
+   <VirtualHost _default_:443>
+     ServerName nodeX.example.com
+
+     Alias /static "/usr/share/synnefo/static"
+
+     AllowEncodedSlashes On
+
+     RequestHeader set X-Forwarded-Protocol "https"
+
+     <Proxy * >
+       Order allow,deny
+       Allow from all
+     </Proxy>
+
+     SetEnv                proxy-sendchunked
+     SSLProxyEngine        off
+     ProxyErrorOverride    off
+
+     ProxyPass        /static !
+     ProxyPass        / http://localhost:8080/ retry=0
+     ProxyPassReverse / http://localhost:8080/
+
+     SSLEngine on
+     SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
+     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
+   </VirtualHost>
+   </IfModule>
+
+Now enable sites and modules by running:
+
+.. code-block:: console
+
+   # a2enmod ssl
+   # a2enmod rewrite
+   # a2dissite default
+   # a2ensite synnefo
+   # a2ensite synnefo-ssl
+   # a2enmod headers
+   # a2enmod proxy_http
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-apt.rst b/docs/scale/i-apt.rst
new file mode 100644
index 0000000..e6fca5e
--- /dev/null
+++ b/docs/scale/i-apt.rst
@@ -0,0 +1,49 @@
+.. _i-apt:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+apt ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+APT Setup
++++++++++
+
+The following apply to ``synnefo`` nodes.
+
+To be able to download all synnefo components, you need to add the following
+lines in `/etc/apt/sources.list.d/synnefo.list` file:
+
+.. code-block:: console
+
+    deb http://apt.dev.grnet.gr squeeze main
+    deb-src http://apt.dev.grnet.gr squeeze main
+    deb http://apt.dev.grnet.gr squeeze-backports main
+    deb-src http://apt.dev.grnet.gr squeeze-backports main
+    deb http://backports.debian.org/debian-backports squeeze-backports main
+    deb http://www.rabbitmq.com/debian/ testing main
+
+Import the additional repos' GPG key and get the packages list:
+
+.. code-block:: console
+
+   # wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
+   # apt-key add rabbitmq-signing-key-public.asc
+   # curl https://dev.grnet.gr/files/apt-grnetdev.pub | apt-key add -
+   # apt-get update
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-astakos.rst b/docs/scale/i-astakos.rst
new file mode 100644
index 0000000..35cef38
--- /dev/null
+++ b/docs/scale/i-astakos.rst
@@ -0,0 +1,107 @@
+.. _i-astakos:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+astakos ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Astakos Setup
++++++++++++++
+
+The following apply to ``astakos`` node. In the following sections
+we will refer to its IP as ``accounts.example.com`` . Make sure
+you have db, mq, apache and gunicorn setup already.
+
+IMPORTANT: Currently if astakos coexists with cyclades/pithos roles, your setup is prone to csrf attacks.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+First install the corresponding package:
+
+.. code-block:: console
+
+   # apt-get install snf-astakos-app
+
+In `/etc/synnefo/astakos.conf` add:
+
+.. code-block:: console
+
+    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
+    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
+    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
+
+    ASTAKOS_IM_MODULES = ['local']
+
+    ASTAKOS_BASEURL = 'https://accounts.example.com'
+
+    ASTAKOS_SITENAME = '~okeanos @ example.com'
+    ASTAKOS_RECAPTCHA_PUBLIC_KEY = '6LeFidMSAAAAAM7Px7a96YQzsBcKYeXCI_sFz0Gk'
+    ASTAKOS_RECAPTCHA_PRIVATE_KEY = '6LeFidMSAAAAAFv5U5NSayJJJhr0roludAidPd2M'
+
+    ASTAKOS_RECAPTCHA_USE_SSL = True
+    ASTAKOS_RECAPTCHA_ENABLED = True
+
+    ASTAKOS_COOKIE_DOMAIN = 'example.com'
+
+If ``astakos`` is on the same node with ``cyclades`` or ``pithos``, add the following
+line in `/etc/synnefo/astakos.conf` but please note that your setup will be prone to
+csrf attacks:
+
+.. code-block:: console
+
+   MIDDLEWARE_CLASSES.remove('django.middleware.csrf.CsrfViewMiddleware')
+
+Then initialize the Database and register services with:
+
+.. code-block:: console
+
+   # /etc/init.d/gunicorn restart
+   # snf-manage syncdb --noinput
+   # snf-manage migrate im
+   # snf-manage loaddata groups
+   # snf-manage service-add "~okeanos home" https://cms.example.com/ home-icon.png
+   # snf-manage service-add "cyclades" https://cyclades.example.com/ui/
+   # snf-manage service-add "pithos+" https://pithos.example.com/ui/
+   # /etc/init.d/gunicorn restart
+   # /etc/init.d/apache2 restart
+
+Please note that in case pithos and cyclades nodes are the same node, the pithos url
+should be ``https://pithos.example.com/pithos/ui/`` .
+
+Let's create our first user. Go at ``http://accounts.example.com/im/`` and
+click the "CREATE ACCOUNT" button and fill all your data at the sign up form.
+Then click "SUBMIT". You should now see a green box on the top, which informs
+you that you made a successful request and the request has been sent to the
+administrators. So far so good, let's assume that you created the user with
+username ``user@example.com``.
+
+Now we need to activate that user. Return to a command prompt aand run:
+
+.. code-block:: console
+
+   # snf-manage user-list
+   # snf-manage user-modify --set-active 1
+
+where 1 should be the id of the user you previously created.
+
+All this can be done with one command:
+
+.. code-block:: console
+
+   # snf-manage user-add --password=12345 --active user@example.com Name LastName
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-backends.rst b/docs/scale/i-backends.rst
new file mode 100644
index 0000000..9d36da6
--- /dev/null
+++ b/docs/scale/i-backends.rst
@@ -0,0 +1,61 @@
+.. _i-backends:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+backends
+
+Backends
+++++++++
+
+:ref:`ganeti <i-ganeti>` ||
+:ref:`image <i-image>` ||
+:ref:`gtools <i-gtools>` ||
+:ref:`network <i-network>`
+
+The sections above, guide you though the actions needed to create a synnefo
+backend. Once you have at least one backend up and running you can go back to
+the :ref:`cyclades  <i-cyclades>` section, add the backend, create a public
+network and have full synnefo functionality.
+
+In the following sections we will refer to the following roles:
+
+ * ``ganeti`` (all nodes of a Ganeti cluster/synnefo backend)
+ * ``master`` (ganeti master node)
+ * ``router``
+
+Please note that all these roles can be "played" by the same node.
+
+Prerequisites:
+~~~~~~~~~~~~~~
+
+``master``:
+
+ - Available master IP that resolves to FQDN (ganeti.example.com)
+
+``ganeti``:
+
+ - primary interface: `eth0` with IP that resolves to FQDN (nodeX.example.com)
+ - /etc/hosts: hostname should not resolv to 127.* address.
+ - /etc/ssh/ssh_host_rsa_key*: must be identical among all nodes.
+ - extra interfaces: `eth1`, `eth2` (vlans can be used too)
+ - NFS mount point: `/srv/pithos`
+ - lvm: Volume Group named `ganeti`
+
+``router``:
+
+ - primary interface: `eth0` with public routable IP
+ - extra interfaces: `eth1`, `eth2` (vlans can be used too) connected with ganeti nodes
diff --git a/docs/scale/i-cms.rst b/docs/scale/i-cms.rst
new file mode 100644
index 0000000..87268d1
--- /dev/null
+++ b/docs/scale/i-cms.rst
@@ -0,0 +1,135 @@
+.. _i-cms:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+cms ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+CMS Setup
++++++++++
+
+The following apply to ``cms`` node. In the following sections
+we will refer to its IP as ``cms.example.com`` . Before install make sure
+you have db, apache and gunicorn setup already.
+
+IMPORTANT: Currently cms cannot coexist with astakos, synnefo and pithos roles
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+First install the corresponding package:
+
+.. code-block:: console
+
+   # apt-get install snf-cloudcms
+
+
+In `/etc/synnefo/cloudcms.conf` add:
+
+.. code-block:: console
+
+    CLOUDBAR_ACTIVE = True
+    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
+    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
+    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
+
+    WEBPROJECT_SERVE_STATIC = True
+
+Then restart the services and initialize database:
+
+.. code-block:: console
+
+    # /etc/init.d/gunicorn restart
+    # /etc/init.d/apache2 restart
+    # snf-manage syncdb
+    # snf-manage migrate
+
+Here we can load some initial data. Add in `/tmp/sites.json` :
+
+.. code-block:: console
+
+    [
+        {
+            "pk": 1,
+            "model": "sites.site",
+            "fields": {
+                "domain": "okeanos.grnet.gr",
+                "name": "okeanos.grnet.gr"
+            }
+        }
+    ]
+
+
+and in `/tmp/pages.json`:
+
+.. code-block:: console
+
+    [
+        {
+            "fields": {
+                "_cached_url": "/",
+                "_content_title": "",
+                "_page_title": "",
+                "active": true,
+                "creation_date": "2012-11-16 14:52:19",
+                "in_navigation": false,
+                "language": "en",
+                "level": 0,
+                "lft": 1,
+                "meta_description": "",
+                "meta_keywords": "",
+                "modification_date": "2012-11-16 14:52:19",
+                "navigation_extension": null,
+                "override_url": "/",
+                "parent": null,
+                "publication_date": "2012-11-16 14:50:00",
+                "publication_end_date": null,
+                "redirect_to": "",
+                "rght": 2,
+                "site": 1,
+                "slug": "okeanos",
+                "symlinked_page": null,
+                "template_key": "twocolwide",
+                "title": "Okeanos",
+                "translation_of": null,
+                "tree_id": 1
+            },
+            "model": "page.page",
+            "pk": 1
+        },
+        {
+            "fields": {
+                "ordering": 0,
+                "parent": 1,
+                "region": "main",
+                "text": "Welcome to Okeanos!!\r\n\r\n"
+            },
+            "model": "page.rawcontent",
+            "pk": 1
+        }
+    ]
+
+
+
+and finally run:
+
+.. code-block:: console
+
+    # snf-manage loaddata /tmp/sites.json
+    # snf-manage loaddata /tmp/page.json
+    # snf-manage createsuperuser --username=admin --email=admin@example --noinput
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-cyclades.rst b/docs/scale/i-cyclades.rst
new file mode 100644
index 0000000..e751833
--- /dev/null
+++ b/docs/scale/i-cyclades.rst
@@ -0,0 +1,157 @@
+.. _i-cyclades:
+
+Synnefo
+-------
+
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+cyclades ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Cyclades Setup
+++++++++++++++
+
+The following apply to ``cyclades`` node. In the rest of the sections
+we will refer to its IP with FQDN ``cyclades.example.com``.Please make sure you have
+db, mq, gunicorn, apache, webproject, pithos and astakos already setup.
+
+Install the corresponding package. Please note that memcache is needed for
+versions >= 0.13 :
+
+.. code-block:: console
+
+    # apt-get install memcached
+    # apt-get install python-memcache
+    # apt-get install snf-cyclades-app
+
+In `/etc/synnefo/cyclades.conf` add:
+
+.. code-block:: console
+
+    MAX_CIDR_BLOCK = 21
+    PUBLIC_USE_POOL = True
+
+    CUSTOM_BRIDGED_BRIDGE = 'br0'
+
+    MAX_VMS_PER_USER = 5
+    VMS_USER_QUOTA = {
+        'user@example.com': 20,
+    }
+    MAX_NETWORKS_PER_USER = 3
+    NETWORKS_USER_QUOTA = { 'user@example.com': 10 }
+    GANETI_DISK_TEMPLATES = ('blockdev', 'diskless', 'drbd', 'file', 'plain',
+                             'rbd',  'sharedfile', 'ext')
+    ASTAKOS_URL = 'https://accounts.example.com/im/authenticate'
+
+    SECRET_ENCRYPTION_KEY= "oEs0pt7Di1mkxA0P6FiK"
+
+    GANETI_CREATEINSTANCE_KWARGS = {
+        'os': 'snf-image+default',
+        'hvparams': {'serial_console': False},
+        'wait_for_sync': False}
+
+    GANETI_USE_HOTPLUG = True
+    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
+    CLOUDBAR_ACTIVE_SERVICE = '2'
+    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
+    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
+    BACKEND_DB_CONNECTION = 'postgresql://synnefo:example_passw0rd@db.example.com:5432/snf_pithos'
+    BACKEND_BLOCK_PATH = '/srv/pithos/data/'
+
+    AMQP_HOSTS = ["amqp://synnefo:example_rabbitmq_passw0rd@mq.example.com:5672"]
+
+    CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
+    VMAPI_BASE_URL = 'https://cyclades.example.com/'
+
+
+Restart services and initialize database:
+
+.. code-block:: console
+
+   # /etc/init.d/gunicorn restart
+   # /etc/init.d/apache2 restart
+   # snf-manage syncdb
+   # snf-manage migrate
+   # snf-manage loaddata flavors
+
+Enable dispatcher:
+
+.. code-block:: console
+
+   # sed -i 's/false/true/' /etc/default/snf-dispatcher
+   # /etc/init.d/snf-dispatcher start
+
+In order end-user to have access to the VM's console:
+
+.. code-block:: console
+
+   # apt-get install snf-vncauthproxy
+
+Edit `/etc/default/vncauthproxy`:
+
+.. code-block:: console
+
+   CHUID="www-data:nogroup"
+
+
+At this point you should setup a :ref:`backend <i-backends>`. Please refer to the
+coresponding section.  Here we assume that at least one backend is up and running,
+so we can add it in Cyclades with:
+
+.. code-block:: console
+
+   # snf-manage backend-add --clustername=ganeti.example.com --user=synnefo --pass=example_rapi_passw0rd
+
+After 0.13 every backend added stays in drained mode (no VMs can be added).
+Therefore get your backend ID (propably 1) and run:
+
+.. code-block:: console
+
+   # snf-manage backend-list
+   # snf-manage backend-modify --drained=False 1
+
+Further assumptions:
+
+- Preprovisioned Bridges: ``br0``, ``prv0``, ``prv1..prv20``
+- Available "public" Subnet: ``10.0.1.0/24``
+- Available "public" Gateway: ``10.0.1.1``
+- Connectivity link for public network: ``br0``
+
+
+Here admin has to define two different resource pools in Synnefo:
+
+ - MAC prefix Pool
+ - Bridge Pool
+
+.. code-block:: console
+
+   # snf-manage pool-create --type=mac-prefix --base=aa:00:0 --size=65536
+   # snf-manage pool-create --type=bridge --base=prv --size=20
+
+Add the synnefo setting in :file:`/etc/synnefo/cyclades.conf`:
+
+.. code-block:: console
+
+   PRIVATE_MAC_FILTERED_BRIDGE = 'prv0'
+
+Add public network where the VM's will eventually connect to in order to
+access Internet:
+
+.. code-block:: console
+
+   # snf-manage network-create --subnet=10.0.1.0/24 --gateway=10.0.1.1 --public --dhcp --flavor=CUSTOM --mode=bridged --link=br0 --name=Internet --backend-id=1
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-db.rst b/docs/scale/i-db.rst
new file mode 100644
index 0000000..0eaa579
--- /dev/null
+++ b/docs/scale/i-db.rst
@@ -0,0 +1,69 @@
+.. _i-db:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+db ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Database Setup
+++++++++++++++
+
+The following apply to ``db`` node. For the rest of the sections we will
+refer to its IP as ``db.example.com`` .
+
+First install progresql:
+
+.. code-block:: console
+
+   # apt-get install postgresql
+
+We create a database called ``snf_apps``, that will host all django
+apps related tables. We also create the user ``synnefo`` and grant him all
+privileges on the database. We do this by running:
+
+.. code-block:: console
+
+   # su - postgres
+   postgres:~$ psql
+   postgres=# CREATE DATABASE snf_apps WITH ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0;
+   postgres=# CREATE USER synnefo WITH PASSWORD 'example_passw0rd';
+   postgres=# GRANT ALL PRIVILEGES ON DATABASE snf_apps TO synnefo;
+
+We also create the database ``snf_pithos`` needed by the pithos+ backend and
+grant the ``synnefo`` user all privileges on the database.
+
+.. code-block:: console
+
+   postgres=# CREATE DATABASE snf_pithos WITH ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0;
+   postgres=# GRANT ALL PRIVILEGES ON DATABASE snf_pithos TO synnefo;
+
+Configure the database to listen to all network interfaces. You can do this by
+editting the file `/etc/postgresql/8.4/main/postgresql.conf` with:
+
+| ``listen_addresses = '*'``
+
+Furthermore, edit `/etc/postgresql/8.4/main/pg_hba.conf` to allow the nodes
+to connect to the database. Add the following line:
+
+| ``host		all	all	4.3.2.0/24	md5``
+
+.. code-block:: console
+
+   # /etc/init.d/postgresql restart
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-ganeti.rst b/docs/scale/i-ganeti.rst
new file mode 100644
index 0000000..0bdddf0
--- /dev/null
+++ b/docs/scale/i-ganeti.rst
@@ -0,0 +1,76 @@
+.. _i-ganeti:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Backends
+++++++++
+
+ganeti ||
+:ref:`image <i-image>` ||
+:ref:`gtools <i-gtools>` ||
+:ref:`network <i-network>`
+
+
+Ganeti Setup
+~~~~~~~~~~~~
+
+In ``ganeti`` nodes install GRNet specific Ganeti package and enable drbd:
+
+.. code-block:: console
+
+   # apt-get install python-bitarray
+   # apt-get install snf-ganeti ganeti-htools
+   # modprobe drbd minor_count=255 usermode_helper=/bin/true
+
+
+The following apply to ``master`` node. Here we will create a Ganeti cluster with
+all available ``ganeti`` nodes. Please note that Ganeti needs a pair of rsa/dsa keys
+for the root user. If already exist in `/root/.ssh/` in all nodes then --no-ssh-init
+can be used. In omitted then the existing files will be overriden. Upon node add
+Ganeti will replace `/etc/ssh/ssh_host*` files with the master's ones:
+
+.. code-block:: console
+
+    # gnt-cluster init --enabled-hypervisors=kvm \
+                       --vg-name=ganeti \
+                       --nic-parameters link=br0,mode=bridged \
+                       --master-netdev eth0 \
+                       --default-iallocator hail \
+                       --hypervisor-parameters kvm:kernel_path=,vnc_bind_address=0.0.0.0 \
+                       --no-ssh-init --no-etc-hosts \
+                       ganeti.example.com
+
+    # gnt-cluster modify --disk-parameters=drbd:metavg=ganeti
+    # gnt-group modify --disk-parameters=drbd:metavg=ganeti default
+
+    # for n in node2 node3 node4 node5 node6; do
+        gnt-node add --no-ssh-key-check --master-capable=yes --vm-capable=yes $n.example.com
+      done
+
+We need to add a rapi user to Ganeti so that Synnefo can talk with the backend:
+
+.. code-block:: console
+
+   # result=$(echo -n "synnefo:Ganeti Remote API:example_rapi_passw0rd" | openssl md5)
+   # echo "synnefo {HA1} $result" >> /var/lib/ganeti/rapi/users
+   # /etc/init.d/ganeti restart
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-gtools.rst b/docs/scale/i-gtools.rst
new file mode 100644
index 0000000..61017a9
--- /dev/null
+++ b/docs/scale/i-gtools.rst
@@ -0,0 +1,55 @@
+.. _i-gtools:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Backends
+++++++++
+
+:ref:`ganeti <i-ganeti>` ||
+:ref:`image <i-image>` ||
+gtools ||
+:ref:`network <i-network>`
+
+gtools Setup
+~~~~~~~~~~~~
+
+The following apply to ``ganeti`` nodes.
+
+.. code-block:: console
+
+   # apt-get install snf-cyclades-gtools
+
+Add this line in `/etc/synnefo/gtools.conf`
+
+.. code-block:: console
+
+   AMQP_HOSTS = ["amqp://synnefo:example_rabbitmq_passw0rd@mq.example.com:5672"]
+
+
+and enable ``snf-ganeti-eventd``:
+
+.. code-block:: console
+
+   # sed -i 's/false/true/' /etc/default/snf-ganeti-eventd
+   # /etc/init.d/snf-ganeti-eventd start
+
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-gunicorn.rst b/docs/scale/i-gunicorn.rst
new file mode 100644
index 0000000..18a84b5
--- /dev/null
+++ b/docs/scale/i-gunicorn.rst
@@ -0,0 +1,54 @@
+.. _i-gunicorn:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+gunicorn ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Gunicorn Setup
+++++++++++++++
+
+The following apply to ``astakos``, ``pithos``, ``cyclades`` and ``cms`` nodes.
+
+.. code-block:: console
+
+  # apt-get install -t squeeze-backports gunicorn
+
+In `/etc/gunicorn.d/synnefo` add:
+
+.. code-block:: console
+
+   CONFIG = {
+    'mode': 'django',
+    'environment': {
+      'DJANGO_SETTINGS_MODULE': 'synnefo.settings',
+    },
+    'working_dir': '/etc/synnefo',
+    'user': 'www-data',
+    'group': 'www-data',
+    'args': (
+      '--bind=127.0.0.1:8080',
+      '--workers=4',
+      '--worker-class=gevent',
+      '--log-level=debug',
+    ),
+   }
+
+Setting ``gevent`` for worker-class, requires webproject to support
+pooling and greenlets.
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-image.rst b/docs/scale/i-image.rst
new file mode 100644
index 0000000..abf0540
--- /dev/null
+++ b/docs/scale/i-image.rst
@@ -0,0 +1,71 @@
+.. _i-image:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Backends
+++++++++
+
+:ref:`ganeti <i-ganeti>` ||
+image ||
+:ref:`gtools <i-gtools>` ||
+:ref:`network <i-network>`
+
+snf-image Setup
+~~~~~~~~~~~~~~~
+
+The following apply to ``ganeti`` nodes.
+
+Firstly mount the ``pithos`` nfs mount point. Assuming that ``pithos`` node
+(the one who does the NFS export) is node1.example.com, append the following
+line in `/etc/fstab`:
+
+.. code-block:: console
+
+   node1:/pithos /srv/pithos nfs4 defaults,rw,noatime,nodiratime,intr,rsize=1048576,wsize=1048576,noacl
+
+and then:
+
+.. code-block:: console
+
+   apt-get install -t squeeze-backports nfs-common
+   mkdir /srv/pithos
+   mount /srv/pithos
+
+.. code-block:: console
+
+   # apt-get install snf-image-host
+
+Append this lines in `/etc/snf-image/default`
+
+.. code-block:: console
+
+    PITHOS_DB="postgresql://synnefo:example_passw0rd@db.example.com:5432/snf_pithos"
+    PITHOS_DATA="/srv/pithos/data"
+    PROGRESS_MONITOR='snf-progress-monitor'
+
+
+and create snf-image-helper with:
+
+.. code-block:: console
+
+   # snf-image-update-helper -y
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-kamaki.rst b/docs/scale/i-kamaki.rst
new file mode 100644
index 0000000..0a1d1da
--- /dev/null
+++ b/docs/scale/i-kamaki.rst
@@ -0,0 +1,88 @@
+.. _i-kamaki:
+
+Synnefo
+-------
+
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+kamaki ||
+:ref:`backends <i-backends>`
+
+kamaki Setup
+++++++++++++
+
+The following apply to ``client`` node. Here we install a command line tool
+that the end-user can use instead of web UI. Prerequisites are that the
+client node can connect to synnefo nodes by using their FQDN and that
+the user has already aquired an AUTH_TOKEN from his/her profile page after
+signing in.
+
+Install the corresponding package:
+
+.. code-block:: console
+
+    # apt-get install kamaki
+
+and build the correct config file:
+
+.. code-block:: console
+
+    # kamaki config set astakos.url "https://accounts.example.com"
+    # kamaki config set compute.url "https://cyclades.example.com/api/v1.1"
+    # kamaki config set image.url "https://cyclades.example.com/plankton"
+    # kamaki config set store.enable on
+    # kamaki config set store.pithos_extensions on
+    # kamaki config set store.url "https://pithos.example.com/v1"
+    # kamaki config set store.account "user@example.com"
+
+    # kamaki config set global.token AUTH_TOKEN
+
+
+Please download a Debian Base image from our repo:
+
+
+.. code-block:: console
+
+    # wget https://pithos.okeanos.grnet.gr/public/66ke3 -O /tmp/debian_base.diskdump
+
+create a container in pithos, upload it:
+
+.. code-block:: console
+
+   # kamaki store create images
+   # kamaki store upload --container images /tmp/debian_base.diskdump debian_base.diskdump
+
+and register it to plankton:
+
+.. code-block:: console
+
+   # kamaki image register "Debian Base"  pithos://user@example/images/debian_base.diskdump \
+                    --disk-format=diskdump \
+                    --property OSFAMILY=linux \
+                    --property ROOT_PARTITION=1 \
+                    --property description="Debian Squeeze Base System" \
+                    --property size=450M \
+                    --property kernel=2.6.32 \
+                    --property GUI="No GUI" \
+                    --property sortorder=1 \
+                    --property USERS=root \
+                    --property OS=debian \
+                    --public
+
+
+
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-mq.rst b/docs/scale/i-mq.rst
new file mode 100644
index 0000000..c36b1d5
--- /dev/null
+++ b/docs/scale/i-mq.rst
@@ -0,0 +1,44 @@
+.. _i-mq:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+mq ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Message Queue Setup
++++++++++++++++++++
+
+The following apply to ``mq`` node. For the rest of the sections we will refer to
+its IP as ``mq.example.com`` .
+
+.. code-block:: console
+
+  # apt-get install rabbitmq-server
+
+
+Add new administrator user named ``synnefo`` and gets full privileges on all
+exchanges:
+
+.. code-block:: console
+
+   # rabbitmqctl add_user synnefo "examle_rabbitmq_passw0rd"
+   # rabbitmqctl set_permissions synnefo ".*" ".*" ".*"
+   # rabbitmqctl delete_user guest
+   # rabbitmqctl set_user_tags synnefo administrator
+   # /etc/init.d/rabbitmq-server restart
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-network.rst b/docs/scale/i-network.rst
new file mode 100644
index 0000000..0a862ef
--- /dev/null
+++ b/docs/scale/i-network.rst
@@ -0,0 +1,71 @@
+.. _i-network:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Backends
+++++++++
+
+:ref:`ganeti <i-ganeti>` ||
+:ref:`image <i-image>` ||
+:ref:`gtools <i-gtools>` ||
+network
+
+snf-network Setup
+~~~~~~~~~~~~~~~~~
+
+The following apply to ``ganeti`` nodes.
+
+
+Install the corresponding package:
+
+.. code-block:: console
+
+   # apt-get install nfqueue-bindings-python=0.3+physindev-1
+   # apt-get install snf-network
+   # apt-get install nfdhcpd
+
+In `/etc/snf-network/default` add:
+
+.. code-block:: console
+
+   MAC_MASK = ff:ff:f0:00:00:00
+
+Edit `/etc/nfdhcpd/nfdhcpd.conf` to your preferances (DNS, IPv6) and add the
+following iptables rules:
+
+.. code-block:: console
+
+    # iptables -t mangle -A PREROUTING -i br+ -p udp -m udp --dport 67 -j NFQUEUE --queue-num 42
+    # iptables -t mangle -A PREROUTING -i tap+ -p udp -m udp --dport 67 -j NFQUEUE --queue-num 42
+    # iptables -t mangle -A PREROUTING -i prv+ -p udp -m udp --dport 67 -j NFQUEUE --queue-num 42
+
+    # ip6tables -t mangle -A PREROUTING -i br+ -p ipv6-icmp -m icmp6 --icmpv6-type 133 -j NFQUEUE --queue-num 43
+    # ip6tables -t mangle -A PREROUTING -i br+ -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j NFQUEUE --queue-num 44
+
+
+In router node in case you have a NAT setup run:
+
+.. code-block:: console
+
+    # iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
+    # ip addr add 10.0.1.1/24 dev eth1
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-ns.rst b/docs/scale/i-ns.rst
new file mode 100644
index 0000000..32362dd
--- /dev/null
+++ b/docs/scale/i-ns.rst
@@ -0,0 +1,150 @@
+.. _i-ns:
+
+Synnefo
+-------
+
+
+:ref:`synnefo <i-synnefo>` ||
+ns ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Name Server Setup
++++++++++++++++++
+
+The following applies to ``ns`` node. You will  create  an DNS to resolve all
+FQDNs used by both ``synnefo`` and ``backend`` nodes. All we need here is to have
+a physical node - ip - role mapping.
+
+Assumptions:
+~~~~~~~~~~~~
+
+ - domain to use:  ``example.com``
+ - nodes' IPv4 subnet: ``4.3.2.0/24``
+
+For the sake of simplicity we assume we have 6 nodes assinged the following roles:
+
+========  =========  ========================   ====================
+hostname  IP         roles                      FQDN
+========  =========  ========================   ====================
+node1     4.3.2.1    ns,router,client,astakos   accounts.example.com
+node2     4.3.2.2    cyclades                   cyclades.example.com
+node3     4.3.2.3    pithos                     pithos.example.com
+node4     4.3.2.4    cms                        cms.example.com
+node5     4.3.2.5    db                         db.example.com
+node6     4.3.2.6    mq                         mq.example.com
+node1     4.3.2.100  master                     ganeti.example.com
+========  =========  ========================   ====================
+
+
+First install the corresponding package:
+
+.. code-block:: console
+
+   # apt-get install bind9
+
+In `/etc/bind/zones/example.com` add:
+
+.. code-block:: console
+
+    $TTL 14400
+    $origin example.com.
+    @               IN      SOA     ns.example.com. admin.example.com. (
+    2012111903; the Serial Number
+    172800; the Refresh Rate
+    7200;  the Retry Time
+    604800; the Expiration Time
+    3600; the Minimum Time
+    )
+
+    @               IN        NS      ns.example.com.
+    @               IN        A       4.3.2.1
+    ns              IN        A       4.3.2.1
+
+    localhost       IN        A       127.0.0.1
+    example.com.    IN        MX      10 example.com.
+
+    mail            IN        CNAME   example.com.
+    www             IN        CNAME   example.com.
+    accounts        IN        CNAME   node1.example.com.
+    cyclades        IN        CNAME   node2.example.com.
+    pithos          IN        CNAME   node3.example.com.
+    cms             IN        CNAME   node4.example.com.
+    db              IN        CNAME   node5.example.com.
+    mq              IN        CNAME   node6.example.com.
+
+    node1           IN        A       4.3.2.1
+    node2           IN        A       4.3.2.2
+    node3           IN        A       4.3.2.3
+    node4           IN        A       4.3.2.4
+    node5           IN        A       4.3.2.5
+    node6           IN        A       4.3.2.6
+
+    ganeti          IN        A       4.3.2.100
+
+
+In `/etc/bind/rev/0-24.2.3.4.in-addr.arpa.zone` add:
+
+.. code-block:: console
+
+    $TTL 86400
+    $ORIGIN 0-24.2.3.4.in-addr.arpa.
+    @               IN      SOA     ns.example.com. admin.skata.com. (
+    2012070900; the Serial Number
+    172800; the Refresh Rate
+    7200;  the Retry Time
+    604800; the Expiration Time
+    3600 ; the Minimum Time
+    )
+    @               IN        NS      ns.example.com.
+
+    1               IN        PTR     node1.example.com.
+    2               IN        PTR     node2.example.com.
+    3               IN        PTR     node3.example.com.
+    4               IN        PTR     node4.example.com.
+    5               IN        PTR     node5.example.com.
+    6               IN        PTR     node6.example.com.
+
+
+In `/etc/bind/named.conf.local` add:
+
+.. code-block:: console
+
+    zone "example.com" in {
+            type master;
+            file "/etc/bind/zones/example.com";
+    };
+
+    zone "0-24.2.3.4.in-addr.arpa" in {
+            type master;
+            file "/etc/bind/rev/0-24.2.3.4.in-addr.arpa.zone";
+    };
+
+And then restart the service:
+
+.. code-block:: console
+
+    # /etc/init.d/bind9 restart
+
+
+In all ``synnefo`` and ``backend`` nodes add in `/etc/resolv.conf`:
+
+.. code-block:: console
+
+    domain example.com
+    search example.com
+    nameserver 4.3.2.1
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-pithos.rst b/docs/scale/i-pithos.rst
new file mode 100644
index 0000000..c86b35e
--- /dev/null
+++ b/docs/scale/i-pithos.rst
@@ -0,0 +1,109 @@
+.. _i-pithos:
+
+Synnefo
+-------
+
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+pithos ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+
+Pithos Setup
+++++++++++++
+
+The following apply to ``pithos`` node. For the rest of the sections we will
+refer to its IP with FQDN ``pithos.example.com``. Please make sure you have db,
+gunicorn, apache, webproject and astakos already setup.
+
+
+First you must setup an NFS server and export `/srv/pithos` directory.
+
+.. code-block:: console
+
+   # cd /srv/pithos
+   # mkdir data
+   # chown www-data:www-data data
+   # chmod g+ws data
+   # apt-get install -t squeeze-backports nfs-kernel-server
+
+Here add these lines in `/etc/exports`:
+
+.. code-block:: console
+
+    /srv/pithos 4.3.2.0/24(rw,sync,no_subtree_check,no_root_squash)
+    /srv 4.3.2.0/24(rw,fsid=0,no_subtree_check,sync)
+
+
+And then install the corresponding package:
+
+.. code-block:: console
+
+   # apt-get install snf-pithos-app
+
+In `/etc/synnefo/pithos.conf` add:
+
+.. code-block:: console
+
+    PITHOS_AUTHENTICATION_URL = 'https:/accounts.example.com/im/authenticate'
+    PITHOS_AUTHENTICATION_USERS = None
+    PITHOS_USER_CATALOG_URL = 'https://accounts.example.com/user_catalogs'
+    PITHOS_USER_FEEDBACK_URL = 'https://accounts.example.com/feedback'
+    PITHOS_USER_LOGIN_URL = 'https://accounts.example.com/login'
+
+    PITHOS_BACKEND_DB_CONNECTION = 'postgresql://synnefo:example_passw0rd@db.example.com:5432/snf_pithos'
+    PITHOS_BACKEND_BLOCK_PATH = '/srv/pithos/data'
+    PITHOS_BACKEND_QUOTA = 20 * 1024 * 1024 * 1024
+    PITHOS_UPDATE_MD5 = False
+    PITHOS_SERVICE_TOKEN = 'XXXXXXXXXXX'
+
+
+Install pithos web UI with:
+
+.. code-block:: console
+
+   # apt-get install snf-pithos-webclient
+
+In `/etc/synnefo/webclient.conf` add:
+
+.. code-block:: console
+
+    CLOUDBAR_LOCATION = 'https://accounts.example.com/static/im/cloudbar/'
+    CLOUDBAR_SERVICES_URL = 'https://accounts.example.com/im/get_services'
+    CLOUDBAR_MENU_URL = 'https://accounts.example.com/im/get_menu'
+
+    PITHOS_UI_CLOUDBAR_ACTIVE_SERVICE = 'XXXXXXXX'
+
+    PITHOS_UI_LOGIN_URL = "https://accounts.example.com/im/login?next="
+
+    PITHOS_UI_FEEDBACK_URL = "/feedback"
+
+
+The ``PITHOS_SERVICE_TOKEN`` and ``PITHOS_UI_CLOUDBAR_ACTIVE_SERVICE``  should be
+the Pithos+ token and id returned by running on the astakos node:
+
+.. code-block:: console
+
+   # snf-manage service-list
+
+After configuration is done, restart services:
+
+.. code-block:: console
+
+   # /etc/init.d/gunicorn restart
+   # /etc/init.d/apache2 restart
+
+
+Test your Setup:
+++++++++++++++++
diff --git a/docs/scale/i-synnefo.rst b/docs/scale/i-synnefo.rst
new file mode 100644
index 0000000..327fc2f
--- /dev/null
+++ b/docs/scale/i-synnefo.rst
@@ -0,0 +1,75 @@
+.. _i-synnefo:
+
+Synnefo
+-------
+
+synnefo ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+:ref:`webproject <i-webproject>` ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+
+The above sections are the software components/roles that you should setup in
+order to have full synnefo funtionality.  After successful installation, you
+will have the following services running:
+
+ * Identity Management (Astakos)
+ * Object Storage Service (Pithos+)
+ * Compute Service (Cyclades)
+ * Image Registry Service (Plankton)
+
+and a single unified Web UI to manage them all.
+
+It is really useful nodes to have fully qualified domain names. The installation
+needs additional CNAMEs, and therefor in the following section we will guide you
+though how to setup a DNS node so that all IP's (internal/public) will resolve to
+specific FQDN. `/etc/hosts` could be used for simplicity too.
+
+In the following sections we will refer to nodes based on their roles. To this
+end here we define the following roles:
+
+ * ``synnefo`` (all available nodes for Synnefo components)
+ * ``backend`` (all available VMCs - nodes to host VMs)
+ * ``astakos``
+ * ``cyclades``
+ * ``pithos``
+ * ``cms``
+ * ``mq`` (message queue)
+ * ``db`` (database)
+ * ``ns`` (name server)
+ * ``client`` (end-user)
+
+Please note that all these roles can be "played" by the same node, but for the
+sake of scalability is highly recommended to deploy Synnefo on more than 6 nodes,
+each with different role(s). In setup synnefo and backend nodes are the same
+ones.
+
+
+Prerequisites:
+++++++++++++++
+
+``synnefo``:
+
+ - OS: Debian Squeeze
+
+``pithos``:
+
+ - NFS server: export dir /srv/pithos
+
+Assumptions:
+++++++++++++
+
+``synnefo``:
+
+ - primary interface: `eth0`
+ - primary IP: inside 4.3.2.0/24 IPv4 subnet
diff --git a/docs/scale/i-webproject.rst b/docs/scale/i-webproject.rst
new file mode 100644
index 0000000..21c83e7
--- /dev/null
+++ b/docs/scale/i-webproject.rst
@@ -0,0 +1,68 @@
+.. _i-webproject:
+
+Synnefo
+-------
+
+:ref:`synnefo <i-synnefo>` ||
+:ref:`ns <i-ns>` ||
+:ref:`apt <i-apt>` ||
+:ref:`mq <i-mq>` ||
+:ref:`db <i-db>` ||
+:ref:`gunicorn <i-gunicorn>` ||
+:ref:`apache <i-apache>` ||
+webproject ||
+:ref:`astakos <i-astakos>` ||
+:ref:`cms <i-cms>` ||
+:ref:`pithos <i-pithos>` ||
+:ref:`cyclades <i-cyclades>` ||
+:ref:`kamaki <i-kamaki>` ||
+:ref:`backends <i-backends>`
+
+Webproject Setup
+++++++++++++++++
+
+The following apply to  ``astakos``, ``pithos``, ``cyclades`` and ``cms`` nodes.
+
+First install:
+
+.. code-block:: console
+
+   # apt-get install python-psycopg2
+   # apt-get install snf-webproject
+
+In `/etc/synnefo/snf-webproject.conf` add:
+
+.. code-block:: console
+
+   from synnefo.lib.db.pooled_psycopg2 import monkey_patch_psycopg2
+   monkey_patch_psycopg2()
+
+   from synnefo.lib.db.psyco_gevent import make_psycopg_green
+   make_psycopg_green()
+
+   DATABASES = {
+    'default': {
+        # 'postgresql_psycopg2', 'postgresql','mysql', 'sqlite3' or 'oracle'
+        'ENGINE': 'postgresql_psycopg2',
+        'OPTIONS': {'synnefo_poolsize': 8},
+         # ATTENTION: This *must* be the absolute path if using sqlite3.
+         # See: http://docs.djangoproject.com/en/dev/ref/settings/#name
+        'NAME': 'snf_apps',
+        'USER': 'synnefo',                      # Not used with sqlite3.
+        'PASSWORD': 'examle_passw0rd',          # Not used with sqlite3.
+        # Set to empty string for localhost. Not used with sqlite3.
+        'HOST': 'db.example.com',
+        # Set to empty string for default. Not used with sqlite3.
+        'PORT': '5432',
+    }
+   }
+
+   USE_X_FORWARDED_HOST = True
+
+   SECRET_KEY = 'sy6)mw6a7x%n)-example_secret_key#zzk4jo6f2=uqu!1o%)'
+
+All the above enables pooling (of connections) and greenlet context.
+
+
+Test your Setup:
+++++++++++++++++
