From 8a318638ed9cac072834a67b0504e78c5cbeca9c Mon Sep 17 00:00:00 2001 From: NilsGrunwald Date: Sun, 3 Jul 2022 19:01:34 +0200 Subject: [PATCH] Smaller updates and extions to docker compose files --- dashy/docker-compose.yml | 28 +++++ grafana-tick/docker-compose.yml | 32 ++++++ grafana-tick/env.grafana | 1 + grafana-tick/telegraph.conf | 128 +++++++++++++++++++++++ portainer/docker-compose.yml | 2 + tandoor-recipes/.env | 162 +++++++++++++++++++++++++++++ tandoor-recipes/docker-compose.yml | 42 ++++++++ traccar/docker-compose.yml | 17 +++ 8 files changed, 412 insertions(+) create mode 100644 dashy/docker-compose.yml create mode 100644 grafana-tick/docker-compose.yml create mode 100644 grafana-tick/env.grafana create mode 100644 grafana-tick/telegraph.conf create mode 100644 tandoor-recipes/.env create mode 100644 tandoor-recipes/docker-compose.yml create mode 100644 traccar/docker-compose.yml diff --git a/dashy/docker-compose.yml b/dashy/docker-compose.yml new file mode 100644 index 0000000..7237d3a --- /dev/null +++ b/dashy/docker-compose.yml @@ -0,0 +1,28 @@ + +version: "3.8" +services: + dashy: + # To build from source, replace 'image: lissy93/dashy' with 'build: .' + # build: . + image: lissy93/dashy + container_name: Dashy + # Pass in your config file below, by specifying the path on your host machine + # volumes: + # - /root/my-config.yml:/app/public/conf.yml + ports: + - 4000:80 + # Set any environmental variables + environment: + - NODE_ENV=production + # Specify your user ID and group ID. You can find this by running `id -u` and `id -g` + # - UID=1000 + # - GID=1000 + # Specify restart policy + restart: unless-stopped + # Configure healthchecks + healthcheck: + test: ['CMD', 'node', '/app/services/healthcheck'] + interval: 1m30s + timeout: 10s + retries: 3 + start_period: 40s \ No newline at end of file diff --git a/grafana-tick/docker-compose.yml b/grafana-tick/docker-compose.yml new file mode 100644 index 0000000..0ffc2e4 --- /dev/null +++ b/grafana-tick/docker-compose.yml @@ -0,0 +1,32 @@ + +version: '2' +services: + grafana: + image: grafana/grafana + container_name: grafana + restart: always + ports: + - 4000:3000 + networks: + - monitoring + volumes: + - grafana-volume:/var/lib/grafana + + influxdb: + image: influxdb + container_name: influxdb + restart: always + ports: + - 8086:8086 + networks: + - monitoring + volumes: + - influxdb-volume:/var/lib/influxdb + +networks: + monitoring: + +volumes: + grafana-volume: + influxdb-volume: + \ No newline at end of file diff --git a/grafana-tick/env.grafana b/grafana-tick/env.grafana new file mode 100644 index 0000000..97227b5 --- /dev/null +++ b/grafana-tick/env.grafana @@ -0,0 +1 @@ +GF_INSTALL_PLUGINS=grafana-clock-panel,briangann-gauge-panel,natel-plotly-panel,grafana-simple-json-datasource \ No newline at end of file diff --git a/grafana-tick/telegraph.conf b/grafana-tick/telegraph.conf new file mode 100644 index 0000000..2bc7b9c --- /dev/null +++ b/grafana-tick/telegraph.conf @@ -0,0 +1,128 @@ +# Telegraf configuration + +# Telegraf is entirely plugin driven. All metrics are gathered from the +# declared inputs, and sent to the declared outputs. + +# Plugins must be declared in here to be active. +# To deactivate a plugin, comment out the name and any variables. + +# Use 'telegraf -config telegraf.conf -test' to see what metrics a config +# file would generate. + +# Global tags can be specified here in key="value" format. +[global_tags] + # dc = "us-east-1" # will tag all metrics with dc=us-east-1 + # rack = "1a" + +# Configuration for telegraf agent +[agent] + ## Default data collection interval for all inputs + interval = "10s" + ## Rounds collection interval to 'interval' + ## ie, if interval="10s" then always collect on :00, :10, :20, etc. + round_interval = true + + ## Telegraf will cache metric_buffer_limit metrics for each output, and will + ## flush this buffer on a successful write. + metric_buffer_limit = 10000 + ## Flush the buffer whenever full, regardless of flush_interval. + flush_buffer_when_full = true + + ## Collection jitter is used to jitter the collection by a random amount. + ## Each plugin will sleep for a random time within jitter before collecting. + ## This can be used to avoid many plugins querying things like sysfs at the + ## same time, which can have a measurable effect on the system. + collection_jitter = "0s" + + ## Default flushing interval for all outputs. You shouldn't set this below + ## interval. Maximum flush_interval will be flush_interval + flush_jitter + flush_interval = "10s" + ## Jitter the flush interval by a random amount. This is primarily to avoid + ## large write spikes for users running a large number of telegraf instances. + ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s + flush_jitter = "0s" + + ## Run telegraf in debug mode + debug = false + ## Run telegraf in quiet mode + quiet = false + ## Override default hostname, if empty use os.Hostname() + hostname = "" + + +############################################################################### +# OUTPUTS # +############################################################################### + +# Configuration for influxdb server to send metrics to +[[outputs.influxdb]] + # The full HTTP or UDP endpoint URL for your InfluxDB instance. + # Multiple urls can be specified but it is assumed that they are part of the same + # cluster, this means that only ONE of the urls will be written to each interval. + # urls = ["udp://localhost:8089"] # UDP endpoint example + urls = ["http://influxdb:8086"] # required + # The target database for metrics (telegraf will create it if not exists) + database = "telegraf" # required + # Precision of writes, valid values are "ns", "us" (or "µs"), "ms", "s", "m", "h". + # note: using second precision greatly helps InfluxDB compression + precision = "s" + + ## Write timeout (for the InfluxDB client), formatted as a string. + ## If not provided, will default to 5s. 0s means no timeout (not recommended). + timeout = "5s" + # username = "telegraf" + # password = "metricsmetricsmetricsmetrics" + # Set the user agent for HTTP POSTs (can be useful for log differentiation) + # user_agent = "telegraf" + # Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes) + # udp_payload = 512 + + +############################################################################### +# INPUTS # +############################################################################### + +# Read metrics about cpu usage +[[inputs.cpu]] + # Whether to report per-cpu stats or not + percpu = true + # Whether to report total system cpu stats or not + totalcpu = true + # Comment this line if you want the raw CPU time metrics + fielddrop = ["time_*"] + +# Read metrics about disk usage by mount point +[[inputs.disk]] + # By default, telegraf gather stats for all mountpoints. + # Setting mountpoints will restrict the stats to the specified mountpoints. + # mount_points=["/"] + + # Ignore some mountpoints by filesystem type. For example (dev)tmpfs (usually + # present on /run, /var/run, /dev/shm or /dev). + ignore_fs = ["tmpfs", "devtmpfs"] + +# Read metrics about disk IO by device +[[inputs.diskio]] + # By default, telegraf will gather stats for all devices including + # disk partitions. + # Setting devices will restrict the stats to the specified devices. + # devices = ["sda", "sdb"] + # Uncomment the following line if you do not need disk serial numbers. + # skip_serial_number = true + +# Read metrics about memory usage +[[inputs.mem]] + # no configuration + +# Read metrics about swap memory usage +[[inputs.swap]] + # no configuration + +# Read metrics about system load & uptime +[[inputs.system]] + # no configuration + + +############################################################################### +# SERVICE INPUTS # +############################################################################### \ No newline at end of file diff --git a/portainer/docker-compose.yml b/portainer/docker-compose.yml index fd62f04..6695a53 100644 --- a/portainer/docker-compose.yml +++ b/portainer/docker-compose.yml @@ -12,8 +12,10 @@ services: volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data + volumes: portainer_data: + networks: nginx_network: driver: bridge \ No newline at end of file diff --git a/tandoor-recipes/.env b/tandoor-recipes/.env new file mode 100644 index 0000000..74f5f4a --- /dev/null +++ b/tandoor-recipes/.env @@ -0,0 +1,162 @@ +# only set this to true when testing/debugging +# when unset: 1 (true) - dont unset this, just for development +DEBUG=0 +SQL_DEBUG=0 + +# HTTP port to bind to +# TANDOOR_PORT=8080 + +# hosts the application can run under e.g. recipes.mydomain.com,cooking.mydomain.com,... +ALLOWED_HOSTS=* + +# random secret key, use for example `base64 /dev/urandom | head -c50` to generate one +# ---------------------------- REQUIRED ------------------------- +SECRET_KEY=ThisIsMySecretKeyHaHa +# --------------------------------------------------------------- + +# your default timezone See https://timezonedb.com/time-zones for a list of timezones +TIMEZONE=Europe/Berlin + +# add only a database password if you want to run with the default postgres, otherwise change settings accordingly +DB_ENGINE=django.db.backends.postgresql +# DB_OPTIONS= {} # e.g. {"sslmode":"require"} to enable ssl +POSTGRES_HOST=db_recipes +POSTGRES_PORT=5432 +POSTGRES_USER=djangouser +# ---------------------------- REQUIRED ------------------------- +POSTGRES_PASSWORD=inginf95 +# --------------------------------------------------------------- +POSTGRES_DB=djangodb + +# database connection string, when used overrides other database settings. +# format might vary depending on backend +# DATABASE_URL = engine://username:password@host:port/dbname + +# the default value for the user preference 'fractions' (enable/disable fraction support) +# default: disabled=0 +FRACTION_PREF_DEFAULT=0 + +# the default value for the user preference 'comments' (enable/disable commenting system) +# default comments enabled=1 +COMMENT_PREF_DEFAULT=1 + +# Users can set a amount of time after which the shopping list is refreshed when they are in viewing mode +# This is the minimum interval users can set. Setting this to low will allow users to refresh very frequently which +# might cause high load on the server. (Technically they can obviously refresh as often as they want with their own scripts) +SHOPPING_MIN_AUTOSYNC_INTERVAL=5 + +# Default for user setting sticky navbar +# STICKY_NAV_PREF_DEFAULT=1 + +# If base URL is something other than just / (you are serving a subfolder in your proxy for instance http://recipe_app/recipes/) +# Be sure to not have a trailing slash: e.g. '/recipes' instead of '/recipes/' +# SCRIPT_NAME=/recipes + +# If staticfiles are stored at a different location uncomment and change accordingly, MUST END IN / +# this is not required if you are just using a subfolder +# This can either be a relative path from the applications base path or the url of an external host +# STATIC_URL=/static/ + +# If mediafiles are stored at a different location uncomment and change accordingly, MUST END IN / +# this is not required if you are just using a subfolder +# This can either be a relative path from the applications base path or the url of an external host +# MEDIA_URL=/media/ + +# Serve mediafiles directly using gunicorn. Basically everyone recommends not doing this. Please use any of the examples +# provided that include an additional nxginx container to handle media file serving. +# If you know what you are doing turn this back on (1) to serve media files using djangos serve() method. +# when unset: 1 (true) - this is temporary until an appropriate amount of time has passed for everyone to migrate +GUNICORN_MEDIA=0 + +# S3 Media settings: store mediafiles in s3 or any compatible storage backend (e.g. minio) +# as long as S3_ACCESS_KEY is not set S3 features are disabled +# S3_ACCESS_KEY= +# S3_SECRET_ACCESS_KEY= +# S3_BUCKET_NAME= +# S3_REGION_NAME= # default none, set your region might be required +# S3_QUERYSTRING_AUTH=1 # default true, set to 0 to serve media from a public bucket without signed urls +# S3_QUERYSTRING_EXPIRE=3600 # number of seconds querystring are valid for +# S3_ENDPOINT_URL= # when using a custom endpoint like minio + +# Email Settings, see https://docs.djangoproject.com/en/3.2/ref/settings/#email-host +# Required for email confirmation and password reset (automatically activates if host is set) +# EMAIL_HOST= +# EMAIL_PORT= +# EMAIL_HOST_USER= +# EMAIL_HOST_PASSWORD= +# EMAIL_USE_TLS=0 +# EMAIL_USE_SSL=0 +# email sender address (default 'webmaster@localhost') +# DEFAULT_FROM_EMAIL= +# prefix used for account related emails (default "[Tandoor Recipes] ") +# ACCOUNT_EMAIL_SUBJECT_PREFIX= + +# allow authentication via reverse proxy (e.g. authelia), leave off if you dont know what you are doing +# see docs for more information https://vabene1111.github.io/recipes/features/authentication/ +# when unset: 0 (false) +REVERSE_PROXY_AUTH=0 + +# Default settings for spaces, apply per space and can be changed in the admin view +# SPACE_DEFAULT_MAX_RECIPES=0 # 0=unlimited recipes +# SPACE_DEFAULT_MAX_USERS=0 # 0=unlimited users per space +# SPACE_DEFAULT_MAX_FILES=0 # Maximum file storage for space in MB. 0 for unlimited, -1 to disable file upload. +# SPACE_DEFAULT_ALLOW_SHARING=1 # Allow users to share recipes with public links + +# allow people to create accounts on your application instance (without an invite link) +# when unset: 0 (false) +# ENABLE_SIGNUP=0 + +# If signup is enabled you might want to add a captcha to it to prevent spam +# HCAPTCHA_SITEKEY= +# HCAPTCHA_SECRET= + +# if signup is enabled you might want to provide urls to data protection policies or terms and conditions +# TERMS_URL= +# PRIVACY_URL= +# IMPRINT_URL= + +# enable serving of prometheus metrics under the /metrics path +# ATTENTION: view is not secured (as per the prometheus default way) so make sure to secure it +# trough your web server (or leave it open of you dont care if the stats are exposed) +# ENABLE_METRICS=0 + +# allows you to setup OAuth providers +# see docs for more information https://vabene1111.github.io/recipes/features/authentication/ +# SOCIAL_PROVIDERS = allauth.socialaccount.providers.github, allauth.socialaccount.providers.nextcloud, + +# Should a newly created user from a social provider get assigned to the default space and given permission by default ? +# ATTENTION: This feature might be deprecated in favor of a space join and public viewing system in the future +# default 0 (false), when 1 (true) users will be assigned space and group +# SOCIAL_DEFAULT_ACCESS = 1 + +# if SOCIAL_DEFAULT_ACCESS is used, which group should be added +# SOCIAL_DEFAULT_GROUP=guest + +# Django session cookie settings. Can be changed to allow a single django application to authenticate several applications +# when running under the same database +# SESSION_COOKIE_DOMAIN=.example.com +# SESSION_COOKIE_NAME=sessionid # use this only to not interfere with non unified django applications under the same top level domain + +# by default SORT_TREE_BY_NAME is disabled this will store all Keywords and Food in the order they are created +# enabling this setting makes saving new keywords and foods very slow, which doesn't matter in most usecases. +# however, when doing large imports of recipes that will create new objects, can increase total run time by 10-15x +# Keywords and Food can be manually sorted by name in Admin +# This value can also be temporarily changed in Admin, it will revert the next time the application is started +# This will be fixed/changed in the future by changing the implementation or finding a better workaround for sorting +# SORT_TREE_BY_NAME=0 +# LDAP authentication +# default 0 (false), when 1 (true) list of allowed users will be fetched from LDAP server +#LDAP_AUTH= +#AUTH_LDAP_SERVER_URI= +#AUTH_LDAP_BIND_DN= +#AUTH_LDAP_BIND_PASSWORD= +#AUTH_LDAP_USER_SEARCH_BASE_DN= +#AUTH_LDAP_TLS_CACERTFILE= + +# Enables exporting PDF (see export docs) +# Disabled by default, uncomment to enable +# ENABLE_PDF_EXPORT=1 + +# Recipe exports are cached for a certain time by default, adjust time if needed +# EXPORT_FILE_CACHE_DURATION=600 + diff --git a/tandoor-recipes/docker-compose.yml b/tandoor-recipes/docker-compose.yml new file mode 100644 index 0000000..bb59f1d --- /dev/null +++ b/tandoor-recipes/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3" +services: + db_recipes: + restart: always + image: postgres:11-alpine + volumes: + - tandoor_postgresql:/var/lib/postgresql/data + env_file: + - ./.env + + web_recipes: + restart: always + image: vabene1111/recipes + env_file: + - ./.env + volumes: + - tandoor_staticfiles:/opt/recipes/staticfiles + - tandoor_nginx_config:/opt/recipes/nginx/conf.d + - tandoor_mediafiles:/opt/recipes/mediafiles + depends_on: + - db_recipes + + nginx_recipes: + image: nginx:mainline-alpine + restart: always + ports: + - 8095:80 + env_file: + - ./.env + depends_on: + - web_recipes + volumes: + - tandoor_nginx_config:/etc/nginx/conf.d:ro + - tandoor_staticfiles:/static:ro + - tandoor_mediafiles:/media:ro + +volumes: + tandoor_nginx_config: + tandoor_staticfiles: + tandoor_mediafiles: + tandoor_postgresql: + \ No newline at end of file diff --git a/traccar/docker-compose.yml b/traccar/docker-compose.yml new file mode 100644 index 0000000..0e6a06a --- /dev/null +++ b/traccar/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3' + +services: + traccar: + image: traccar/traccar:latest + restart: always + ports: + - "8096:8082" + - "5000-5150:5000-5150" + - "5000-5150:5000-5150/udp" + volumes: + - traccar_logs:/opt/traccar/logs:rw + - traccar_data:/opt/traccar/data:rw + +volumes: + traccar_logs: + traccar_data: \ No newline at end of file