From e9c49a47133643bc0afff3cea09e6cf4070cb947 Mon Sep 17 00:00:00 2001 From: ReachableCEO Date: Tue, 26 Nov 2024 10:34:40 -0600 Subject: [PATCH] cleaner this way --- README.md | 9 + upstream/cleanslate/docker-compose.yml | 88 ++++++++ upstream/endurain/docker-compose.yml | 98 +++++++++ upstream/habitica/docker-compose.yml | 36 ++++ upstream/reactive-resume/docker-compose.yml | 8 + upstream/tube-archivist/docker-compose.yml | 65 ++++++ upstream/wger | 1 + utility/metrics/metrics.sh | 24 +++ utility/metrics/settings.json | 225 ++++++++++++++++++++ utility/wakaapi/wakaapi.sh | 9 + 10 files changed, 563 insertions(+) create mode 100644 README.md create mode 100644 upstream/cleanslate/docker-compose.yml create mode 100644 upstream/endurain/docker-compose.yml create mode 100644 upstream/habitica/docker-compose.yml create mode 100644 upstream/reactive-resume/docker-compose.yml create mode 100644 upstream/tube-archivist/docker-compose.yml create mode 160000 upstream/wger create mode 100644 utility/metrics/metrics.sh create mode 100644 utility/metrics/settings.json create mode 100644 utility/wakaapi/wakaapi.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..edc7e8d --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# tsys1 docker + +## Introduction + +This repo is for containers running on Charles (@ReachableCEO) laptop + + +## Portmap + diff --git a/upstream/cleanslate/docker-compose.yml b/upstream/cleanslate/docker-compose.yml new file mode 100644 index 0000000..adeab70 --- /dev/null +++ b/upstream/cleanslate/docker-compose.yml @@ -0,0 +1,88 @@ +services: + database: + image: postgres:15 + restart: always + container_name: database + ports: + - '${POSTGRES_PORT:-5432}:5432' + environment: + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - database:/var/lib/postgresql/data + healthcheck: + test: [ 'CMD-SHELL', 'pg_isready -U postgres'] + interval: 10s + timeout: 5s + retries: 5 + + graphql-server: + image: hasura/graphql-engine:latest.cli-migrations-v3 + restart: always + container_name: graphql-server + ports: + - '${HASURA_PORT:-8080}:8080' + environment: + HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET} + HASURA_GRAPHQL_CORS_DOMAIN: https://${NEXT_PUBLIC_HASURA_DOMAIN} + HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@database:5432/postgres + HASURA_GRAPHQL_DEV_MODE: false + HASURA_GRAPHQL_ENABLE_CONSOLE: true + HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log + HASURA_GRAPHQL_JWT_SECRET: ${HASURA_GRAPHQL_JWT_SECRET} + volumes: + - ./migrations:/hasura-migrations + - ./metadata:/hasura-metadata + depends_on: + database: + condition: service_healthy + extra_hosts: + - 'host.docker.internal:host-gateway' + + authentication-server: + image: ghcr.io/successible/cleanslate/authentication-server:latest + build: + context: . + dockerfile: Dockerfile.server + pull_policy: ${PULL_POLICY:-always} + restart: always + container_name: authentication-server + ports: + - '${AUTHENTICATION_SERVER_PORT:-3001}:3001' + environment: + HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET} + JWT_SIGNING_SECRET: ${JWT_SIGNING_SECRET} + NEXT_PUBLIC_USE_FIREBASE: ${NEXT_PUBLIC_USE_FIREBASE:-false} + depends_on: + - database + - graphql-server + extra_hosts: + - 'host.docker.internal:host-gateway' + + client: + image: ghcr.io/successible/cleanslate/client:latest + build: + context: . + dockerfile: Dockerfile + args: + - NEXT_PUBLIC_FIREBASE_CONFIG=${NEXT_PUBLIC_FIREBASE_CONFIG:-{}} + - NEXT_PUBLIC_LEGAL_LINK=${NEXT_PUBLIC_LEGAL_LINK:-no} + - NEXT_PUBLIC_LOGIN_WITH_APPLE=${NEXT_PUBLIC_LOGIN_WITH_APPLE:-no} + - NEXT_PUBLIC_LOGIN_WITH_FACEBOOK=${NEXT_PUBLIC_LOGIN_WITH_FACEBOOK:-no} + - NEXT_PUBLIC_LOGIN_WITH_GITHUB=${NEXT_PUBLIC_LOGIN_WITH_GITHUB:-no} + - NEXT_PUBLIC_LOGIN_WITH_GOOGLE=${NEXT_PUBLIC_LOGIN_WITH_GOOGLE:-no} + - NEXT_PUBLIC_REACT_SENTRY_DSN=${NEXT_PUBLIC_REACT_SENTRY_DSN:-no} + - NEXT_PUBLIC_USE_FIREBASE=${NEXT_PUBLIC_USE_FIREBASE:-false} + - NEXT_PUBLIC_VERSION=${NEXT_PUBLIC_VERSION} + pull_policy: ${PULL_POLICY:-always} + restart: always + container_name: client + ports: + - '${CLIENT_PORT:-3000}:3000' + depends_on: + - database + - graphql-server + extra_hosts: + - 'host.docker.internal:host-gateway' + +volumes: + database: diff --git a/upstream/endurain/docker-compose.yml b/upstream/endurain/docker-compose.yml new file mode 100644 index 0000000..a6ad03e --- /dev/null +++ b/upstream/endurain/docker-compose.yml @@ -0,0 +1,98 @@ +services: + # frontend logic + frontend: + container_name: frontend + image: ghcr.io/joaovitoriasilva/endurain/frontend:latest + environment: + - MY_APP_BACKEND_PROTOCOL=http # http or https, default is http + - MY_APP_BACKEND_HOST=localhost:98 # api host or local ip (example: 192.168.1.10:98), default is localhost:98 + - MY_APP_STRAVA_CLIENT_ID=changeme + # Configure volume if you want to edit the code locally by clomming the repo + #volumes: + # - /endurain/frontend/app:/app + ports: + - "8080:80" # frontend port, change per your needs + restart: unless-stopped + + # API logic + backend: + container_name: backend + image: ghcr.io/joaovitoriasilva/endurain/backend:latest + environment: + - DB_PASSWORD=changeme + - SECRET_KEY=changeme # openssl rand -hex 32 + - STRAVA_CLIENT_ID=changeme + - STRAVA_CLIENT_SECRET=changeme + - STRAVA_AUTH_CODE=changeme + - GEOCODES_MAPS_API=changeme + - FRONTEND_PROTOCOL=http # default is http + - FRONTEND_HOST=localhost:8080 # frontend host or local ip (example: 192.168.1.10:8080), default is localhost:8080 + ports: + - "98:80" # API port, change per your needs + volumes: + # - /endurain/backend/app:/app # Configure volume if you want to edit the code locally by cloning the repo + - /endurain/backend/user_images:/app/user_images # necessary for user image persistence on container image updates + - /endurain/backend/files/bulk_import:/app/files/bulk_import # necessary to enable bulk import of activities. Place here your activities files + - /endurain/backend/files/processed:/app/files/processed # necessary for processed original files persistence on container image updates + - /endurain/backend/logs:/app/logs # log files for the backend + + depends_on: + - mariadb + - jaeger # optional + restart: unless-stopped + + # mysql mariadb logic + mariadb: + image: mariadb:latest + container_name: mariadb + environment: + - MYSQL_ROOT_PASSWORD=changeme + - MYSQL_DATABASE=endurain + - MYSQL_USER=endurain + - MYSQL_PASSWORD=changeme + ports: + - "3306:3306" + volumes: + - /mariadb:/var/lib/mysql + restart: unless-stopped + + # Jaeger for opentelemetry - optional + # Jaeger is not enabled by default. If you do not need it or want it, you can remove this container + jaeger: + container_name: jaeger + image: jaegertracing/all-in-one:latest + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Lisbon + - COLLECTOR_ZIPKIN_HOST_PORT=:9411 + ports: + - 6831:6831/udp + - 6832:6832/udp + - 5778:5778 + - 16686:16686 + - 4317:4317 + - 4318:4318 + - 14250:14250 + - 14268:14268 + - 14269:14269 + - 9411:9411 + restart: unless-stopped + +# phpmyadmin for DB manipulation - optional + phpmyadmin: + container_name: phpmyadmin + image: phpmyadmin + ports: + - 81:80 + environment: + - PMA_HOST=mariadb + - PMA_ARBITRARY=1 + depends_on: + - mariadb + restart: unless-stopped + +networks: + default: + external: true + name: backend_network \ No newline at end of file diff --git a/upstream/habitica/docker-compose.yml b/upstream/habitica/docker-compose.yml new file mode 100644 index 0000000..8ef78d4 --- /dev/null +++ b/upstream/habitica/docker-compose.yml @@ -0,0 +1,36 @@ +version: "3" +services: + + client: + build: . + networks: + - habitica + environment: + - BASE_URL=http://server:3000 + ports: + - "8080:8080" + command: ["npm", "run", "client:dev"] + depends_on: + - server + + server: + build: . + ports: + - "3000:3000" + networks: + - habitica + environment: + - NODE_DB_URI=mongodb://mongo/habitrpg + depends_on: + - mongo + + mongo: + image: mongo:3.6 + ports: + - "27017:27017" + networks: + - habitica + +networks: + habitica: + driver: bridge diff --git a/upstream/reactive-resume/docker-compose.yml b/upstream/reactive-resume/docker-compose.yml new file mode 100644 index 0000000..5cda386 --- /dev/null +++ b/upstream/reactive-resume/docker-compose.yml @@ -0,0 +1,8 @@ +services: + resume-matcher: + image : resume-matcher + build: + context: ./ + dockerfile : build.dockerfile + ports: + - 80:8501 diff --git a/upstream/tube-archivist/docker-compose.yml b/upstream/tube-archivist/docker-compose.yml new file mode 100644 index 0000000..f7e4dd9 --- /dev/null +++ b/upstream/tube-archivist/docker-compose.yml @@ -0,0 +1,65 @@ +version: '3.5' + +services: + tubearchivist: + container_name: tubearchivist + restart: unless-stopped + image: bbilly1/tubearchivist + ports: + - 8000:8000 + volumes: + - media:/youtube + - cache:/cache + environment: + - ES_URL=http://archivist-es:9200 # needs protocol e.g. http and port + - REDIS_HOST=archivist-redis # don't add protocol + - HOST_UID=1000 + - HOST_GID=1000 + - TA_HOST=tubearchivist.local # set your host name + - TA_USERNAME=tubearchivist # your initial TA credentials + - TA_PASSWORD=verysecret # your initial TA credentials + - ELASTIC_PASSWORD=verysecret # set password for Elasticsearch + - TZ=America/New_York # set your time zone + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 2m + timeout: 10s + retries: 3 + start_period: 30s + depends_on: + - archivist-es + - archivist-redis + archivist-redis: + image: redis/redis-stack-server + container_name: archivist-redis + restart: unless-stopped + expose: + - "6379" + volumes: + - redis:/data + depends_on: + - archivist-es + archivist-es: + image: bbilly1/tubearchivist-es # only for amd64, or use official es 8.14.3 + container_name: archivist-es + restart: unless-stopped + environment: + - "ELASTIC_PASSWORD=verysecret" # matching Elasticsearch password + - "ES_JAVA_OPTS=-Xms1g -Xmx1g" + - "xpack.security.enabled=true" + - "discovery.type=single-node" + - "path.repo=/usr/share/elasticsearch/data/snapshot" + ulimits: + memlock: + soft: -1 + hard: -1 + volumes: + - es:/usr/share/elasticsearch/data # check for permission error when using bind mount, see readme + expose: + - "9200" + +volumes: + media: + cache: + redis: + es: diff --git a/upstream/wger b/upstream/wger new file mode 160000 index 0000000..3356235 --- /dev/null +++ b/upstream/wger @@ -0,0 +1 @@ +Subproject commit 335623570988f0f81e3106e09fe20c6ad77f7735 diff --git a/utility/metrics/metrics.sh b/utility/metrics/metrics.sh new file mode 100644 index 0000000..4a6b35f --- /dev/null +++ b/utility/metrics/metrics.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +#i hope i can make this work +# it runs and it works in offstage but not here... + +#hmm this worked in the other account.. + +# Select an existing docker image tag +VERSION=latest +# Path to configured `settings.json` +SETTINGS=/path/to/settings.json +# Port used internally (use the same one than in `settings.json`) +SERVICE_PORT=3000 +# Port to publish +PUBLISHED_PORT=2002 + +docker run \ + -d \ + --rm \ + --name metrics \ + --entrypoint="" \ + -p=127.0.0.1:$PUBLISHED_PORT:$SERVICE_PORT \ + --volume=$SETTINGS:/metrics/settings.json \ + ghcr.io/lowlighter/metrics:$VERSION npm start \ No newline at end of file diff --git a/utility/metrics/settings.json b/utility/metrics/settings.json new file mode 100644 index 0000000..0682c1a --- /dev/null +++ b/utility/metrics/settings.json @@ -0,0 +1,225 @@ +{ + "//": "Example of configuration for metrics web instance", + "//": "====================================================================", + + "token": "A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", "//": "GitHub Personal Token (required)", + "modes": ["embed", "insights"], "//": "Web instance enabled modes", + "restricted": [], "//": "Authorized users (empty to disable)", + "maxusers": 0, "//": "Maximum users, (0 to disable)", + "cached": 3600000, "//": "Cache time rendered metrics (0 to disable)", + "ratelimiter": null, "//": "Rate limiter (see express-rate-limit documentation)", + "port": 3000, "//": "Listening port", + "optimize": true, "//": "SVG optimization", + "debug": false, "//": "Debug logs", + "debug.headless": false, "//": "Debug puppeteer process", + "mocked": false, "//": "Use mocked data instead of live APIs (use 'force' to use mocked token even if real token are defined)", + "repositories": 100, "//": "Number of repositories to use", + "padding": ["0", "8 + 11%"], "//": "Image padding (default)", + "outputs": ["svg", "png", "json"], "//": "Image output formats (empty to enable all)", + "hosted": { + "by": "ReachableCEO Dev Workstation", "//": "Web instance host (displayed in footer)", + "link": "https://www.reachableceo.com", "//": "Web instance host link (displayed in footer)" + }, + "oauth":{ + "id": null, "//": "GitHub OAUTH client id", + "secret": null, "//": "GitHub OAUTH client secret", + "url":"https://example.com", "//": "GitHub OAUTH callback url (must be the same as the web instance host)" + }, + "api":{ + "rest": null, "//": "GitHub REST API custom endpoint", + "graphql": null, "//": "GitHub GraphQL API custom endpoint" + }, + "control":{ + "token": null, "//": "Control token (can be used by external services to perform actions on instance, such as stopping it for redeploys)" + }, + "community": { + "templates": [], "//": "Additional community templates to setup" + }, + "templates": { + "default": "classic", "//": "Default template", + "enabled": [], "//": "Enabled templates (empty to enable all)" + }, + "extras": { + "default": false, "//": "Default extras state (advised to let 'false' unless in debug mode)", + "features": false, "//": "Enable extra features (advised to let 'false' on web instances), see below for supported features", + "//": "________________________________________________________________________", + "//": "metrics.setup.community.templates | Allow community templates download", + "//": "metrics.setup.community.presets | Allow community presets usage", + "//": "metrics.api.github.overuse | Allow GitHub API intensive requests", + "//": "metrics.api.* | Allow use of external API requests", + "//": "metrics.cpu.overuse | Allow CPU intensive requests", + "//": "metrics.run.tempdir | Allow access to temporary directory (I/O operations may be performed)", + "//": "metrics.run.git | Allow to run git", + "//": "metrics.run.licensed | Allow to run licensed", + "//": "metrics.run.user.cmd | Allow to run ANY command by user (USE WITH CAUTION!)", + "//": "metrics.run.puppeteer.scrapping | Allow to run puppeteer to scrape data", + "//": "metrics.run.puppeteer.user.css | Allow to run CSS by user during puppeteer render", + "//": "metrics.run.puppeteer.user.js | Allow to run JavaScript by user during puppeteer render", + "//": "metrics.npm.optional.* | Allow use of specified dependency", + "//": "________________________________________________________________________", + "//": "Additional extra features when user is logged with GitHub", + "logged": [ + "metrics.api.github.overuse" + ] + }, + "plugins.default": false, "//": "Default plugin state (advised to let 'false' unless in debug mode)", + "plugins": { "//": "Global plugin configuration", + "isocalendar":{ + "enabled": false, "//": "Enable isocalendar plugin" + }, + "languages":{ + "enabled": true, "//": "Enable languages plugin" + }, + "stargazers":{ + "worldmap.token": null, "//": "Stargazers worldmap token", + "enabled": false, "//": "Enable stargazers plugin" + }, + "lines":{ + "enabled": true, "//": "Enable lines plugin" + }, + "topics":{ + "enabled": true, "//": "Enable topics plugin" + }, + "stars":{ + "enabled": true, "//": "Enable stars plugin" + }, + "licenses":{ + "enabled": true, "//": "Enable licenses plugin" + }, + "habits":{ + "enabled": true, "//": "Enable habits plugin" + }, + "contributors":{ + "enabled": true, "//": "Enable contributors plugin" + }, + "followup":{ + "enabled": true, "//": "Enable followup plugin" + }, + "reactions":{ + "enabled": true, "//": "Enable reactions plugin" + }, + "people":{ + "enabled": true, "//": "Enable people plugin" + }, + "sponsorships":{ + "enabled": true, "//": "Enable sponsorships plugin" + }, + "sponsors":{ + "enabled": true, "//": "Enable sponsors plugin" + }, + "repositories":{ + "enabled": true, "//": "Enable repositories plugin" + }, + "discussions":{ + "enabled": true, "//": "Enable discussions plugin" + }, + "starlists":{ + "enabled": true, "//": "Enable starlists plugin" + }, + "calendar":{ + "enabled": true, "//": "Enable calendar plugin" + }, + "achievements":{ + "enabled": true, "//": "Enable achievements plugin" + }, + "notable":{ + "enabled": true, "//": "Enable notable plugin" + }, + "activity":{ + "enabled": true, "//": "Enable activity plugin" + }, + "traffic":{ + "enabled": true, "//": "Enable traffic plugin" + }, + "code":{ + "enabled": true, "//": "Enable code plugin" + }, + "gists":{ + "enabled": true, "//": "Enable gists plugin" + }, + "projects":{ + "enabled": true, "//": "Enable projects plugin" + }, + "introduction":{ + "enabled": true, "//": "Enable introduction plugin" + }, + "skyline":{ + "enabled": false, "//": "Enable skyline plugin" + }, + "support":{ + "enabled": false, "//": "Enable support plugin" + }, + "pagespeed":{ + "token": "PageSpeed token", + "enabled": false, "//": "Enable pagespeed plugin" + }, + "tweets":{ + "token": "Twitter API token", + "enabled": false, "//": "Enable tweets plugin" + }, + "stackoverflow":{ + "enabled": false, "//": "Enable stackoverflow plugin" + }, + "anilist":{ + "enabled": false, "//": "Enable aniList plugin" + }, + "music":{ + "token": "Music provider token", + "enabled": false, "//": "Enable music plugin" + }, + "posts":{ + "enabled": false, "//": "Enable posts plugin" + }, + "rss":{ + "enabled": false, "//": "Enable rss plugin" + }, + "wakatime":{ + "token": "664dd8b2-b73a-4f31-82ef-96ed424814d2", + "enabled": true, "//": "Enable wakatime plugin" + "url": "http://localhost:2001/api", + "days": 7, + "sections": "time, projects, projects-graphs", + "limit": 4, + }, + "leetcode":{ + "enabled": false, "//": "Enable leetcode plugin" + }, + "steam":{ + "token": "Steam token", + "enabled": false, "//": "Enable steam plugin" + }, + "16personalities":{ + "enabled": false, "//": "Enable 16personalities plugin" + }, + "chess":{ + "token": "Chess platform token", + "enabled": false, "//": "Enable chess plugin" + }, + "crypto":{ + "enabled": false, "//": "Enable crypto plugin" + }, + "fortune":{ + "enabled": false, "//": "Enable fortune plugin" + }, + "nightscout":{ + "enabled": false, "//": "Enable nightscout plugin" + }, + "poopmap":{ + "token": "PoopMap API token", + "enabled": false, "//": "Enable poopmap plugin" + }, + "screenshot":{ + "enabled": false, "//": "Enable screenshot plugin" + }, + "splatoon":{ + "token": "Splatnet token", + "statink.token": null, "//": "stat.ink token", + "enabled": false, "//": "Enable splatoon plugin" + }, + "stock":{ + "token": "Yahoo Finance token", + "enabled": false, "//": "Enable stock plugin" + }, + "//": "" + } +} diff --git a/utility/wakaapi/wakaapi.sh b/utility/wakaapi/wakaapi.sh new file mode 100644 index 0000000..227c55b --- /dev/null +++ b/utility/wakaapi/wakaapi.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +docker run -d \ + -p 2001:3000 \ + -e "WAKAPI_PASSWORD_SALT=1234" \ + -v wakapi-data-tsys:/data \ + --restart=always \ + --name wakaapi-tsys \ + ghcr.io/muety/wakapi:latest