diff --git a/Traefik.php b/Traefik.php
index 5d83ffd0ec3bf0cc061c39896a0cb9c11b4b99ad..928f1e1699abc9c18e9c85465a145a6a9a20b18a 100644
--- a/Traefik.php
+++ b/Traefik.php
@@ -44,6 +44,11 @@ class Traefik {
    */
   protected $key_filename;
 
+  /**
+   * @var bool
+   */
+  protected $addon_portainer = FALSE;
+
   /**
    * Traefik constructor.
    *
@@ -70,6 +75,13 @@ class Traefik {
     $this->key_filename = $key_filename;
   }
 
+  /**
+   * @param bool $addon_portainer
+   */
+  public function setAddonPortainer(bool $addon_portainer): void {
+    $this->addon_portainer = $addon_portainer;
+  }
+
   /**
    * Update the Traefik container.
    *
@@ -115,8 +127,8 @@ class Traefik {
    * @return array
    */
   private function defaultDockerCompose(): array {
-    return [
-      'version' => '3',
+    $config = [
+      'version' => '3.3',
       'services' => [
         'traefik' => [
           'image' => 'traefik:v2.3',
@@ -160,6 +172,33 @@ class Traefik {
         ],
       ],
     ];
+    if ($this->addon_portainer) {
+      $config['services']['portainer'] = [
+        'image' => 'portainer/portainer-ce:2.0.0',
+        'command' => '-H unix:///var/run/docker.sock',
+        'restart' => 'unless-stopped',
+        'networks' => [
+          'internal',
+        ],
+        'labels' => [
+          'traefik.enable=true',
+          'traefik.network=internal',
+          'traefik.http.routers.frontend.rule=Host(`portainer.' . $this->domain . '`)',
+          'traefik.http.routers.frontend.entrypoints=websecure',
+          'traefik.http.services.frontend.loadbalancer.server.port=9000',
+          'traefik.http.routers.frontend.service=frontend',
+          'traefik.http.routers.edge.rule=Host(`edge.' . $this->domain . '`)',
+          'traefik.http.routers.edge.entrypoints=websecure',
+          'traefik.http.services.edge.loadbalancer.server.port=8000',
+          'traefik.http.routers.edge.service=edge',
+        ],
+        'volumes' => [
+          './portainerdata:/data',
+          '/var/run/docker.sock:/var/run/docker.sock:ro',
+        ],
+      ];
+    }
+    return $config;
   }
 
   /**