diff --git a/doc/installation.md b/doc/installation.md
index a18b654e6..98eb9ce1c 100644
--- a/doc/installation.md
+++ b/doc/installation.md
@@ -3,6 +3,10 @@
The preferred way of installing Icinga Web 2 is to use the official package repositories depending on which operating
system and distribution you are running. But it is also possible to install Icinga Web 2 directly from source.
+In case you are upgrading from an older version of Icinga Web 2
+please make sure to read the [upgrading](installation.md#upgrading) section
+throroughly.
+
## Installing Requirements
* A web server, e.g. Apache or nginx
@@ -158,6 +162,23 @@ This version also offers snapshots for easy download which you can use if you do
git clone git://git.icinga.org/icingaweb2.git
````
+### Installing Requirements from Source
+
+You will need to install certain dependencies depending on your setup listed [here](installation.md#installing-requirements).
+
+The following example installs Apache2 as web server, MySQL as RDBMS and uses the PHP adapter for MySQL.
+Adopt the package requirements to your needs (e.g. adding ldap for authentication) and distribution.
+
+Example for RHEL/CentOS/Fedora:
+
+````
+# yum install httpd mysql-server
+# yum install php php-gd php-intl php-ZendFramework php-ZendFramework-Db-Adapter-Pdo-Mysql
+````
+
+The setup wizard will check the pre-requisites later on.
+
+
### Installing Icinga Web 2
Choose a target directory and move Icinga Web 2 there.
@@ -187,7 +208,13 @@ Example for Apache on RHEL or CentOS:
./bin/icingacli setup config webserver apache --document-root /usr/share/icingaweb2/public > /etc/httpd/conf.d/icingaweb2.conf
````
-### Preparing Web Setup
+Example for Apache on Debian Jessie:
+````
+./bin/icingacli setup config webserver apache --document-root /usr/share/icingaweb2/public > /etc/apache2/conf-available/icingaweb2.conf
+a2enconf icingaweb2
+````
+
+### Preparing Icinga Web 2 Setup
You can set up Icinga Web 2 quickly and easily with the Icinga Web 2 setup wizard which is available the first time
you visit Icinga Web 2 in your browser. Please follow the steps listed below for preparing the web setup.
@@ -207,23 +234,28 @@ groupadd -r icingaweb2
addgroup --system icingaweb2
````
-Add your web server's user to the system group `icingaweb2`:
+Add your web server's user to the system group `icingaweb2`
+and restart the web server:
**Fedora, RHEL and CentOS**:
````
usermod -a -G icingaweb2 apache
+service httpd restart
````
**SLES and OpenSUSE**:
````
usermod -A icingaweb2 wwwrun
+service apache2 restart
````
**Debian and Ubuntu**:
````
usermod -a -G icingaweb2 www-data
+service apache2 restart
````
+
Use `icingacli` to create the configuration directory which defaults to **/etc/icingaweb2**:
````
./bin/icingacli setup config directory
@@ -241,9 +273,164 @@ In case you do not remember the token you can show it using the `icingacli`:
./bin/icingacli setup token show
````
+### Icinga Web 2 Setup Wizard
+
Finally visit Icinga Web 2 in your browser to access the setup wizard and complete the installation:
`/icingaweb2/setup`.
+Paste the previously token and follow the steps on-screen. Then you are done here.
+
+
+### Icinga Web 2 Manual Setup
+
+If you have chosen not to run the setup wizard, you will need further knowledge
+about
+
+* manual creation of the Icinga Web 2 database `icingaweb2` including a default user (optional as authentication and session backend)
+* additional configuration for the application
+* additional configuration for the monitoring module (e.g. the IDO database and external command pipe from Icinga 2)
+
+This comes in handy if you are planning to deploy Icinga Web 2 automatically using
+Puppet, Ansible, Chef, etc. modules.
+
+> **Warning**
+>
+> Read the documentation on the respective linked configuration sections before
+> deploying the configuration manually.
+>
+> If you are unsure about certain settings, use the [setup wizard](installation.md#web-setup-wizard-from-source) once
+> and then collect the generated configuration as well as sql dumps.
+
+#### Icinga Web 2 Manual Database Setup
+
+Create the database and add a new user as shown below for MySQL:
+
+````
+# sudo mysql -p
+
+CREATE DATABASE icingaweb2;
+GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icingaweb2.* TO 'icingaweb2'@'localhost' IDENTIFIED BY 'icingaweb2';
+quit
+
+# mysql -p icingaweb2 < /usr/share/icingaweb2/etc/schema/mysql.schema.sql
+````
+
+
+Then generate a new password hash as described in the [authentication docs](authentication.md#authentication-configuration-db-setup)
+and use it to insert a new user called `icingaadmin` into the database.
+
+````
+# mysql -p icingaweb2
+
+INSERT INTO icingaweb_user (name, active, password_hash) VALUES ('icingaadmin', 1, '$1$EzxLOFDr$giVx3bGhVm4lDUAw6srGX1');
+quit
+````
+
+#### Icinga Web 2 Manual Configuration
+
+
+[resources.ini](resources.md#resources) providing the details for the Icinga Web 2 and
+Icinga 2 IDO database configuration. Example for MySQL:
+
+````
+vim /etc/icingaweb2/resources.ini
+
+[icingaweb2]
+type = "db"
+db = "mysql"
+host = "localhost"
+port = "3306"
+dbname = "icingaweb2"
+username = "icingaweb2"
+password = "icingaweb2"
+
+
+[icinga2]
+type = "db"
+db = "mysql"
+host = "localhost"
+port = "3306"
+dbname = "icinga"
+username = "icinga"
+password = "icinga"
+````
+
+[config.ini](configuration.md#configuration) defining general application settings.
+
+````
+vim /etc/icingaweb2/config.ini
+
+[logging]
+log = "syslog"
+level = "ERROR"
+application = "icingaweb2"
+
+
+[preferences]
+type = "db"
+resource = "icingaweb2"
+````
+
+[authentication.ini](authentication.md#authentication) for e.g. using the previously created database.
+
+````
+vim /etc/icingaweb2/authentication.ini
+
+[icingaweb2]
+backend = "db"
+resource = "icingaweb2"
+````
+
+
+[roles.ini](security.md#security) granting the previously added `icingaadmin` user all permissions.
+
+````
+vim /etc/icingaweb2/roles.ini
+
+[admins]
+users = "icingaadmin"
+permissions = "*"
+````
+
+#### Icinga Web 2 Manual Configuration Monitoring Module
+
+
+[config.ini](../modules/monitoring/doc/configuration.md#configuration) defining additional security settings.
+
+````
+vim /etc/icingaweb2/modules/monitoring/config.ini
+
+[security]
+protected_customvars = "*pw*,*pass*,community"
+````
+
+[backends.ini](../modules/monitoring/doc/configuration.md#configuration) referencing the Icinga 2 DB IDO resource.
+
+````
+vim /etc/icingaweb2/modules/monitoring/backends.ini
+
+[icinga2]
+type = "ido"
+resource = "icinga2"
+````
+
+[commandtransports.ini](../modules/monitoring/doc/commandtransports.md#commandtransports) defining the Icinga 2 command pipe.
+
+````
+vim /etc/icingaweb2/modules/monitoring/commandtransports.ini
+
+[icinga2]
+transport = "local"
+path = "/var/run/icinga2/cmd/icinga2.cmd"
+````
+
+#### Icinga Web 2 Manual Setup Login
+
+Finally visit Icinga Web 2 in your browser to login as `icingaadmin` user: `/icingaweb2`.
+
+
+# Upgrading Icinga Web 2
+
## Upgrading to Icinga Web 2 Beta 2
Icinga Web 2 Beta 2 introduces access control based on roles for secured actions. If you've already set up Icinga Web 2,