diff --git a/roles/evm/blockscout/defaults/main.yml b/roles/evm/blockscout/defaults/main.yml
index 8a0718b..3108355 100644
--- a/roles/evm/blockscout/defaults/main.yml
+++ b/roles/evm/blockscout/defaults/main.yml
@@ -9,6 +9,7 @@ blockscout_auto_restart: true
 # Configuration directories
 blockscout_conf_dir: /etc/blockscout/conf
 blockscout_custom_dir: "{{ blockscout_conf_dir }}/custom"
+blockscout_assets_dir: "{{ blockscout_custom_dir }}/shared"
 
 # Log directory
 blockscout_log_dir: /var/log/blockscout
@@ -22,7 +23,23 @@ blockscout_user: root
 # Blockscout variables
 blockscout_rpc: http://10.238.106.22:9650/ext/bc/RfX8YRUHePxFENBZFwaNt1tP6CR6RQ4hJJ5AqYv49LRoSKniK/rpc
 blockscout_header_logo_file: ash-logo-circle-30.svg
-blockscout_frontend_ip: 10.238.106.149
+
+# Frontend
+blockscout_frontend_ip: "10.238.106.149"
+blockscout_frontend_protocol: http
+blockscout_frontend_websocket_protocol: ws
+blockscout_frontend_host_name: "{{ blockscout_frontend_ip }}"
+blockscout_frontend_url: "{{ blockscout_frontend_protocol }}://{{ blockscout_frontend_host_name }}"
+blockscout_assets_url: "{{ blockscout_frontend_url }}/shared"
+blockscout_extra_assets_dir: '' ## eg. A folder containing logo, icon, etc.
+
+# Services
+# Stats
+blockscout_stats_enabled: "false"
+
+# Marketplace (https://github.com/blockscout/docs/blob/master/setup/env-variables/frontend-common-envs/envs.md#marketplace-app-configuration-properties)
+# Required fields: blockscout_marketplace_app_list: [{id: 'app', title: 'The App', logo: 'app-logo.png', shortDescription: 'Awesome app', categories: ['Security', 'Tools'], author: 'Bob', url: 'http://app.com', description: 'This is an awesome app']}]
+blockscout_marketplace_app_list: []
 
 # Blockscout env variables
 # --> https://docs.blockscout.com/for-developers/information-and-settings/env-variables
@@ -43,11 +60,15 @@ blockscout_backend_env_vars:
   # Port
   PORT: 4000
 
+  # Indexer
+  INDEXER_DISABLE_PENDING_TRANSACTIONS_FETCHER: "false" # It uses txpool_content which is some times disabled on nodes
+  INDEXER_DISABLE_INTERNAL_TRANSACTIONS_FETCHER: "false" # It uses debug_traceTransaction which is some times disabled on nodes
+
   # Logo
-  LOGO: /app/apps/block_scout_web/assets/static/images/ash-logo-circle-30.svg
+  LOGO: /app/apps/block_scout_web/assets/static/images/{{ blockscout_header_logo_file | basename }}
 
   # Footer
-  FOOTER_LOGO: /app/apps/block_scout_web/assets/static/images/ash-logo-circle-30.svg
+  FOOTER_LOGO: /app/apps/block_scout_web/assets/static/images/{{ blockscout_header_logo_file | basename }}
 
   # Enable SSL encryption for ecto queries
   ECTO_USE_SSL: "false"
@@ -62,19 +83,29 @@ blockscout_backend_env_vars:
   TXS_STATS_DAYS_TO_COMPILE_AT_INIT: 10
   
   # Enable Smart-contract verification microservice
-  MICROSERVICE_SC_VERIFIER_ENABLED: "true"
+  MICROSERVICE_SC_VERIFIER_ENABLED: "false"
+  MICROSERVICE_SC_VERIFIER_URL: http://sc-verifier:8050
+  MICROSERVICE_SC_VERIFIER_TYPE: sc_verifier
+
+  # Enable Visualizer services such as SOL2UML
+  MICROSERVICE_VISUALIZE_SOL2UML_ENABLED: "false"
+  MICROSERVICE_VISUALIZE_SOL2UML_URL: http://visualizer:8050
+    
+  # Enable Sig-provider which is used to display decoded transaction data on transaction pages and to determine transaction actions.
+  MICROSERVICE_SIG_PROVIDER_ENABLED: "false"
+  MICROSERVICE_SIG_PROVIDER_URL: http://sig-provider:8050
 
 blockscout_frontend_env_variables:
   # API conf
-  NEXT_PUBLIC_API_HOST: "{{ blockscout_frontend_ip }}"
-  NEXT_PUBLIC_API_PROTOCOL: http
+  NEXT_PUBLIC_API_HOST: "{{ blockscout_frontend_host_name }}"
+  NEXT_PUBLIC_API_PROTOCOL: "{{ blockscout_frontend_protocol }}"
   NEXT_PUBLIC_API_BASE_PATH: /
-  # NEXT_PUBLIC_STATS_API_HOST: http://10.238.106.212:8080
 
   # Network
   NEXT_PUBLIC_NETWORK_NAME: Ash Subnet
   NEXT_PUBLIC_NETWORK_SHORT_NAME: Ash
   NEXT_PUBLIC_NETWORK_ID: 66666
+  NEXT_PUBLIC_NETWORK_RPC_URL: "{{ blockscout_rpc }}"
 
   # Coin
   NEXT_PUBLIC_NETWORK_CURRENCY_NAME: AshCoin
@@ -82,15 +113,49 @@ blockscout_frontend_env_variables:
   NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS: 18
 
   # App conf
-  NEXT_PUBLIC_APP_HOST: "{{ blockscout_frontend_ip }}"
-  NEXT_PUBLIC_APP_PROTOCOL: http
+  NEXT_PUBLIC_APP_HOST: "{{ blockscout_frontend_host_name }}"
+  NEXT_PUBLIC_APP_PROTOCOL: "{{ blockscout_frontend_protocol }}"
 
   # Miscellaneous
   NEXT_PUBLIC_HOMEPAGE_CHARTS: ['daily_txs']
-  NEXT_PUBLIC_VISUALIZE_API_HOST: "http://{{ blockscout_frontend_ip }}:8081"
   NEXT_PUBLIC_IS_TESTNET: "true"
-  NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL: ws
+  NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL: "{{ blockscout_frontend_websocket_protocol }}"
   NEXT_PUBLIC_API_SPEC_URL: https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
 
+  # Visualizer
+  NEXT_PUBLIC_VISUALIZE_API_HOST: "{{ blockscout_frontend_url }}"
+  NEXT_PUBLIC_VISUALIZE_API_BASE_PATH: /visualizer-service
+
+  # Stats
+  NEXT_PUBLIC_STATS_API_HOST: "{{ blockscout_frontend_url if blockscout_stats_enabled in ['true', true] else None }}"
+  NEXT_PUBLIC_STATS_API_BASE_PATH: /stats-service
+
+  # Other explorers
+  NEXT_PUBLIC_FEATURED_NETWORKS: "{{ [{'title': 'ASH Layer', 'url': blockscout_frontend_url, 'group': 'Testnets', 'icon': 'https://ash.center/img/ash-logo.svg', 'isActive': true}] | to_json }}"
+
+  # Other links
+  # NEXT_PUBLIC_OTHER_LINKS: [{'url':'http://10.200.14.212/','text':'Mainnet'}]
+
+
 blockscout_visualizer_env_variables:
   VISUALIZER__SERVER__GRPC__ENABLED: "false"
+
+blockscout_sig_provider_env_variables:
+  SIG_PROVIDER__SERVER__GRPC__ENABLED: "false"
+
+blockscout_sc_verifier_env_variables:
+  SMART_CONTRACT_VERIFIER__SERVER__GRPC__ENABLED: "false"
+
+blockscout_stats_env_variables:
+  STATS__DB_URL: "{{ blockscout_backend_env_vars.DATABASE_URL | regex_replace('/\\w+?$', '/stats') }}"
+  STATS__BLOCKSCOUT_DB_URL: "{{ blockscout_backend_env_vars.DATABASE_URL }}"
+  STATS__CREATE_DATABASE: "true"
+  STATS__RUN_MIGRATIONS: "true"
+  STATS__BLOCKSCOUT_API_URL: "http://backend:4000"
+  RUST_BACKTRACE: 1
+  STATS__CHARTS_CONFIG: "config/charts.json"
+  STATS__LAYOUT_CONFIG: "config/layout.json"
+  STATS__UPDATE_GROUPS_CONFIG: "config/update_groups.json"
+  STATS__DISABLE_INTERNAL_TRANSACTIONS: "{{ blockscout_backend_env_vars.INDEXER_DISABLE_INTERNAL_TRANSACTIONS_FETCHER }}"
+  # Only once, after the first start, the stats service will update the stats for all stats
+  # STATS__FORCE_UPDATE_ON_START: "true"
diff --git a/roles/evm/blockscout/files/proxy/microservices.conf.template b/roles/evm/blockscout/files/proxy/microservices.conf.template
deleted file mode 100644
index 7e76238..0000000
--- a/roles/evm/blockscout/files/proxy/microservices.conf.template
+++ /dev/null
@@ -1,42 +0,0 @@
-map $http_upgrade $connection_upgrade {
-
-  default upgrade;
-  ''      close;
-}
-server {
-    listen       8081;
-    server_name  localhost;
-    proxy_http_version 1.1;
-    proxy_hide_header Access-Control-Allow-Origin;
-    proxy_hide_header Access-Control-Allow-Methods;
-    add_header 'Access-Control-Allow-Origin' 'http://localhost:3000' always;
-    add_header 'Access-Control-Allow-Credentials' 'true' always;
-    add_header 'Access-Control-Allow-Methods' 'PUT, GET, POST, OPTIONS, DELETE, PATCH' always;
-    add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
-
-    location / {
-        proxy_pass            http://visualizer:8050/;
-        proxy_http_version    1.1;
-        proxy_buffering       off;
-        proxy_set_header      Host "$host";
-        proxy_set_header      X-Real-IP "$remote_addr";
-        proxy_connect_timeout 30m;
-        proxy_read_timeout    30m;
-        proxy_send_timeout    30m;
-        proxy_set_header      X-Forwarded-For "$proxy_add_x_forwarded_for";
-        proxy_set_header      X-Forwarded-Proto "$scheme";
-        proxy_set_header      Upgrade "$http_upgrade";
-        proxy_set_header      Connection $connection_upgrade;
-        proxy_cache_bypass    $http_upgrade;
-        if ($request_method = 'OPTIONS') {
-            add_header 'Access-Control-Allow-Origin' 'http://localhost:3000' always;
-            add_header 'Access-Control-Allow-Credentials' 'true' always;
-            add_header 'Access-Control-Allow-Methods' 'PUT, GET, POST, OPTIONS, DELETE, PATCH' always;
-            add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
-            add_header 'Access-Control-Max-Age' 1728000;
-            add_header 'Content-Type' 'text/plain charset=UTF-8';
-            add_header 'Content-Length' 0;
-            return 204;
-        }
-    }
-}
diff --git a/roles/evm/blockscout/files/services/backend.yml b/roles/evm/blockscout/files/services/backend.yml
index 13d1097..6e65a29 100644
--- a/roles/evm/blockscout/files/services/backend.yml
+++ b/roles/evm/blockscout/files/services/backend.yml
@@ -2,7 +2,7 @@ version: '3.9'
 
 services:
   backend:
-    image: blockscout/blockscout:6.1.0
+    image: blockscout/blockscout:6.10.1
     pull_policy: always
     restart: always
     stop_grace_period: 5m
diff --git a/roles/evm/blockscout/files/services/frontend.yml b/roles/evm/blockscout/files/services/frontend.yml
index ac85354..3eb01e9 100644
--- a/roles/evm/blockscout/files/services/frontend.yml
+++ b/roles/evm/blockscout/files/services/frontend.yml
@@ -2,7 +2,7 @@ version: '3.9'
 
 services:
   frontend:
-    image: ghcr.io/blockscout/frontend:v1.23.3
+    image: ghcr.io/blockscout/frontend:v1.37.4
     pull_policy: always
     platform: linux/amd64
     restart: always
diff --git a/roles/evm/blockscout/files/services/nginx.yml b/roles/evm/blockscout/files/services/nginx.yml
index fa26244..f7e0df8 100644
--- a/roles/evm/blockscout/files/services/nginx.yml
+++ b/roles/evm/blockscout/files/services/nginx.yml
@@ -16,5 +16,3 @@ services:
         published: 80
       - target: 8080
         published: 8080
-      - target: 8081
-        published: 8081
diff --git a/roles/evm/blockscout/files/services/sig-provider.yml b/roles/evm/blockscout/files/services/sig-provider.yml
index a8155cb..9f65699 100644
--- a/roles/evm/blockscout/files/services/sig-provider.yml
+++ b/roles/evm/blockscout/files/services/sig-provider.yml
@@ -2,8 +2,10 @@ version: '3.9'
 
 services:
   sig-provider:
-    image: ghcr.io/blockscout/sig-provider:v1.0.0
+    image: ghcr.io/blockscout/sig-provider:v1.1.1
     pull_policy: always
     platform: linux/amd64
     restart: always
     container_name: 'sig-provider'
+    env_file:
+      -  /etc/blockscout/conf/vars-sig-provider.env
diff --git a/roles/evm/blockscout/files/services/smart-contract-verifier.yml b/roles/evm/blockscout/files/services/smart-contract-verifier.yml
index d2fd8a8..6553d43 100644
--- a/roles/evm/blockscout/files/services/smart-contract-verifier.yml
+++ b/roles/evm/blockscout/files/services/smart-contract-verifier.yml
@@ -2,7 +2,7 @@ version: '3.9'
 
 services:
   smart-contract-verifier:
-    image: ghcr.io/blockscout/smart-contract-verifier:v1.6.1
+    image: ghcr.io/blockscout/smart-contract-verifier:v1.9.2
     pull_policy: always
     platform: linux/amd64
     restart: always
diff --git a/roles/evm/blockscout/files/services/stats.yml b/roles/evm/blockscout/files/services/stats.yml
new file mode 100644
index 0000000..0377fa6
--- /dev/null
+++ b/roles/evm/blockscout/files/services/stats.yml
@@ -0,0 +1,12 @@
+version: '3.9'
+
+services:
+  stats:
+    image: ghcr.io/blockscout/stats:v2.3.0
+    build: .
+    pull_policy: always
+    platform: linux/amd64
+    restart: always
+    container_name: 'stats'
+    env_file:
+      - /etc/blockscout/conf/vars-stats.env
diff --git a/roles/evm/blockscout/files/services/visualizer.yml b/roles/evm/blockscout/files/services/visualizer.yml
index 2638ca4..91d73c8 100644
--- a/roles/evm/blockscout/files/services/visualizer.yml
+++ b/roles/evm/blockscout/files/services/visualizer.yml
@@ -2,7 +2,7 @@ version: '3.9'
 
 services:
   visualizer:
-    image: ghcr.io/blockscout/visualizer:v0.2.0
+    image: ghcr.io/blockscout/visualizer:v0.2.1
     pull_policy: always
     platform: linux/amd64
     restart: always
diff --git a/roles/evm/blockscout/tasks/config-blockscout.yml b/roles/evm/blockscout/tasks/config-blockscout.yml
index ab2076f..d0b5395 100644
--- a/roles/evm/blockscout/tasks/config-blockscout.yml
+++ b/roles/evm/blockscout/tasks/config-blockscout.yml
@@ -1,6 +1,14 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright (c) 2022-2024, E36 Knots
 ---
+- name: Create Marketplace config
+  set_fact:
+    blockscout_frontend_env_variables: 
+      NEXT_PUBLIC_MARKETPLACE_ENABLED: 'true'
+      NEXT_PUBLIC_MARKETPLACE_CONFIG_URL: "{{ blockscout_assets_url }}/marketplace-config.json"
+      NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM: https://forms.gle/S7LK7M6QiNeFnGUN8
+  when: blockscout_marketplace_app_list | length > 0
+
 - name: Create Blockscout directories
   file:
     path: "{{ item }}"
@@ -12,6 +20,8 @@
     - "{{ blockscout_custom_dir }}"
     - "{{ blockscout_log_dir }}"
     - "{{ blockscout_data_dir }}"
+    - "{{ blockscout_assets_dir }}"
+  tags: assets-sync
 
 - name: Template docker-compose.yml
   template:
@@ -29,10 +39,18 @@
     group: "{{ blockscout_user }}"
   notify: Restart blockscout
 
-- name: Upload proxy
-  copy:
-    src: "proxy"
-    dest: "{{ blockscout_custom_dir }}"
+- name: Ensure proxy directory exists
+  file:
+    path: "{{ blockscout_custom_dir }}/proxy"
+    state: directory
+    owner: "{{ blockscout_user }}"
+    group: "{{ blockscout_user }}"
+    mode: '0755'
+
+- name: Template proxy default.conf.template
+  template:
+    src: default.conf.template.j2
+    dest: "{{ blockscout_custom_dir }}/proxy/default.conf.template"
     owner: "{{ blockscout_user }}"
     group: "{{ blockscout_user }}"
   notify: Restart blockscout
@@ -59,6 +77,7 @@
     dest: "{{ blockscout_conf_dir }}/vars-visualizer.env"
     owner: "{{ blockscout_user }}"
     group: "{{ blockscout_user }}"
+  when: blockscout_backend_env_vars.MICROSERVICE_VISUALIZE_SOL2UML_ENABLED in ['true', true]
   notify: Restart blockscout
 
 - name: Template vars-smart-contract-verifier.env
@@ -67,6 +86,25 @@
     dest: "{{ blockscout_conf_dir }}/vars-smart-contract-verifier.env"
     owner: "{{ blockscout_user }}"
     group: "{{ blockscout_user }}"
+  when: blockscout_backend_env_vars.MICROSERVICE_SC_VERIFIER_ENABLED in ['true', true]
+  notify: Restart blockscout
+
+- name: Template vars-sig-provider.env
+  template:
+    src: vars-sig-provider.env.j2
+    dest: "{{ blockscout_conf_dir }}/vars-sig-provider.env"
+    owner: "{{ blockscout_user }}"
+    group: "{{ blockscout_user }}"
+  when: blockscout_backend_env_vars.MICROSERVICE_SIG_PROVIDER_ENABLED in ['true', true]
+  notify: Restart blockscout
+
+- name: Template vars-stats.env
+  template:
+    src: vars-stats.env.j2
+    dest: "{{ blockscout_conf_dir }}/vars-stats.env"
+    owner: "{{ blockscout_user }}"
+    group: "{{ blockscout_user }}"
+  when: blockscout_stats_enabled in ['true', true]
   notify: Restart blockscout
 
 - name: Ensure images directory exists
@@ -80,7 +118,7 @@
 - name: Upload logo image
   copy:
     src: "{{ blockscout_header_logo_file }}"
-    dest: "{{ blockscout_custom_dir }}/images/{{ blockscout_header_logo_file }}"
+    dest: "{{ blockscout_custom_dir }}/images/{{ blockscout_header_logo_file | basename }}"
     owner: "{{ blockscout_user }}"
     group: "{{ blockscout_user }}"
   notify: Restart blockscout
@@ -91,6 +129,41 @@
     dest: /etc/systemd/system/blockscout.service
   notify: Restart blockscout
 
+- name: Create marketplace-config.json asset
+  copy:
+    content: "{{ blockscout_marketplace_app_list }}"
+    dest: "{{ blockscout_assets_dir }}/marketplace-config.json"
+    owner: "{{ blockscout_user }}"
+    group: "{{ blockscout_user }}"
+    mode: '0755'
+  when: blockscout_marketplace_app_list | length > 0
+  notify: Restart blockscout
+  tags: marketplace-sync
+
+- name: Convert NEXT_PUBLIC_FEATURED_NETWORKS to json formatting
+  set_fact:
+    blockscout_frontend_env_variables:
+      NEXT_PUBLIC_FEATURED_NETWORKS: "{{ blockscout_frontend_env_variables.NEXT_PUBLIC_FEATURED_NETWORKS | to_json }}"
+  when: "'NEXT_PUBLIC_FEATURED_NETWORKS' in blockscout_frontend_env_variables"
+
+- name: Convert NEXT_PUBLIC_FOOTER_LINKS to json formatting
+  set_fact:
+    blockscout_frontend_env_variables:
+      NEXT_PUBLIC_FOOTER_LINKS: "{{ blockscout_frontend_env_variables.NEXT_PUBLIC_FOOTER_LINKS | to_json }}"
+  when: "'NEXT_PUBLIC_FOOTER_LINKS' in blockscout_frontend_env_variables"
+
+- name: Copy assets to expose it through NGINX '/shared' api path
+  copy:
+    src: "{{ blockscout_extra_assets_dir if blockscout_extra_assets_dir.endswith('/') else blockscout_extra_assets_dir + '/' }}"
+    dest: "{{ blockscout_assets_dir }}"
+    owner: "{{ blockscout_user }}"
+    group: "{{ blockscout_user }}"
+  when: blockscout_extra_assets_dir | length > 0
+  notify: Restart blockscout
+  tags: assets-sync
+
 - name: Reload systemctl daemons
   systemd:
     daemon_reload: true
+
+
diff --git a/roles/evm/blockscout/files/proxy/default.conf.template b/roles/evm/blockscout/templates/default.conf.template.j2
similarity index 52%
rename from roles/evm/blockscout/files/proxy/default.conf.template
rename to roles/evm/blockscout/templates/default.conf.template.j2
index 0db0dc3..ef69394 100644
--- a/roles/evm/blockscout/files/proxy/default.conf.template
+++ b/roles/evm/blockscout/templates/default.conf.template.j2
@@ -8,8 +8,9 @@ server {
     server_name  localhost;
     proxy_http_version 1.1;
 
-    location ~ ^/(api|socket|sitemap.xml|auth/auth0|auth/auth0/callback|auth/logout) {
-        proxy_pass            ${BACK_PROXY_PASS};
+    location /shared/ {
+        root /var;
+        autoindex on;
         proxy_http_version    1.1;
         proxy_set_header      Host "$host";
         proxy_set_header      X-Real-IP "$remote_addr";
@@ -19,30 +20,37 @@ server {
         proxy_set_header      Connection $connection_upgrade;
         proxy_cache_bypass    $http_upgrade;
     }
-    location / {
-        proxy_pass            ${FRONT_PROXY_PASS};
+{% if blockscout_stats_enabled in ['true', true] %}
+    location /stats-service/ {
+        proxy_pass            http://stats:8050/;
         proxy_http_version    1.1;
+        proxy_buffering       off;
         proxy_set_header      Host "$host";
         proxy_set_header      X-Real-IP "$remote_addr";
+        proxy_connect_timeout 30m;
+        proxy_read_timeout    30m;
+        proxy_send_timeout    30m;
         proxy_set_header      X-Forwarded-For "$proxy_add_x_forwarded_for";
         proxy_set_header      X-Forwarded-Proto "$scheme";
         proxy_set_header      Upgrade "$http_upgrade";
         proxy_set_header      Connection $connection_upgrade;
-        proxy_cache_bypass    $http_upgrade;
+        add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
+        proxy_no_cache 1;
+        proxy_cache_bypass 1;
+        if ($request_method = 'OPTIONS') {
+            add_header 'Access-Control-Allow-Origin' '*' always;
+            add_header 'Access-Control-Allow-Credentials' 'true' always;
+            add_header 'Access-Control-Allow-Methods' 'PUT, GET, POST, OPTIONS, DELETE, PATCH' always;
+            add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
+            add_header 'Access-Control-Max-Age' 1728000;
+            add_header 'Content-Type' 'text/plain charset=UTF-8';
+            add_header 'Content-Length' 0;
+            return 204;
+        }
     }
-}
-server {
-    listen       8081;
-    server_name  localhost;
-    proxy_http_version 1.1;
-    proxy_hide_header Access-Control-Allow-Origin;
-    proxy_hide_header Access-Control-Allow-Methods;
-    add_header 'Access-Control-Allow-Origin' 'http://localhost' always;
-    add_header 'Access-Control-Allow-Credentials' 'true' always;
-    add_header 'Access-Control-Allow-Methods' 'PUT, GET, POST, OPTIONS, DELETE, PATCH' always;
-    add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
-
-    location / {
+{% endif %}
+{% if blockscout_backend_env_vars.MICROSERVICE_VISUALIZE_SOL2UML_ENABLED in ['true', true] %}
+    location /visualizer-service {
         proxy_pass            http://visualizer:8050/;
         proxy_http_version    1.1;
         proxy_buffering       off;
@@ -57,7 +65,7 @@ server {
         proxy_set_header      Connection $connection_upgrade;
         proxy_cache_bypass    $http_upgrade;
         if ($request_method = 'OPTIONS') {
-            add_header 'Access-Control-Allow-Origin' 'http://localhost' always;
+            add_header 'Access-Control-Allow-Origin' '*' always;
             add_header 'Access-Control-Allow-Credentials' 'true' always;
             add_header 'Access-Control-Allow-Methods' 'PUT, GET, POST, OPTIONS, DELETE, PATCH' always;
             add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
@@ -67,4 +75,27 @@ server {
             return 204;
         }
     }
+{% endif %}
+    location ~ ^/(api|socket|sitemap.xml|auth/auth0|auth/auth0/callback|auth/logout) {
+        proxy_pass            ${BACK_PROXY_PASS};
+        proxy_http_version    1.1;
+        proxy_set_header      Host "$host";
+        proxy_set_header      X-Real-IP "$remote_addr";
+        proxy_set_header      X-Forwarded-For "$proxy_add_x_forwarded_for";
+        proxy_set_header      X-Forwarded-Proto "$scheme";
+        proxy_set_header      Upgrade "$http_upgrade";
+        proxy_set_header      Connection $connection_upgrade;
+        proxy_cache_bypass    $http_upgrade;
+    }
+    location / {
+        proxy_pass            ${FRONT_PROXY_PASS};
+        proxy_http_version    1.1;
+        proxy_set_header      Host "$host";
+        proxy_set_header      X-Real-IP "$remote_addr";
+        proxy_set_header      X-Forwarded-For "$proxy_add_x_forwarded_for";
+        proxy_set_header      X-Forwarded-Proto "$scheme";
+        proxy_set_header      Upgrade "$http_upgrade";
+        proxy_set_header      Connection $connection_upgrade;
+        proxy_cache_bypass    $http_upgrade;
+    }
 }
diff --git a/roles/evm/blockscout/templates/docker-compose.yml.j2 b/roles/evm/blockscout/templates/docker-compose.yml.j2
index 2e36b4f..26a5602 100644
--- a/roles/evm/blockscout/templates/docker-compose.yml.j2
+++ b/roles/evm/blockscout/templates/docker-compose.yml.j2
@@ -1,5 +1,5 @@
 version: '3.9'
-
+{% set EMBEDDED_DATABASE = '@db:' in blockscout_backend_env_vars.DATABASE_URL %}
 services:
   redis-db:
     extends:
@@ -7,62 +7,72 @@ services:
       service: redis-db
     volumes:
       - {{ blockscout_log_dir }}:/app/logs/
-
+{% if EMBEDDED_DATABASE %}
   db-init:
     extends:
       file: ./custom/services/db.yml
       service: db-init
     volumes:
       - {{ blockscout_data_dir }}:/var/lib/postgresql/data
-
   db:
     extends:
       file: ./custom/services/db.yml
       service: db
     volumes:
       - {{ blockscout_data_dir }}:/var/lib/postgresql/data
-
+{% endif %}
   backend:
     depends_on:
+{% if EMBEDDED_DATABASE %}
       - db
+{% endif %}
       - redis-db
     extends:
       file: ./custom/services/backend.yml
       service: backend
+{% if EMBEDDED_DATABASE %}
     links:
       - db:database
+{% endif %}
     volumes:
       - {{ blockscout_log_dir }}:/app/logs/
       - {{ blockscout_custom_dir }}/images:/app/apps/block_scout_web/assets/static/images
-
+{% if blockscout_backend_env_vars.MICROSERVICE_VISUALIZE_SOL2UML_ENABLED in ['true', true] %}
   visualizer:
     extends:
       file: ./custom/services/visualizer.yml
       service: visualizer
-
+{% endif %}
+{% if blockscout_backend_env_vars.MICROSERVICE_SIG_PROVIDER_ENABLED in ['true', true] %}
   sig-provider:
     extends:
       file: ./custom/services/sig-provider.yml
       service: sig-provider
-
+{% endif %}
+{% if blockscout_backend_env_vars.MICROSERVICE_SC_VERIFIER_ENABLED in ['true', true] %}
   sc-verifier:
     extends:
       file: ./custom/services/smart-contract-verifier.yml
       service: smart-contract-verifier
-    ports:
-      - 8082:8050
-
+{% endif %}
+{% if blockscout_stats_enabled in ['true', true] %}
+  stats:
+    extends:
+      file: ./custom/services/stats.yml
+      service: stats
+{% endif %}
   frontend:
     depends_on:
       - backend
+      - proxy
     extends:
       file: ./custom/services/frontend.yml
       service: frontend
-
   proxy:
     depends_on:
       - backend
-      - frontend
     extends:
       file: ./custom/services/nginx.yml
       service: proxy
+    volumes:
+      - {{ blockscout_assets_dir }}:/var/shared
diff --git a/roles/evm/blockscout/templates/vars-sig-provider.env.j2 b/roles/evm/blockscout/templates/vars-sig-provider.env.j2
new file mode 100644
index 0000000..2faeff7
--- /dev/null
+++ b/roles/evm/blockscout/templates/vars-sig-provider.env.j2
@@ -0,0 +1,3 @@
+{% for name, value in blockscout_sig_provider_env_variables.items() %}
+{{ name }}={{ value }}
+{% endfor %}
diff --git a/roles/evm/blockscout/templates/vars-smart-contract-verifier.env.j2 b/roles/evm/blockscout/templates/vars-smart-contract-verifier.env.j2
index 5fdf805..c6b4656 100644
--- a/roles/evm/blockscout/templates/vars-smart-contract-verifier.env.j2
+++ b/roles/evm/blockscout/templates/vars-smart-contract-verifier.env.j2
@@ -1,39 +1,3 @@
-# Those are examples of existing configuration variables and their default values.
-# When uncommented, they would overwrite corresponding values from `base.toml`
-# configuration file.
-
-SMART_CONTRACT_VERIFIER__SERVER__HTTP__ENABLED=true
-SMART_CONTRACT_VERIFIER__SERVER__HTTP__ADDR=0.0.0.0:8050
-SMART_CONTRACT_VERIFIER__SERVER__HTTP__MAX_BODY_SIZE=2097152
-
-SMART_CONTRACT_VERIFIER__SERVER__GRPC__ENABLED=false
-SMART_CONTRACT_VERIFIER__SERVER__GRPC__ADDR=0.0.0.0:8051
-
-SMART_CONTRACT_VERIFIER__SOLIDITY__ENABLED=true
-SMART_CONTRACT_VERIFIER__SOLIDITY__COMPILERS_DIR=/tmp/solidity-compilers
-SMART_CONTRACT_VERIFIER__SOLIDITY__REFRESH_VERSIONS_SCHEDULE=0 0 * * * * *
-
-# It depends on the OS you are running the service on
-SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__LIST__LIST_URL=https://solc-bin.ethereum.org/linux-amd64/list.json
-#SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__LIST__LIST_URL=https://solc-bin.ethereum.org/macosx-amd64/list.json
-#SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__LIST__LIST_URL=https://solc-bin.ethereum.org/windows-amd64/list.json
-
-SMART_CONTRACT_VERIFIER__VYPER__ENABLED=true
-SMART_CONTRACT_VERIFIER__VYPER__COMPILERS_DIR=/tmp/vyper-compilers
-SMART_CONTRACT_VERIFIER__VYPER__REFRESH_VERSIONS_SCHEDULE=0 0 * * * * *
-
-# It depends on the OS you are running the service on
-SMART_CONTRACT_VERIFIER__VYPER__FETCHER__LIST__LIST_URL=https://raw.githubusercontent.com/blockscout/solc-bin/main/vyper.list.json
-#SMART_CONTRACT_VERIFIER__VYPER__FETCHER__LIST__LIST_URL=https://raw.githubusercontent.com/blockscout/solc-bin/main/vyper.macos.list.json
-
-SMART_CONTRACT_VERIFIER__SOURCIFY__ENABLED=true
-SMART_CONTRACT_VERIFIER__SOURCIFY__API_URL=https://sourcify.dev/server/
-SMART_CONTRACT_VERIFIER__SOURCIFY__VERIFICATION_ATTEMPTS=3
-SMART_CONTRACT_VERIFIER__SOURCIFY__REQUEST_TIMEOUT=10
-
-SMART_CONTRACT_VERIFIER__METRICS__ENABLED=false
-SMART_CONTRACT_VERIFIER__METRICS__ADDR=0.0.0.0:6060
-SMART_CONTRACT_VERIFIER__METRICS__ROUTE=/metrics
-
-SMART_CONTRACT_VERIFIER__JAEGER__ENABLED=false
-SMART_CONTRACT_VERIFIER__JAEGER__AGENT_ENDPOINT=localhost:6831
+{% for name, value in blockscout_sc_verifier_env_variables.items() %}
+{{ name }}={{ value }}
+{% endfor %}
diff --git a/roles/evm/blockscout/templates/vars-stats.env.j2 b/roles/evm/blockscout/templates/vars-stats.env.j2
new file mode 100644
index 0000000..e31a18c
--- /dev/null
+++ b/roles/evm/blockscout/templates/vars-stats.env.j2
@@ -0,0 +1,3 @@
+{% for name, value in blockscout_stats_env_variables.items() %}
+{{ name }}={{ value }}
+{% endfor %}