Copied from rancher community catalog as starting point

This commit is contained in:
WilliamMiceli
2018-06-28 06:18:43 -04:00
parent cc80644bd4
commit 5b1243c281
30 changed files with 1785 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
bind9:
image: digitallumberjack/docker-bind9:v1.2.0
ports:
- ${BIND9_PORT}:53/tcp
- ${BIND9_PORT}:53/udp
environment:
BIND9_ROOTDOMAIN: ${BIND9_ROOTDOMAIN}
BIND9_KEYNAME: ${BIND9_KEYNAME}
BIND9_KEY: ${BIND9_KEY}
BIND9_FORWARDERS: ${BIND9_FORWARDERS}
RANCHER_ENV: "true"

View File

@@ -0,0 +1,48 @@
.catalog:
name: "Bind9 DNS"
version: "v1.0.0-rancher1"
description: "Domain Name Server powered by Bind9"
questions:
- variable: "BIND9_ROOTDOMAIN"
label: "The root domain to manage in bind9"
description: "This root domain will be managed by the Bind9 server. Updates and axfr requests will be made on this domain"
type: "string"
required: true
- variable: "BIND9_KEYNAME"
label: "Bind9 TSIG Keyname"
description: "The TSIG keyname"
type: "string"
required: true
- variable: "BIND9_KEY"
label: "Bind9 TSIG Key (base64 encoded)"
description: "The TSIG key. Must be base64 encoded"
type: "string"
required: true
- variable: "BIND9_PORT"
label: "Bind9 port"
description: "Bind9 port to expose on host. Will be used to bind both TCP and UDP"
type: "string"
default: 53
required: true
- variable: "BIND9_FORWARDERS"
label: "Bind9 dns forwarders"
description: "The DNS forwarders"
type: "string"
default: 8.8.8.8;8.8.4.4;
required: true
bind9:
scale: 1
health_check:
port: ${BIND9_PORT}
interval: 2000
initializing_timeout: 20000
unhealthy_threshold: 3
strategy: recreate
healthy_threshold: 2
response_timeout: 2000

View File

@@ -0,0 +1,4 @@
ghost:
image: ghost
ports:
- ${public_port}:2368

View File

@@ -0,0 +1,15 @@
.catalog:
name: "Ghost"
version: "v0.1-educaas"
description: "Blog powered by Ghost. Requires no database"
uuid: ghost-0
questions:
- variable: public_port
description: "public port to access the blog"
label: "Public Port"
required: true
default: "80"
type: "int"
ghost:

View File

@@ -0,0 +1,9 @@
grafana:
image: grafana/grafana:4.2.0
ports:
- ${http_port}:3000
environment:
GF_SECURITY_ADMIN_USER: ${admin_username}
GF_SECURITY_ADMIN_PASSWORD: ${admin_password}
GF_SECURITY_SECRET_KEY: ${secret_key}
GF_INSTALL_PLUGINS: ${install_plugins}

View File

@@ -0,0 +1,41 @@
.catalog:
name: "Grafana"
version: "4.2.0-rancher2"
questions:
- variable: http_port
description: "http port to access Grafana"
label: "Http Port"
required: true
default: "3000"
type: "int"
- variable: admin_username
description: "Grafana admin username"
label: "Admin Username"
required: true
default: "admin"
type: "string"
- variable: admin_password
description: "Grafana admin password"
label: "Admin Password"
required: true
default: "password"
type: "string"
- variable: secret_key
description: "Signing secret key"
label: "Secret Key"
required: true
default: "su2Tong2zoocie"
type: "string"
- variable: install_plugins
description: "Include/Install Grafana Plugins (comma-separated plugin-ids)"
label: "Install Plugins"
required: false
default: "grafana-clock-panel"
type: "string"
grafana:

View File

@@ -0,0 +1,49 @@
database-data:
image: busybox
labels:
io.rancher.container.start_once: 'true'
net: none
entrypoint: /bin/true
volumes:
- /var/lib/mysql
- /docker-entrypoint-initdb.d
database:
image: mariadb
environment:
MYSQL_DATABASE: ${guacamole_db}
MYSQL_ONETIME_PASSWORD: 'true'
MYSQL_PASSWORD: ${guacamole_password}
MYSQL_RANDOM_ROOT_PASSWORD: 'true'
MYSQL_USER: ${guacamole_user}
volumes_from:
- database-data
labels:
io.rancher.sidekicks: setup-get-db-script, database-data
setup-get-db-script:
image: glyptodon/guacamole:0.9.10-incubating
net: none
volumes_from:
- database-data
command:
- bash
- -c
- /opt/guacamole/bin/initdb.sh --mysql > /docker-entrypoint-initdb.d/initdb.sql
labels:
io.rancher.container.start_once: 'true'
guacd:
image: glyptodon/guacd:0.9.10-incubating
guacamole:
image: glyptodon/guacamole:0.9.10-incubating
environment:
MYSQL_DATABASE: ${guacamole_db}
MYSQL_HOSTNAME: database
MYSQL_PASSWORD: ${guacamole_password}
MYSQL_USER: ${guacamole_user}
links:
- guacd:guacd
ports:
- ${public_port}:8080/tcp
command:
- /bin/bash
- -c
- cd /usr/local/tomcat/webapps;rm -rf ROOT/; ln -s guacamole.war ROOT.war; /opt/guacamole/bin/start.sh;

View File

@@ -0,0 +1,73 @@
version: '2'
.catalog:
name: "apache-guacamole"
version: "0.1-rancher1"
description: " Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH."
minimum_rancher_version: v0.46.0
questions:
- variable: "guacamole_db"
label: "MySQL Database Name"
description: "Your MYSQL guacamole database name"
default: "guacamole_db"
required: true
type: "string"
- variable: "guacamole_user"
label: "MySQL Database User"
description: "Your MYSQL guacamole user name"
required: true
default: "guacamole_user"
type: "string"
- variable: "guacamole_password"
label: "MySQL Database Password"
description: "Your MYSQL guacamole user password. Defaults to \"guacamole_password\""
required: true
default: "guacamole_password"
type: "password"
- variable: "public_port"
label: "Public Port"
description: "The public port that Guacamole listens on, defaults to 8080"
required: true
default: 8080
type: "int"
services:
guacamole:
scale: 1
health_check:
healthy_threshold: 2
response_timeout: 2000
port: 8080
unhealthy_threshold: 3
initializing_timeout: 60000
interval: 2000
strategy: recreate
request_line: GET "/guacamole" "HTTP/1.0"
reinitializing_timeout: 60000
guacd:
scale: 1
health_check:
healthy_threshold: 2
response_timeout: 2000
port: 4822
unhealthy_threshold: 3
initializing_timeout: 60000
interval: 2000
strategy: recreate
reinitializing_timeout: 60000
setup-get-db-script:
scale: 1
database:
scale: 1
health_check:
healthy_threshold: 2
response_timeout: 2000
port: 3306
unhealthy_threshold: 3
initializing_timeout: 60000
interval: 2000
strategy: recreate
reinitializing_timeout: 60000

View File

@@ -0,0 +1,20 @@
jenkins-primary:
image: "jenkins/jenkins:2.92"
ports:
- "${PORT}:8080"
labels:
io.rancher.sidekicks: jenkins-plugins,jenkins-datavolume
io.rancher.container.hostname_override: container_name
volumes_from:
- jenkins-plugins
- jenkins-datavolume
entrypoint: /usr/share/jenkins/rancher/jenkins.sh
jenkins-plugins:
image: rancher/jenkins-plugins:v0.1.1
jenkins-datavolume:
image: "busybox"
volumes:
- ${volume_work}:/var/jenkins_home
labels:
io.rancher.container.start_once: true
entrypoint: ["chown", "-R", "1000:1000", "/var/jenkins_home"]

View File

@@ -0,0 +1,44 @@
.catalog:
name: Jenkins
version: 2.92-rancher1
questions:
- variable: "PORT"
type: "int"
label: "Port Number"
description: "Which port should Jenkins listen on?"
default: 8080
required: true
- variable: "volume_work"
description: "Work volume to save jenkins data"
label: "Work volume:"
required: true
default: "/var/lib/docker/jenkins-ci"
type: "string"
- variable: "plugins"
type: "multiline"
label: "List of Plugins"
description: |
List of plugins in the format <plugin_name>[:<version>]
one entry per line.
default: |
credentials
git
git-client
github
github-api
github-oauth
greenballs
junit
plain-credentials
scm-api
ssh-credentials
ssh-slaves
swarm
jenkins-primary:
metadata:
plugins: |
${plugins}

View File

@@ -0,0 +1,62 @@
version: '2'
services:
letsencrypt:
image: janeczku/rancher-letsencrypt:v0.5.0
environment:
EULA: "${EULA}"
API_VERSION: "${API_VERSION}"
CERT_NAME: "${CERT_NAME}"
EMAIL: "${EMAIL}"
DOMAINS: "${DOMAINS}"
PUBLIC_KEY_TYPE: "${PUBLIC_KEY_TYPE}"
RENEWAL_TIME: "${RENEWAL_TIME}"
PROVIDER: "${PROVIDER}"
DNS_RESOLVERS: "${DNS_RESOLVERS}"
RENEWAL_PERIOD_DAYS: "${RENEWAL_PERIOD_DAYS}"
RUN_ONCE: "${RUN_ONCE}"
CLOUDFLARE_EMAIL: "${CLOUDFLARE_EMAIL}"
CLOUDFLARE_KEY: "${CLOUDFLARE_KEY}"
DO_ACCESS_TOKEN: "${DO_ACCESS_TOKEN}"
AWS_ACCESS_KEY: "${AWS_ACCESS_KEY}"
AWS_SECRET_KEY: "${AWS_SECRET_KEY}"
DNSIMPLE_EMAIL: "${DNSIMPLE_EMAIL}"
DNSIMPLE_KEY: "${DNSIMPLE_KEY}"
DYN_CUSTOMER_NAME: "${DYN_CUSTOMER_NAME}"
DYN_USER_NAME: "${DYN_USER_NAME}"
DYN_PASSWORD: "${DYN_PASSWORD}"
VULTR_API_KEY: "${VULTR_API_KEY}"
OVH_APPLICATION_KEY: "${OVH_APPLICATION_KEY}"
OVH_APPLICATION_SECRET: "${OVH_APPLICATION_SECRET}"
OVH_CONSUMER_KEY: "${OVH_CONSUMER_KEY}"
GANDI_API_KEY: "${GANDI_API_KEY}"
AZURE_CLIENT_ID: "${AZURE_CLIENT_ID}"
AZURE_CLIENT_SECRET: "${AZURE_CLIENT_SECRET}"
AZURE_SUBSCRIPTION_ID: "${AZURE_SUBSCRIPTION_ID}"
AZURE_TENANT_ID: "${AZURE_TENANT_ID}"
AZURE_RESOURCE_GROUP: "${AZURE_RESOURCE_GROUP}"
AURORA_USER_ID: "${AURORA_USER_ID}"
AURORA_KEY: "${AURORA_KEY}"
AURORA_ENDPOINT: "${AURORA_ENDPOINT}"
NS1_API_KEY: "${NS1_API_KEY}"
volumes:
- /var/lib/rancher:/var/lib/rancher
{{- if .Values.VOLUME_NAME}}
- {{.Values.VOLUME_NAME}}:/etc/letsencrypt
{{- end }}
labels:
io.rancher.container.create_agent: "true"
io.rancher.container.agent.role: "environment"
{{- if eq .Values.RUN_ONCE "true" }}
io.rancher.container.start_once: "true"
{{- end }}
{{- if .Values.VOLUME_NAME}}
volumes:
{{.Values.VOLUME_NAME}}:
{{- if .Values.STORAGE_DRIVER}}
driver: {{.Values.STORAGE_DRIVER}}
{{- if .Values.STORAGE_DRIVER_OPT}}
driver_opts:
{{.Values.STORAGE_DRIVER_OPT}}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,281 @@
.catalog:
name: Let's Encrypt
version: 0.5.0
description: Trusted SSL certificates at zero cost
minimum_rancher_version: v1.5.0
questions:
- variable: EULA
label: I Agree to the Let's Encrypt TOS
description: |
Read https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf
required: true
type: enum
options:
- "Yes"
- "No"
- variable: API_VERSION
label: Let's Encrypt API Version
description: |
Select the Let's Encrypt API endpoint used for issuing the certificate.
Use `Sandbox` for testing your configuration.
required: true
type: enum
default: Production
options:
- Production
- Sandbox
- variable: EMAIL
label: Your Email Address
description: |
Enter the email address to use for creating the Let's Encrypt account.
required: true
type: string
- variable: CERT_NAME
label: Certificate Name
description: |
Name for storing the certificate in the Rancher API and in volumes.
Any existing certificate by that name will be updated.
required: true
type: string
- variable: DOMAINS
label: Domain Names
description: |
Comma delimited list of the certificate domains starting with the Common Name.
E.g: `example.com, dev.example.com`.
required: true
type: string
- variable: PUBLIC_KEY_TYPE
label: Public Key Algorithm
description: |
Select one of the available key types.
required: true
type: enum
default: RSA-2048
options:
- RSA-2048
- RSA-4096
- RSA-8192
- ECDSA-256
- ECDSA-384
- variable: RENEWAL_TIME
label: Renewal Time of Day (00-23)
description: |
Set the time of day (UTC in hours) at which certificate renewals should be run.
default: 12
required: true
type: int
- variable: RENEWAL_PERIOD_DAYS
label: Renewal Grace Period
description: |
Number of days before expiration the certificate should be renewed / become eligible for renewal.
default: 20
required: true
type: int
- variable: RUN_ONCE
label: Run Once
description: |
Stop the service after creating or renewing the certificate instead of continously running and managing renewal.
required: true
type: boolean
default: false
- variable: DNS_RESOLVERS
label: DNS Resolvers
description: |
Comma delimited list of DNS resolvers used to check propagation of ACME TXT record.
If empty the DNS resolvers configured in your hosts /etc/resolv.conf are used.
required: false
default: "8.8.8.8:53,8.8.4.4:53"
type: string
- variable: VOLUME_NAME
label: Volume Name (Optional)
description: |
To store the account data, certificates and private keys in a volume, enter the volume name that should be used.
By default this will be a (host scoped) named Docker volume. See "Persistent Storage Driver" for other options.
required: false
type: string
- variable: STORAGE_DRIVER
label: Volume Storage Driver (Optional)
description: |
To use a stack scoped volume backed by a persistent storage service, enter the name
of an existing storage driver (see `Infrastructure -> Storage`). This also requires "Volume Name" to be set.
required: false
type: string
- variable: STORAGE_DRIVER_OPT
label: Storage Driver Option (Optional)
description: |
Specify a single "driver_opts" key/value pair in the format "optionName: optionValue".
E.g. for the `rancher-ebs` driver you should specify the required 'size' option like this: "size: 1".
required: false
type: string
- variable: PROVIDER
label: Domain Validation Method
description: Select a DNS provider to use for domain validation. Use 'HTTP' if your domain is hosted elsewhere.
required: true
type: enum
options:
- Aurora
- Azure
- CloudFlare
- DigitalOcean
- DNSimple
- Dyn
- Gandi
- NS1
- Ovh
- Route53
- Vultr
- HTTP
- variable: AURORA_USER_ID
label: Aurora User ID
type: string
required: false
- variable: AURORA_KEY
label: Aurora Key
type: string
required: false
- variable: AURORA_ENDPOINT
label: Aurora Endpoint URL (Optional)
type: string
required: false
- variable: AWS_ACCESS_KEY
label: AWS Route53 Access Key Id
description: Enter the Access Key Id for your AWS account.
type: string
required: false
- variable: AWS_SECRET_KEY
label: AWS Route53 Secret Access Key
description: Enter the Secret Access Key for your AWS account.
type: password
required: false
- variable: AZURE_CLIENT_ID
label: Azure Client ID
description: Enter the Client Id for your Azure account.
type: string
required: false
- variable: AZURE_CLIENT_SECRET
label: Azure Client Secret
description: Enter the Access Key Id for your Azure account.
type: password
required: false
- variable: AZURE_SUBSCRIPTION_ID
label: Azure Subscription Id
description: Enter the Azure Subscription Id for your Azure account.
type: string
required: false
- variable: AZURE_TENANT_ID
label: Azure Tenant Id
description: Enter the Azure Tenant Id for your Azure account.
type: string
required: false
- variable: AZURE_RESOURCE_GROUP
label: Azure Resource Group
description: Enter the Azure Resource Group for your Azure account.
type: string
required: false
- variable: CLOUDFLARE_EMAIL
label: CloudFlare Email Address
description: Enter the email address associated with your CloudFlare account.
type: string
required: false
- variable: CLOUDFLARE_KEY
label: CloudFlare API Key
description: Enter the Global API Key for your CloudFlare account.
type: password
required: false
- variable: DO_ACCESS_TOKEN
label: DigitalOcean API Access Token
description: Enter the Personal Access Token for your DigitalOcean account.
type: password
required: false
- variable: DNSIMPLE_EMAIL
label: DNSimple Email Address
description: Enter the email address associated with your DNSimple account.
type: string
required: false
- variable: DNSIMPLE_KEY
label: DNSimple API Key
description: Enter your DNSimple API key.
type: password
required: false
- variable: DYN_CUSTOMER_NAME
label: Dyn Customer Name
description: Enter your Dyn customer name.
type: string
required: false
- variable: DYN_USER_NAME
label: Dyn User Name
description: Enter your Dyn user name.
type: string
required: false
- variable: DYN_PASSWORD
label: Dyn Password
description: Enter your Dyn password.
type: password
required: false
- variable: GANDI_API_KEY
label: Gandi API Key
description: Enter the API key for your Gandi account.
type: password
required: false
- variable: NS1_API_KEY
label: NS1 API Key
type: string
required: false
- variable: OVH_APPLICATION_KEY
label: OVH Application Key
description: Enter your OVH application key.
type: string
required: false
- variable: OVH_APPLICATION_SECRET
label: OVH Application Secret
description: Enter your OVH application secret.
type: password
required: false
- variable: OVH_CONSUMER_KEY
label: OVH Consumer Key
description: Enter your OVH consumer key.
type: password
required: false
- variable: VULTR_API_KEY
label: Vultr API Key
description: Enter the API key for your Vultr account.
type: password
required: false

View File

@@ -0,0 +1,5 @@
mumble:
image: ranchercb/murmur:latest
ports:
- 64738:64738
- 64738:64738/udp

View File

@@ -0,0 +1,7 @@
.catalog:
name: mumble
version: v1.2.17
uuid: mumble-0
mumble:
scale: 1

View File

@@ -0,0 +1,13 @@
netdata:
image: titpetric/netdata:latest
labels:
io.rancher.scheduler.global: 'true'
uts: host
cap_add:
- SYS_PTRACE
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
NETDATA_PORT: "${NETDATA_PORT}"

View File

@@ -0,0 +1,14 @@
.catalog:
name: netdata
version: v1.8.0
questions:
- variable: NETDATA_PORT
label: Port
description: Container port to access netdata
required: true
type: int
default: 19999
netdata:
scale: 1

View File

@@ -0,0 +1,45 @@
version: '2'
services:
nextcloud:
image: nextcloud:12-apache
volumes_from:
- nextcloud-data
ports:
- ${NEXTCLOUD_PORT}:80
depends_on:
- mariadb
labels:
io.rancher.sidekicks: nextcloud-data
io.rancher.container.hostname_override: container_name
nextcloud-data:
image: nextcloud:12-apache
entrypoint:
- /bin/true
volumes:
- /var/www/html
labels:
io.rancher.container.start_once: 'true'
io.rancher.container.hostname_override: container_name
mariadb:
image: mariadb:10
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASS}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASS}
labels:
io.rancher.sidekicks: mariadb-data
io.rancher.container.hostname_override: container_name
mariadb-data:
image: mariadb:10
entrypoint:
- /bin/true
volumes:
- /var/lib/mysql
tty: true
labels:
io.rancher.container.start_once: 'true'
io.rancher.container.hostname_override: container_name

View File

@@ -0,0 +1,47 @@
version: '2'
catalog:
name: nextcloud
version: 0.0.1
questions:
- variable: NEXTCLOUD_PORT
label: Port
default: 80
required: true
type: int
- variable: MYSQL_ROOT_PASS
label: MySQL root password
required: true
type: password
- variable: MYSQL_DATABASE
default: nextcloud
label: MySQL Database
required: true
type: string
- variable: MYSQL_USER
default: nextcloud
label: MySQL User
required: true
type: string
- variable: MYSQL_PASS
label: MySQL Pass
required: true
type: password
services:
nextcloud:
scale: 1
start_on_create: true
nextcloud-data:
scale: 1
start_on_create: true
mariadb:
scale: 1
start_on_create: true
mariadb-data:
scale: 1
start_on_create: true

View File

@@ -0,0 +1,58 @@
version: '2'
services:
openhab:
{{- if eq .Values.PCAP_SUPPORT_ENABLED "true"}}
cap_add:
- NET_ADMIN
- NET_RAW
command: "./start.sh"
{{- end}}
{{- if or (ne .Values.DEVICE_MAPPING_1 "") (ne .Values.DEVICE_MAPPING_2 "") }}
devices:
{{- end}}
{{- if ne .Values.DEVICE_MAPPING_1 ""}}
- "${DEVICE_MAPPING_1}"
{{- end}}
{{- if ne .Values.DEVICE_MAPPING_2 ""}}
- "${DEVICE_MAPPING_2}"
{{- end}}
environment:
CRYPTO_POLICY: "${CRYPTO_POLICY}"
{{- if ne .Values.EXTRA_JAVA_OPTS ""}}
EXTRA_JAVA_OPTS: "${EXTRA_JAVA_OPTS}"
{{- end}}
OPENHAB_HTTP_PORT: "${HTTP_PORT}"
OPENHAB_HTTPS_PORT: "${HTTPS_PORT}"
image: "openhab/openhab:2.4.0-snapshot-${IMAGE_ARCHITECTURE}-${IMAGE_DISTRIBUTION}"
labels:
io.rancher.container.pull_image: always
{{- if ne .Values.HOST_LABEL ""}}
io.rancher.scheduler.affinity:host_label: ${HOST_LABEL}
{{- end}}
{{- if ne .Values.NETWORK_MODE "managed"}}
network_mode: ${NETWORK_MODE}
{{- end}}
ports:
- ${HTTP_PORT}:${HTTP_PORT}
- ${HTTPS_PORT}:${HTTPS_PORT}
restart: unless-stopped
tty: true
volumes:
{{- if eq .Values.USE_HOST_TIME "true"}}
- "/etc/localtime:/etc/localtime:ro"
- "/etc/timezone:/etc/timezone:ro"
{{- end}}
- "addons:/openhab/addons"
- "conf:/openhab/conf"
- "userdata:/openhab/userdata"
volumes:
addons:
driver: ${VOLUME_DRIVER}
per_container: true
conf:
driver: ${VOLUME_DRIVER}
per_container: true
userdata:
driver: ${VOLUME_DRIVER}
per_container: true

View File

@@ -0,0 +1,130 @@
version: '2'
catalog:
name: "openHAB"
version: "2.4.0-SNAPSHOT"
description: "An open source, technology agnostic home automation platform"
questions:
- variable: "IMAGE_ARCHITECTURE"
label: "Image Architecture"
description: |
Use "amd64" for AMD/Intel 64-bit architectures (e.g. x64, x86-64, x86_64).
Use "armhf" for ARMv7 32-bit architectures (e.g. most RaspberryPi 1/2/3).
Use "arm64" for ARMv8 64-bit architectures (not RaspberryPi 3)
required: true
default: "amd64"
type: enum
options:
- amd64
- armhf
- arm64
- variable: "IMAGE_DISTRIBUTION"
label: "Image Distribution"
description: "The distribution on which the container image is based"
required: true
default: "debian"
type: enum
options:
- alpine
- debian
- variable: "NETWORK_MODE"
label: "Network Mode"
description: "The network stack to connect the container to"
required: true
default: "host"
type: enum
options:
- host
- bridge
- managed
- none
- variable: "HOST_LABEL"
label: "Host Label"
description: "Schedules openHAB to run only on hosts that have a specific label. Example: 'openhab=true'"
default: ""
type: "string"
required: false
- variable: "USE_HOST_TIME"
label: "Use Host Time"
description: "Adds /etc/localtime and /etc/timezone as volumes from the host for providing timezone information"
required: true
default: false
type: boolean
- variable: "PCAP_SUPPORT_ENABLED"
label: "Enable Packet Capture Support"
description: "Runs openHAB as root and adds network capabilities e.g. for libpcap support"
required: true
default: false
type: boolean
- variable: "HTTP_PORT"
label: "HTTP Port"
description: "The port used for HTTP connections"
default: 8080
required: true
type: "int"
- variable: "HTTPS_PORT"
label: "HTTPS Port"
description: "The port used for HTTPS connections"
default: 8443
required: true
type: "int"
- variable: "DEVICE_MAPPING_1"
label: "Device Mapping 1"
description: "Maps a device from the host to the container. Example: '/dev/ttyUSB0' or '/dev/ttyController:/dev/ttyS1'"
default: ""
type: "string"
required: false
- variable: "DEVICE_MAPPING_2"
label: "Device Mapping 2"
description: "Maps another device from the host to the container. Example: '/dev/ttyUSB1' or '/dev/ttyController:/dev/ttyS2'"
default: ""
type: "string"
required: false
- variable: "CRYPTO_POLICY"
label: "Java Cryptographic Strength Policy"
description: "Due to local laws and export restrictions the container uses Java with a limited cryptographic strength policy by default. Some openHAB functionality (e.g. KM200 binding) may depend on unlimited strength. Before enabling this make sure this is allowed by local laws and you agree with the applicable license and terms"
required: true
default: "limited"
type: enum
options:
- limited
- unlimited
- variable: "VOLUME_DRIVER"
label: "Volume Driver"
description: "The volume driver used for persisting data"
required: true
default: "local"
type: enum
options:
- local
- rancher-ebs
- rancher-efs
- rancher-nfs
- variable: "EXTRA_JAVA_OPTS"
label: "Extra Java Options"
description: "Starts the openHAB JVM with the provided extra options. Example: '-Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0:/dev/zwave'"
default: ""
type: "string"
required: false
services:
openhab:
scale: 1
health_check:
port: ${HTTP_PORT}
interval: 5000
response_timeout: 5000
healthy_threshold: 2
unhealthy_threshold: 3

View File

@@ -0,0 +1,22 @@
version: '2'
services:
openproject:
image: openproject/community:7
volumes_from:
- openproject-data
ports:
- ${OPENPROJECT_PORT}:80
labels:
io.rancher.sidekicks: openproject-data
io.rancher.container.hostname_override: container_name
openproject-data:
image: openproject/community:7
entrypoint:
- /bin/true
volumes:
- /var/lib/postgresql/9.4/main
- /var/log/supervisor
- /var/db/openproject
labels:
io.rancher.container.start_once: 'true'
io.rancher.container.hostname_override: container_name

View File

@@ -0,0 +1,20 @@
version: '2'
catalog:
name: openproject
version: 0.0.1
description: Project planning and scheduling
questions:
- variable: OPENPROJECT_PORT
label: Port
default: 80
required: true
type: int
services:
openproject:
scale: 1
start_on_create: true
openproject-data:
scale: 1
start_on_create: true

View File

@@ -0,0 +1,36 @@
mongo:
image: mongo
# volumes:
# - ./data/runtime/db:/data/db
# - ./data/dump:/dump
command: mongod --smallfiles --oplogSize 128
rocketchat:
image: rocketchat/rocket.chat:latest
# volumes:
# - ./uploads:/app/uploads
environment:
- PORT=3000
- ROOT_URL=http://yourhost:3000
- MONGO_URL=mongodb://mongo:27017/rocketchat
links:
- mongo:mongo
ports:
- 3000:3000
# hubot, the popular chatbot (add the bot user first and change the password before starting this image)
hubot:
image: rocketchat/hubot-rocketchat
environment:
- ROCKETCHAT_URL=rocketchat:3000
- ROCKETCHAT_ROOM=GENERAL
- ROCKETCHAT_USER=bot
- ROCKETCHAT_PASSWORD=botpassword
- BOT_NAME=bot
# you can add more scripts as you'd like here, they need to be installable by npm
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics
links:
- rocketchat:rocketchat
# this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier
ports:
- 3001:8080

View File

@@ -0,0 +1,8 @@
.catalog:
name: "RocketChat"
version: "v0.1-educaas"
description: "Have your own Slack like online chat, built with Meteor."
uuid: rocketchat-0
questions:
rocketchat:

View File

@@ -0,0 +1,49 @@
version: '2'
services:
tb:
image: "thingsboard/application:1.2.4"
ports:
- "${http_public_port}:8080"
- "${mqtt_public_port}:1883"
- "${coap_public_port}:5683/udp"
environment:
- MQTT_BIND_ADDRESS=0.0.0.0
- MQTT_BIND_PORT=1883
- COAP_BIND_ADDRESS=0.0.0.0
- COAP_BIND_PORT=5683
- ZOOKEEPER_URL=zk:2181
- DATABASE_TYPE=${database_type}
{{- if eq .Values.database_type "cassandra" }}
- CASSANDRA_URL=db:9042
- CASSANDRA_HOST=db
- CASSANDRA_PORT=9042
{{- else }}
- POSTGRES_HOST=db
- POSTGRES_PORT=5432
{{- end }}
- ADD_SCHEMA_AND_SYSTEM_DATA=${add_schema_and_system_data}
- ADD_DEMO_DATA=${add_demo_data}
volumes:
- hsqldb_data_dir:/usr/share/thingsboard/data/sql
links:
- db:db
external_links:
- ${zookeeper_service}:zk
entrypoint: /run-application.sh
db:
{{- if eq .Values.database_type "cassandra" }}
image: "cassandra:3"
volumes:
- db_data_dir:/var/lib/cassandra
{{- else }}
image: "postgres:9.6"
environment:
- POSTGRES_DB=${postgres_db}
volumes:
- db_data_dir:/var/lib/postgresql/data
{{- end }}
volumes:
hsqldb_data_dir:
driver: ${volume_driver}
db_data_dir:
driver: ${volume_driver}

View File

@@ -0,0 +1,90 @@
version: '2'
catalog:
name: "Thingsboard"
version: "v0.1"
description: "An open source IoT platform"
uuid: Thingsboard-1
questions:
- variable: http_public_port
description: "Thingsboard dashboard published port"
label: "Http public port"
required: true
default: "8080"
type: int
- variable: mqtt_public_port
description: "MQTT published port"
label: "MQTT public port"
required: true
default: "1883"
type: int
- variable: coap_public_port
description: "COAP published port"
label: "COAP public port"
required: true
default: "5683"
type: int
- variable: database_type
description: "Choose database type to use: sql or cassandra"
label: "Database type"
required: true
default: "sql"
type: enum
options:
- sql
- cassandra
- variable: add_schema_and_system_data
description: "Whether to init scheme and system data"
label: "Add schema and system data"
required: true
default: true
type: boolean
- variable: add_demo_data
description: "Whether to insert demo data"
label: "Add demo data"
required: true
default: true
type: boolean
- variable: zookeeper_service
description: "Zookeeper service stack"
label: "Zookeeper service"
required: true
default: "zookeeper/zk"
type: "service"
- variable: postgres_db
description: "Database name in postgresql"
label: "Dbname"
required: true
default: "thingsboard"
type: string
- variable: volume_driver
description: "Volume driver to use with this service"
label: "Volume driver"
required: true
default: "local"
type: enum
options:
- local
- rancher-nfs
- rancher-efs
- rancher-ebs
services:
tb:
scale: 1
retain_ip: true
health_check:
port: 8080
interval: 5000
unhealthy_threshold: 3
request_line: 'GET / HTTP/1.0'
healthy_threshold: 2
response_timeout: 5000

View File

@@ -0,0 +1,133 @@
version: '2'
services:
traefik:
ports:
- ${admin_port}:${admin_port}/tcp
- ${http_port}:${http_port}/tcp
{{- if ne .Values.https_enable "false"}}
- ${https_port}:${https_port}/tcp
{{- end}}
labels:
io.rancher.scheduler.global: 'true'
io.rancher.scheduler.affinity:host_label: ${host_label}
io.rancher.scheduler.affinity:container_label_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
{{- if eq .Values.rancher_integration "api"}}
io.rancher.container.agent.role: environment
io.rancher.container.create_agent: 'true'
{{- end}}
{{- if or (eq .Values.rancher_integration "external") (eq .Values.acme_enable "true")}}
io.rancher.sidekicks:
{{- if eq .Values.rancher_integration "external"}} traefik-conf
{{- if eq .Values.acme_enable "true" -}},{{- end -}}
{{- end -}}
{{- if eq .Values.acme_enable "true" -}}
{{- if ne .Values.rancher_integration "external"}} traefik-acme
{{- else -}}traefik-acme
{{- end -}}
{{- end -}}
{{- end}}
io.rancher.container.hostname_override: container_name
image: rawmind/alpine-traefik:1.6.4-0
environment:
- TRAEFIK_HTTP_PORT=${http_port}
- TRAEFIK_HTTP_COMPRESSION=${compress_enable}
- TRAEFIK_HTTPS_PORT=${https_port}
- TRAEFIK_HTTPS_ENABLE=${https_enable}
- TRAEFIK_HTTPS_COMPRESSION=${compress_enable}
- TRAEFIK_USAGE_ENABLE=${usage_enable}
- TRAEFIK_TIMEOUT_READ=${timeout_read}
- TRAEFIK_TIMEOUT_WRITE=${timeout_write}
- TRAEFIK_TIMEOUT_IDLE=${timeout_idle}
- TRAEFIK_TIMEOUT_DIAL=${timeout_dial}
- TRAEFIK_TIMEOUT_HEADER=${timeout_header}
{{- if ne .Values.https_min_tls ""}}
- TRAEFIK_HTTPS_MIN_TLS=${https_min_tls}
{{- end}}
{{- if ne .Values.trusted_ips ""}}
- TRAEFIK_TRUSTEDIPS=${trusted_ips}
{{- end}}
{{- if ne .Values.ssl_key ""}}
- TRAEFIK_SSL_KEY=${ssl_key}
{{- end}}
{{- if ne .Values.ssl_crt ""}}
- TRAEFIK_SSL_CRT=${ssl_crt}
{{- end}}
- TRAEFIK_INSECURE_SKIP=${insecure_skip}
- TRAEFIK_ADMIN_ENABLE=true
- TRAEFIK_ADMIN_PORT=${admin_port}
- TRAEFIK_ADMIN_SSL=${admin_ssl}
- TRAEFIK_ADMIN_STATISTICS=${admin_statistics}
- TRAEFIK_ADMIN_AUTH_METHOD=${admin_auth_method}
- TRAEFIK_ADMIN_AUTH_USERS=${admin_users}
{{- if eq .Values.acme_enable "true"}}
- TRAEFIK_ACME_ENABLE=${acme_enable}
- TRAEFIK_ACME_EMAIL=${acme_email}
- TRAEFIK_ACME_CHALLENGE=${acme_challenge}
- TRAEFIK_ACME_CHALLENGE_HTTP_ENTRYPOINT=http
- TRAEFIK_ACME_ONHOSTRULE=${acme_onhostrule}
- TRAEFIK_ACME_CASERVER=${acme_caserver}
{{- end}}
{{- if ne .Values.rancher_integration "external"}}
- TRAEFIK_RANCHER_ENABLE=true
- TRAEFIK_FILE_ENABLE=false
- TRAEFIK_CONSTRAINTS=${constraints}
- TRAEFIK_RANCHER_HEALTHCHECK=${rancher_healthcheck}
- TRAEFIK_RANCHER_MODE=${rancher_integration}
{{- else}}
- TRAEFIK_FILE_ENABLE=true
{{- end}}
{{- if eq .Values.metrics_enable "true"}}
- TRAEFIK_METRICS_ENABLE=${metrics_enable}
- TRAEFIK_METRICS_EXPORTER=${metrics_exporter}
- TRAEFIK_METRICS_PUSH=${metrics_push}
- TRAEFIK_METRICS_ADDRESS=${metrics_address}
- TRAEFIK_METRICS_PROMETHEUS_BUCKETS=${metrics_prometheus_buckets}
{{- end}}
{{- if or (eq .Values.rancher_integration "external") (eq .Values.acme_enable "true")}}
volumes_from:
{{- if eq .Values.rancher_integration "external"}}
- traefik-conf
{{- end}}
{{- if eq .Values.acme_enable "true"}}
- traefik-acme
{{- end}}
{{- end}}
{{- if eq .Values.rancher_integration "external"}}
traefik-conf:
labels:
io.rancher.scheduler.global: 'true'
io.rancher.scheduler.affinity:host_label: ${host_label}
io.rancher.scheduler.affinity:container_label_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
io.rancher.container.start_once: 'true'
image: rawmind/rancher-traefik:1.5.0-0
network_mode: none
volumes:
- tools-volume:/opt/tools
{{- end}}
{{- if eq .Values.acme_enable "true"}}
traefik-acme:
network_mode: none
labels:
io.rancher.scheduler.affinity:container_label_soft_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
io.rancher.container.hostname_override: container_name
io.rancher.container.start_once: true
environment:
- SERVICE_UID=10001
- SERVICE_GID=10001
- SERVICE_VOLUME=/opt/traefik/acme
volumes:
- ${acme_vol_name}:/opt/traefik/acme
image: rawmind/alpine-volume:0.0.2-1
{{- end}}
{{- if or (eq .Values.rancher_integration "external") (eq .Values.acme_enable "true")}}
volumes:
{{- if eq .Values.rancher_integration "external"}}
tools-volume:
driver: local
per_container: true
{{- end}}
{{- if eq .Values.acme_enable "true"}}
${acme_vol_name}:
driver: ${acme_vol_driver}
{{- end}}
{{- end}}

View File

@@ -0,0 +1,313 @@
version: '2'
catalog:
name: traefik
version: v1.6.4-rancher1
description: |
Traefik load balancer.
minimum_rancher_version: v0.59.0
maintainer: "Raul Sanchez <rawmind@gmail.com>"
uuid: traefik-0
questions:
- variable: "rancher_integration"
label: "Choose rancher integration:"
description: |
Enable rancher integration mode. Traefik built in integration, metadata or api, or external sidekick integration with confd.
default: metadata
required: true
type: enum
options:
- metadata
- api
- external
- variable: "rancher_healthcheck"
description: |
Enable/disable rancher services healtcheck filter. If enable, just healthy services will be published.
Only valid for api and metadata integration.
label: "Rancher healthcheck filter:"
required: true
default: false
type: "boolean"
- variable: "usage_enable"
description: |
Enable/disable send anonymous usage collection to Traefik. See https://docs.traefik.io/basics/#collected-data
label: "Traefik send anonymous usage:"
required: true
default: false
type: "boolean"
- variable: "constraints"
description: |
Traefik constraints for rancher provider. Eg: "tag==api"
Only valid for api and metadata integration.
label: "Traefik constraints:"
required: false
default: ""
type: "string"
- variable: "host_label"
description: "Host label where to run traefik service."
label: "Host label:"
required: true
default: "traefik_lb=true"
type: "string"
- variable: "http_port"
description: "Traefik http public port to listen."
label: "Http port:"
required: true
default: 8080
type: "int"
- variable: "https_port"
description: "Traefik https public port to listen."
label: "Https port:"
required: true
default: 8443
type: "int"
- variable: "admin_port"
description: "Traefik admin public port to listen for api, rest, ping and webui."
label: "Admin port:"
required: true
default: 8000
type: "int"
- variable: "admin_ssl"
description: "Enable ssl for api, rest, ping and webui."
label: "Admin ssl:"
required: true
default: false
type: "boolean"
- variable: "https_enable"
label: "Https enable:"
description: |
Enable https working mode. If you activate, you need to fill SSL key and SSL crt in order to work.
default: false
required: true
type: enum
options:
- false
- true
- only
- variable: "https_min_tls"
description: |
Minimal allowed tls version to accept connections from.
See the traefik documentation for allowed values. Default is `VersionTLS12`.
label: "Https min tls:"
required: false
default: ""
type: "string"
- variable: "trusted_ips"
description: |
Enable proxyProtocol and forwardHeaders just for trusted IPs. Eg: `172.0.0.0/16,192.168.0.1`
See the traefik documentation for more info. Default is ``.
label: "Trusted IPs:"
required: false
default: ""
type: "string"
- variable: "acme_enable"
description: "Enable acme support on traefik."
label: "ACME enable:"
required: true
default: false
type: "boolean"
- variable: "acme_email"
description: "ACME user email."
label: "ACME email:"
required: true
default: "test@traefik.io"
type: "string"
- variable: "acme_challenge"
description: "ACME challenge."
label: "ACME challenge:"
required: true
default: http
type: enum
options: # List of options if using type of `enum`
- http
- variable: "acme_onhostrule"
description: "Enable acme onHostRule."
label: "ACME onHostRule:"
required: true
default: true
type: "boolean"
- variable: "acme_caserver"
description: "ACME caServer to use."
label: "ACME caServer:"
required: true
default: "https://acme-v01.api.letsencrypt.org/directory"
type: "string"
- variable: "acme_vol_name"
description: "The volume name shared to store ACME certs"
label: "ACME Volume Name"
required: true
default: "traefik_acme_vol"
type: "string"
- variable: "acme_vol_driver"
description: "The volume driver shared to store ACME certs"
label: "ACME Volume Driver"
required: true
default: "local"
type: enum
options: # List of options if using type of `enum`
- local
- rancher-nfs
- rancher-efs
- rancher-ebs
- variable: "ssl_key"
description: "SSL key to secure the service. *Required if you enable https or admin ssl"
label: "Https key"
type: "multiline"
required: false
default: ""
- variable: "ssl_crt"
description: "SSL cert to secure the service. *Required if you enable https or admin ssl"
label: "Https crt"
type: "multiline"
required: false
default: ""
- variable: "insecure_skip"
description: "Enable InsecureSkipVerify param."
label: "InsecureSkipVerify:"
required: true
default: false
type: "boolean"
- variable: "compress_enable"
label: "Enable compression:"
description: |
Enable Traefik compression for entrypoints.
default: true
required: true
type: "boolean"
- variable: "timeout_read"
label: "Timeout read:"
description: |
Traefik respondingTimeouts readTimeout (s).
default: 0
required: true
type: "int"
- variable: "timeout_write"
label: "Timeout write:"
description: |
Traefik respondingTimeouts writeTimeout (s).
default: 0
required: true
type: "int"
- variable: "timeout_idle"
label: "Timeout idle:"
description: |
Traefik respondingTimeouts idleTimeout (s).
default: 180
required: true
type: "int"
- variable: "timeout_dial"
label: "Timeout dial:"
description: |
Traefik forwardingTimeouts dialTimeout (s).
default: 30
required: true
type: "int"
- variable: "timeout_header"
label: "Timeout header:"
description: |
Traefik forwardingTimeouts responseHeaderTimeout (s).
default: 0
required: true
type: "int"
- variable: "admin_statistics"
description: "Enable more detailed statistics."
label: "Admin statistics history:"
required: true
default: 10
type: "int"
- variable: "admin_auth_method"
description: "Admin auth method on api, rest and webui."
label: "Admin auth method:"
required: true
default: "basic"
type: enum
options: # List of options if using type of `enum`
- basic
- digest
- variable: "admin_users"
description: "Admin auth user list on api, rest and webui. Generate with htpassword for basic or htdigest with traefik realm for digest."
label: "Admin users:"
type: "multiline"
required: false
default: ""
- variable: "metrics_enable"
description: "Enable traefik metrics."
label: "Metrics enable"
default: false
required: true
type: "boolean"
- variable: "metrics_exporter"
description: "Traefik metrics exporter."
label: "Metrics exporter:"
required: false
default:
type: enum
options: # List of options if using type of `enum`
- prometheus
- datadog
- statsd
- influxdb
- variable: "metrics_push"
description: "Traefik metrics exporter push interval. Apply on datadog, statsd and influxdb."
label: "Metrics push interval (s):"
required: false
default: 10
type: "int"
- variable: "metrics_address"
description: "Traefik metrics exporter address to push. Apply on datadog, statsd and influxdb."
label: "Metrics address:"
required: false
default: ""
type: "string"
- variable: "metrics_prometheus_buckets"
description: "Traefik metrics buckets for prometheus."
label: "Metrics prometheus buckets"
default: "[0.1,0.3,1.2,5.0]"
required: false
type: "string"
services:
traefik:
retain_ip: true
health_check:
healthy_threshold: 2
response_timeout: 5000
port: ${admin_port}
unhealthy_threshold: 3
interval: 5000
strategy: recreate

View File

@@ -0,0 +1,33 @@
turtl-api-data:
labels:
io.rancher.container.start_once: 'true'
entrypoint:
- /bin/true
image: busybox
volumes:
- /opt/api/uploads
- /var/lib/rethinkdb/instance1
turtl-api:
ports:
- 8181:8181/tcp
environment:
DISPLAY_ERRORS: ${DISPLAY_ERRORS}
FQDN: ${FQDN}
SITE_URL: ${SITE_URL}
LOCAL_UPLOAD_URL: ${LOCAL_UPLOAD_URL}
LOCAL_UPLOAD_PATH: ${LOCAL_UPLOAD_PATH}
AWS_S3_TOKEN: ${AWS_S3_TOKEN}
ADMIN_EMAIL: ${ADMIN_EMAIL}
EMAIL_FROM: ${EMAIL_FROM}
SMTP_USER: ${SMTP_USER}
SMTP_PASS: ${SMTP_PASS}
DEFAULT_STORAGE_LIMIT: ${DEFAULT_STORAGE_LIMIT}
STORAGE_INVITE_CREDIT: ${STORAGE_INVITE_CREDIT}
image: webofmars/turtl-docker:latest
stdin_open: true
tty: true
labels:
io.rancher.sidekicks: turtl-api-data
volumes_from:
- turtl-api-data

View File

@@ -0,0 +1,105 @@
.catalog:
name: "turtl"
version: 1.0.1
questions:
- variable: "DISPLAY_ERRORS"
descrition: "Display errors"
label: "Display errors: "
required: false
default: "t"
type: "string"
- variable: "FQDN"
description: "Fully Qualified Domain Name (ex: 'notes.example.com')."
label: "fqdn"
required: true
default: "turtl.local"
type: "string"
- variable: "SITE_URL"
description: "The uri used to access the turtl api"
label: "site url"
required: true
default: "http://turtl.local"
type: "string"
- variable: "LOCAL_UPLOAD_PATH"
description: "The local path of the uploaded content."
label: "uploads local path"
required: false
default: ""
type: "string"
- variable: "LOCAL_UPLOAD_URL"
description: "The urls used to retrieve uploaded content. Must be set if you change LOCAL_UPLOAD_PATH. (ex: http://turtl.local)"
label: "local upload url"
required: false
default: ""
type: "string"
- variable: "AWS_S3_TOKEN"
description: |
Amazon Web Services S3 token. Used only if you use S3 as a storage backend. ex : (:token ''
secret ''
bucket ''
endpoint 'https://s3.amazonaws.com')
label: "AWS S3 token"
required: false
default: ""
type: "string"
- variable: "ADMIN_EMAIL"
description: "email adresse of administrator ex: admin@example.com"
label: "Admin e-mail"
required: false
default: ""
type: "string"
- variable: "EMAIL_FROM"
description: "The e-mail adress used to send the e-mail from turtl to users."
label: "e-mail from"
required: false
default: ""
type: "string"
- variable: "SMTP_USER"
description: "The user used to authenticate to the smtp server. Can be blank."
label: "smtp user"
required: false
default: ""
type: "string"
- variable: "SMTP_PASS"
description: "The password used to authenticate to the smtp server. Can be blank."
label: "smtp password"
required: false
default: ""
type: "string"
- variable: "STORAGE_INVITE_CREDIT"
description: "The number of MB a user gain when he invites someone"
label: "storage invite credit"
required: false
default: ""
type: "int"
- variable: "DEFAULT_STORAGE_LIMIT"
description: "Maximum storage space (in MB) that can be used by a single user (ex: 1000)"
label: "Default Storage Limit"
required: false
default: ""
type: "int"
turtl-api-data:
scale: 1
turtl-api:
scale: 1
health_check:
port: 8181
interval: 2000
initializing_timeout: 300000
unhealthy_threshold: 10
strategy: recreate
response_timeout: 2000
healthy_threshold: 2