From f80475cb6e5028d5e4a0ff3d45c50f92b823699e Mon Sep 17 00:00:00 2001
From: drebs <drebs@riseup.net>
Date: Thu, 11 Mar 2021 16:50:40 -0300
Subject: [PATCH] Run ONLYOFFICE DocumentServer with docker-compose (#787)

---
 profile/manifests/docker.pp     |  1 +
 profile/manifests/onlyoffice.pp | 81 +++++++++++++++++++++++++++++++++
 role/manifests/onlyoffice.pp    |  1 +
 3 files changed, 83 insertions(+)
 create mode 100644 profile/manifests/onlyoffice.pp

diff --git a/profile/manifests/docker.pp b/profile/manifests/docker.pp
index c2709ada..1f8938ca 100644
--- a/profile/manifests/docker.pp
+++ b/profile/manifests/docker.pp
@@ -1,4 +1,5 @@
 # Install Docker
 class profile::docker {
   include docker
+  include docker::compose
 }
diff --git a/profile/manifests/onlyoffice.pp b/profile/manifests/onlyoffice.pp
new file mode 100644
index 00000000..1c0f1b58
--- /dev/null
+++ b/profile/manifests/onlyoffice.pp
@@ -0,0 +1,81 @@
+# An ONLYOFFICE installation based on Docker
+class profile::onlyoffice (
+  String $image_tag = 'latest',
+  String $jwt_secret = '',
+  Boolean $skip_fonts_generation = false,
+) {
+
+  $network = 'onlyoffice'
+
+  docker_network { $network:
+    ensure   => present,
+    subnet   => '172.19.0.0/24',
+    gateway  => '172.19.0.1',
+    ip_range => '172.19.0.0/29',
+  }
+
+  docker::run { 'onlyoffice-documentserver':
+    image   => "infrarednetwork/onlyoffice-documentserver:${image_tag}",
+    net     => $network,
+    env     => [
+      'RABBITMQ_SERVER_URL=amqp://guest:guest@onlyoffice-rabbitmq',
+      'REDIS_SERVER_HOST=onlyoffice-redis',
+      'REDIS_SERVER_PORT=6379',
+      'POSTGRESQL_SERVER_HOST=onlyoffice-postgresql',
+      'POSTGRESQL_SERVER_PORT=5432',
+      'POSTGRESQL_SERVER_DB_NAME=onlyoffice',
+      'POSTGRESQL_SERVER_USER=onlyoffice',
+      'POSTGRESQL_SERVER_PASS=onlyoffice',
+      "JWT_SECRET=${jwt_secret}",
+      "SKIP_FONTS_GENERATION=${skip_fonts_generation}",
+    ],
+    ports   => [
+      '8000:8000',
+      '8080:8080',
+    ],
+    depends => [
+      'onlyoffice-postgresql',
+      'onlyoffice-redis',
+      'onlyoffice-rabbitmq',
+    ],
+    volumes => [
+      'onlyoffice-log:/var/log/onlyoffice',
+      'onlyoffice-www-data:/var/www/onlyoffice/Data',
+      'onlyoffice-lib:/var/lib/onlyoffice',
+      'system-custom-fonts:/usr/share/fonts/truetype/custom',
+    ],
+    require => [
+      Docker::Run['onlyoffice-redis'],
+      Docker::Run['onlyoffice-rabbitmq'],
+      Docker::Run['onlyoffice-postgresql'],
+    ],
+  }
+
+  docker::run { 'onlyoffice-redis':
+    image   => 'redis:alpine',
+    net     => $network,
+    command => 'redis-server --appendonly yes',
+    expose  => '6379',
+    volumes => [ 'redis-data:/data' ],
+  }
+
+  docker::run { 'onlyoffice-rabbitmq':
+    image   => 'rabbitmq:alpine',
+    net     => $network,
+    expose  => '5672',
+    volumes => [ 'rabbitmq-home:/var/lib/rabbitmq' ],
+  }
+
+  docker::run { 'onlyoffice-postgresql':
+    image   => 'postgres',
+    net     => $network,
+    env     => [
+      'POSTGRES_DB=onlyoffice',
+      'POSTGRES_USER=onlyoffice',
+      'POSTGRES_PASSWORD=onlyoffice',
+    ],
+    expose  => '5432',
+    volumes => [ 'postgresql-data:/var/lib/postgresql/data' ],
+  }
+
+}
diff --git a/role/manifests/onlyoffice.pp b/role/manifests/onlyoffice.pp
index 31c63291..81c1b799 100644
--- a/role/manifests/onlyoffice.pp
+++ b/role/manifests/onlyoffice.pp
@@ -1,4 +1,5 @@
 # Install OnlyOffice
 class role::onlyoffice {
   include profile::docker
+  include profile::onlyoffice
 }
-- 
GitLab