diff --git a/docker/common/horizon/config-external.sh b/docker/common/horizon/config-external.sh
index 373a82e64fbcaaebfc5d56de5e786e217d55203a..8e9fc47a07f25c7b6aa4cec63e2580d0e3ca787c 100644
--- a/docker/common/horizon/config-external.sh
+++ b/docker/common/horizon/config-external.sh
@@ -8,3 +8,18 @@ if [[ -f "$SOURCE" ]]; then
     chown ${OWNER}: $TARGET
     chmod 0644 $TARGET
 fi
+
+if [[ "${KOLLA_BASE_DISTRO}" == "ubuntu" || \
+        "${KOLLA_BASE_DISTRO}" == "debian" ]]; then
+    SOURCE="/opt/kolla/horizon/horizon.conf"
+    TARGET="/etc/apache2/sites-enabled/000-default.conf"
+else
+    SOURCE="/opt/kolla/horizon/horizon.conf"
+    TARGET="/etc/httpd/sites.d/horizon.conf"
+fi
+
+if [[ -f "$SOURCE" ]]; then
+    cp $SOURCE $TARGET
+    chown ${OWNER}: $TARGET
+    chmod 0644 $TARGET
+fi
diff --git a/docker/common/horizon/start.sh b/docker/common/horizon/start.sh
index 2470bda77907560eb9974914c80a4c079fd94ad0..096326a3af4538801b43886e3b715e600f7dd680 100755
--- a/docker/common/horizon/start.sh
+++ b/docker/common/horizon/start.sh
@@ -2,12 +2,21 @@
 
 set -o errexit
 
-CMD="/usr/sbin/httpd"
-ARGS="-DFOREGROUND"
-
-# Loading common functions.
+# Loading common functions
 source /opt/kolla/kolla-common.sh
 
+if [[ "${KOLLA_BASE_DISTRO}" == "ubuntu" || \
+        "${KOLLA_BASE_DISTRO}" == "debian" ]]; then
+    CMD="/usr/sbin/apache2"
+    ARGS="-DFOREGROUND"
+
+    # Loading Apache2 ENV variables
+    source /etc/apache2/envvars
+else
+    CMD="/usr/sbin/httpd"
+    ARGS="-DFOREGROUND"
+fi
+
 # Execute config strategy
 set_configs
 
diff --git a/docker_templates/horizon/Dockerfile.j2 b/docker_templates/horizon/Dockerfile.j2
index dfd731939d1f283a40353d765573f8ee7e38bd80..e02cbe6f6bdf7679e424744c6dd84023bc54ffb5 100644
--- a/docker_templates/horizon/Dockerfile.j2
+++ b/docker_templates/horizon/Dockerfile.j2
@@ -5,11 +5,11 @@ MAINTAINER Kolla Project (https://launchpad.net.kolla)
     {% if base_distro in ['centos', 'fedora', 'oraclelinux'] %}
 
 RUN yum -y install \
-    openstack-dashboard \
-    httpd \
-    mod_wsgi \
+        openstack-dashboard \
+        httpd \
+        mod_wsgi \
     && yum clean all \
-    && chown -R apache:apache /usr/share/openstack-dashboard/static
+    && chown -R apache: /usr/share/openstack-dashboard/static
 
 # The chown is required because of this packaging bug:
 # https://bugzilla.redhat.com/show_bug.cgi?id=1219006
@@ -20,41 +20,37 @@ RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
     && /bin/false
 
     {% endif %}
-
 {% elif install_type == 'source' %}
-
-ADD ./horizon.tar /
-RUN ln -s /horizon-* /horizon
+    {% if base_distro in ['centos', 'fedora', 'oraclelinux'] %}
 
 RUN yum install -y \
-    httpd \
-    mod_wsgi \
+        httpd \
+        mod_wsgi \
     && yum clean all
 
-RUN cd /horizon \
-    && useradd --user-group horizon \
-    && pip install -r requirements.txt \
-    && pip install /horizon \
-    && mkdir -p \
-        /etc/openstack-dashboard  \
-        /var/log/horizon \
-        /usr/share/openstack-dashboard \
-    && cp -r /horizon/openstack_dashboard /usr/share/openstack-dashboard/ \
-    && cp /horizon/openstack_dashboard/local/local_settings.py.example \
-        /etc/openstack-dashboard/local_settings \
-    && ln -s /etc/openstack-dashboard/local_settings \
-        /usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py \
-    && cp /horizon/manage.py /usr/share/openstack-dashboard \
-    && python /usr/share/openstack-dashboard/manage.py collectstatic --noinput \
-    && chown -R apache:apache /usr/share/openstack-dashboard/static \
-    && rm -rf /root/.cache
+    {% elif base_distro in ['ubuntu', 'debian'] %}
 
-# The chown is required because of this packaging bug:
-# https://bugzilla.redhat.com/show_bug.cgi?id=1219006
+RUN apt-get install -y --no-install-recommends \
+        apache2 \
+        libapache2-mod-wsgi \
+    && echo > /etc/apache2/ports.conf \
+    && apt-get clean
+
+    {% endif %}
+
+ADD horizon.tar /
+RUN ln -s /horizon-* /horizon \
+    && pip --no-cache-dir install /horizon \
+    && useradd --user-group horizon \
+    && mkdir /etc/openstack-dashboard /home/horizon \
+    && ln -s openstack_dashboard/static/ /usr/lib/python2.7/site-packages/static \
+    && ln -s /etc/openstack-dashboard/local_settings /usr/lib/python2.7/site-packages/openstack_dashboard/local/local_settings.py \
+    && cp -r /horizon/openstack_dashboard/conf/* /etc/openstack-dashboard/ \
+    && chown -R horizon: /etc/openstack-dashboard /home/horizon /usr/lib/python2.7/site-packages/openstack_dashboard/static
 
 {% endif %}
 
-COPY config-external.sh /opt/kolla/
 COPY start.sh /
+COPY config-external.sh /opt/kolla/
 
 CMD ["/start.sh"]