diff --git a/PORTS b/PORTS
index 57d6eef..8ec7901 100644
--- a/PORTS
+++ b/PORTS
@@ -1,38 +1,39 @@
 reserved-for-legacy-docker-migration-high-priority
     23080   Phabricator HTTP - River Sector
     35080   Phabricator HTTP - Wolfplex
     36080   Phabricator HTTP - Zed
 
 reserved-for-legacy-docker-migration-medium-priority
      3000   Mastodon public HTTP
      4000   Mastodon streaming HTTP
     15674   RabbitMQ
     37080   Notifications center HTTP
     41080   Nasqueron Tools HTTP
 
 reserved-for-legacy-docker-migration-low-priority
      4440   Rundeck HTTP
     21080   Drupal CRM HTTP
     22080   Zammad HTTP
     26080   Sentry HTTP
     27080   Grafana HTTP
     28080   phragile HTTP
     29080   etcd HTTP
     32080   Discourse HTTP
     40080   RocketChat HTTP
 
 paas-docker
      5000   Docker registry HTTP
      9090   Openfire HTTP
+    20080   Nasqueron API - Docker registry API
     22220   Phabricator Aphlict (client)
     22221   Phabricator Aphlict (admin)
     24080   Tommy HTTP - CI
     24180   Tommy HTTP - CD
     25080   Auth Grove HTTP
     31080   Phabricator HTTP - DevCentral
     33080   Bugzilla HTTP - Espace Win
     34080   Etherpad
     38080   Jenkins HTTP - CD
     39080   Cachet HTTP
     42080   Jenkins HTTP - CI
     50000   Jenkins master's port for JNLP-based Jenkins agents - CD
diff --git a/pillar/paas/docker.sls b/pillar/paas/docker.sls
index d67788f..f2997ae 100644
--- a/pillar/paas/docker.sls
+++ b/pillar/paas/docker.sls
@@ -1,308 +1,319 @@
 #   -------------------------------------------------------------
 #   Salt — Provision Docker engine
 #   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 #   Project:        Nasqueron
 #   Created:        2018-03-10
 #   License:        Trivial work, not eligible to copyright
 #   -------------------------------------------------------------
 
 docker_aliases:
   - &ipv4_equatower 51.255.124.10
 
 #   -------------------------------------------------------------
 #   Images
 #
 #   You can append a :tag (by default, latest is used).
 #
 #   It's not possible to specify Docker library images only by final name.
 #   See https://docs.saltstack.com/en/latest/ref/states/all/salt.states.docker_image.html
 #   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 docker_images:
   '*':
     - certbot/certbot
 
   dwellers:
     # Core services
     - nasqueron/mysql:5.7
     - nasqueron/rabbitmq
 
     # Infrastructure and development services
     - dereckson/cachet
     - nasqueron/notifications
 
   equatower:
     # Core services
     - library/registry
     - nasqueron/mysql
 
     # Nasqueron services
     - nasqueron/auth-grove
 
+    # Nasqueron API microservices
+    - nasqueron/docker-registry-api
+
     # Infrastructure and development services
     - nasqueron/aphlict
     - nasqueron/etherpad:production
     - nasqueron/phabricator
 
     # Continuous deployment jobs
     - jenkins/jenkins
     - nasqueron/jenkins-slave-node
     - nasqueron/jenkins-slave-php
     - nasqueron/jenkins-slave-rust
     - nasqueron/tommy
 
 #   -------------------------------------------------------------
 #   Networks
 #
 #   Containers can be grouped by network, instead to use links.
 #   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 docker_networks:
   dwellers:
     bugzilla:
       subnet: 172.21.3.0/24
   equatower:
     cd:
       subnet: 172.18.1.0/24
     ci:
       subnet: 172.18.2.0/24
 
 #   -------------------------------------------------------------
 #   Docker engine configuration
 #   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 docker_daemon:
   equatower:
     storage-driver: devicemapper
     storage-opts:
         - "dm.thinpooldev=/dev/mapper/wharf-thinpool"
         - "dm.use_deferred_removal=true"
         - "dm.use_deferred_deletion=true"
 
 docker_devicemapper:
   equatower:
     thinpool: wharf-thinpool
 
 #   -------------------------------------------------------------
 #   Containers
 #
 #   The docker_containers entry allow to declare
 #   containers by image by servers
 #
 #   The hierarchy is so as following.
 #
 #   docker_containers:
 #     server with the Docker engine:
 #       service codename:
 #         instance name:
 #            container properties
 #
 #   The service codename must match a state file in
 #   the roles/paas-docker/containers/ directory.
 #
 #   The container will be run with the specified instance name.
 #
 #   **nginx**
 #
 #   The container properties can also describe the information
 #   needed to configure nginx with the host and app_port key.
 #
 #   In such case, a matching vhost file should be declared as
 #   roles/paas-docker/nginx/files/vhosts/<service codename>.sls
 #   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 docker_containers:
 
   #
   # Dwellers is the engine for Mastodon and CI intelligent bus services
   #
   dwellers:
 
     #
     # Core services
     #
 
     mysql:
       bugzilla_db:
         network: bugzilla
         version: 5.7
 
     #
     # Bugzilla
     #
 
     bugzilla:
       ew_bugzilla:
         host: bugzilla.espace-win.org
         app_port: 33080
         network: bugzilla
         mysql:
           host: bugzilla_db
           db: EspaceWin_Bugs
         credential: espacewin.bugzilla.mysql
 
   #
   # Equatower is the current production engine
   #
   equatower:
 
      #
      # Core services
      #
 
     mysql:
       acquisitariat: {}
       phpbb_db: {}
 
     registry:
       registry:
         app_port: 5000
         ip: 127.0.0.1
 
      #
      # CI and CD
      #
 
     jenkins:
       jenkins_cd:
         realm: cd
         host: cd.nasqueron.org
         app_port: 38080
         jnlp_port: 50000
       jenkins_ci:
         realm: ci
         host: ci.nasqueron.org
         app_port: 42080
         jnlp_port: 55000
 
     jenkins_slave:
       # Slaves for CD
       apsile: &php_for_cd
         image: php
         realm: cd
 
       elapsi: *php_for_cd
 
       rust_brown:
         image: rust
         realm: cd
 
       yarabokin:
         image: node
         realm: cd
 
       zateki: &php_for_ci
         image: php
         realm: ci
 
       zenerre: *php_for_ci
 
     tommy:
       tommy_ci:
         app_port: 24080
         host: builds.nasqueron.org
         aliases:
           - build.nasqueron.org
         jenkins_url: https://ci.nasqueron.org
 
       tommy_cd:
         # No host definition, as this dashboard is mounted on infra.nasqueron.org
         app_port: 24180
         jenkins_url: https://cd.nasqueron.org
 
     # Infrastructure and development services
 
     phabricator:
       devcentral:
         app_port: 31080
         host: devcentral.nasqueron.org
         aliases:
           - phabricator.nasqueron.org
         blogs:
           servers:
             host: servers.nasqueron.org
             aliases:
               - server.nasqueron.org
               - serveur.nasqueron.org
               - serveurs.nasqueron.org
         static_host: phabricator-files-for-devcentral-nasqueron.spacetechnology.net
 
     aphlict:
       aphlict:
         ports:
           client: 22280
           admin: 22281
 
     cachet:
       cachet:
         app_port: 39080
         host: status.nasqueron.org
         credential: nasqueron.cachet.mysql
         app_key: nasqueron.cachet.app_key
         mysql_link: acquisitariat
 
     etherpad:
       pad:
         app_port: 34080
         host: pad.nasqueron.org
         aliases:
           - pad.wolfplex.org
           - pad.wolfplex.be
         credential: nasqueron.etherpad.api
         mysql_link: acquisitariat
 
     auth-grove:
       login:
         app_port: 25080
         host: login.nasqueron.org
         credential: nasqueron.auth-grove.mysql
         mysql_link: acquisitariat
 
+    # API microservices
+
+    docker-registry-api:
+      api-docker-registry:
+        app_port: 20080
+        api_entry_point: /docker/registry
+        registry_instance: registry
+
     # phpBB SaaS
     # The SaaS uses a MySQL instance, declared in the MySQL section.
 
     # Openfire
     openfire:
       openfire:
         ip: *ipv4_equatower
         app_port: 9090
         host: xmpp.nasqueron.org
 
  #   -------------------------------------------------------------
  #   Ports listened by XMPP
  #   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 xmpp_ports:
   - 3478
   - 5222 # Client to server
   - 5223 # Client to server (Encrypted (legacy-mode) connections)
   - 5262 # Connections managers
   - 5269 # Server to server
   - 5275 # External components
   - 5276 # External components (Encrypted (legacy-mode) connections)
   - 7070 # HTTP binding
   - 7443 # HTTP binding with TLS
   - 7777 # File transfer proxy
   - 9090 # Web administration server
   - 9091 # Web administration server with TLS
 
  #   -------------------------------------------------------------
  #   Zemke-Rhyne clients
  #
  #   This section should list all the Docker engines server
  #   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 zr_clients:
   - key: 2
     allowedConnectionFrom:
       - 172.27.26.49
       - dwellers.nasqueron.drake
       - dwellers.nasqueron.org
     restrictCommand:
     comment: Zemke-Rhyne
 
   - key: 123
     allowedConnectionFrom:
       - equatower.nasqueron.org
     restrictCommand:
     comment: Zemke-Rhyne
diff --git a/roles/paas-docker/containers/docker-registry-api.sls b/roles/paas-docker/containers/docker-registry-api.sls
new file mode 100644
index 0000000..fcdde39
--- /dev/null
+++ b/roles/paas-docker/containers/docker-registry-api.sls
@@ -0,0 +1,31 @@
+#   -------------------------------------------------------------
+#   Salt — Provision Docker engine
+#   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+#   Project:        Nasqueron
+#   Created:        2018-09-18
+#   License:        Trivial work, not eligible to copyright
+#   -------------------------------------------------------------
+
+{% set has_selinux = salt['grains.get']('selinux:enabled', False) %}
+{% set containers = pillar['docker_containers'][grains['id']] %}
+
+{% for instance, container in containers['docker-registry-api'].items() %}
+
+#   -------------------------------------------------------------
+#   Container
+#   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+{{ instance }}:
+  docker_container.running:
+    - detach: True
+    - interactive: True
+    - image: nasqueron/docker-registry-api
+    - binds: /srv/{{ container['registry_instance'] }}:/var/lib/registry
+    - environment:
+        - API_ENTRY_POINT: {{ container['api_entry_point'] }}
+    - ports:
+      - 8000
+    - port_bindings:
+      - {{ container['app_port'] }}:8000
+
+{% endfor %}