diff --git a/.gitignore b/.gitignore
index 15b0752..3b6992c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
 /data/app
 /backup
 nextcloud.conf
+db.env
+cloud.env
diff --git a/cloud.env.example b/cloud.env.example
new file mode 100644
index 0000000..31c726c
--- /dev/null
+++ b/cloud.env.example
@@ -0,0 +1,2 @@
+# admin user password
+NEXTCLOUD_ADMIN_PASSWORD=changeme
diff --git a/docker-compose.yml b/docker-compose.yml
index 416684d..6c5373d 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,41 +1,36 @@
-version: '2.2'
+version: '3'
 
 services:
   nextcloud-app:
-    #build: ./docker/app
-    image: pgollor/nextcloud:app-dev-latest
+    build: ./docker/app
+    #image: pgollor/nextcloud:app-dev-latest
     restart: always
-    mem_limit: 512m
     cpus: 1.5
     depends_on:
       - nextcloud-database
       - nextcloud-redis
+    env_file:
+      - db.env
+      - cloud.env
     environment:
-      - MYSQL_HOST=mysql
+      - MYSQL_HOST=nextcloud-database
       - MYSQL_DATABASE=cloud
       - MYSQL_USER=cloud
-      - MYSQL_PASSWORD=${NEXTCLOUD_DATABASE_PASSWORD}
       - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
-      - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
       - NEXTCLOUD_DATA_DIR=/srv/data
-      - REDIS_HOST=redis
+      - REDIS_HOST=nextcloudnextcloud-redis
       - TZ=${TZ}
     tmpfs:
       - /tmp
     volumes:
       - ./data/app:/var/www/html
       - ./data/data:/srv/data
-    networks:
-      nextcloud-network:
-        ipv4_address: ${NEXTCLOUD_IPV4_NETWORK:-172.22.5}.100
-        aliases:
-          - app
+      - ./data/conf/net.conf:/etc/sane.d/net.conf:ro
 
   nextcloud-web:
     #build: ./docker/web
     image: pgollor/nextcloud:web-latest
     restart: always
-    mem_limit: 512m
     logging:
       driver: json-file
     ports:
@@ -44,51 +39,32 @@
       - ./data/app:/var/www/html:ro
     depends_on:
       - nextcloud-app
-    networks:
-      nextcloud-network:
-        ipv4_address: ${NEXTCLOUD_IPV4_NETWORK:-172.22.5}.101
-        aliases:
-          - web
 
   nextcloud-database:
     image: mariadb
     restart: always
-    mem_limit: 1g
     command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
     environment:
-      - MYSQL_ROOT_PASSWORD=${NEXTCLOUD_DATABASE_ROOT}
       - MYSQL_DATABASE=cloud
       - MYSQL_USER=cloud
-      - MYSQL_PASSWORD=${NEXTCLOUD_DATABASE_PASSWORD}
+    env_file:
+      - db.env
     volumes:
       -  nextcloud-db-vol-1:/var/lib/mysql/
       - ./data/conf/mysql:/etc/mysql/conf.d/:ro
     tmpfs:
       - /tmp
-    networks:
-      nextcloud-network:
-        ipv4_address: ${NEXTCLOUD_IPV4_NETWORK:-172.22.5}.102
-        aliases:
-          - mysql
 
   nextcloud-redis:
-    mem_limit: 1g
     image: redis:alpine
     restart: always
-    networks:
-      nextcloud-network:
-        aliases:
-          - redis
 
   nextcloud-cron:
-    #build: ./docker/app
-    image: pgollor/nextcloud:app-latest
+    image: nextcloud:fpm-alpine
     restart: always
     volumes:
       - ./data/app:/var/www/html
       - ./data/data:/srv/data
-    #user: www-data
-    mem_limit: 256m
     logging:
       driver: json-file
     entrypoint: /cron.sh
@@ -108,17 +84,6 @@
     depends_on:
       - nextcloud-database
       - nextcloud-redis
-    networks:
-      nextcloud-network:
-
-networks:
-  nextcloud-network:
-    driver: bridge
-    enable_ipv6: false
-    ipam:
-      driver: default
-      config:
-        - subnet: ${NEXTCLOUD_IPV4_NETWORK:-172.22.5}.0/24
 
 volumes:
   nextcloud-db-vol-1:
diff --git a/docker/app/Dockerfile b/docker/app/Dockerfile
index 58392d3..5350bc6 100644
--- a/docker/app/Dockerfile
+++ b/docker/app/Dockerfile
@@ -1,4 +1,4 @@
-FROM nextcloud:19-rc-fpm
+FROM nextcloud:fpm
 
 ARG NV
 ARG VCS_REF
@@ -12,7 +12,10 @@
 	libgmp3-dev \
 	smbclient libsmbclient-dev \
 	libbz2-dev \
-	libmagickcore-6.q16-6-extra
+	libmagickcore-6.q16-6-extra \
+	sane-utils \
+	netpbm \
+	ocrmypdf
 RUN apt-get clean && rm -rf /var/lib/apt/lists/*
 RUN	pecl install \
 	smbclient
diff --git a/generate_password.sh b/generate_password.sh
index 7ff8759..b7a0433 100755
--- a/generate_password.sh
+++ b/generate_password.sh
@@ -1,15 +1,23 @@
 #!/bin/bash
 
-if [ ! -f "nextcloud.conf" ]; then
-	cp nextcloud.conf.example nextcloud.conf
+if [ ! -f "db.conf" ]; then
+	cp db.conf.example db.conf
 
 	pw1=$(</dev/urandom tr -dc A-Za-z0-9 | head -c 28)
 	pw2=$(</dev/urandom tr -dc A-Za-z0-9 | head -c 28)
-	pw3=$(</dev/urandom tr -dc A-Za-z0-9 | head -c 28)
 
-	sed -i "/^NEXTCLOUD_DATABASE_ROOT/c\\\NEXTCLOUD_DATABASE_ROOT=${pw1}" nextcloud.conf
-	sed -i "/^NEXTCLOUD_DATABASE_PASSWORD/c\\\NEXTCLOUD_DATABASE_PASSWORD=${pw2}" nextcloud.conf
-	sed -i "/^NEXTCLOUD_ADMIN_PASSWORD/c\\\NEXTCLOUD_ADMIN_PASSWORD=${pw3}" nextcloud.conf
+	sed -i "/^MYSQL_PASSWORD/c\\\MYSQL_PASSWORD=${pw1}" db.conf
+	sed -i "/^MYSQL_ROOT_PASSWORD/c\\\MYSQL_ROOT_PASSWORD=${pw2}" db.conf
 else
-	echo "File already exists!"
+	echo "db.conf already exists!"
+fi
+
+if [ ! -f "cloud.conf" ]; then
+	cp cloud.conf.example cloud.conf
+
+	pw1=$(</dev/urandom tr -dc A-Za-z0-9 | head -c 28)
+
+	sed -i "/^NEXTCLOUD_ADMIN_PASSWORD/c\\\NEXTCLOUD_ADMIN_PASSWORD=${pw1}" cloud.conf
+else
+	echo "cloud.conf already exists!"
 fi
diff --git a/nextcloud.conf.example b/nextcloud.conf.example
index bbe3689..b87503a 100644
--- a/nextcloud.conf.example
+++ b/nextcloud.conf.example
@@ -9,20 +9,6 @@
 # admin user name
 NEXTCLOUD_ADMIN_USER=admin
 
-# admin user password
-NEXTCLOUD_ADMIN_PASSWORD=changeme
-
-# ipv4 network (only first three bytes like: 172.22.5)
-NEXTCLOUD_IPV4_NETWORK=172.22.5
-
-
-## database configuration
-# mysql root user password
-NEXTCLOUD_DATABASE_ROOT=changeme
-
-# database password
-NEXTCLOUD_DATABASE_PASSWORD=changeme
-
 
 ## Timezone one of /usr/share/zoneinfo
 TZ=Europe/Berlin