From a97c37d8d44f0dcbefbb8e2ed75b45faed6f6851 Mon Sep 17 00:00:00 2001 From: Phil Date: Sat, 4 Jan 2025 09:16:27 -0700 Subject: [PATCH] add dawarich to stack --- roles/docker/files/Caddyfile | 5 + roles/docker/tasks/dawarich.yml | 19 +++ roles/docker/tasks/main.yml | 4 + .../docker/templates/dawarich-compose.yml.j2 | 156 ++++++++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 roles/docker/tasks/dawarich.yml create mode 100644 roles/docker/templates/dawarich-compose.yml.j2 diff --git a/roles/docker/files/Caddyfile b/roles/docker/files/Caddyfile index 61cdd7d..b562d60 100644 --- a/roles/docker/files/Caddyfile +++ b/roles/docker/files/Caddyfile @@ -28,6 +28,11 @@ post.thesatelliteoflove.com { reverse_proxy postiz:5000 } +loclog.thesatelliteoflove.com { + reverse_proxy dawarich_app:3000 +} + + tasks.thesatelliteoflove.com { reverse_proxy authentik-server-1:9000 } diff --git a/roles/docker/tasks/dawarich.yml b/roles/docker/tasks/dawarich.yml new file mode 100644 index 0000000..f0acfd5 --- /dev/null +++ b/roles/docker/tasks/dawarich.yml @@ -0,0 +1,19 @@ +- name: make dawarich directories + ansible.builtin.file: + path: "{{ item}}" + state: directory + loop: + - /opt/stacks/dawarich + +- name: Template out the compose file + ansible.builtin.template: + src: dawarich-compose.yml.j2 + dest: /opt/stacks/dawarich/compose.yml + owner: root + mode: 644 + +- name: deploy dawarich stack + community.docker.docker_compose_v2: + project_src: /opt/stacks/dawarich + files: + - compose.yml \ No newline at end of file diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 8824aa6..33f3094 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -141,3 +141,7 @@ - name: Install ghost-1 import_tasks: ghost-1.yml tags: ghost-1 + +- name: Install dawarich + import_tasks: dawarich.yml + tags: dawarich diff --git a/roles/docker/templates/dawarich-compose.yml.j2 b/roles/docker/templates/dawarich-compose.yml.j2 new file mode 100644 index 0000000..072cfc5 --- /dev/null +++ b/roles/docker/templates/dawarich-compose.yml.j2 @@ -0,0 +1,156 @@ +services: + dawarich_redis: + image: redis:7.0-alpine + container_name: dawarich_redis + command: redis-server + volumes: + - dawarich_shared:/data + restart: always + healthcheck: + test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ] + interval: 10s + retries: 5 + start_period: 30s + timeout: 10s + dawarich_db: + image: postgres:14.2-alpine + shm_size: 1G + container_name: dawarich_db + volumes: + - dawarich_db_data:/var/lib/postgresql/data + - dawarich_shared:/var/shared + # - ./postgresql.conf:/etc/postgresql/postgresql.conf # Optional, uncomment if you want to use a custom config + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: {{ dawarich_db_password }} + restart: always + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U postgres -d dawarich_development" ] + interval: 10s + retries: 5 + start_period: 30s + timeout: 10s + # command: postgres -c config_file=/etc/postgresql/postgresql.conf # Use custom config, uncomment if you want to use a custom config + dawarich_app: + image: freikin/dawarich:latest + container_name: dawarich_app + volumes: + - dawarich_gem_cache_app:/usr/local/bundle/gems + - dawarich_public:/var/app/public + - dawarich_watched:/var/app/tmp/imports/watched + stdin_open: true + tty: true + entrypoint: dev-entrypoint.sh + command: ['bin/dev'] + restart: on-failure + environment: + RAILS_ENV: development + REDIS_URL: redis://dawarich_redis:6379/0 + DATABASE_HOST: dawarich_db + DATABASE_USERNAME: postgres + DATABASE_PASSWORD: {{ dawarich_db_password }} + DATABASE_NAME: dawarich_development + MIN_MINUTES_SPENT_IN_CITY: 60 + APPLICATION_HOST: "loclog.thesatelliteoflove.com" + APPLICATION_HOSTS: "loclog.thesatelliteoflove.com, localhost, 127.0.0.1" + TIME_ZONE: America/Denver + APPLICATION_PROTOCOL: http + DISTANCE_UNIT: mi + PHOTON_API_HOST: photon.komoot.io + PHOTON_API_USE_HTTPS: true + PROMETHEUS_EXPORTER_ENABLED: false + PROMETHEUS_EXPORTER_HOST: 0.0.0.0 + PROMETHEUS_EXPORTER_PORT: 9394 + ENABLE_TELEMETRY: false # More on telemetry: https://dawarich.app/docs/tutorials/telemetry + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "5" + healthcheck: + test: [ "CMD-SHELL", "wget -qO - http://127.0.0.1:3000/api/v1/health | grep -q '\"status\"\\s*:\\s*\"ok\"'" ] + interval: 10s + retries: 30 + start_period: 30s + timeout: 10s + depends_on: + dawarich_db: + condition: service_healthy + restart: true + dawarich_redis: + condition: service_healthy + restart: true + deploy: + resources: + limits: + cpus: '0.50' # Limit CPU usage to 50% of one core + memory: '2G' # Limit memory usage to 2GB + dawarich_sidekiq: + image: freikin/dawarich:latest + container_name: dawarich_sidekiq + volumes: + - dawarich_gem_cache_sidekiq:/usr/local/bundle/gems + - dawarich_public:/var/app/public + - dawarich_watched:/var/app/tmp/imports/watched + stdin_open: true + tty: true + entrypoint: dev-entrypoint.sh + command: ['sidekiq'] + restart: on-failure + environment: + RAILS_ENV: development + REDIS_URL: redis://dawarich_redis:6379/0 + DATABASE_HOST: dawarich_db + DATABASE_USERNAME: postgres + DATABASE_PASSWORD: {{ dawarich_db_password }} + DATABASE_NAME: dawarich_development + APPLICATION_HOST: "loclog.thesatelliteoflove.com" + APPLICATION_HOSTS: "loclog.thesatelliteoflove.com, localhost, 127.0.0.1" + BACKGROUND_PROCESSING_CONCURRENCY: 10 + APPLICATION_PROTOCOL: http + DISTANCE_UNIT: mi + PHOTON_API_HOST: photon.komoot.io + PHOTON_API_USE_HTTPS: true + PROMETHEUS_EXPORTER_ENABLED: false + PROMETHEUS_EXPORTER_HOST: dawarich_app + PROMETHEUS_EXPORTER_PORT: 9394 + ENABLE_TELEMETRY: false # More on telemetry: https://dawarich.app/docs/tutorials/telemetry + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "5" + healthcheck: + test: [ "CMD-SHELL", "bundle exec sidekiqmon processes | grep $${HOSTNAME}" ] + interval: 10s + retries: 30 + start_period: 30s + timeout: 10s + depends_on: + dawarich_db: + condition: service_healthy + restart: true + dawarich_redis: + condition: service_healthy + restart: true + dawarich_app: + condition: service_healthy + restart: true + deploy: + resources: + limits: + cpus: '0.50' # Limit CPU usage to 50% of one core + memory: '2G' # Limit memory usage to 2GB + +volumes: + dawarich_db_data: + dawarich_gem_cache_app: + dawarich_gem_cache_sidekiq: + dawarich_shared: + dawarich_public: + dawarich_watched: + +networks: + default: + external: true + name: lava \ No newline at end of file