From 35221431b5b9ef2cd312266571829eb4dcef930d Mon Sep 17 00:00:00 2001 From: gyurix Date: Mon, 30 Dec 2024 15:24:01 +0100 Subject: [PATCH] added openproject app --- applications-tree.json | 4 + openproject/domain-openproject.json | 60 +++++++++ openproject/firewall-openproject-dns.json | 75 ++++++++++++ openproject/firewall-openproject-smtp.json | 75 ++++++++++++ openproject/firewall-openproject.json | 75 ++++++++++++ openproject/openproject-secret.json | 11 ++ openproject/service-openproject.json | 136 +++++++++++++++++++++ openproject/template.json | 39 ++++++ 8 files changed, 475 insertions(+) create mode 100644 openproject/domain-openproject.json create mode 100644 openproject/firewall-openproject-dns.json create mode 100644 openproject/firewall-openproject-smtp.json create mode 100644 openproject/firewall-openproject.json create mode 100644 openproject/openproject-secret.json create mode 100644 openproject/service-openproject.json create mode 100644 openproject/template.json diff --git a/applications-tree.json b/applications-tree.json index 5779b41..cc27ac5 100644 --- a/applications-tree.json +++ b/applications-tree.json @@ -19,6 +19,10 @@ { "name": "smtp", "version": "latest" + }, + { + "name": "openproject", + "version": "15" } ] } \ No newline at end of file diff --git a/openproject/domain-openproject.json b/openproject/domain-openproject.json new file mode 100644 index 0000000..8696753 --- /dev/null +++ b/openproject/domain-openproject.json @@ -0,0 +1,60 @@ +{ + "main": { + "SERVICE_NAME": "openproject", + "DOMAIN": "#OPENPROJECT_DOMAIN" + }, + "containers": [ + { + "IMAGE": "registry.format.hu/domain-check", + "UPDATE": "true", + "MEMORY": "64M", + "NAME": "domain_checker", + "ROLES": "domain_checker", + "NETWORK": "host", + "SELECTOR": "", + "SCALE": "0", + "EXTRA": "--rm --privileged", + "PRE_START": [], + "DEPEND": [], + "POST_START": [], + "CMD": "", + "ENVS": [ + { + "PROXY": "smarthostloadbalancer" + }, + { + "TARGET": "openprojectapp" + }, + { + "PORT": "80" + }, + { + "DOMAIN": "#OPENPROJECT_DOMAIN" + }, + { + "SMARTHOST_PROXY_PATH": "/smarthost-domains" + }, + { + "OPERATION": "CREATE" + } + ], + "VOLUMES": [ + { + "SOURCE": "/etc/user/config/smarthost-domains", + "DEST": "/smarthost-domains", + "TYPE": "rw" + }, + { + "SOURCE": "/etc/system/data/dns/hosts.local", + "DEST": "/etc/dns/hosts.local", + "TYPE": "ro" + }, + { + "SOURCE": "/var/run/docker.sock", + "DEST": "/var/run/docker.sock", + "TYPE": "rw" + } + ] + } + ] +} \ No newline at end of file diff --git a/openproject/firewall-openproject-dns.json b/openproject/firewall-openproject-dns.json new file mode 100644 index 0000000..3fa092b --- /dev/null +++ b/openproject/firewall-openproject-dns.json @@ -0,0 +1,75 @@ +{ + "main": { + "SERVICE_NAME": "firewalls", + "DOMAIN": "null" + }, + "containers": [ + { + "IMAGE": "registry.format.hu/firewall", + "NAME": "firewall", + "MEMORY": "64M", + "NETWORK": "host", + "SCALE": "0", + "VOLUMES": [ + { + "SOURCE": "/run/", + "DEST": "/run/", + "TYPE": "rw" + }, + { + "SOURCE": "/etc/user/config/services", + "DEST": "/services", + "TYPE": "ro" + }, + { + "SOURCE": "/etc/system/data/dns/hosts.local", + "DEST": "/etc/dns/hosts.local", + "TYPE": "ro" + }, + { + "SOURCE": "/var/run/docker.sock", + "DEST": "/var/run/docker.sock", + "TYPE": "rw" + } + ], + "PORTS": [], + "READYNESS": [ + { + "tcp": "" + }, + { + "HTTP": "" + }, + { + "EXEC": "/ready.sh" + } + ], + "ENVS": [ + { + "CHAIN": "DOCKER-USER" + }, + { + "SOURCE": "coredns" + }, + { + "TARGET": "openprojectapp" + }, + { + "TYPE": "udp" + }, + { + "TARGET_PORT": "53" + }, + { + "COMMENT": "dns for openproject" + } + ], + "EXTRA": "--privileged --rm", + "DEPEND": "null", + "START_ON_BOOT": "false", + "CMD": "null", + "PRE_START": "null", + "POST_START": "null" + } + ] +} \ No newline at end of file diff --git a/openproject/firewall-openproject-smtp.json b/openproject/firewall-openproject-smtp.json new file mode 100644 index 0000000..ef29e33 --- /dev/null +++ b/openproject/firewall-openproject-smtp.json @@ -0,0 +1,75 @@ +{ + "main": { + "SERVICE_NAME": "firewalls", + "DOMAIN": "null" + }, + "containers": [ + { + "IMAGE": "registry.format.hu/firewall", + "NAME": "firewall", + "MEMORY": "64M", + "NETWORK": "host", + "SCALE": "0", + "VOLUMES": [ + { + "SOURCE": "/run/", + "DEST": "/run/", + "TYPE": "rw" + }, + { + "SOURCE": "/etc/user/config/services", + "DEST": "/services", + "TYPE": "ro" + }, + { + "SOURCE": "/etc/system/data/dns/hosts.local", + "DEST": "/etc/dns/hosts.local", + "TYPE": "ro" + }, + { + "SOURCE": "/var/run/docker.sock", + "DEST": "/var/run/docker.sock", + "TYPE": "rw" + } + ], + "PORTS": [], + "READYNESS": [ + { + "tcp": "" + }, + { + "HTTP": "" + }, + { + "EXEC": "/ready.sh" + } + ], + "ENVS": [ + { + "CHAIN": "DOCKER-USER" + }, + { + "SOURCE": "openprojectapp" + }, + { + "TARGET": "smtp" + }, + { + "TYPE": "tcp" + }, + { + "TARGET_PORT": "25" + }, + { + "COMMENT": "smtp for openproject" + } + ], + "EXTRA": "--privileged --rm", + "DEPEND": "null", + "START_ON_BOOT": "false", + "CMD": "null", + "PRE_START": "null", + "POST_START": "null" + } + ] +} \ No newline at end of file diff --git a/openproject/firewall-openproject.json b/openproject/firewall-openproject.json new file mode 100644 index 0000000..4cdfb56 --- /dev/null +++ b/openproject/firewall-openproject.json @@ -0,0 +1,75 @@ +{ + "main": { + "SERVICE_NAME": "firewalls", + "DOMAIN": "null" + }, + "containers": [ + { + "IMAGE": "registry.format.hu/firewall", + "NAME": "firewall", + "MEMORY": "64M", + "NETWORK": "host", + "SCALE": "0", + "VOLUMES": [ + { + "SOURCE": "/run/", + "DEST": "/run/", + "TYPE": "rw" + }, + { + "SOURCE": "/etc/user/config/services", + "DEST": "/services", + "TYPE": "ro" + }, + { + "SOURCE": "/etc/system/data/dns/hosts.local", + "DEST": "/etc/dns/hosts.local", + "TYPE": "ro" + }, + { + "SOURCE": "/var/run/docker.sock", + "DEST": "/var/run/docker.sock", + "TYPE": "rw" + } + ], + "PORTS": [], + "READYNESS": [ + { + "tcp": "" + }, + { + "HTTP": "" + }, + { + "EXEC": "/ready.sh" + } + ], + "ENVS": [ + { + "CHAIN": "DOCKER-USER" + }, + { + "SOURCE": "smarthostbackend" + }, + { + "TARGET": "openprojectapp" + }, + { + "TYPE": "tcp" + }, + { + "TARGET_PORT": "8080" + }, + { + "COMMENT": "proxy for openproject" + } + ], + "EXTRA": "--privileged --rm", + "DEPEND": "null", + "START_ON_BOOT": "false", + "CMD": "null", + "PRE_START": "null", + "POST_START": "null" + } + ] +} \ No newline at end of file diff --git a/openproject/openproject-secret.json b/openproject/openproject-secret.json new file mode 100644 index 0000000..56f37bb --- /dev/null +++ b/openproject/openproject-secret.json @@ -0,0 +1,11 @@ +{ + "openprojectpostgres": { + "POSTGRES_DB": "#DB_POSTGRES", + "POSTGRES_USER": "#DB_USER", + "POSTGRES_PASSWORD": "#DB_PASSWORD", + "POSTGRES_ROOT_PASSWORD": "#DB_ROOT_PASSWORD" + }, + "openprojectapp": { + "DATABASE_URL": "'postgres://#DB_USER:#DB_PASSWORD@openprojectpostgres-db:5432/#DB_NAME/openproject?pool=20&encoding=unicode&reconnect=true}'" + } +} \ No newline at end of file diff --git a/openproject/service-openproject.json b/openproject/service-openproject.json new file mode 100644 index 0000000..0a6d035 --- /dev/null +++ b/openproject/service-openproject.json @@ -0,0 +1,136 @@ +{ + "main": { + "SERVICE_NAME": "openproject", + "DOMAIN": "#OPENPROJECT_DOMAIN" + }, + "containers": [ + { + "IMAGE": "alpine:latest", + "UPDATE": "true", + "NAME": "openproject-init", + "NETWORK": "host", + "MEMORY": "64M", + "VOLUMES": [ + { + "SOURCE": "USER_DATA", + "DEST": "/etc/user/data", + "TYPE": "rw" + }, + { + "SOURCE": "SYSTEM_LOG", + "DEST": "/etc/system/log", + "TYPE": "rw" + } + ], + "EXTRA": "--rm", + "DEPEND": "null", + "START_ON_BOOT": "false", + "ENTRYPOINT": "sh -c", + "CMD": "mkdir -p /etc/user/data/openproject/assets && mkdir -p /etc/user/data/openproject/db", + "PRE_START": "null", + "POST_START": "null" + }, + { + "IMAGE": "postgres:13-alpine", + "UPDATE": "true", + "NAME": "openprojectpostgres-db", + "MEMORY": "256M", + "NETWORK": "openproject-net", + "SELECTOR": "openprojectpostgres-db", + "VOLUMES": [ + { + "SOURCE": "/etc/user/data/openproject/db", + "DEST": "/var/lib/postgres", + "TYPE": "rw" + } + ], + "PORTS": [ + { + "SOURCE": "null", + "DEST": "5432", + "TYPE": "tcp" + } + ], + "ENV_FILES": [ + "/etc/user/secret/openproject/openproject.json" + ], + "EXTRA": "--restart unless-stopped", + "DEPEND": "null", + "START_ON_BOOT": "false", + "CMD": "null", + "PRE_START": "null", + "POST_START": "null" + }, + { + "IMAGE": "openproject/openproject:15-slim", + "UPDATE": "true", + "NAME": "openprojectapp", + "NETWORK": "openproject-net", + "SELECTOR": "openprojectapp", + "VOLUMES": [ + { + "SOURCE": "/etc/user/data/openproject/assets", + "DEST": "/var/openproject/assets", + "TYPE": "rw" + } + ], + "PORTS": [ + { + "SOURCE": "null", + "DEST": "8080", + "TYPE": "tcp" + } + ], + "ENVS": [ + { + "OPENPROJECT_HTTPS": "true" + }, + { + "OPENPROJECT_HOST__NAME": "#OPENPROJECT_DOMAIN" + }, + { + "OPENPROJECT_HSTS": "true" + }, + { + "RAILS_CACHE_STORE": "memcache" + }, + { + "OPENPROJECT_CACHE__MEMCACHE__SERVER": "memcache-app:11211" + }, + { + "OPENPROJECT_RAILS__RELATIVE__URL__ROOT": "/" + }, + { + "RAILS_MIN_THREADS": "-4" + }, + { + "RAILS_MAX_THREADS": "-16" + }, + { + "IMAP_ENABLED": "true" + } + ], + "ENV_FILES": [ + "/etc/user/secret/openproject/openproject.json" + ], + "EXTRA": "--restart unless-stopped", + "DEPEND": [], + "START_ON_BOOT": "false", + "CMD": "null", + "PRE_START": "null", + "POST_START": [ + "firewall-openproject", + "domain-openproject", + "firewall-openproject-dns", + "firewall-openproject-smtp" + ] + }, + { + "IMAGE": "memcached:alpine", + "UPDATE": "true", + "NAME": "memcache-app", + "NETWORK": "openproject-net", + "SELECTOR": "memcache-app", + } + ] +} \ No newline at end of file diff --git a/openproject/template.json b/openproject/template.json new file mode 100644 index 0000000..098e43d --- /dev/null +++ b/openproject/template.json @@ -0,0 +1,39 @@ +{ + "name": "openproject", + "fields": [ + { + "description": "Postgres database name", + "key": "DB_POSTGRES", + "value": "", + "required": "true", + "generated": "time|md5|8" + }, + { + "description": "Postgres username", + "key": "DB_USER", + "value": "", + "required": "true", + "generated": "time|md5|8" + }, + { + "description": "Postgres password for user", + "key": "DB_PASSWORD", + "value": "", + "required": "true", + "generated": "random|md5|12" + }, + { + "description": "Postgres root user password", + "key": "DB_ROOT_PASSWORD", + "value": "", + "required": "true", + "generated": "random|sha256|20" + }, + { + "description": "Please add OpenProject domain:", + "key": "OPENPROJECT_DOMAIN", + "value": "", + "required": "true" + } + ] +} \ No newline at end of file