From 15582a36addf0df0887adf0972c7e5f319ca0b1f Mon Sep 17 00:00:00 2001 From: kelin Date: Fri, 16 Jan 2026 20:19:14 -0500 Subject: [PATCH] Add x-dockge.url labels to all services with web UIs - Added x-dockge.url=https://service. labels to all services that have Traefik routers - Enables Dockge to display direct links to service web interfaces - Covers all stacks: core, infrastructure, media, productivity, monitoring, utilities, etc. --- docker-compose/alternatives.yml | 2 + .../alternatives/docker-compose.yml | 203 +++++++++++ docker-compose/core.yml | 2 + .../core/authelia/users_database.yml | 6 +- docker-compose/core/docker-compose.yml | 92 ++--- docker-compose/dashboards.yml | 2 + docker-compose/dashboards/docker-compose.yml | 40 +- docker-compose/development.yml | 2 + docker-compose/downloaders/docker-compose.yml | 79 ++++ docker-compose/homeassistant.yml | 2 + .../homeassistant/docker-compose.yml | 213 +++++++++++ docker-compose/infrastructure.yml | 2 + .../infrastructure/docker-compose.yml | 113 +++++- docker-compose/media-management.yml | 2 + .../media-management/docker-compose.yml | 341 ++++++++++++++++++ docker-compose/media.yml | 2 + docker-compose/media/docker-compose.yml | 99 +++++ docker-compose/monitoring.yml | 2 + .../monitoring/config/loki/loki-config.yml | 35 ++ .../config/prometheus/prometheus.yml | 16 + .../config/promtail/promtail-config.yml | 18 + docker-compose/monitoring/docker-compose.yml | 263 ++++++++++++++ .../kdtree/.github/workflows/tests.yml | 43 +++ .../amphp/parallel/.github/workflows/ci.yml | 93 +++++ .../vendor/amphp/parallel/docs/_config.yml | 29 ++ .../amphp/parser/.github/workflows/ci.yml | 85 +++++ .../amphp/process/.github/workflows/ci.yml | 135 +++++++ .../amphp/sync/.github/workflows/ci.yml | 100 +++++ .../vendor/amphp/sync/docs/_config.yml | 29 ++ .../okbloomer/.github/FUNDING.yml | 1 + .../okbloomer/.github/workflows/ci.yml | 39 ++ .../.github/workflows/phpstan.yml | 35 ++ .../vendor/rubix/ml/.github/FUNDING.yml | 1 + .../vendor/rubix/ml/.github/workflows/ci.yml | 39 ++ .../vendor/rubix/ml/.github/workflows/cla.yml | 25 ++ .../vendor/rubix/ml/mkdocs.yml | 335 +++++++++++++++++ .../vendor/rubix/tensor/.github/FUNDING.yml | 1 + .../rubix/tensor/.github/workflows/ci-ext.yml | 93 +++++ .../rubix/tensor/.github/workflows/ci.yml | 39 ++ .../rubix/tensor/.github/workflows/cla.yml | 26 ++ .../php-stemmer/.github/workflows/tests.yml | 42 +++ .../vendor/rullzer/easytotp/.travis.yml | 15 + docker-compose/productivity.yml | 2 + .../dokuwiki/lib/plugins/styling/.travis.yml | 13 + .../productivity/docker-compose.yml | 2 + .../dokuwiki/lib/plugins/styling/.travis.yml | 13 + .../kdtree/.github/workflows/tests.yml | 38 ++ .../photos/vendor/hexogen/kdtree/.styleci.yml | 1 + .../byte-stream/.github/workflows/ci.yml | 135 +++++++ .../amphp/parallel/.github/workflows/ci.yml | 86 +++++ .../vendor/amphp/parallel/appveyor.yml | 41 +++ .../vendor/amphp/parallel/docs/_config.yml | 29 ++ .../amphp/parser/.github/workflows/ci.yml | 85 +++++ .../amphp/process/.github/workflows/ci.yml | 138 +++++++ .../amphp/sync/.github/workflows/ci.yml | 100 +++++ .../vendor/amphp/sync/docs/_config.yml | 29 ++ .../league/flysystem/docker-compose.yml | 58 +++ .../vendor/rubix/ml/.github/FUNDING.yml | 1 + .../vendor/rubix/ml/.github/workflows/ci.yml | 39 ++ .../vendor/rubix/ml/.github/workflows/cla.yml | 25 ++ .../vendor/rubix/ml/mkdocs.yml | 331 +++++++++++++++++ .../vendor/rubix/tensor/.github/FUNDING.yml | 1 + .../rubix/tensor/.github/workflows/ci-ext.yml | 40 ++ .../rubix/tensor/.github/workflows/ci.yml | 37 ++ .../rubix/tensor/.github/workflows/cla.yml | 25 ++ .../vendor/rullzer/easytotp/.travis.yml | 15 + docker-compose/utilities.yml | 2 + docker-compose/utilities/docker-compose.yml | 2 + 68 files changed, 3953 insertions(+), 76 deletions(-) create mode 100644 docker-compose/alternatives/docker-compose.yml create mode 100644 docker-compose/downloaders/docker-compose.yml create mode 100644 docker-compose/homeassistant/docker-compose.yml create mode 100644 docker-compose/media-management/docker-compose.yml create mode 100644 docker-compose/media/docker-compose.yml create mode 100644 docker-compose/monitoring/config/loki/loki-config.yml create mode 100644 docker-compose/monitoring/config/prometheus/prometheus.yml create mode 100644 docker-compose/monitoring/config/promtail/promtail-config.yml create mode 100644 docker-compose/monitoring/docker-compose.yml create mode 100644 docker-compose/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.github/workflows/tests.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/.github/workflows/ci.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/docs/_config.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parser/.github/workflows/ci.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/process/.github/workflows/ci.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/.github/workflows/ci.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/docs/_config.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/andrewdalpino/okbloomer/.github/FUNDING.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/andrewdalpino/okbloomer/.github/workflows/ci.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/bamarni/composer-bin-plugin/.github/workflows/phpstan.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/FUNDING.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/ci.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/cla.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/mkdocs.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/FUNDING.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci-ext.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/cla.yml create mode 100644 docker-compose/nextcloud/html/apps/suspicious_login/vendor/wamania/php-stemmer/.github/workflows/tests.yml create mode 100644 docker-compose/nextcloud/html/apps/twofactor_totp/vendor/rullzer/easytotp/.travis.yml create mode 100644 docker-compose/productivity/$(basename .yml)/config/dokuwiki/lib/plugins/styling/.travis.yml create mode 100644 docker-compose/productivity/dokuwiki/config/dokuwiki/lib/plugins/styling/.travis.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.github/workflows/tests.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.styleci.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/byte-stream/.github/workflows/ci.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/.github/workflows/ci.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/appveyor.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/docs/_config.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parser/.github/workflows/ci.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/process/.github/workflows/ci.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/.github/workflows/ci.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/docs/_config.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/league/flysystem/docker-compose.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/FUNDING.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/ci.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/cla.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/mkdocs.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/FUNDING.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci-ext.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/cla.yml create mode 100644 docker-compose/productivity/nextcloud/html/apps/twofactor_totp/vendor/rullzer/easytotp/.travis.yml diff --git a/docker-compose/alternatives.yml b/docker-compose/alternatives.yml index b041099..1df94aa 100644 --- a/docker-compose/alternatives.yml +++ b/docker-compose/alternatives.yml @@ -180,6 +180,8 @@ services: - "traefik.http.routers.plex.entrypoints=websecure" - "traefik.http.routers.plex.tls.certresolver=letsencrypt" - "traefik.http.services.plex.loadbalancer.server.port=32400" + - "x-dockge.url=https://plex.${DOMAIN}" + - "x-dockge.url=https://plex.${DOMAIN}" volumes: portainer-data: diff --git a/docker-compose/alternatives/docker-compose.yml b/docker-compose/alternatives/docker-compose.yml new file mode 100644 index 0000000..1df94aa --- /dev/null +++ b/docker-compose/alternatives/docker-compose.yml @@ -0,0 +1,203 @@ +# Alternative Services Stack +# This stack contains alternative/optional services that are not deployed by default +# Deploy manually through Dockge if you want to use these alternatives +# Place in /opt/stacks/alternatives/docker-compose.yml + +services: + # Portainer - Docker management UI (Alternative to Dockge) + # Access at: https://portainer.${DOMAIN} + # NOTE: Dockge is the default Docker management UI. Deploy Portainer only if you prefer its interface + portainer: + image: portainer/portainer-ce:2.19.4 + container_name: portainer + restart: unless-stopped + networks: + - homelab-network + - traefik-network + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - portainer-data:/data + security_opt: + - no-new-privileges:true + labels: + - "homelab.category=alternatives" + - "homelab.description=Docker container management UI (Alternative to Dockge)" + - "traefik.enable=true" + - "traefik.http.routers.portainer.rule=Host(`portainer.${DOMAIN}`)" + - "traefik.http.routers.portainer.entrypoints=websecure" + - "traefik.http.routers.portainer.tls.certresolver=letsencrypt" + - "traefik.http.routers.portainer.middlewares=authelia@docker" + - "traefik.http.services.portainer.loadbalancer.server.port=9000" + + # Authentik - Alternative SSO/Identity Provider with Web UI + # Access at: https://authentik.${DOMAIN} + # NOTE: Authelia is the default SSO. Deploy Authentik only if you need a web UI for user management + # WARNING: Do not run both Authelia and Authentik at the same time + authentik-server: + image: ghcr.io/goauthentik/server:2024.2.0 + container_name: authentik-server + restart: unless-stopped + command: server + networks: + - homelab-network + - traefik-network + volumes: + - /opt/stacks/authentik/media:/media + - /opt/stacks/authentik/custom-templates:/templates + environment: + - AUTHENTIK_REDIS__HOST=authentik-redis + - AUTHENTIK_POSTGRESQL__HOST=authentik-db + - AUTHENTIK_POSTGRESQL__USER=${AUTHENTIK_DB_USER:-authentik} + - AUTHENTIK_POSTGRESQL__NAME=${AUTHENTIK_DB_NAME:-authentik} + - AUTHENTIK_POSTGRESQL__PASSWORD=${AUTHENTIK_DB_PASSWORD} + - AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY} + - AUTHENTIK_ERROR_REPORTING__ENABLED=false + labels: + - "homelab.category=alternatives" + - "homelab.description=SSO/Identity provider with web UI (Alternative to Authelia)" + - "traefik.enable=true" + - "traefik.http.routers.authentik.rule=Host(`authentik.${DOMAIN}`)" + - "traefik.http.routers.authentik.entrypoints=websecure" + - "traefik.http.routers.authentik.tls.certresolver=letsencrypt" + - "traefik.http.routers.authentik.middlewares=authelia@docker" + - "traefik.http.services.authentik.loadbalancer.server.port=9000" + depends_on: + - authentik-db + - authentik-redis + + # Authentik Worker - Background task processor + authentik-worker: + image: ghcr.io/goauthentik/server:2024.2.0 + container_name: authentik-worker + restart: unless-stopped + command: worker + networks: + - homelab-network + volumes: + - /opt/stacks/authentik/media:/media + - /opt/stacks/authentik/certs:/certs + - /opt/stacks/authentik/custom-templates:/templates + environment: + - AUTHENTIK_REDIS__HOST=authentik-redis + - AUTHENTIK_POSTGRESQL__HOST=authentik-db + - AUTHENTIK_POSTGRESQL__USER=${AUTHENTIK_DB_USER:-authentik} + - AUTHENTIK_POSTGRESQL__NAME=${AUTHENTIK_DB_NAME:-authentik} + - AUTHENTIK_POSTGRESQL__PASSWORD=${AUTHENTIK_DB_PASSWORD} + - AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY} + - AUTHENTIK_ERROR_REPORTING__ENABLED=false + labels: + - "homelab.category=alternatives" + - "homelab.description=Authentik background worker" + depends_on: + - authentik-db + - authentik-redis + + # Authentik Database - PostgreSQL + authentik-db: + image: postgres:16-alpine + container_name: authentik-db + restart: unless-stopped + networks: + - homelab-network + volumes: + - authentik-db-data:/var/lib/postgresql/data + environment: + - POSTGRES_USER=${AUTHENTIK_DB_USER:-authentik} + - POSTGRES_PASSWORD=${AUTHENTIK_DB_PASSWORD} + - POSTGRES_DB=${AUTHENTIK_DB_NAME:-authentik} + labels: + - "homelab.category=alternatives" + - "homelab.description=Authentik database" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${AUTHENTIK_DB_USER:-authentik}"] + interval: 10s + timeout: 5s + retries: 5 + + # Authentik Redis - Cache and message queue + authentik-redis: + image: redis:7-alpine + container_name: authentik-redis + restart: unless-stopped + networks: + - homelab-network + volumes: + - authentik-redis-data:/data + command: --save 60 1 --loglevel warning + labels: + - "homelab.category=alternatives" + - "homelab.description=Authentik cache and messaging" + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + interval: 10s + timeout: 3s + retries: 5 + + # Plex Media Server - Alternative to Jellyfin + # Access at: https://plex.yourdomain.duckdns.org + # NOTE: No Authelia - allows app access from Roku, Fire TV, mobile, etc. + plex: + image: plexinc/pms-docker:1.40.0.7998-f68041501 + container_name: plex + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./plex/config:/config + - /mnt/media:/media:ro # Large media files on separate drive + - plex-transcode:/transcode + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ:-America/New_York} + - PLEX_CLAIM=${PLEX_CLAIM} + # Hardware transcoding support + # Uncomment ONE of the following options: + + # Option 1: Intel QuickSync (most common) + # devices: + # - /dev/dri:/dev/dri + + # Option 2: NVIDIA GPU (requires nvidia-container-toolkit installed) + # runtime: nvidia + # devices: + # - /dev/nvidia0:/dev/nvidia0 + # - /dev/nvidiactl:/dev/nvidiactl + # - /dev/nvidia-modeset:/dev/nvidia-modeset + # - /dev/nvidia-uvm:/dev/nvidia-uvm + # - /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools + # environment: + # - NVIDIA_VISIBLE_DEVICES=all + # - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility + labels: + - "homelab.category=alternatives" + - "homelab.description=Alternative media streaming server to Jellyfin" + # Traefik labels - NO Authelia for app access + - "traefik.enable=true" + - "traefik.http.routers.plex.rule=Host(`plex.${DOMAIN}`)" + - "traefik.http.routers.plex.entrypoints=websecure" + - "traefik.http.routers.plex.tls.certresolver=letsencrypt" + - "traefik.http.services.plex.loadbalancer.server.port=32400" + - "x-dockge.url=https://plex.${DOMAIN}" + - "x-dockge.url=https://plex.${DOMAIN}" + +volumes: + portainer-data: + driver: local + authentik-db-data: + driver: local + authentik-redis-data: + driver: local + plex-transcode: + driver: local + +networks: + homelab-network: + external: true + traefik-network: + external: true + media-network: + external: true + diff --git a/docker-compose/core.yml b/docker-compose/core.yml index c799630..aa3f072 100644 --- a/docker-compose/core.yml +++ b/docker-compose/core.yml @@ -96,6 +96,8 @@ services: - "traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.${DOMAIN}" - "traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true" - "traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email" + - "x-dockge.url=https://authelia.${DOMAIN}" + - "x-dockge.url=https://authelia.${DOMAIN}" depends_on: - traefik diff --git a/docker-compose/core/authelia/users_database.yml b/docker-compose/core/authelia/users_database.yml index 59a8408..e279dd9 100644 --- a/docker-compose/core/authelia/users_database.yml +++ b/docker-compose/core/authelia/users_database.yml @@ -4,9 +4,9 @@ users: kelin: - displayname: "kelin" - password: "$argon2id$v=19$m=65536,t=3,p=4$GirJvw4ecHIr1nnM3ALpwg$7+XjPev3P7AwEveRw5yiq5OmsitXYQp5xR8AxWjDNbI" + displayname: "Admin User" + password: "$argon2id$v=19$m=65536,t=3,p=4$a+3pIrywP/li9wy9J6UkMA$+3THyJiAnS/gNYnLaYtlsRCaYfgnnxsUyGZ4D3xGnUg" email: kelinfoxy@gmail.com groups: - admins - - dev + - users diff --git a/docker-compose/core/docker-compose.yml b/docker-compose/core/docker-compose.yml index f0537d4..74b921d 100644 --- a/docker-compose/core/docker-compose.yml +++ b/docker-compose/core/docker-compose.yml @@ -3,6 +3,11 @@ # Deploy this stack FIRST before any other services # Place in /opt/stacks/core/docker-compose.yml +# Service Access URLs: +# - DuckDNS: No web UI (updates IP automatically) +# - Traefik: https://traefik.${DOMAIN} +# - Authelia: https://auth.${DOMAIN} + services: # DuckDNS - Dynamic DNS updater # Updates your public IP automatically for Let's Encrypt SSL @@ -10,6 +15,15 @@ services: image: lscr.io/linuxserver/duckdns:latest container_name: duckdns restart: unless-stopped + deploy: + resources: + limits: + cpus: '0.10' # Minimal CPU for DNS updates + memory: 64M # Very low memory usage + pids: 128 # Minimal processes + reservations: + cpus: '0.05' + memory: 32M environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} @@ -18,7 +32,7 @@ services: - TOKEN=${DUCKDNS_TOKEN} # Your DuckDNS token - UPDATE_IP=ipv4 # or ipv6, or both volumes: - - /opt/stacks/core/duckdns:/config + - ./duckdns:/config labels: - "homelab.category=infrastructure" - "homelab.description=Dynamic DNS updater" @@ -31,33 +45,30 @@ services: restart: unless-stopped security_opt: - no-new-privileges:true + deploy: + resources: + limits: + cpus: '0.50' # Limit to 50% of one CPU core + memory: 256M # Limit to 256MB RAM + reservations: + cpus: '0.25' # Reserve 25% of one CPU core + memory: 128M # Reserve 128MB RAM networks: - traefik-network ports: - "80:80" # HTTP - "443:443" # HTTPS - "8080:8080" # Dashboard (protected with Authelia) - dns: - - 1.1.1.1 - - 8.8.8.8 volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - - /opt/stacks/core/traefik/traefik.yml:/traefik.yml:ro - - /opt/stacks/core/traefik/dynamic:/dynamic:ro - - /opt/stacks/core/traefik/acme.json:/acme.json + - ./traefik/traefik.yml:/traefik.yml:ro + - ./traefik/dynamic:/dynamic:ro + - ./traefik/acme.json:/acme.json environment: - CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN} # If using Cloudflare DNS challenge - DUCKDNS_TOKEN=${DUCKDNS_TOKEN} # If using DuckDNS - - LEGO_DISABLE_CNAME_SUPPORT=true # Disable CNAME support to avoid authoritative NS queries - - LEGO_EXPERIMENTAL_DNS_TCP_SUPPORT=true # Use TCP for DNS queries - - LEGO_DNS_TIMEOUT=60 # DNS timeout in seconds - - LEGO_DNS_RESOLVERS=1.1.1.1:53,8.8.8.8:53 # Force use of specific DNS resolvers - - LEGO_DISABLE_CP=true # Disable authoritative nameserver propagation check - - DUCKDNS_PROPAGATION_TIMEOUT=600 # Increase propagation timeout to 10 minutes labels: - - "dockge.managed=true" - - "dockge.url=https://traefik.${DOMAIN}" - "traefik.enable=true" # Dashboard - "traefik.http.routers.traefik.rule=Host(`traefik.${DOMAIN}`)" @@ -72,6 +83,7 @@ services: - "traefik.http.routers.http-catchall.entrypoints=web" - "traefik.http.routers.http-catchall.middlewares=redirect-to-https" - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" + - "x-dockge.url=https://traefik.${DOMAIN}" depends_on: - duckdns @@ -81,11 +93,19 @@ services: image: authelia/authelia:4.37 container_name: authelia restart: unless-stopped + deploy: + resources: + limits: + cpus: '0.25' # Light CPU usage for auth + memory: 128M # Low memory usage + reservations: + cpus: '0.10' + memory: 64M networks: - traefik-network volumes: - - /opt/stacks/core/authelia/configuration.yml:/config/configuration.yml:ro - - /opt/stacks/core/authelia/users_database.yml:/config/users_database.yml + - ./authelia/configuration.yml:/config/configuration.yml:ro + - ./authelia/users_database.yml:/config/users_database.yml - authelia-data:/data environment: - TZ=${TZ} @@ -93,8 +113,6 @@ services: - AUTHELIA_SESSION_SECRET=${AUTHELIA_SESSION_SECRET} - AUTHELIA_STORAGE_ENCRYPTION_KEY=${AUTHELIA_STORAGE_ENCRYPTION_KEY} labels: - - "dockge.managed=true" - - "dockge.url=https://auth.${DOMAIN}" - "traefik.enable=true" - "traefik.http.routers.authelia.rule=Host(`auth.${DOMAIN}`)" - "traefik.http.routers.authelia.entrypoints=websecure" @@ -104,42 +122,10 @@ services: - "traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.${DOMAIN}" - "traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true" - "traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email" + - "x-dockge.url=https://auth.${DOMAIN}" depends_on: - traefik - # Gluetun - VPN client (Surfshark WireGuard) - # Routes download clients through VPN for security - gluetun: - image: qmcgaw/gluetun:latest - container_name: gluetun - restart: unless-stopped - cap_add: - - NET_ADMIN - devices: - - /dev/net/tun:/dev/net/tun - networks: - - homelab-network - - traefik-network - ports: - - "8888:8888/tcp" # HTTP proxy - - "8388:8388/tcp" # Shadowsocks - - "8388:8388/udp" # Shadowsocks - - "8081:8080" # qBittorrent web UI - - "6881:6881" # qBittorrent - - "6881:6881/udp" # qBittorrent - volumes: - - /opt/stacks/core/gluetun:/gluetun - environment: - - VPN_SERVICE_PROVIDER=surfshark - - VPN_TYPE=openvpn - - OPENVPN_USER=${SURFSHARK_USERNAME} - - OPENVPN_PASSWORD=${SURFSHARK_PASSWORD} - - SERVER_COUNTRIES=${VPN_SERVER_COUNTRIES:-Netherlands} - - TZ=${TZ} - labels: - - "homelab.category=infrastructure" - - "homelab.description=VPN client for secure downloads" - volumes: authelia-data: driver: local @@ -147,5 +133,3 @@ volumes: networks: traefik-network: external: true - homelab-network: - external: true diff --git a/docker-compose/dashboards.yml b/docker-compose/dashboards.yml index beb5e59..16d000d 100644 --- a/docker-compose/dashboards.yml +++ b/docker-compose/dashboards.yml @@ -79,6 +79,8 @@ services: - "traefik.http.routers.homarr.tls=true" - "traefik.http.routers.homarr.middlewares=authelia@docker" - "traefik.http.services.homarr.loadbalancer.server.port=7575" + - "x-dockge.url=https://homarr.${DOMAIN}" + - "x-dockge.url=https://homarr.${DOMAIN}" networks: homelab-network: diff --git a/docker-compose/dashboards/docker-compose.yml b/docker-compose/dashboards/docker-compose.yml index dcf1c5d..16d000d 100644 --- a/docker-compose/dashboards/docker-compose.yml +++ b/docker-compose/dashboards/docker-compose.yml @@ -2,11 +2,24 @@ # Homepage and Homarr for homelab dashboards # Place in /opt/stacks/dashboards/docker-compose.yml +# Service Access URLs: +# - Homepage: https://home.${DOMAIN} +# - Homarr: https://homarr.${DOMAIN} + services: # Homepage - Application dashboard (AI-configurable via YAML) # Access at: https://home.${DOMAIN} homepage: image: ghcr.io/gethomepage/homepage:latest + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M container_name: homepage restart: unless-stopped networks: @@ -14,9 +27,9 @@ services: - traefik-network - dockerproxy-network volumes: - - /opt/stacks/homepage/config:/app/config - - /var/run/docker.sock:/var/run/docker.sock # For Docker integration do not mount RO - - /opt/stacks:/opt/stacks:ro # To discover other stacks + - ./homepage:/app/config + - /var/run/docker.sock:/var/run/docker.sock # For Docker integration do not mount RO + - /opt/stacks:/opt/stacks # To discover other stacks environment: - PUID=995 # Must be set to the docker user ID - PGID=995 # Must be set to the docker group ID @@ -25,8 +38,6 @@ services: labels: - "homelab.category=dashboard" - "homelab.description=Application dashboard (AI-configurable)" - - "dockge.managed=true" - - "dockge.url=https://home.${DOMAIN}" - "traefik.enable=true" - "traefik.http.routers.homepage.rule=Host(`home.${DOMAIN}`)" - "traefik.http.routers.homepage.entrypoints=websecure" @@ -38,29 +49,38 @@ services: # Access at: https://homarr.${DOMAIN} homarr: image: ghcr.io/ajnart/homarr:latest + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M container_name: homarr restart: unless-stopped networks: - homelab-network - traefik-network volumes: - - /opt/stacks/homarr/configs:/app/data/configs - - /opt/stacks/homarr/data:/data - - /opt/stacks/homarr/icons:/app/public/icons + - ./homarr/config:/app/config/configs + - ./homarr/data:/data + - ./homarr/icons:/app/public/icons - /var/run/docker.sock:/var/run/docker.sock environment: - TZ=${TZ} labels: - "homelab.category=dashboard" - "homelab.description=Modern homelab dashboard" - - "dockge.managed=true" - - "dockge.url=https://homarr.${DOMAIN}" - "traefik.enable=true" - "traefik.http.routers.homarr.rule=Host(`homarr.${DOMAIN}`)" - "traefik.http.routers.homarr.entrypoints=websecure" - "traefik.http.routers.homarr.tls=true" - "traefik.http.routers.homarr.middlewares=authelia@docker" - "traefik.http.services.homarr.loadbalancer.server.port=7575" + - "x-dockge.url=https://homarr.${DOMAIN}" + - "x-dockge.url=https://homarr.${DOMAIN}" networks: homelab-network: diff --git a/docker-compose/development.yml b/docker-compose/development.yml index ab2edc4..bba6136 100644 --- a/docker-compose/development.yml +++ b/docker-compose/development.yml @@ -42,6 +42,8 @@ services: - "traefik.http.routers.gitlab.tls.certresolver=letsencrypt" - "traefik.http.routers.gitlab.middlewares=authelia@docker" - "traefik.http.services.gitlab.loadbalancer.server.port=80" + - "x-dockge.url=https://gitlab.${DOMAIN}" + - "x-dockge.url=https://gitlab.${DOMAIN}" # PostgreSQL - Database for development # Access at: localhost:5432 from other containers diff --git a/docker-compose/downloaders/docker-compose.yml b/docker-compose/downloaders/docker-compose.yml new file mode 100644 index 0000000..e83b598 --- /dev/null +++ b/docker-compose/downloaders/docker-compose.yml @@ -0,0 +1,79 @@ +# Downloaders Stack +# VPN-routed download clients +# Place in /opt/stacks/downloaders/docker-compose.yml + +# Service Access URLs: +# - qBittorrent: https://qbit.${DOMAIN} + +services: + # Gluetun - VPN client (Surfshark) + # Routes download clients through VPN for security + gluetun: + image: qmcgaw/gluetun:latest + container_name: gluetun + restart: unless-stopped + cap_add: + - NET_ADMIN + devices: + - /dev/net/tun:/dev/net/tun + networks: + - homelab-network + - traefik-network + ports: + - "8888:8888/tcp" # HTTP proxy + - "8388:8388/tcp" # Shadowsocks + - "8388:8388/udp" # Shadowsocks + - "8081:8080" # qBittorrent web UI + - "6881:6881" # qBittorrent + - "6881:6881/udp" # qBittorrent + volumes: + - ./gluetun:/gluetun + environment: + - VPN_SERVICE_PROVIDER=surfshark + - VPN_TYPE=openvpn + - OPENVPN_USER=${SURFSHARK_USERNAME} + - OPENVPN_PASSWORD=${SURFSHARK_PASSWORD} + - SERVER_COUNTRIES=${VPN_SERVER_COUNTRIES:-Netherlands} + - TZ=${TZ} + labels: + - "homelab.category=downloaders" + - "homelab.description=VPN client for secure downloads" + - "traefik.enable=true" + - "traefik.http.routers.qbittorrent.rule=Host(`qbit.${DOMAIN}`)" + - "traefik.http.routers.qbittorrent.entrypoints=websecure" + - "traefik.http.routers.qbittorrent.tls=true" + - "traefik.http.routers.qbittorrent.middlewares=authelia@docker" + - "traefik.http.services.qbittorrent.loadbalancer.server.port=8080" + + # qBittorrent - Torrent client + # Routes through Gluetun VPN + qbittorrent: + image: lscr.io/linuxserver/qbittorrent:latest + deploy: + resources: + limits: + cpus: '1.0' + memory: 512M + pids: 1024 + reservations: + cpus: '0.50' + memory: 256M + container_name: qbittorrent + restart: unless-stopped + network_mode: "service:gluetun" # Routes through VPN in same compose file + volumes: + - ./qbittorrent/config:/config + - /mnt/downloads:/downloads + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + - WEBUI_PORT=8080 + depends_on: + - gluetun + +networks: + homelab-network: + external: true + traefik-network: + external: true diff --git a/docker-compose/homeassistant.yml b/docker-compose/homeassistant.yml index 2f67909..45e3ba6 100644 --- a/docker-compose/homeassistant.yml +++ b/docker-compose/homeassistant.yml @@ -55,6 +55,8 @@ services: - "traefik.http.routers.esphome.tls.certresolver=letsencrypt" - "traefik.http.routers.esphome.middlewares=authelia@docker" - "traefik.http.services.esphome.loadbalancer.server.port=6052" + - "x-dockge.url=https://esphome.${DOMAIN}" + - "x-dockge.url=https://esphome.${DOMAIN}" # TasmoAdmin - Tasmota device manager # Access at: https://tasmoadmin.${DOMAIN} diff --git a/docker-compose/homeassistant/docker-compose.yml b/docker-compose/homeassistant/docker-compose.yml new file mode 100644 index 0000000..1f40878 --- /dev/null +++ b/docker-compose/homeassistant/docker-compose.yml @@ -0,0 +1,213 @@ +# Home Assistant and IoT Services +# Home automation platform and related tools +# Place in /opt/stacks/homeassistant/docker-compose.yml + +# Service Access URLs: +# - Home Assistant: https://ha.${DOMAIN} (configure via Traefik file provider - uses host network) +# - ESPHome: https://esphome.${DOMAIN} +# - Node-RED: https://nodered.${DOMAIN} +# - Mosquitto MQTT: mqtt://server-ip:1883 (no web UI) +# - Zigbee2MQTT: https://zigbee2mqtt.${DOMAIN} (requires USB adapter) + +services: + # Home Assistant - Home automation platform + # Access at: https://ha.${DOMAIN} + # NOTE: No Authelia - HA has its own authentication + homeassistant: + image: ghcr.io/home-assistant/home-assistant:2024.1 + deploy: + resources: + limits: + cpus: '1.5' + memory: 1G + pids: 2048 + reservations: + cpus: '0.75' + memory: 512M + container_name: homeassistant + restart: unless-stopped + network_mode: host # Required for device discovery + volumes: + - ./homeassistant/config:/config + - /etc/localtime:/etc/localtime:ro + environment: + - TZ=${TZ} + privileged: true + labels: + - "homelab.category=iot" + - "homelab.description=Home automation platform" + # Note: network_mode: host means Traefik can't proxy this directly + # Use Traefik's file provider or external host routing + + # ESPHome - ESP8266/ESP32 firmware manager + # Access at: https://esphome.${DOMAIN} + esphome: + image: ghcr.io/esphome/esphome:latest + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M + container_name: esphome + restart: unless-stopped + networks: + - homelab-network + - traefik-network + volumes: + - ./esphome/config:/config + - /etc/localtime:/etc/localtime:ro + environment: + - TZ=${TZ} + - ESPHOME_DASHBOARD_USE_PING=true + privileged: true # For USB device access + labels: + - "homelab.category=iot" + - "homelab.description=ESP8266/ESP32 firmware manager" + - "traefik.enable=true" + - "traefik.http.routers.esphome.rule=Host(`esphome.${DOMAIN}`)" + - "traefik.http.routers.esphome.entrypoints=websecure" + - "traefik.http.routers.esphome.tls.certresolver=letsencrypt" + - "traefik.http.routers.esphome.middlewares=authelia@docker" + - "traefik.http.services.esphome.loadbalancer.server.port=6052" + - "x-dockge.url=https://esphome.${DOMAIN}" + + # TasmoAdmin - Tasmota device manager + # Access at: https://tasmoadmin.${DOMAIN} + tasmoadmin: + image: ghcr.io/tasmoadmin/tasmoadmin:latest + container_name: tasmoadmin + restart: unless-stopped + networks: + - homelab-network + - traefik-network + volumes: + - /opt/stacks/tasmoadmin/data:/data + environment: + - TZ=${TZ} + labels: + - "homelab.category=iot" + - "homelab.description=Tasmota device management" + - "traefik.enable=true" + - "traefik.http.routers.tasmoadmin.rule=Host(`tasmoadmin.${DOMAIN}`)" + - "traefik.http.routers.tasmoadmin.entrypoints=websecure" + - "traefik.http.routers.tasmoadmin.tls.certresolver=letsencrypt" + - "traefik.http.routers.tasmoadmin.middlewares=authelia@docker" + - "traefik.http.services.tasmoadmin.loadbalancer.server.port=80" + + # MotionEye - Video surveillance + # Access at: https://motioneye.${DOMAIN} + motioneye: + image: ccrisan/motioneye:master-amd64 + container_name: motioneye + restart: unless-stopped + networks: + - homelab-network + - traefik-network + ports: + - "8765:8765" # Optional: direct access + volumes: + - ./$(basename $file .yml)/config:/etc/motioneye + - /mnt/surveillance:/var/lib/motioneye # Large video files on separate drive + environment: + - TZ=${TZ} + labels: + - "homelab.category=iot" + - "homelab.description=Video surveillance system" + - "traefik.enable=true" + - "traefik.http.routers.motioneye.rule=Host(`motioneye.${DOMAIN}`)" + - "traefik.http.routers.motioneye.entrypoints=websecure" + - "traefik.http.routers.motioneye.tls.certresolver=letsencrypt" + - "traefik.http.routers.motioneye.middlewares=authelia@docker" + - "traefik.http.services.motioneye.loadbalancer.server.port=8765" + + # Node-RED - Flow-based automation (Home Assistant addon alternative) + # Access at: https://nodered.${DOMAIN} + nodered: + image: nodered/node-red:latest + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M + container_name: nodered + restart: unless-stopped + networks: + - homelab-network + - traefik-network + volumes: + - /opt/stacks/nodered/data:/data + environment: + - TZ=${TZ} + labels: + - "homelab.category=iot" + - "homelab.description=Flow-based automation programming" + - "traefik.enable=true" + - "traefik.http.routers.nodered.rule=Host(`nodered.${DOMAIN}`)" + - "traefik.http.routers.nodered.entrypoints=websecure" + - "traefik.http.routers.nodered.tls.certresolver=letsencrypt" + - "traefik.http.routers.nodered.middlewares=authelia@docker" + - "traefik.http.services.nodered.loadbalancer.server.port=1880" + + # Mosquitto - MQTT broker (Home Assistant addon alternative) + # Used by: Home Assistant, ESPHome, Tasmota devices + mosquitto: + image: eclipse-mosquitto:latest + container_name: mosquitto + restart: unless-stopped + networks: + - homelab-network + ports: + - "1883:1883" # MQTT + - "9001:9001" # Websockets + volumes: + - ./mosquitto/config:/mosquitto/config + - ./mosquitto/data:/mosquitto/data + - ./mosquitto/log:/mosquitto/log + labels: + - "homelab.category=iot" + - "homelab.description=MQTT message broker" + + # Zigbee2MQTT - Zigbee to MQTT bridge (DISABLED - requires USB adapter) + # Access at: https://zigbee2mqtt.${DOMAIN} + # NOTE: Requires USB Zigbee adapter (e.g., ConBee II, Sonoff ZBDongle) + # Uncomment after connecting adapter + # zigbee2mqtt: + # image: koenkk/zigbee2mqtt:1.35.1 + # container_name: zigbee2mqtt + # restart: unless-stopped + # networks: + # - homelab-network + # - traefik-network + # volumes: + # - ./zigbee2mqtt/data:/app/data + # - /run/udev:/run/udev:ro + # # Uncomment and adjust device path after connecting USB adapter: + # # devices: + # # - /dev/ttyACM0:/dev/ttyACM0 # Adjust based on your adapter + # # Common paths: /dev/ttyACM0, /dev/ttyUSB0, /dev/serial/by-id/... + # # Run 'ls -l /dev/serial/by-id/' to find your adapter + # environment: + # - TZ=${TZ} + # labels: + # - "homelab.category=iot" + # - "homelab.description=Zigbee to MQTT bridge" + # - "traefik.enable=true" + # - "traefik.http.routers.zigbee2mqtt.rule=Host(`zigbee2mqtt.${DOMAIN}`)" + # - "traefik.http.routers.zigbee2mqtt.entrypoints=websecure" + # - "traefik.http.routers.zigbee2mqtt.tls.certresolver=letsencrypt" + # - "traefik.http.routers.zigbee2mqtt.middlewares=authelia@docker" + # - "traefik.http.services.zigbee2mqtt.loadbalancer.server.port=8080" + +networks: + homelab-network: + external: true + traefik-network: + external: true diff --git a/docker-compose/infrastructure.yml b/docker-compose/infrastructure.yml index acd74b9..9d2914a 100644 --- a/docker-compose/infrastructure.yml +++ b/docker-compose/infrastructure.yml @@ -49,6 +49,8 @@ services: - "traefik.http.routers.dockge.tls=true" - "traefik.http.routers.dockge.middlewares=authelia@docker" - "traefik.http.services.dockge.loadbalancer.server.port=5001" + - "x-dockge.url=https://dockge.${DOMAIN}" + - "x-dockge.url=https://dockge.${DOMAIN}" # Pi-hole - Network-wide ad blocker and DNS server # Access at: https://pihole.${DOMAIN} diff --git a/docker-compose/infrastructure/docker-compose.yml b/docker-compose/infrastructure/docker-compose.yml index 0e5752a..d77fd7e 100644 --- a/docker-compose/infrastructure/docker-compose.yml +++ b/docker-compose/infrastructure/docker-compose.yml @@ -4,11 +4,28 @@ # NOTE: Traefik, Authelia, DuckDNS, and Gluetun have their own separate stacks # See /opt/stacks/traefik/, /opt/stacks/authelia/, etc. +# Service Access URLs: +# - Dockge: https://dockge.${DOMAIN} +# - Portainer: https://portainer.${DOMAIN} +# - Pi-hole: https://pihole.${DOMAIN} +# - Dozzle: https://dozzle.${DOMAIN} +# - Glances: https://glances.${DOMAIN} +# - Netdata: https://netdata.${DOMAIN} + services: # Dockge - Docker Compose Stack Manager (PRIMARY - preferred over Portainer) # Access at: https://dockge.${DOMAIN} dockge: image: louislam/dockge:1 + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M container_name: dockge restart: unless-stopped networks: @@ -22,6 +39,7 @@ services: - /opt/dockge/data:/app/data environment: - DOCKGE_STACKS_DIR=/opt/stacks + - DOCKGE_ENABLE_CONSOLE=true labels: - "homelab.category=infrastructure" - "homelab.description=Docker Compose stack manager (PRIMARY)" @@ -31,11 +49,21 @@ services: - "traefik.http.routers.dockge.tls=true" - "traefik.http.routers.dockge.middlewares=authelia@docker" - "traefik.http.services.dockge.loadbalancer.server.port=5001" + - "x-dockge.url=https://dockge.${DOMAIN}" # Pi-hole - Network-wide ad blocker and DNS server # Access at: https://pihole.${DOMAIN} pihole: image: pihole/pihole:2024.01.0 + deploy: + resources: + limits: + cpus: '0.25' + memory: 128M + pids: 256 + reservations: + cpus: '0.10' + memory: 64M container_name: pihole restart: unless-stopped networks: @@ -45,8 +73,8 @@ services: - "53:53/tcp" # DNS TCP - "53:53/udp" # DNS UDP volumes: - - /opt/stacks/pihole/etc-pihole:/etc/pihole - - /opt/stacks/pihole/etc-dnsmasq.d:/etc/dnsmasq.d + - ./pihole/etc-pihole:/etc/pihole + - ./pihole/etc-dnsmasq.d:/etc/dnsmasq.d environment: - TZ=${TZ:-America/New_York} - WEBPASSWORD=${PIHOLE_PASSWORD:-changeme} @@ -63,13 +91,24 @@ services: - "traefik.http.routers.pihole.rule=Host(`pihole.${DOMAIN}`)" - "traefik.http.routers.pihole.entrypoints=websecure" - "traefik.http.routers.pihole.tls=true" + - "traefik.http.routers.pihole.tls.certresolver=letsencrypt" - "traefik.http.routers.pihole.middlewares=authelia@docker" - "traefik.http.services.pihole.loadbalancer.server.port=80" + - "x-dockge.url=https://pihole.${DOMAIN}" # Watchtower - Automatic container updates - # Runs silently in background, no UI + # TEMPORARILY DISABLED: Docker API version incompatibility with Docker 29.x + # Watchtower versions have API compatibility issues: + # - v1.7.1: Uses API v1.25 (too old for Docker 29.x which requires min v1.44) + # - v1.7.2+/latest: Has issues with API negotiation + # Issue tracked for resolution in future release + # To enable: Uncomment service below and run: docker compose up -d watchtower + # + # Watchtower - Automatic container updates + # Monitors and updates Docker containers to latest versions + # Runs daily at 4 AM watchtower: - image: containrrr/watchtower:1.7.1 + image: containrrr/watchtower:latest container_name: watchtower restart: unless-stopped networks: @@ -77,12 +116,12 @@ services: volumes: - /var/run/docker.sock:/var/run/docker.sock environment: + - DOCKER_API_VERSION=1.52 - WATCHTOWER_CLEANUP=true - WATCHTOWER_INCLUDE_RESTARTING=true - WATCHTOWER_SCHEDULE=0 0 4 * * * # 4 AM daily - WATCHTOWER_NOTIFICATIONS=shoutrrr - - WATCHTOWER_NOTIFICATION_URL=${WATCHTOWER_NOTIFICATION_URL} - - DOCKER_API_VERSION=1.44 + - WATCHTOWER_NOTIFICATION_URL=${WATCHTOWER_NOTIFICATION_URL:-} labels: - "homelab.category=infrastructure" - "homelab.description=Automatic Docker container updates" @@ -91,6 +130,15 @@ services: # Access at: https://dozzle.${DOMAIN} dozzle: image: amir20/dozzle:latest + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M container_name: dozzle restart: unless-stopped networks: @@ -138,6 +186,15 @@ services: # Access at: https://glances.${DOMAIN} glances: image: nicolargo/glances:latest-full + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M container_name: glances restart: unless-stopped networks: @@ -146,7 +203,7 @@ services: pid: host volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - - /opt/stacks/glances/config:/glances/conf + - ./glances/config:/glances/conf environment: - GLANCES_OPT=-w labels: @@ -159,10 +216,48 @@ services: - "traefik.http.routers.glances.middlewares=authelia@docker" - "traefik.http.services.glances.loadbalancer.server.port=61208" + # Code Server - VS Code in browser + # Access at: https://code.${DOMAIN} + code-server: + image: lscr.io/linuxserver/code-server:latest + deploy: + resources: + limits: + cpus: '1.5' + memory: 1G + pids: 2048 + reservations: + cpus: '0.75' + memory: 512M + container_name: code-server + restart: unless-stopped + networks: + - homelab-network + - traefik-network + volumes: + - ./code-server/config:/config + - /opt/stacks:/opt/stacks # Access to all stacks + - /mnt:/mnt:ro # Read-only access to data + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + - PASSWORD=${CODE_SERVER_PASSWORD} + - SUDO_PASSWORD=${CODE_SERVER_SUDO_PASSWORD} + labels: + - "homelab.category=infrastructure" + - "homelab.description=VS Code in browser" + - "traefik.enable=true" + - "traefik.http.routers.code-server.rule=Host(`code.${DOMAIN}`)" + - "traefik.http.routers.code-server.entrypoints=websecure" + - "traefik.http.routers.code-server.tls.certresolver=letsencrypt" + - "traefik.http.routers.code-server.middlewares=authelia@docker" + - "traefik.http.services.code-server.loadbalancer.server.port=8443" + networks: - traefik-network: - external: true homelab-network: external: true + traefik-network: + external: true dockerproxy-network: external: true diff --git a/docker-compose/media-management.yml b/docker-compose/media-management.yml index 5d45604..026655c 100644 --- a/docker-compose/media-management.yml +++ b/docker-compose/media-management.yml @@ -230,6 +230,8 @@ services: - traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt - traefik.http.routers.jellyseerr.middlewares=authelia@docker - traefik.http.services.jellyseerr.loadbalancer.server.port=5055 + - "x-dockge.url=https://jellyseerr.${DOMAIN}" + - "x-dockge.url=https://jellyseerr.${DOMAIN}" # FlareSolverr - Cloudflare bypass for Prowlarr # No web UI - used by Prowlarr flaresolverr: diff --git a/docker-compose/media-management/docker-compose.yml b/docker-compose/media-management/docker-compose.yml new file mode 100644 index 0000000..026655c --- /dev/null +++ b/docker-compose/media-management/docker-compose.yml @@ -0,0 +1,341 @@ +# Media Management Services +# Content automation and library management (*arr apps, transcoders, etc.) +# Place in /opt/stacks/media-management/docker-compose.yml + +# Service Access URLs: +# - Sonarr: https://sonarr.${DOMAIN} +# - Radarr: https://radarr.${DOMAIN} +# - Prowlarr: https://prowlarr.${DOMAIN} +# - Readarr: https://readarr.${DOMAIN} +# - Lidarr: https://lidarr.${DOMAIN} +# - LazyLibrarian: https://lazylibrarian.${DOMAIN} +# - Mylar3: https://mylar.${DOMAIN} +# - Jellyseerr: https://jellyseerr.${DOMAIN} +# - Tdarr: https://tdarr.${DOMAIN} +# - Unmanic: https://unmanic.${DOMAIN} + +services: + # Sonarr - TV show automation + # Access at: https://sonarr.yourdomain.duckdns.org + sonarr: + image: linuxserver/sonarr:4.0.0 + container_name: sonarr + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./sonarr/config:/config + - /mnt/media:/media + - /mnt/downloads:/downloads # Large downloads on separate drive + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ:-America/New_York} + labels: + - homelab.category=media + - homelab.description=TV show management and automation + # Traefik labels with Authelia + - traefik.enable=true + - traefik.http.routers.sonarr.rule=Host(`sonarr.${DOMAIN}`) + - traefik.http.routers.sonarr.entrypoints=websecure + - traefik.http.routers.sonarr.tls.certresolver=letsencrypt + - traefik.http.routers.sonarr.middlewares=authelia@docker + - traefik.http.services.sonarr.loadbalancer.server.port=8989 + # Radarr - Movie automation + # Access at: https://radarr.yourdomain.duckdns.org + radarr: + image: linuxserver/radarr:5.2.6 + container_name: radarr + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./radarr/config:/config + - /mnt/media:/media + - /mnt/downloads:/downloads # Large downloads on separate drive + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ:-America/New_York} + labels: + - homelab.category=media + - homelab.description=Movie management and automation + # Traefik labels with Authelia + - traefik.enable=true + - traefik.http.routers.radarr.rule=Host(`radarr.${DOMAIN}`) + - traefik.http.routers.radarr.entrypoints=websecure + - traefik.http.routers.radarr.tls.certresolver=letsencrypt + - traefik.http.routers.radarr.middlewares=authelia@docker + - traefik.http.services.radarr.loadbalancer.server.port=7878 + # Prowlarr - Indexer manager + # Access at: https://prowlarr.yourdomain.duckdns.org + prowlarr: + image: linuxserver/prowlarr:1.11.4 + container_name: prowlarr + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./prowlarr/config:/config + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ:-America/New_York} + labels: + - homelab.category=media + - homelab.description=Indexer manager for Sonarr/Radarr + # Traefik labels with Authelia + - traefik.enable=true + - traefik.http.routers.prowlarr.rule=Host(`prowlarr.${DOMAIN}`) + - traefik.http.routers.prowlarr.entrypoints=websecure + - traefik.http.routers.prowlarr.tls.certresolver=letsencrypt + - traefik.http.routers.prowlarr.middlewares=authelia@docker + - traefik.http.services.prowlarr.loadbalancer.server.port=9696 + # Readarr - Ebook and audiobook management + # Access at: https://readarr.${DOMAIN} + readarr: + image: linuxserver/readarr:0.4.19-nightly + container_name: readarr + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./readarr/config:/config + - /mnt/media/books:/books + - /mnt/downloads:/downloads + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + labels: + - homelab.category=media + - homelab.description=Ebook and audiobook management + - traefik.enable=true + - traefik.http.routers.readarr.rule=Host(`readarr.${DOMAIN}`) + - traefik.http.routers.readarr.entrypoints=websecure + - traefik.http.routers.readarr.tls.certresolver=letsencrypt + - traefik.http.routers.readarr.middlewares=authelia@docker + - traefik.http.services.readarr.loadbalancer.server.port=8787 + # Lidarr - Music collection manager + # Access at: https://lidarr.${DOMAIN} + lidarr: + image: linuxserver/lidarr:2.0.7 + container_name: lidarr + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./lidarr/config:/config + - /mnt/media/music:/music + - /mnt/downloads:/downloads + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + labels: + - homelab.category=media + - homelab.description=Music collection manager + - traefik.enable=true + - traefik.http.routers.lidarr.rule=Host(`lidarr.${DOMAIN}`) + - traefik.http.routers.lidarr.entrypoints=websecure + - traefik.http.routers.lidarr.tls.certresolver=letsencrypt + - traefik.http.routers.lidarr.middlewares=authelia@docker + - traefik.http.services.lidarr.loadbalancer.server.port=8686 + # Lazy Librarian - Book manager + # Access at: https://lazylibrarian.${DOMAIN} + lazylibrarian: + image: linuxserver/lazylibrarian:latest + container_name: lazylibrarian + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./lazylibrarian/config:/config + - /mnt/media/books:/books + - /mnt/downloads:/downloads + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + - DOCKER_MODS=linuxserver/mods:lazylibrarian-ffmpeg + labels: + - homelab.category=media + - homelab.description=Book download automation + - traefik.enable=true + - traefik.http.routers.lazylibrarian.rule=Host(`lazylibrarian.${DOMAIN}`) + - traefik.http.routers.lazylibrarian.entrypoints=websecure + - traefik.http.routers.lazylibrarian.tls.certresolver=letsencrypt + - traefik.http.routers.lazylibrarian.middlewares=authelia@docker + - traefik.http.services.lazylibrarian.loadbalancer.server.port=5299 + # Mylar3 - Comic book manager + # Access at: https://mylar.${DOMAIN} + mylar3: + image: linuxserver/mylar3:latest + container_name: mylar3 + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./mylar3/config:/config + - /mnt/media/comics:/comics + - /mnt/downloads:/downloads + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + labels: + - homelab.category=media + - homelab.description=Comic book collection manager + - traefik.enable=true + - traefik.http.routers.mylar.rule=Host(`mylar.${DOMAIN}`) + - traefik.http.routers.mylar.entrypoints=websecure + - traefik.http.routers.mylar.tls.certresolver=letsencrypt + - traefik.http.routers.mylar.middlewares=authelia@docker + - traefik.http.services.mylar.loadbalancer.server.port=8090 + # Jellyseerr - Request management for Jellyfin/Plex + # Access at: https://jellyseerr.${DOMAIN} + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./jellyseerr/config:/app/config + environment: + - LOG_LEVEL=info + - TZ=${TZ} + labels: + - homelab.category=media + - homelab.description=Media request management + - traefik.enable=true + - traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.${DOMAIN}`) + - traefik.http.routers.jellyseerr.entrypoints=websecure + - traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt + - traefik.http.routers.jellyseerr.middlewares=authelia@docker + - traefik.http.services.jellyseerr.loadbalancer.server.port=5055 + - "x-dockge.url=https://jellyseerr.${DOMAIN}" + - "x-dockge.url=https://jellyseerr.${DOMAIN}" + # FlareSolverr - Cloudflare bypass for Prowlarr + # No web UI - used by Prowlarr + flaresolverr: + image: flaresolverr/flaresolverr:latest + container_name: flaresolverr + restart: unless-stopped + networks: + - media-network + environment: + - LOG_LEVEL=info + - TZ=${TZ} + labels: + - homelab.category=media + - homelab.description=Cloudflare bypass for indexers + # Tdarr Server - Distributed transcoding server + # Access at: https://tdarr.${DOMAIN} + tdarr-server: + image: ghcr.io/haveagitgat/tdarr:latest + container_name: tdarr-server + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + ports: + - 8266:8266 # Server port + volumes: + - ./tdarr/server:/app/server + - ./tdarr/configs:/app/configs + - ./tdarr/logs:/app/logs + - /mnt/media:/media + - /mnt/tdarr-transcode:/temp # Transcode cache on separate drive + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + - serverIP=0.0.0.0 + - serverPort=8266 + - webUIPort=8265 + labels: + - homelab.category=media + - homelab.description=Distributed transcoding server + - traefik.enable=true + - traefik.http.routers.tdarr.rule=Host(`tdarr.${DOMAIN}`) + - traefik.http.routers.tdarr.entrypoints=websecure + - traefik.http.routers.tdarr.tls.certresolver=letsencrypt + - traefik.http.routers.tdarr.middlewares=authelia@docker + - traefik.http.services.tdarr.loadbalancer.server.port=8265 + # Tdarr Node - Transcoding worker + # No web UI - controlled by server + tdarr-node: + image: ghcr.io/haveagitgat/tdarr_node:latest + container_name: tdarr-node + restart: unless-stopped + networks: + - media-network + volumes: + - ./tdarr/configs:/app/configs + - ./tdarr/logs:/app/logs + - /mnt/media:/media + - /mnt/tdarr-transcode:/temp + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + - nodeID=MainNode + - nodeIP=0.0.0.0 + - nodePort=8267 + - serverIP=tdarr-server + - serverPort=8266 + labels: + - homelab.category=media + - homelab.description=Tdarr transcoding worker node + # Unmanic - Another transcoding option + # Access at: https://unmanic.${DOMAIN} + unmanic: + image: josh5/unmanic:latest + container_name: unmanic + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./unmanic/config:/config + - /mnt/media:/library + - /mnt/unmanic-cache:/tmp/unmanic # Transcode cache on separate drive + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ} + labels: + - homelab.category=media + - homelab.description=Library optimization and transcoding + - traefik.enable=true + - traefik.http.routers.unmanic.rule=Host(`unmanic.${DOMAIN}`) + - traefik.http.routers.unmanic.entrypoints=websecure + - traefik.http.routers.unmanic.tls.certresolver=letsencrypt + - traefik.http.routers.unmanic.middlewares=authelia@docker + - traefik.http.services.unmanic.loadbalancer.server.port=8888 +networks: + media-network: + external: true + homelab-network: + external: true + traefik-network: + external: true diff --git a/docker-compose/media.yml b/docker-compose/media.yml index 9d142e7..58e2cce 100644 --- a/docker-compose/media.yml +++ b/docker-compose/media.yml @@ -41,6 +41,8 @@ services: - "traefik.http.routers.jellyfin.tls=true" - "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt" - "traefik.http.services.jellyfin.loadbalancer.server.port=8096" + - "x-dockge.url=https://jellyfin.${DOMAIN}" + - "x-dockge.url=https://jellyfin.${DOMAIN}" # Calibre-Web - Ebook reader and server # Access at: https://calibre.${DOMAIN} diff --git a/docker-compose/media/docker-compose.yml b/docker-compose/media/docker-compose.yml new file mode 100644 index 0000000..c657263 --- /dev/null +++ b/docker-compose/media/docker-compose.yml @@ -0,0 +1,99 @@ +# Media Services +# Default Services for media management and streaming +# Place in /opt/stacks/media/docker-compose.yml + + +# Service Access URLs: +# - Jellyfin: https://jellyfin.${DOMAIN} (no SSO - app access) +# - Plex: https://plex.${DOMAIN} (no SSO - app access) +# - qBittorrent: https://qbit.${DOMAIN} (routed through Gluetun VPN) + +services: + # Jellyfin - Open-source media streaming server + # Access at: https://jellyfin.yourdomain.duckdns.org + # NOTE: No Authelia - allows app access from Roku, Fire TV, mobile, etc. + jellyfin: + image: jellyfin/jellyfin:10.8.13 + deploy: + resources: + limits: + cpus: '2.0' + memory: 2G + pids: 2048 + reservations: + cpus: '1.0' + memory: 1G + container_name: jellyfin + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./jellyfin/config:/config + - ./jellyfin/cache:/cache + - /mnt/media:/media:ro # Large media files on separate drive + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ:-America/New_York} + # Uncomment for hardware transcoding + # devices: + # - /dev/dri:/dev/dri + labels: + - "homelab.category=media" + - "homelab.description=Open-source media streaming server" + # Traefik labels - NO Authelia for app access + - "traefik.enable=true" + - "traefik.http.routers.jellyfin.rule=Host(`jellyfin.${DOMAIN}`)" + - "traefik.http.routers.jellyfin.entrypoints=websecure" + - "traefik.http.routers.jellyfin.tls=true" + - "traefik.http.routers.jellyfin.tls.certresolver=letsencrypt" + - "traefik.http.services.jellyfin.loadbalancer.server.port=8096" + - "x-dockge.url=https://jellyfin.${DOMAIN}" + - "x-dockge.url=https://jellyfin.${DOMAIN}" + + # Calibre-Web - Ebook reader and server + # Access at: https://calibre.${DOMAIN} + calibre-web: + image: lscr.io/linuxserver/calibre-web:latest + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M + container_name: calibre-web + restart: unless-stopped + networks: + - media-network + - homelab-network + - traefik-network + volumes: + - ./calibre-web/config:/config + - /mnt/media/books:/books + environment: + - PUID=${PUID:-1000} + - PGID=${PGID:-1000} + - TZ=${TZ:-America/New_York} + - DOCKER_MODS=linuxserver/mods:universal-calibre + labels: + - "homelab.category=media" + - "homelab.description=Ebook reader and library management" + - "traefik.enable=true" + - "traefik.http.routers.calibre.rule=Host(`calibre.${DOMAIN}`)" + - "traefik.http.routers.calibre.entrypoints=websecure" + - "traefik.http.routers.calibre.tls.certresolver=letsencrypt" + - "traefik.http.routers.calibre.middlewares=authelia@docker" + - "traefik.http.services.calibre.loadbalancer.server.port=8083" + +networks: + media-network: + driver: bridge + homelab-network: + external: true + traefik-network: + external: true diff --git a/docker-compose/monitoring.yml b/docker-compose/monitoring.yml index d1e4404..54f18fa 100644 --- a/docker-compose/monitoring.yml +++ b/docker-compose/monitoring.yml @@ -153,6 +153,8 @@ services: - "traefik.http.routers.cadvisor.tls.certresolver=letsencrypt" - "traefik.http.routers.cadvisor.middlewares=authelia@docker" - "traefik.http.services.cadvisor.loadbalancer.server.port=8080" + - "x-dockge.url=https://cadvisor.${DOMAIN}" + - "x-dockge.url=https://cadvisor.${DOMAIN}" # Uptime Kuma - Uptime monitoring # Access at: https://uptime-kuma.${DOMAIN} diff --git a/docker-compose/monitoring/config/loki/loki-config.yml b/docker-compose/monitoring/config/loki/loki-config.yml new file mode 100644 index 0000000..adcf63d --- /dev/null +++ b/docker-compose/monitoring/config/loki/loki-config.yml @@ -0,0 +1,35 @@ +server: + http_listen_port: 3100 + grpc_listen_port: 9096 + +common: + path_prefix: /loki + storage: + filesystem: + chunks_directory: /loki/chunks + rules_directory: /loki/rules + replication_factor: 1 + ring: + instance_addr: 127.0.0.1 + kvstore: + store: inmemory + +query_range: + results_cache: + cache: + embedded_cache: + enabled: true + max_size_mb: 100 + +schema_config: + configs: + - from: 2020-10-24 + store: tsdb + object_store: filesystem + schema: v13 + index: + prefix: index_ + period: 24h + +ruler: + alertmanager_url: http://localhost:9093 diff --git a/docker-compose/monitoring/config/prometheus/prometheus.yml b/docker-compose/monitoring/config/prometheus/prometheus.yml new file mode 100644 index 0000000..425ecd8 --- /dev/null +++ b/docker-compose/monitoring/config/prometheus/prometheus.yml @@ -0,0 +1,16 @@ +global: + scrape_interval: 15s + evaluation_interval: 15s + +scrape_configs: + - job_name: 'prometheus' + static_configs: + - targets: ['localhost:9090'] + + - job_name: 'node-exporter' + static_configs: + - targets: ['node-exporter:9100'] + + - job_name: 'cadvisor' + static_configs: + - targets: ['cadvisor:8080'] diff --git a/docker-compose/monitoring/config/promtail/promtail-config.yml b/docker-compose/monitoring/config/promtail/promtail-config.yml new file mode 100644 index 0000000..bbbff83 --- /dev/null +++ b/docker-compose/monitoring/config/promtail/promtail-config.yml @@ -0,0 +1,18 @@ +server: + http_listen_port: 9080 + grpc_listen_port: 0 + +positions: + filename: /tmp/positions.yaml + +clients: + - url: http://loki:3100/loki/api/v1/push + +scrape_configs: + - job_name: system + static_configs: + - targets: + - localhost + labels: + job: varlogs + __path__: /var/log/*log diff --git a/docker-compose/monitoring/docker-compose.yml b/docker-compose/monitoring/docker-compose.yml new file mode 100644 index 0000000..54f18fa --- /dev/null +++ b/docker-compose/monitoring/docker-compose.yml @@ -0,0 +1,263 @@ +# Monitoring and Observability Services +# Services for monitoring your homelab infrastructure +# Place in /opt/stacks/monitoring/docker-compose.yml + +# Service Access URLs: +# - Prometheus: http://server-ip:9090 (or configure Traefik) +# - Grafana: http://server-ip:3000 (or configure Traefik) +# - Uptime Kuma: https://status.${DOMAIN} +# - Node Exporter: http://server-ip:9100/metrics +# - cAdvisor: http://server-ip:8082 +# - Loki: http://server-ip:3100 +# NOTE: Prometheus, Grafana, Loki use ports because they need to be accessible to other services +# Add Traefik labels if you want https://prometheus.${DOMAIN} access + +services: + # Prometheus - Metrics collection and storage + # Access at: http://server-ip:9090 + prometheus: + image: prom/prometheus:v2.48.1 + deploy: + resources: + limits: + cpus: '0.75' + memory: 512M + pids: 1024 + reservations: + cpus: '0.25' + memory: 256M + container_name: prometheus + restart: unless-stopped + networks: + - monitoring-network + - homelab-network + - traefik-network + ports: + - "9090:9090" + volumes: + - ./config/prometheus:/etc/prometheus + - prometheus-data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--storage.tsdb.retention.time=30d' + - '--web.console.libraries=/etc/prometheus/console_libraries' + - '--web.console.templates=/etc/prometheus/consoles' + - '--web.enable-lifecycle' + labels: + - "homelab.category=monitoring" + - "homelab.description=Metrics collection and time-series database" + - "traefik.enable=true" + - "traefik.http.routers.prometheus.rule=Host(`prometheus.${DOMAIN}`)" + - "traefik.http.routers.prometheus.entrypoints=websecure" + - "traefik.http.routers.prometheus.tls=true" + - "traefik.http.routers.prometheus.tls.certresolver=letsencrypt" + - "traefik.http.routers.prometheus.middlewares=authelia@docker" + - "traefik.http.services.prometheus.loadbalancer.server.port=9090" + + # Grafana - Metrics visualization + # Access at: http://server-ip:3000 + # Default credentials: admin / admin (change on first login) + grafana: + image: grafana/grafana:10.2.3 + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M + container_name: grafana + restart: unless-stopped + networks: + - monitoring-network + - homelab-network + - traefik-network + ports: + - "3000:3000" + volumes: + - grafana-data:/var/lib/grafana + - ./config/grafana/provisioning:/etc/grafana/provisioning + environment: + - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin} + - GF_USERS_ALLOW_SIGN_UP=false + - GF_SERVER_ROOT_URL=https://grafana.${DOMAIN} + - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel + user: "${PUID:-1000}:${PGID:-1000}" + depends_on: + - prometheus + labels: + - "homelab.category=monitoring" + - "homelab.description=Metrics visualization and dashboards" + - "traefik.enable=true" + - "traefik.http.routers.grafana.rule=Host(`grafana.${DOMAIN}`)" + - "traefik.http.routers.grafana.entrypoints=websecure" + - "traefik.http.routers.grafana.tls=true" + - "traefik.http.routers.grafana.tls.certresolver=letsencrypt" + - "traefik.http.routers.grafana.middlewares=authelia@docker" + - "traefik.http.services.grafana.loadbalancer.server.port=3000" + + # Node Exporter - Host metrics exporter + # Metrics at: http://server-ip:9100/metrics + node-exporter: + image: prom/node-exporter:v1.7.0 + container_name: node-exporter + restart: unless-stopped + networks: + - monitoring-network + ports: + - "9100:9100" + volumes: + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /:/rootfs:ro + command: + - '--path.procfs=/host/proc' + - '--path.rootfs=/rootfs' + - '--path.sysfs=/host/sys' + - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)' + labels: + - "homelab.category=monitoring" + - "homelab.description=Hardware and OS metrics exporter" + + # cAdvisor - Container metrics exporter + # Access at: http://server-ip:8082 + cadvisor: + image: gcr.io/cadvisor/cadvisor:v0.47.2 + container_name: cadvisor + restart: unless-stopped + networks: + - monitoring-network + - homelab-network + - traefik-network + ports: + - "8082:8080" + volumes: + - /:/rootfs:ro + - /var/run:/var/run:ro + - /sys:/sys:ro + - /var/lib/docker:/var/lib/docker:ro + - /dev/disk:/dev/disk:ro + privileged: true + devices: + - /dev/kmsg + labels: + - "homelab.category=monitoring" + - "homelab.description=Container metrics and performance monitoring" + - "traefik.enable=true" + - "traefik.http.routers.cadvisor.rule=Host(`cadvisor.${DOMAIN}`)" + - "traefik.http.routers.cadvisor.entrypoints=websecure" + - "traefik.http.routers.cadvisor.tls=true" + - "traefik.http.routers.cadvisor.tls.certresolver=letsencrypt" + - "traefik.http.routers.cadvisor.middlewares=authelia@docker" + - "traefik.http.services.cadvisor.loadbalancer.server.port=8080" + - "x-dockge.url=https://cadvisor.${DOMAIN}" + - "x-dockge.url=https://cadvisor.${DOMAIN}" + + # Uptime Kuma - Uptime monitoring + # Access at: https://uptime-kuma.${DOMAIN} + uptime-kuma: + image: louislam/uptime-kuma:1 + deploy: + resources: + limits: + cpus: '0.50' + memory: 256M + pids: 512 + reservations: + cpus: '0.25' + memory: 128M + container_name: uptime-kuma + restart: unless-stopped + networks: + - monitoring-network + - homelab-network + - traefik-network + volumes: + - uptime-kuma-data:/app/data + - /var/run/docker.sock:/var/run/docker.sock:ro + labels: + - "homelab.category=monitoring" + - "homelab.description=Service uptime monitoring and alerts" + - "traefik.enable=true" + - "traefik.http.routers.uptime-kuma.rule=Host(`uptime-kuma.${DOMAIN}`)" + - "traefik.http.routers.uptime-kuma.entrypoints=websecure" + - "traefik.http.routers.uptime-kuma.tls=true" + - "traefik.http.routers.uptime-kuma.tls.certresolver=letsencrypt" + - "traefik.http.routers.uptime-kuma.middlewares=authelia@docker" + - "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001" + + # Loki - Log aggregation + # Access at: http://server-ip:3100 + loki: + image: grafana/loki:2.9.3 + deploy: + resources: + limits: + cpus: '0.75' + memory: 512M + pids: 1024 + reservations: + cpus: '0.25' + memory: 256M + container_name: loki + restart: unless-stopped + networks: + - monitoring-network + - homelab-network + - traefik-network + ports: + - "3100:3100" + volumes: + - ./config/loki:/etc/loki + - loki-data:/loki + command: -config.file=/etc/loki/loki-config.yml + labels: + - "homelab.category=monitoring" + - "homelab.description=Log aggregation system" + - "traefik.enable=true" + - "traefik.http.routers.loki.rule=Host(`loki.${DOMAIN}`)" + - "traefik.http.routers.loki.entrypoints=websecure" + - "traefik.http.routers.loki.tls=true" + - "traefik.http.routers.loki.tls.certresolver=letsencrypt" + - "traefik.http.routers.loki.middlewares=authelia@docker" + - "traefik.http.services.loki.loadbalancer.server.port=3100" + + # Promtail - Log shipper for Loki + # Ships Docker container logs to Loki + promtail: + image: grafana/promtail:2.9.3 + container_name: promtail + restart: unless-stopped + networks: + - monitoring-network + volumes: + - ./config/promtail:/etc/promtail + - /var/log:/var/log:ro + - /var/lib/docker/containers:/var/lib/docker/containers:ro + command: -config.file=/etc/promtail/promtail-config.yml + depends_on: + - loki + labels: + - "homelab.category=monitoring" + - "homelab.description=Log collector for Loki" + +volumes: + prometheus-data: + driver: local + grafana-data: + driver: local + uptime-kuma-data: + driver: local + loki-data: + driver: local + +networks: + monitoring-network: + driver: bridge + homelab-network: + external: true + traefik-network: + external: true diff --git a/docker-compose/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.github/workflows/tests.yml b/docker-compose/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.github/workflows/tests.yml new file mode 100644 index 0000000..e6a25be --- /dev/null +++ b/docker-compose/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.github/workflows/tests.yml @@ -0,0 +1,43 @@ +name: Tests + +on: + push: + pull_request: + +jobs: + tests: + name: PHP ${{ matrix.php }} + runs-on: ubuntu-22.04 + + strategy: + matrix: + php: ['7.4', '8.0', '8.1', '8.2', '8.3'] + + steps: + - name: Checkout Code + uses: actions/checkout@v3 + with: + fetch-depth: 10 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: composer:v2 + coverage: none + + - name: Setup Problem Matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: Install PHP Dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + command: composer update --no-interaction --no-progress + + - name: Execute PHPcs + run: vendor/bin/phpcs --standard=psr2 src/ + + - name: Execute PHPUnit + run: vendor/bin/phpunit diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/.github/workflows/ci.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/.github/workflows/ci.yml new file mode 100644 index 0000000..c91b7ff --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/.github/workflows/ci.yml @@ -0,0 +1,93 @@ +name: Continuous Integration + +on: + - push + - pull_request + +jobs: + tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.1' + style-fix: 'none' + + - operating-system: 'ubuntu-latest' + php-version: '7.2' + style-fix: 'none' + + - operating-system: 'ubuntu-latest' + php-version: '7.3' + style-fix: 'none' + + - operating-system: 'ubuntu-latest' + php-version: '7.4' + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + + - operating-system: 'windows-latest' + php-version: '7.4' + job-description: 'on Windows' + + - operating-system: 'macos-latest' + php-version: '7.4' + job-description: 'on macOS' + + name: PHP ${{ matrix.php-version }} ${{ matrix.job-description }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: parallel + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + composer-${{ runner.os }}- + composer- + + - name: Remove php-cs-fixer if not needed + run: composer remove --dev --no-update amphp/php-cs-fixer-config + if: matrix.style-fix == 'none' + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run tests + run: vendor/bin/phpunit ${{ matrix.phpunit-flags }} + + - name: Run style fixer + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix + if: matrix.style-fix != 'none' + env: + PHP_CS_FIXER_IGNORE_ENV: 1 diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/docs/_config.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/docs/_config.yml new file mode 100644 index 0000000..cbdd980 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/docs/_config.yml @@ -0,0 +1,29 @@ +kramdown: + input: GFM + toc_levels: 2..3 + +baseurl: "/parallel" +layouts_dir: ".shared/layout" +includes_dir: ".shared/includes" + +exclude: ["Gemfile", "Gemfile.lock", "README.md", "vendor"] +safe: true + +repository: amphp/parallel +gems: + - "jekyll-github-metadata" + - "jekyll-relative-links" + +defaults: + - scope: + path: "" + type: "pages" + values: + layout: "docs" + +shared_asset_path: "/parallel/asset" + +navigation: + - processes + - workers + - worker-pool diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parser/.github/workflows/ci.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parser/.github/workflows/ci.yml new file mode 100644 index 0000000..e403a03 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/parser/.github/workflows/ci.yml @@ -0,0 +1,85 @@ +name: Continuous Integration + +on: + - push + - pull_request + +jobs: + tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.4' + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + + - operating-system: 'ubuntu-latest' + php-version: '8.1' + + - operating-system: 'windows-latest' + php-version: '8.1' + job-description: 'on Windows' + + - operating-system: 'macos-latest' + php-version: '8.1' + job-description: 'on macOS' + + - operating-system: 'ubuntu-latest' + php-version: '8.2' + + name: PHP ${{ matrix.php-version }} ${{ matrix.job-description }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + composer-${{ runner.os }}- + composer- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run tests + run: vendor/bin/phpunit ${{ matrix.phpunit-flags }} + + - name: Run static analysis + run: vendor/bin/psalm.phar + + - name: Run style fixer + env: + PHP_CS_FIXER_IGNORE_ENV: 1 + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix + if: runner.os != 'Windows' diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/process/.github/workflows/ci.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/process/.github/workflows/ci.yml new file mode 100644 index 0000000..1a54d3d --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/process/.github/workflows/ci.yml @@ -0,0 +1,135 @@ +name: Continuous Integration + +on: + push: null + pull_request: + branches: + - master + +jobs: + unit_tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.1' + + - operating-system: 'ubuntu-latest' + php-version: '7.2' + + - operating-system: 'ubuntu-latest' + php-version: '7.3' + + - operating-system: 'ubuntu-latest' + php-version: '7.4' + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + - operating-system: 'windows-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + - operating-system: 'macos-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + name: PHP ${{ matrix.php-version }} on ${{ matrix.operating-system }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Use LF line ends + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + php_version=$(php -v) + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run unit tests + run: vendor/bin/phpunit --verbose + + coding_standards: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + name: Coding standards + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Use LF line ends + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + php_version=$(php -v) + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run style fixer + env: + PHP_CS_FIXER_IGNORE_ENV: 1 + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix \ No newline at end of file diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/.github/workflows/ci.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/.github/workflows/ci.yml new file mode 100644 index 0000000..98120f5 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/.github/workflows/ci.yml @@ -0,0 +1,100 @@ +name: Continuous Integration + +on: + - push + - pull_request + +jobs: + tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.1' + composer-require-checker-version: none + + - operating-system: 'ubuntu-latest' + php-version: '7.2' + composer-require-checker-version: 2.1.0 + + - operating-system: 'ubuntu-latest' + php-version: '7.3' + composer-require-checker-version: 2.1.0 + + - operating-system: 'ubuntu-latest' + php-version: '7.4' + composer-require-checker-version: 3.3.0 + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + composer-require-checker-version: 3.3.0 + + - operating-system: 'windows-latest' + php-version: '7.4' + composer-require-checker-version: 3.3.0 + job-description: 'on Windows' + + - operating-system: 'macos-latest' + php-version: '7.4' + composer-require-checker-version: 3.3.0 + job-description: 'on macOS' + + name: PHP ${{ matrix.php-version }} ${{ matrix.job-description }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + composer-${{ runner.os }}- + composer- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run tests + run: vendor/bin/phpunit ${{ matrix.phpunit-flags }} + + - name: Run style fixer + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix + env: + PHP_CS_FIXER_IGNORE_ENV: 1 + + - name: Install composer-require-checker + run: php -r 'file_put_contents("composer-require-checker.phar", file_get_contents("https://github.com/maglnet/ComposerRequireChecker/releases/download/${{ matrix.composer-require-checker-version }}/composer-require-checker.phar"));' + if: runner.os != 'Windows' && matrix.composer-require-checker-version != 'none' + + - name: Run composer-require-checker + run: php composer-require-checker.phar check composer.json --config-file $PWD/composer-require-check.json + if: runner.os != 'Windows' && matrix.composer-require-checker-version != 'none' diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/docs/_config.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/docs/_config.yml new file mode 100644 index 0000000..d64bcc0 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/docs/_config.yml @@ -0,0 +1,29 @@ +kramdown: + input: GFM + toc_levels: 2..3 + +baseurl: "/sync" +layouts_dir: ".shared/layout" +includes_dir: ".shared/includes" + +exclude: ["Gemfile", "Gemfile.lock", "README.md", "vendor"] +safe: true + +repository: amphp/sync +gems: + - "jekyll-github-metadata" + - "jekyll-relative-links" + +defaults: + - scope: + path: "" + type: "pages" + values: + layout: "docs" + +shared_asset_path: "/sync/asset" + +navigation: + - mutex + - semaphore + - concurrent-iterator \ No newline at end of file diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/andrewdalpino/okbloomer/.github/FUNDING.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/andrewdalpino/okbloomer/.github/FUNDING.yml new file mode 100644 index 0000000..c6088e2 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/andrewdalpino/okbloomer/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [andrewdalpino] diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/andrewdalpino/okbloomer/.github/workflows/ci.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/andrewdalpino/okbloomer/.github/workflows/ci.yml new file mode 100644 index 0000000..baae0a4 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/andrewdalpino/okbloomer/.github/workflows/ci.yml @@ -0,0 +1,39 @@ +name: "Code Checks" + +on: [push, pull_request] + +jobs: + Build: + name: PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }} + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: [windows-latest, ubuntu-latest, macos-latest] + php-versions: ['7.4', '8.0', '8.1'] + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + tools: pecl + extensions: mbstring, fileinfo + ini-values: memory_limit=-1 + + - name: Validate composer.json + run: composer validate + + - name: Install Dependencies + run: composer install + + - name: Static Analysis + run: composer analyze + + - name: Unit Tests + run: composer test + + - name: Coding Style + run: composer check diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/bamarni/composer-bin-plugin/.github/workflows/phpstan.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/bamarni/composer-bin-plugin/.github/workflows/phpstan.yml new file mode 100644 index 0000000..ebb5767 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/bamarni/composer-bin-plugin/.github/workflows/phpstan.yml @@ -0,0 +1,35 @@ +name: "Static analysis" + +on: + push: + branches: + - "main" + - "master" + pull_request: null + +jobs: + static-analysis: + runs-on: "ubuntu-latest" + name: "PHPStan on PHP ${{ matrix.php }}" + strategy: + fail-fast: false + matrix: + php: + - "8.1" + steps: + - name: "Check out repository code" + uses: "actions/checkout@v2" + + - name: "Setup PHP" + uses: "shivammathur/setup-php@v2" + with: + php-version: "${{ matrix.php }}" + tools: "composer" + + - name: "Install Composer dependencies" + uses: "ramsey/composer-install@v2" + with: + dependency-versions: "highest" + + - name: "Perform static analysis" + run: "make phpstan" diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/FUNDING.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/FUNDING.yml new file mode 100644 index 0000000..c6088e2 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [andrewdalpino] diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/ci.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/ci.yml new file mode 100644 index 0000000..656e0a9 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/ci.yml @@ -0,0 +1,39 @@ +name: "Code Checks" + +on: [push, pull_request] + +jobs: + Build: + name: PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }} + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: [ubuntu-latest, macos-latest] + php-versions: ['8.0', '8.1', '8.2'] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + tools: composer, pecl + extensions: svm, mbstring, gd, fileinfo + ini-values: memory_limit=-1 + + - name: Validate composer.json + run: composer validate + + - name: Install Dependencies + run: composer install + + - name: Static Analysis + run: composer analyze + + - name: Unit Tests + run: composer test + + - name: Check Coding Style + run: composer check diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/cla.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/cla.yml new file mode 100644 index 0000000..aad75c5 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/cla.yml @@ -0,0 +1,25 @@ +name: "CLA Assistant" + +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened, closed, synchronize] + +jobs: + CLAssistant: + runs-on: ubuntu-latest + steps: + - name: "CLA Assistant" + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: cla-assistant/github-action@v2.1.3-beta + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN : ${{ secrets.CLA_BOT_TOKEN }} + with: + remote-organization-name: 'RubixML' + remote-repository-name: 'Signatures' + path-to-document: 'https://github.com/RubixML/Signatures/blob/master/CLA.md' + path-to-signatures: 'cla-v1.json' + branch: 'master' + allowlist: bot* diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/mkdocs.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/mkdocs.yml new file mode 100644 index 0000000..c038cd4 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/mkdocs.yml @@ -0,0 +1,335 @@ +site_name: 'Rubix ML' + +theme: + name: material + logo: images/app-icon-medium.png + favicon: images/app-icon-small.png + icon: + repo: fontawesome/brands/github + features: + - navigation.tabs + +nav: + - Home: https://rubixml.com + - Getting Started: + - Welcome: index.md + - What is Machine Learning?: what-is-machine-learning.md + - Installation: installation.md + - Basic Introduction: basic-introduction.md + - User Guide: + - Representing Your Data: representing-your-data.md + - Extracting Data: extracting-data.md + - Preprocessing: preprocessing.md + - Exploring Data: exploring-data.md + - Choosing an Estimator: choosing-an-estimator.md + - Training: training.md + - Inference: inference.md + - Cross-validation: cross-validation.md + - Hyper-parameter Tuning: hyper-parameter-tuning.md + - Model Ensembles: model-ensembles.md + - Model Persistence: model-persistence.md + - API Reference: + - Fundamental Interfaces: + - Estimator: estimator.md + - Learner: learner.md + - Online: online.md + - Parallel: parallel.md + - Persistable: persistable.md + - Probabilistic: probabilistic.md + - Ranks Features: ranks-features.md + - Scoring: scoring.md + - Verbose: verbose.md + - Extractors: + - API Reference: extractors/api.md + - Column Filter: extractors/column-filter.md + - Column Picker: extractors/column-picker.md + - Concatenator: extractors/concatenator.md + - CSV: extractors/csv.md + - Deduplicator: extractors/deduplicator.md + - NDJSON: extractors/ndjson.md + - SQL Table: extractors/sql-table.md + - Dataset Objects: + - API Reference: datasets/api.md + - Generators: + - API Reference: datasets/generators/api.md + - Agglomerate: datasets/generators/agglomerate.md + - Blob: datasets/generators/blob.md + - Circle: datasets/generators/circle.md + - Half Moon: datasets/generators/half-moon.md + - Hyperplane: datasets/generators/hyperplane.md + - Swiss Roll: datasets/generators/swiss-roll.md + - Labeled: datasets/labeled.md + - Unlabeled: datasets/unlabeled.md + - Classifiers: + - AdaBoost: classifiers/adaboost.md + - Classification Tree: classifiers/classification-tree.md + - Extra Tree Classifier: classifiers/extra-tree-classifier.md + - Gaussian Naive Bayes: classifiers/gaussian-naive-bayes.md + - K-d Neighbors: classifiers/kd-neighbors.md + - K Nearest Neighbors: classifiers/k-nearest-neighbors.md + - Logistic Regression: classifiers/logistic-regression.md + - Logit Boost: classifiers/logit-boost.md + - Multilayer Perceptron: classifiers/multilayer-perceptron.md + - Naive Bayes: classifiers/naive-bayes.md + - One Vs Rest: classifiers/one-vs-rest.md + - Radius Neighbors: classifiers/radius-neighbors.md + - Random Forest: classifiers/random-forest.md + - Softmax Classifier: classifiers/softmax-classifier.md + - SVC: classifiers/svc.md + - Regressors: + - Adaline: regressors/adaline.md + - Extra Tree Regressor: regressors/extra-tree-regressor.md + - Gradient Boost: regressors/gradient-boost.md + - K-d Neighbors Regressor: regressors/kd-neighbors-regressor.md + - KNN Regressor: regressors/knn-regressor.md + - MLP Regressor: regressors/mlp-regressor.md + - Radius Neighbors Regressor: regressors/radius-neighbors-regressor.md + - Regression Tree: regressors/regression-tree.md + - Ridge: regressors/ridge.md + - SVR: regressors/svr.md + - Clusterers: + - Seeders: + - K-MC2: clusterers/seeders/k-mc2.md + - Plus Plus: clusterers/seeders/plus-plus.md + - Preset: clusterers/seeders/preset.md + - Random: clusterers/seeders/random.md + - DBSCAN: clusterers/dbscan.md + - Fuzzy C Means: clusterers/fuzzy-c-means.md + - Gaussian Mixture: clusterers/gaussian-mixture.md + - K Means: clusterers/k-means.md + - Mean Shift: clusterers/mean-shift.md + - Anomaly Detectors: + - Gaussian MLE: anomaly-detectors/gaussian-mle.md + - Isolation Forest: anomaly-detectors/isolation-forest.md + - Loda: anomaly-detectors/loda.md + - Local Outlier Factor: anomaly-detectors/local-outlier-factor.md + - One Class SVM: anomaly-detectors/one-class-svm.md + - Robust Z-Score: anomaly-detectors/robust-z-score.md + - Meta Estimators: + - Bootstrap Aggregator: bootstrap-aggregator.md + - Committee Machine: committee-machine.md + - Grid Search: grid-search.md + - Persistent Model: persistent-model.md + - Pipeline: pipeline.md + - Transformers: + - API Reference: transformers/api.md + - Standardization and Normalization: + - L1 Normalizer: transformers/l1-normalizer.md + - L2 Normalizer: transformers/l2-normalizer.md + - Max Absolute Scaler: transformers/max-absolute-scaler.md + - Min Max Normalizer: transformers/min-max-normalizer.md + - Robust Standardizer: transformers/robust-standardizer.md + - Z Scale Standardizer: transformers/z-scale-standardizer.md + - Dimensionality Reduction: + - Gaussian Random Projector: transformers/gaussian-random-projector.md + - Linear Discriminant Analysis: transformers/linear-discriminant-analysis.md + - Principal Component Analysis: transformers/principal-component-analysis.md + - Sparse Random Projector: transformers/sparse-random-projector.md + - Truncated SVD: transformers/truncated-svd.md + - t-SNE: transformers/t-sne.md + - Feature Conversion: + - Interval Discretizer: transformers/interval-discretizer.md + - One Hot Encoder: transformers/one-hot-encoder.md + - Numeric String Converter: transformers/numeric-string-converter.md + - Boolean Converter: transformers/boolean-converter.md + - Feature Expansion: + - Polynomial Expander: transformers/polynomial-expander.md + - Imputation: + - Hot Deck Imputer: transformers/hot-deck-imputer.md + - KNN Imputer: transformers/knn-imputer.md + - Missing Data Imputer: transformers/missing-data-imputer.md + - Natural Language: + - BM25 Transformer: transformers/bm25-transformer.md + - Regex Filter: transformers/regex-filter.md + - Text Normalizer: transformers/text-normalizer.md + - Multibyte Text Normalizer: transformers/multibyte-text-normalizer.md + - Stop Word Filter: transformers/stop-word-filter.md + - TF-IDF Transformer: transformers/tf-idf-transformer.md + - Token Hashing Vectorizer: transformers/token-hashing-vectorizer.md + - Word Count Vectorizer: transformers/word-count-vectorizer.md + - Images: + - Image Resizer: transformers/image-resizer.md + - Image Rotator: transformers/image-rotator.md + - Image Vectorizer: transformers/image-vectorizer.md + - Other: + - Lambda Function: transformers/lambda-function.md + - Neural Network: + - Hidden Layers: + - Activation: neural-network/hidden-layers/activation.md + - Batch Norm: neural-network/hidden-layers/batch-norm.md + - Dense: neural-network/hidden-layers/dense.md + - Dropout: neural-network/hidden-layers/dropout.md + - Noise: neural-network/hidden-layers/noise.md + - PReLU: neural-network/hidden-layers/prelu.md + - Swish: neural-network/hidden-layers/swish.md + - Activation Functions: + - ELU: neural-network/activation-functions/elu.md + - GELU: neural-network/activation-functions/gelu.md + - Hyperbolic Tangent: neural-network/activation-functions/hyperbolic-tangent.md + - Leaky ReLU: neural-network/activation-functions/leaky-relu.md + - ReLU: neural-network/activation-functions/relu.md + - SELU: neural-network/activation-functions/selu.md + - Sigmoid: neural-network/activation-functions/sigmoid.md + - Softmax: neural-network/activation-functions/softmax.md + - Soft Plus: neural-network/activation-functions/soft-plus.md + - Soft Sign: neural-network/activation-functions/softsign.md + - SiLU: neural-network/activation-functions/silu.md + - Thresholded ReLU: neural-network/activation-functions/thresholded-relu.md + - Cost Functions: + - Cross Entropy: neural-network/cost-functions/cross-entropy.md + - Huber Loss: neural-network/cost-functions/huber-loss.md + - Least Squares: neural-network/cost-functions/least-squares.md + - Relative Entropy: neural-network/cost-functions/relative-entropy.md + - Initializers: + - Constant: neural-network/initializers/constant.md + - He: neural-network/initializers/he.md + - LeCun: neural-network/initializers/lecun.md + - Normal: neural-network/initializers/normal.md + - Uniform: neural-network/initializers/uniform.md + - Xavier 1: neural-network/initializers/xavier-1.md + - Xavier 2: neural-network/initializers/xavier-2.md + - Optimizers: + - AdaGrad: neural-network/optimizers/adagrad.md + - Adam: neural-network/optimizers/adam.md + - AdaMax: neural-network/optimizers/adamax.md + - Cyclical: neural-network/optimizers/cyclical.md + - Momentum: neural-network/optimizers/momentum.md + - RMS Prop: neural-network/optimizers/rms-prop.md + - Step Decay: neural-network/optimizers/step-decay.md + - Stochastic: neural-network/optimizers/stochastic.md + - Graph: + - Trees: + - Ball Tree: graph/trees/ball-tree.md + - K-d Tree: graph/trees/k-d-tree.md + - Vantage Tree: graph/trees/vantage-tree.md + - Kernels: + - Distance: + - Canberra: kernels/distance/canberra.md + - Cosine: kernels/distance/cosine.md + - Diagonal: kernels/distance/diagonal.md + - Euclidean: kernels/distance/euclidean.md + - Gower: kernels/distance/gower.md + - Hamming: kernels/distance/hamming.md + - Jaccard: kernels/distance/jaccard.md + - Manhattan: kernels/distance/manhattan.md + - Minkowski: kernels/distance/minkowski.md + - Safe Euclidean: kernels/distance/safe-euclidean.md + - Sparse Cosine: kernels/distance/sparse-cosine.md + - SVM: + - Linear: kernels/svm/linear.md + - Polynomial: kernels/svm/polynomial.md + - RBF: kernels/svm/rbf.md + - Sigmoidal: kernels/svm/sigmoidal.md + - Cross Validation: + - Metrics: + - API Reference: cross-validation/metrics/api.md + - Accuracy: cross-validation/metrics/accuracy.md + - Brier Score: cross-validation/metrics/brier-score.md + - F Beta: cross-validation/metrics/f-beta.md + - Informedness: cross-validation/metrics/informedness.md + - MCC: cross-validation/metrics/mcc.md + - Mean Absolute Error: cross-validation/metrics/mean-absolute-error.md + - Mean Squared Error: cross-validation/metrics/mean-squared-error.md + - Median Absolute Error: cross-validation/metrics/median-absolute-error.md + - Probabilistic Accuracy: cross-validation/metrics/probabilistic-accuracy.md + - RMSE: cross-validation/metrics/rmse.md + - R Squared: cross-validation/metrics/r-squared.md + - SMAPE: cross-validation/metrics/smape.md + - Completeness: cross-validation/metrics/completeness.md + - Homogeneity: cross-validation/metrics/homogeneity.md + - Rand Index: cross-validation/metrics/rand-index.md + - Top K Accuracy: cross-validation/metrics/top-k-accuracy.md + - V Measure: cross-validation/metrics/v-measure.md + - Reports: + - API Reference: cross-validation/reports/api.md + - Aggregate Report: cross-validation/reports/aggregate-report.md + - Confusion Matrix: cross-validation/reports/confusion-matrix.md + - Contingency Table: cross-validation/reports/contingency-table.md + - Error Analysis: cross-validation/reports/error-analysis.md + - Multiclass Breakdown: cross-validation/reports/multiclass-breakdown.md + - Validators: + - API Reference: cross-validation/api.md + - Hold Out: cross-validation/hold-out.md + - K Fold: cross-validation/k-fold.md + - Leave P Out: cross-validation/leave-p-out.md + - Monte Carlo: cross-validation/monte-carlo.md + - Tokenizers: + - K-Skip-N-Gram: tokenizers/k-skip-n-gram.md + - N-Gram: tokenizers/n-gram.md + - Sentence: tokenizers/sentence.md + - Whitespace: tokenizers/whitespace.md + - Word: tokenizers/word.md + - Word Stemmer: tokenizers/word-stemmer.md + - Persisters: + - API Reference: persisters/api.md + - Filesystem: persisters/filesystem.md + - Serializers: + - API Reference: serializers/api.md + - Gzip Native: serializers/gzip-native.md + - Native: serializers/native.md + - RBX: serializers/rbx.md + - Loggers: + - Screen: loggers/screen.md + - Backends: + - Amp: backends/amp.md + - Serial: backends/serial.md + - Helpers: + - Params: helpers/params.md + - Strategies: + - Constant: strategies/constant.md + - K Most Frequent: strategies/k-most-frequent.md + - Mean: strategies/mean.md + - Percentile: strategies/percentile.md + - Prior: strategies/prior.md + - Wild Guess: strategies/wild-guess.md + - FAQ: faq.md + +extra: + version: + provider: mike + analytics: + provider: google + property: UA-136137674-1 + social: + - icon: fontawesome/brands/github + link: https://github.com/RubixML + - icon: fontawesome/brands/telegram + link: https://t.me/RubixML + +use_directory_urls: false + +plugins: + - search + - git-revision-date-localized: + type: date + enable_creation_date: true + +markdown_extensions: + - attr_list + - abbr + - admonition + - pymdownx.highlight: + extend_pygments_lang: + - name: php + lang: php + options: + startinline: true + - pymdownx.superfences + - pymdownx.arithmatex: + generic: true + - toc: + permalink: "#" + - footnotes + +extra_javascript: + - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js + - js/custom.js + +extra_css: + - css/custom.css + +repo_url: https://github.com/RubixML/ML +site_url: https://rubixml.com +site_description: 'A high-level machine learning and deep learning library for the PHP language.' + +copyright: '© 2022 The Rubix ML Community' diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/FUNDING.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/FUNDING.yml new file mode 100644 index 0000000..c6088e2 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [andrewdalpino] diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci-ext.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci-ext.yml new file mode 100644 index 0000000..17b1787 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci-ext.yml @@ -0,0 +1,93 @@ +name: Compile extension + +on: + pull_request: + paths: + - ".github/workflows/ci-ext.*" + - "ext/**" + - package.xml + push: + branches: + - "**" + paths: + - ".github/workflows/ci-ext.*" + - "ext/**" + - package.xml + tags-ignore: + - "**" + +jobs: + compile: + strategy: + matrix: + image: + - php:7.4-cli + - php:7.4-cli-alpine + - php:8.0-cli + - php:8.0-cli-alpine + - php:8.1-cli + - php:8.1-cli-alpine + - php:8.2-cli + - php:8.2-cli-alpine + + name: Image ${{ matrix.image }} + runs-on: ubuntu-latest + container: ${{ matrix.image }} + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install system dependencies (Alpine) + if: contains(matrix.image, 'alpine') + run: | + apk update + . /etc/os-release + case "$VERSION_ID" in + 3.11.* | 3.12.* | 3.13.* | 3.14.* | 3.15.* | 3.16.* | 3.17.*) + apk update && apk add $PHPIZE_DEPS lapack lapack-dev openblas-dev + if [ ! -e /usr/lib/liblapacke.so ]; then + # Fix for Alpine 3.15, 3.16 and 3.17 + ln -s /usr/lib/liblapacke.so.3 /usr/lib/liblapacke.so + fi + ;; + *) + apk add $PHPIZE_DEPS liblapack lapack-dev openblas-dev + ;; + esac + + - name: Install system dependencies (Debian) + if: ${{ !contains(matrix.image, 'alpine') }} + run: | + apt-get update -q + apt-get install -qy gfortran liblapack-dev libopenblas-dev liblapacke-dev + + - name: Create working directory + run: | + rm -rf /tmp/tensor-package + mkdir /tmp/tensor-package + + - name: Create PECL package + run: | + cd /tmp/tensor-package + pecl package "$GITHUB_WORKSPACE/package.xml" + + - name: Compile PECL package + run: | + cd /tmp/tensor-package + MAKE="make -j$(nproc)" pecl install tensor-*.tgz + + - name: Enable PHP extension + run: docker-php-ext-enable tensor + + - name: Check for PHP startup warnings + run: | + php -d display_errors=stderr -d display_startup_errors=1 -d error_reporting=-1 -r ';' 2>/tmp/php-startup-warnings + if [ -s /tmp/php-startup-warnings ]; then + echo 'The PHP extension was successfully installed, but PHP raised these warnings:' >&2 + cat /tmp/php-startup-warnings >&2 + exit 1 + fi + echo "PHP didn't raise any warnings at startup." + + - name: Inspect PHP extension + run: php --ri tensor diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci.yml new file mode 100644 index 0000000..88f745e --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci.yml @@ -0,0 +1,39 @@ +name: "Code Checks" + +on: [push, pull_request] + +jobs: + build: + name: PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }} + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: [windows-latest, ubuntu-latest, macos-latest] + php-versions: ['7.4', '8.0', '8.1', '8.2'] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + tools: pecl + extensions: fileinfo + ini-values: memory_limit=-1 + + - name: Validate composer.json + run: composer validate + + - name: Install Dependencies + run: composer install + + - name: Static Analysis + run: composer analyze + + - name: Run Unit Tests + run: composer test + + - name: Check Coding Style + run: composer check diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/cla.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/cla.yml new file mode 100644 index 0000000..1a31a19 --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/cla.yml @@ -0,0 +1,26 @@ +name: "CLA Assistant" + +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened, closed, synchronize] + +jobs: + CLAssistant: + runs-on: ubuntu-latest + steps: + - name: "CLA Assistant" + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: cla-assistant/github-action@v2.1.3-beta + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN : ${{ secrets.CLA_BOT_TOKEN }} + with: + remote-organization-name: 'RubixML' + remote-repository-name: 'Signatures' + path-to-document: 'https://github.com/RubixML/Signatures/blob/master/CLA.md' + path-to-signatures: 'cla-v1.json' + branch: 'master' + allowlist: bot* + \ No newline at end of file diff --git a/docker-compose/nextcloud/html/apps/suspicious_login/vendor/wamania/php-stemmer/.github/workflows/tests.yml b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/wamania/php-stemmer/.github/workflows/tests.yml new file mode 100644 index 0000000..102896f --- /dev/null +++ b/docker-compose/nextcloud/html/apps/suspicious_login/vendor/wamania/php-stemmer/.github/workflows/tests.yml @@ -0,0 +1,42 @@ +name: tests + +on: + pull_request: + push: + branches: [master] + +jobs: + tests: + runs-on: ubuntu-latest + + strategy: + fail-fast: true + matrix: + php: [7.3, 7.4, 8.0, 8.1, 8.2, 8.3] + stability: [prefer-lowest, prefer-stable] + + name: PHP ${{ matrix.php }} - ${{ matrix.stability }} + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: composer:v2 + coverage: none + + - name: Install dependencies + uses: nick-fields/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + command: composer update --${{ matrix.stability }} --prefer-dist --no-interaction --no-progress + + - name: Copy PHP Unit Settings + run: cp phpunit.xml.dist phpunit.xml + + - name: Execute tests + run: vendor/bin/phpunit --verbose diff --git a/docker-compose/nextcloud/html/apps/twofactor_totp/vendor/rullzer/easytotp/.travis.yml b/docker-compose/nextcloud/html/apps/twofactor_totp/vendor/rullzer/easytotp/.travis.yml new file mode 100644 index 0000000..970adcd --- /dev/null +++ b/docker-compose/nextcloud/html/apps/twofactor_totp/vendor/rullzer/easytotp/.travis.yml @@ -0,0 +1,15 @@ +language: php +php: + - 7.1 + - 7.2 + - 7.3 + +cache: + directories: + - "$HOME/.composer/cache/files" + +before_install: + - php --info + - composer self-update + - composer install + diff --git a/docker-compose/productivity.yml b/docker-compose/productivity.yml index a8aaecf..8bb52a2 100644 --- a/docker-compose/productivity.yml +++ b/docker-compose/productivity.yml @@ -246,6 +246,8 @@ services: - "traefik.http.routers.bookstack.tls.certresolver=letsencrypt" - "traefik.http.routers.bookstack.middlewares=authelia@docker" - "traefik.http.services.bookstack.loadbalancer.server.port=80" + - "x-dockge.url=https://bookstack.${DOMAIN}" + - "x-dockge.url=https://bookstack.${DOMAIN}" bookstack-db: image: mariadb:10.11 diff --git a/docker-compose/productivity/$(basename .yml)/config/dokuwiki/lib/plugins/styling/.travis.yml b/docker-compose/productivity/$(basename .yml)/config/dokuwiki/lib/plugins/styling/.travis.yml new file mode 100644 index 0000000..75ee0b1 --- /dev/null +++ b/docker-compose/productivity/$(basename .yml)/config/dokuwiki/lib/plugins/styling/.travis.yml @@ -0,0 +1,13 @@ +# Config file for travis-ci.org + +language: php +php: + - "5.5" + - "5.4" + - "5.3" +env: + - DOKUWIKI=master + - DOKUWIKI=stable +before_install: wget https://raw.github.com/splitbrain/dokuwiki-travis/master/travis.sh +install: sh travis.sh +script: cd _test && phpunit --stderr --group plugin_styling diff --git a/docker-compose/productivity/docker-compose.yml b/docker-compose/productivity/docker-compose.yml index 04ea6e0..307a5e7 100644 --- a/docker-compose/productivity/docker-compose.yml +++ b/docker-compose/productivity/docker-compose.yml @@ -264,6 +264,8 @@ services: - "traefik.http.routers.bookstack.tls.certresolver=letsencrypt" - "traefik.http.routers.bookstack.middlewares=authelia@docker" - "traefik.http.services.bookstack.loadbalancer.server.port=80" + - "x-dockge.url=https://bookstack.${DOMAIN}" + - "x-dockge.url=https://bookstack.${DOMAIN}" bookstack-db: image: mariadb:10.11 diff --git a/docker-compose/productivity/dokuwiki/config/dokuwiki/lib/plugins/styling/.travis.yml b/docker-compose/productivity/dokuwiki/config/dokuwiki/lib/plugins/styling/.travis.yml new file mode 100644 index 0000000..75ee0b1 --- /dev/null +++ b/docker-compose/productivity/dokuwiki/config/dokuwiki/lib/plugins/styling/.travis.yml @@ -0,0 +1,13 @@ +# Config file for travis-ci.org + +language: php +php: + - "5.5" + - "5.4" + - "5.3" +env: + - DOKUWIKI=master + - DOKUWIKI=stable +before_install: wget https://raw.github.com/splitbrain/dokuwiki-travis/master/travis.sh +install: sh travis.sh +script: cd _test && phpunit --stderr --group plugin_styling diff --git a/docker-compose/productivity/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.github/workflows/tests.yml b/docker-compose/productivity/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.github/workflows/tests.yml new file mode 100644 index 0000000..aecd6c9 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.github/workflows/tests.yml @@ -0,0 +1,38 @@ +name: Tests + +on: + push: + pull_request: + +jobs: + tests: + name: PHP ${{ matrix.php }} + runs-on: ubuntu-22.04 + + strategy: + matrix: + php: ['7.3', '7.4', '8.0', '8.1', '8.2'] + + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: composer:v2 + coverage: none + + - name: Setup Problem Matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" + + - name: Install PHP Dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + command: composer update --no-interaction --no-progress + + - name: Execute PHPUnit + run: vendor/bin/phpunit diff --git a/docker-compose/productivity/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.styleci.yml b/docker-compose/productivity/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.styleci.yml new file mode 100644 index 0000000..247a09c --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/photos/vendor/hexogen/kdtree/.styleci.yml @@ -0,0 +1 @@ +preset: psr2 diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/byte-stream/.github/workflows/ci.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/byte-stream/.github/workflows/ci.yml new file mode 100644 index 0000000..b725757 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/byte-stream/.github/workflows/ci.yml @@ -0,0 +1,135 @@ +name: Continuous Integration + +on: + push: null + pull_request: + branches: + - master + +jobs: + unit_tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.1' + + - operating-system: 'ubuntu-latest' + php-version: '7.2' + + - operating-system: 'ubuntu-latest' + php-version: '7.3' + + - operating-system: 'ubuntu-latest' + php-version: '7.4' + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + - operating-system: 'windows-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + - operating-system: 'macos-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + name: PHP ${{ matrix.php-version }} on ${{ matrix.operating-system }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Use LF line ends + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + php_version=$(php -v) + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run unit tests + run: vendor/bin/phpunit --verbose + + coding_standards: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + name: Coding standards + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Use LF line ends + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + php_version=$(php -v) + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run style fixer + env: + PHP_CS_FIXER_IGNORE_ENV: 1 + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/.github/workflows/ci.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/.github/workflows/ci.yml new file mode 100644 index 0000000..be7ff06 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/.github/workflows/ci.yml @@ -0,0 +1,86 @@ +name: Continuous Integration + +on: + - push + - pull_request + +jobs: + tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.1' + + - operating-system: 'ubuntu-latest' + php-version: '7.2' + + - operating-system: 'ubuntu-latest' + php-version: '7.3' + + - operating-system: 'ubuntu-latest' + php-version: '7.4' + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + - operating-system: 'windows-latest' + php-version: '7.4' + job-description: 'on Windows' + + - operating-system: 'macos-latest' + php-version: '7.4' + job-description: 'on macOS' + + name: PHP ${{ matrix.php-version }} ${{ matrix.job-description }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: parallel + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + composer-${{ runner.os }}- + composer- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run tests + run: vendor/bin/phpunit ${{ matrix.phpunit-flags }} + + - name: Run style fixer + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix + env: + PHP_CS_FIXER_IGNORE_ENV: 1 diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/appveyor.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/appveyor.yml new file mode 100644 index 0000000..44fe893 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/appveyor.yml @@ -0,0 +1,41 @@ +build: false +shallow_clone: false + +platform: + - x86 + - x64 + +clone_folder: c:\projects\amphp + +cache: + - c:\tools\php73 -> appveyor.yml + +init: + - SET PATH=C:\Program Files\OpenSSL;c:\tools\php73;%PATH% + - SET COMPOSER_NO_INTERACTION=1 + - SET PHP=1 + - SET ANSICON=121x90 (121x90) + +install: + - IF EXIST c:\tools\php73 (SET PHP=0) + - IF %PHP%==1 sc config wuauserv start= auto + - IF %PHP%==1 net start wuauserv + - IF %PHP%==1 cinst -y OpenSSL.Light + - IF %PHP%==1 cinst -y php + - cd c:\tools\php73 + - IF %PHP%==1 copy php.ini-production php.ini /Y + - IF %PHP%==1 echo date.timezone="UTC" >> php.ini + - IF %PHP%==1 echo extension_dir=ext >> php.ini + - IF %PHP%==1 echo extension=php_openssl.dll >> php.ini + - IF %PHP%==1 echo extension=php_mbstring.dll >> php.ini + - IF %PHP%==1 echo extension=php_fileinfo.dll >> php.ini + - cd c:\projects\amphp + - appveyor DownloadFile https://getcomposer.org/composer.phar + - php composer.phar install --prefer-dist --no-progress + +test_script: + - cd c:\projects\amphp + - phpdbg -qrr vendor/phpunit/phpunit/phpunit --colors=always --coverage-text --coverage-clover build/logs/clover.xml + # Disable for now, because it can't be combined and files can't be shown on coveralls.io + # https://github.com/php-coveralls/php-coveralls/issues/234 + # - vendor/bin/coveralls -v diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/docs/_config.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/docs/_config.yml new file mode 100644 index 0000000..cbdd980 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parallel/docs/_config.yml @@ -0,0 +1,29 @@ +kramdown: + input: GFM + toc_levels: 2..3 + +baseurl: "/parallel" +layouts_dir: ".shared/layout" +includes_dir: ".shared/includes" + +exclude: ["Gemfile", "Gemfile.lock", "README.md", "vendor"] +safe: true + +repository: amphp/parallel +gems: + - "jekyll-github-metadata" + - "jekyll-relative-links" + +defaults: + - scope: + path: "" + type: "pages" + values: + layout: "docs" + +shared_asset_path: "/parallel/asset" + +navigation: + - processes + - workers + - worker-pool diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parser/.github/workflows/ci.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parser/.github/workflows/ci.yml new file mode 100644 index 0000000..e403a03 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/parser/.github/workflows/ci.yml @@ -0,0 +1,85 @@ +name: Continuous Integration + +on: + - push + - pull_request + +jobs: + tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.4' + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + + - operating-system: 'ubuntu-latest' + php-version: '8.1' + + - operating-system: 'windows-latest' + php-version: '8.1' + job-description: 'on Windows' + + - operating-system: 'macos-latest' + php-version: '8.1' + job-description: 'on macOS' + + - operating-system: 'ubuntu-latest' + php-version: '8.2' + + name: PHP ${{ matrix.php-version }} ${{ matrix.job-description }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + composer-${{ runner.os }}- + composer- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run tests + run: vendor/bin/phpunit ${{ matrix.phpunit-flags }} + + - name: Run static analysis + run: vendor/bin/psalm.phar + + - name: Run style fixer + env: + PHP_CS_FIXER_IGNORE_ENV: 1 + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix + if: runner.os != 'Windows' diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/process/.github/workflows/ci.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/process/.github/workflows/ci.yml new file mode 100644 index 0000000..6e34e86 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/process/.github/workflows/ci.yml @@ -0,0 +1,138 @@ +name: Continuous Integration + +on: + push: null + pull_request: + branches: + - master + +jobs: + unit_tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.0' + + - operating-system: 'ubuntu-latest' + php-version: '7.1' + + - operating-system: 'ubuntu-latest' + php-version: '7.2' + + - operating-system: 'ubuntu-latest' + php-version: '7.3' + + - operating-system: 'ubuntu-latest' + php-version: '7.4' + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + - operating-system: 'windows-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + - operating-system: 'macos-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + name: PHP ${{ matrix.php-version }} on ${{ matrix.operating-system }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Use LF line ends + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + php_version=$(php -v) + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run unit tests + run: vendor/bin/phpunit --verbose + + coding_standards: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + + name: Coding standards + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Use LF line ends + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + php_version=$(php -v) + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run style fixer + env: + PHP_CS_FIXER_IGNORE_ENV: 1 + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix \ No newline at end of file diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/.github/workflows/ci.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/.github/workflows/ci.yml new file mode 100644 index 0000000..98120f5 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/.github/workflows/ci.yml @@ -0,0 +1,100 @@ +name: Continuous Integration + +on: + - push + - pull_request + +jobs: + tests: + strategy: + matrix: + include: + - operating-system: 'ubuntu-latest' + php-version: '7.1' + composer-require-checker-version: none + + - operating-system: 'ubuntu-latest' + php-version: '7.2' + composer-require-checker-version: 2.1.0 + + - operating-system: 'ubuntu-latest' + php-version: '7.3' + composer-require-checker-version: 2.1.0 + + - operating-system: 'ubuntu-latest' + php-version: '7.4' + composer-require-checker-version: 3.3.0 + + - operating-system: 'ubuntu-latest' + php-version: '8.0' + composer-flags: '--ignore-platform-req=php' + composer-require-checker-version: 3.3.0 + + - operating-system: 'windows-latest' + php-version: '7.4' + composer-require-checker-version: 3.3.0 + job-description: 'on Windows' + + - operating-system: 'macos-latest' + php-version: '7.4' + composer-require-checker-version: 3.3.0 + job-description: 'on macOS' + + name: PHP ${{ matrix.php-version }} ${{ matrix.job-description }} + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Set git to use LF + run: | + git config --global core.autocrlf false + git config --global core.eol lf + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Get Composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-dir)" + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}-${{ matrix.composer-flags }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.*') }}- + composer-${{ runner.os }}-${{ matrix.php-version }}- + composer-${{ runner.os }}- + composer- + + - name: Install dependencies + uses: nick-invision/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 5 + retry_wait_seconds: 30 + command: | + composer update --optimize-autoloader --no-interaction --no-progress ${{ matrix.composer-flags }} + composer info -D + + - name: Run tests + run: vendor/bin/phpunit ${{ matrix.phpunit-flags }} + + - name: Run style fixer + run: vendor/bin/php-cs-fixer --diff --dry-run -v fix + env: + PHP_CS_FIXER_IGNORE_ENV: 1 + + - name: Install composer-require-checker + run: php -r 'file_put_contents("composer-require-checker.phar", file_get_contents("https://github.com/maglnet/ComposerRequireChecker/releases/download/${{ matrix.composer-require-checker-version }}/composer-require-checker.phar"));' + if: runner.os != 'Windows' && matrix.composer-require-checker-version != 'none' + + - name: Run composer-require-checker + run: php composer-require-checker.phar check composer.json --config-file $PWD/composer-require-check.json + if: runner.os != 'Windows' && matrix.composer-require-checker-version != 'none' diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/docs/_config.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/docs/_config.yml new file mode 100644 index 0000000..d64bcc0 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/amphp/sync/docs/_config.yml @@ -0,0 +1,29 @@ +kramdown: + input: GFM + toc_levels: 2..3 + +baseurl: "/sync" +layouts_dir: ".shared/layout" +includes_dir: ".shared/includes" + +exclude: ["Gemfile", "Gemfile.lock", "README.md", "vendor"] +safe: true + +repository: amphp/sync +gems: + - "jekyll-github-metadata" + - "jekyll-relative-links" + +defaults: + - scope: + path: "" + type: "pages" + values: + layout: "docs" + +shared_asset_path: "/sync/asset" + +navigation: + - mutex + - semaphore + - concurrent-iterator \ No newline at end of file diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/league/flysystem/docker-compose.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/league/flysystem/docker-compose.yml new file mode 100644 index 0000000..3ab6b77 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/league/flysystem/docker-compose.yml @@ -0,0 +1,58 @@ +--- +version: "3" +services: + webdav: + image: bytemark/webdav + restart: always + ports: + - "80:80" + environment: + AUTH_TYPE: Digest + USERNAME: alice + PASSWORD: secret1234 + sftp: + container_name: sftp + restart: always + image: atmoz/sftp + volumes: + - ./test_files/sftp/users.conf:/etc/sftp/users.conf + - ./test_files/sftp/ssh_host_ed25519_key:/etc/ssh/ssh_host_ed25519_key + - ./test_files/sftp/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key + - ./test_files/sftp/id_rsa.pub:/home/bar/.ssh/keys/id_rsa.pub + ports: + - "2222:22" + ftp: + container_name: ftp + restart: always + image: delfer/alpine-ftp-server + environment: + USERS: 'foo|pass|/home/foo/upload' + ADDRESS: 'localhost' + ports: + - "2121:21" + - "21000-21010:21000-21010" + ftpd: + container_name: ftpd + restart: always + environment: + PUBLICHOST: localhost + FTP_USER_NAME: foo + FTP_USER_PASS: pass + FTP_USER_HOME: /home/foo + image: stilliard/pure-ftpd + ports: + - "2122:21" + - "30000-30009:30000-30009" + command: "/run.sh -l puredb:/etc/pure-ftpd/pureftpd.pdb -E -j -P localhost" + toxiproxy: + container_name: toxiproxy + restart: unless-stopped + image: ghcr.io/shopify/toxiproxy + command: "-host 0.0.0.0 -config /opt/toxiproxy/config.json" + volumes: + - ./test_files/toxiproxy/toxiproxy.json:/opt/toxiproxy/config.json:ro + ports: + - "8474:8474" # HTTP API + - "8222:8222" # SFTP + - "8121:8121" # FTP + - "8122:8122" # FTPD diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/FUNDING.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/FUNDING.yml new file mode 100644 index 0000000..4ea1485 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [RubixML, andrewdalpino] diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/ci.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/ci.yml new file mode 100644 index 0000000..72c9716 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/ci.yml @@ -0,0 +1,39 @@ +name: "Code Checks" + +on: [push, pull_request] + +jobs: + Build: + name: PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }} + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: [windows-latest, ubuntu-latest, macos-latest] + php-versions: ['7.2', '7.3', '7.4'] + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + tools: pecl + extensions: svm, mbstring, redis, igbinary, gd, fileinfo + ini-values: memory_limit=-1 + + - name: Validate composer.json + run: composer validate + + - name: Install Dependencies + run: composer install + + - name: Static Analysis + run: composer analyze + + - name: Unit Tests + run: composer test + + - name: Coding Style + run: composer check diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/cla.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/cla.yml new file mode 100644 index 0000000..5206526 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/.github/workflows/cla.yml @@ -0,0 +1,25 @@ +name: "CLA Assistant" + +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened, closed, synchronize] + +jobs: + CLAssistant: + runs-on: ubuntu-latest + steps: + - name: "CLA Assistant" + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: cla-assistant/github-action@v2.0.2-alpha + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN : ${{ secrets.CLA_BOT_TOKEN }} + with: + remote-organization-name: 'RubixML' + remote-repository-name: 'Signatures' + path-to-document: 'https://github.com/RubixML/Signatures/blob/master/CLA.md' + path-to-signatures: 'cla-v1.json' + branch: 'master' + allowlist: bot* diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/mkdocs.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/mkdocs.yml new file mode 100644 index 0000000..5b6e6b3 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/ml/mkdocs.yml @@ -0,0 +1,331 @@ +site_name: 'Rubix ML' + +theme: + name: material + logo: images/app-icon-medium.png + favicon: images/app-icon-small.png + icon: + repo: fontawesome/brands/github + features: + - navigation.tabs + +nav: + - Home: https://rubixml.com + - Getting Started: + - Welcome: index.md + - What is Machine Learning?: what-is-machine-learning.md + - Installation: installation.md + - Basic Introduction: basic-introduction.md + - User Guide: + - Representing Your Data: representing-your-data.md + - Extracting Data: extracting-data.md + - Preprocessing: preprocessing.md + - Choosing an Estimator: choosing-an-estimator.md + - Training: training.md + - Inference: inference.md + - Cross-validation: cross-validation.md + - Hyper-parameter Tuning: hyper-parameter-tuning.md + - Model Persistence: model-persistence.md + - API Reference: + - Fundamental Interfaces: + - Estimator: estimator.md + - Learner: learner.md + - Online: online.md + - Parallel: parallel.md + - Persistable: persistable.md + - Probabilistic: probabilistic.md + - Ranks Features: ranks-features.md + - Scoring: scoring.md + - Verbose: verbose.md + - Wrapper: wrapper.md + - Extractors: + - API Reference: extractors/api.md + - Column Picker: extractors/column-picker.md + - CSV: extractors/csv.md + - JSON: extractors/json.md + - NDJSON: extractors/ndjson.md + - Dataset Objects: + - API Reference: datasets/api.md + - Generators: + - API Reference: datasets/generators/api.md + - Agglomerate: datasets/generators/agglomerate.md + - Blob: datasets/generators/blob.md + - Circle: datasets/generators/circle.md + - Half Moon: datasets/generators/half-moon.md + - Hyperplane: datasets/generators/hyperplane.md + - Swiss Roll: datasets/generators/swiss-roll.md + - Labeled: datasets/labeled.md + - Unlabeled: datasets/unlabeled.md + - Classifiers: + - AdaBoost: classifiers/adaboost.md + - Classification Tree: classifiers/classification-tree.md + - Dummy Classifier: classifiers/dummy-classifier.md + - Extra Tree Classifier: classifiers/extra-tree-classifier.md + - Gaussian Naive Bayes: classifiers/gaussian-naive-bayes.md + - K-d Neighbors: classifiers/kd-neighbors.md + - K Nearest Neighbors: classifiers/k-nearest-neighbors.md + - Logistic Regression: classifiers/logistic-regression.md + - Multilayer Perceptron: classifiers/multilayer-perceptron.md + - Naive Bayes: classifiers/naive-bayes.md + - Radius Neighbors: classifiers/radius-neighbors.md + - Random Forest: classifiers/random-forest.md + - Softmax Classifier: classifiers/softmax-classifier.md + - SVC: classifiers/svc.md + - Regressors: + - Adaline: regressors/adaline.md + - Dummy Regressor: regressors/dummy-regressor.md + - Extra Tree Regressor: regressors/extra-tree-regressor.md + - Gradient Boost: regressors/gradient-boost.md + - K-d Neighbors Regressor: regressors/kd-neighbors-regressor.md + - KNN Regressor: regressors/knn-regressor.md + - MLP Regressor: regressors/mlp-regressor.md + - Radius Neighbors Regressor: regressors/radius-neighbors-regressor.md + - Regression Tree: regressors/regression-tree.md + - Ridge: regressors/ridge.md + - SVR: regressors/svr.md + - Clusterers: + - Seeders: + - K-MC2: clusterers/seeders/k-mc2.md + - Plus Plus: clusterers/seeders/plus-plus.md + - Random: clusterers/seeders/random.md + - DBSCAN: clusterers/dbscan.md + - Fuzzy C Means: clusterers/fuzzy-c-means.md + - Gaussian Mixture: clusterers/gaussian-mixture.md + - K Means: clusterers/k-means.md + - Mean Shift: clusterers/mean-shift.md + - Anomaly Detectors: + - Gaussian MLE: anomaly-detectors/gaussian-mle.md + - Isolation Forest: anomaly-detectors/isolation-forest.md + - Loda: anomaly-detectors/loda.md + - Local Outlier Factor: anomaly-detectors/local-outlier-factor.md + - One Class SVM: anomaly-detectors/one-class-svm.md + - Robust Z-Score: anomaly-detectors/robust-z-score.md + - Meta Estimators: + - Bootstrap Aggregator: bootstrap-aggregator.md + - Committee Machine: committee-machine.md + - Grid Search: grid-search.md + - Persistent Model: persistent-model.md + - Pipeline: pipeline.md + - Embedders: + - API Reference: embedders/api.md + - t-SNE: embedders/t-sne.md + - Transformers: + - API Reference: transformers/api.md + - Standardization and Normalization: + - L1 Normalizer: transformers/l1-normalizer.md + - L2 Normalizer: transformers/l2-normalizer.md + - Max Absolute Scaler: transformers/max-absolute-scaler.md + - Min Max Normalizer: transformers/min-max-normalizer.md + - Robust Standardizer: transformers/robust-standardizer.md + - Z Scale Standardizer: transformers/z-scale-standardizer.md + - Dimensionality Reduction: + - Dense Random Projector: transformers/dense-random-projector.md + - Gaussian Random Projector: transformers/gaussian-random-projector.md + - Linear Discriminant Analysis: transformers/linear-discriminant-analysis.md + - Principal Component Analysis: transformers/principal-component-analysis.md + - Sparse Random Projector: transformers/sparse-random-projector.md + - Truncated SVD: transformers/truncated-svd.md + - Feature Conversion: + - Interval Discretizer: transformers/interval-discretizer.md + - One Hot Encoder: transformers/one-hot-encoder.md + - Numeric String Converter: transformers/numeric-string-converter.md + - Boolean Converter: transformers/boolean-converter.md + - Feature Selection: + - K Best Feature Selector: transformers/k-best-feature-selector.md + - Recursive Feature Eliminator: transformers/recursive-feature-eliminator.md + - Imputation: + - KNN Imputer: transformers/knn-imputer.md + - Missing Data Imputer: transformers/missing-data-imputer.md + - Random Hot Deck Imputer: transformers/random-hot-deck-imputer.md + - Image Transformers: + - Image Resizer: transformers/image-resizer.md + - Image Vectorizer: transformers/image-vectorizer.md + - Text Transformers: + - HTML Stripper: transformers/html-stripper.md + - Regex Filter: transformers/regex-filter.md + - Text Normalizer: transformers/text-normalizer.md + - Multibyte Text Normalizer: transformers/multibyte-text-normalizer.md + - Stop Word Filter: transformers/stop-word-filter.md + - TF-IDF Transformer: transformers/tf-idf-transformer.md + - Whitespace Trimmer: transformers/whitespace-trimmer.md + - Word Count Vectorizer: transformers/word-count-vectorizer.md + - Other: + - Polynomial Expander: transformers/polynomial-expander.md + - Neural Network: + - Hidden Layers: + - Activation: neural-network/hidden-layers/activation.md + - Batch Norm: neural-network/hidden-layers/batch-norm.md + - Dense: neural-network/hidden-layers/dense.md + - Dropout: neural-network/hidden-layers/dropout.md + - Noise: neural-network/hidden-layers/noise.md + - PReLU: neural-network/hidden-layers/prelu.md + - Activation Functions: + - ELU: neural-network/activation-functions/elu.md + - Hyperbolic Tangent: neural-network/activation-functions/hyperbolic-tangent.md + - Leaky ReLU: neural-network/activation-functions/leaky-relu.md + - ReLU: neural-network/activation-functions/relu.md + - SELU: neural-network/activation-functions/selu.md + - Sigmoid: neural-network/activation-functions/sigmoid.md + - Softmax: neural-network/activation-functions/softmax.md + - Soft Plus: neural-network/activation-functions/soft-plus.md + - Soft Sign: neural-network/activation-functions/softsign.md + - Thresholded ReLU: neural-network/activation-functions/thresholded-relu.md + - Cost Functions: + - Cross Entropy: neural-network/cost-functions/cross-entropy.md + - Huber Loss: neural-network/cost-functions/huber-loss.md + - Least Squares: neural-network/cost-functions/least-squares.md + - Relative Entropy: neural-network/cost-functions/relative-entropy.md + - Initializers: + - Constant: neural-network/initializers/constant.md + - He: neural-network/initializers/he.md + - LeCun: neural-network/initializers/lecun.md + - Normal: neural-network/initializers/normal.md + - Uniform: neural-network/initializers/uniform.md + - Xavier 1: neural-network/initializers/xavier-1.md + - Xavier 2: neural-network/initializers/xavier-2.md + - Optimizers: + - AdaGrad: neural-network/optimizers/adagrad.md + - Adam: neural-network/optimizers/adam.md + - AdaMax: neural-network/optimizers/adamax.md + - Cyclical: neural-network/optimizers/cyclical.md + - Momentum: neural-network/optimizers/momentum.md + - RMS Prop: neural-network/optimizers/rms-prop.md + - Step Decay: neural-network/optimizers/step-decay.md + - Stochastic: neural-network/optimizers/stochastic.md + - Graph: + - Trees: + - Ball Tree: graph/trees/ball-tree.md + - K-d Tree: graph/trees/k-d-tree.md + - Kernels: + - Distance: + - Canberra: kernels/distance/canberra.md + - Cosine: kernels/distance/cosine.md + - Diagonal: kernels/distance/diagonal.md + - Euclidean: kernels/distance/euclidean.md + - Hamming: kernels/distance/hamming.md + - Jaccard: kernels/distance/jaccard.md + - Manhattan: kernels/distance/manhattan.md + - Minkowski: kernels/distance/minkowski.md + - Safe Euclidean: kernels/distance/safe-euclidean.md + - SVM: + - Linear: kernels/svm/linear.md + - Polynomial: kernels/svm/polynomial.md + - RBF: kernels/svm/rbf.md + - Sigmoidal: kernels/svm/sigmoidal.md + - Cross Validation: + - Metrics: + - API Reference: cross-validation/metrics/api.md + - Accuracy: cross-validation/metrics/accuracy.md + - F Beta: cross-validation/metrics/f-beta.md + - Informedness: cross-validation/metrics/informedness.md + - MCC: cross-validation/metrics/mcc.md + - Mean Absolute Error: cross-validation/metrics/mean-absolute-error.md + - Mean Squared Error: cross-validation/metrics/mean-squared-error.md + - Median Absolute Error: cross-validation/metrics/median-absolute-error.md + - RMSE: cross-validation/metrics/rmse.md + - R Squared: cross-validation/metrics/r-squared.md + - SMAPE: cross-validation/metrics/smape.md + - Completeness: cross-validation/metrics/completeness.md + - Homogeneity: cross-validation/metrics/homogeneity.md + - Rand Index: cross-validation/metrics/rand-index.md + - V Measure: cross-validation/metrics/v-measure.md + - Reports: + - API Reference: cross-validation/reports/api.md + - Aggregate Report: cross-validation/reports/aggregate-report.md + - Confusion Matrix: cross-validation/reports/confusion-matrix.md + - Contingency Table: cross-validation/reports/contingency-table.md + - Error Analysis: cross-validation/reports/error-analysis.md + - Multiclass Breakdown: cross-validation/reports/multiclass-breakdown.md + - Validators: + - API Reference: cross-validation/api.md + - Hold Out: cross-validation/hold-out.md + - K Fold: cross-validation/k-fold.md + - Leave P Out: cross-validation/leave-p-out.md + - Monte Carlo: cross-validation/monte-carlo.md + - Persisters: + - API Reference: persisters/api.md + - Filesystem: persisters/filesystem.md + - Flysystem: persisters/flysystem.md + - Redis DB: persisters/redis-db.md + - Serializers: + - Gzip: persisters/serializers/gzip.md + - Igbinary: persisters/serializers/igbinary.md + - Native: persisters/serializers/native.md + - RBX: persisters/serializers/rbx.md + - Backends: + - Amp: backends/amp.md + - Serial: backends/serial.md + - Other: + - Helpers: + - Params: other/helpers/params.md + - Loggers: + - Screen: other/loggers/screen.md + - Strategies: + - Constant: other/strategies/constant.md + - K Most Frequent: other/strategies/k-most-frequent.md + - Mean: other/strategies/mean.md + - Percentile: other/strategies/percentile.md + - Prior: other/strategies/prior.md + - Wild Guess: other/strategies/wild-guess.md + - Tokenizers: + - K-Skip-N-Gram: other/tokenizers/k-skip-n-gram.md + - N-Gram: other/tokenizers/n-gram.md + - Sentence: other/tokenizers/sentence.md + - Skip Gram: other/tokenizers/skip-gram.md + - Whitespace: other/tokenizers/whitespace.md + - Word: other/tokenizers/word.md + - FAQ: faq.md + +extra: + version: + provider: mike + social: + - icon: fontawesome/brands/github + link: https://github.com/RubixML + - icon: fontawesome/brands/telegram + link: https://t.me/RubixML + - icon: fontawesome/brands/twitter + link: https://twitter.com/RubixML + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/groups/8952251/ + +use_directory_urls: false + +plugins: + - search + - git-revision-date + +markdown_extensions: + - attr_list + - abbr + - admonition + - pymdownx.highlight: + extend_pygments_lang: + - name: php + lang: php + options: + startinline: true + - pymdownx.superfences + - pymdownx.arithmatex: + generic: true + - toc: + permalink: "#" + - footnotes + +google_analytics: + - UA-136137674-1 + - auto + +extra_javascript: + - https://polyfill.io/v3/polyfill.min.js?features=es6 + - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js + - js/custom.js + +extra_css: + - css/custom.css + +repo_url: https://github.com/RubixML/ML +site_url: https://rubixml.com +site_description: 'A high-level machine learning and deep learning library for the PHP language.' + +copyright: '© 2021 Rubix ML' diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/FUNDING.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/FUNDING.yml new file mode 100644 index 0000000..4ea1485 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [RubixML, andrewdalpino] diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci-ext.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci-ext.yml new file mode 100644 index 0000000..947149c --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci-ext.yml @@ -0,0 +1,40 @@ +name: Compile extension + +on: + pull_request: + paths: + - ".github/workflows/ci-ext.*" + - "ext/**" + - package.xml + push: + branches: + - "**" + paths: + - ".github/workflows/ci-ext.*" + - "ext/**" + - package.xml + tags-ignore: + - "**" + +jobs: + compile: + strategy: + matrix: + image: + - php:7.2-cli + - php:7.2-cli-alpine + - php:7.3-cli + - php:7.3-cli-alpine + - php:7.4-cli + - php:7.4-cli-alpine + name: Image ${{ matrix.image }} + runs-on: ubuntu-latest + steps: + - name: Pull docker image + run: docker pull ${{ matrix.image }} + + - name: Checkout + uses: actions/checkout@v2 + + - name: Compile + run: docker run --rm -v "$GITHUB_WORKSPACE:/app" ${{ matrix.image }} /app/.github/workflows/ci-ext.sh diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci.yml new file mode 100644 index 0000000..4f8f122 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/ci.yml @@ -0,0 +1,37 @@ +name: "Code Checks" + +on: [push, pull_request] + +jobs: + build: + name: PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }} + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: [windows-latest, ubuntu-latest, macos-latest] + php-versions: ['7.2', '7.3', '7.4'] + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + ini-values: memory_limit=-1 + + - name: Validate composer.json + run: composer validate + + - name: Install Dependencies + run: composer install + + - name: Static Analysis + run: composer analyze + + - name: Run Unit Tests + run: composer test + + - name: Check Coding Style + run: composer check diff --git a/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/cla.yml b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/cla.yml new file mode 100644 index 0000000..5206526 --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/suspicious_login/vendor/rubix/tensor/.github/workflows/cla.yml @@ -0,0 +1,25 @@ +name: "CLA Assistant" + +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened, closed, synchronize] + +jobs: + CLAssistant: + runs-on: ubuntu-latest + steps: + - name: "CLA Assistant" + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: cla-assistant/github-action@v2.0.2-alpha + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN : ${{ secrets.CLA_BOT_TOKEN }} + with: + remote-organization-name: 'RubixML' + remote-repository-name: 'Signatures' + path-to-document: 'https://github.com/RubixML/Signatures/blob/master/CLA.md' + path-to-signatures: 'cla-v1.json' + branch: 'master' + allowlist: bot* diff --git a/docker-compose/productivity/nextcloud/html/apps/twofactor_totp/vendor/rullzer/easytotp/.travis.yml b/docker-compose/productivity/nextcloud/html/apps/twofactor_totp/vendor/rullzer/easytotp/.travis.yml new file mode 100644 index 0000000..970adcd --- /dev/null +++ b/docker-compose/productivity/nextcloud/html/apps/twofactor_totp/vendor/rullzer/easytotp/.travis.yml @@ -0,0 +1,15 @@ +language: php +php: + - 7.1 + - 7.2 + - 7.3 + +cache: + directories: + - "$HOME/.composer/cache/files" + +before_install: + - php --info + - composer self-update + - composer install + diff --git a/docker-compose/utilities.yml b/docker-compose/utilities.yml index 49595a2..90a7737 100644 --- a/docker-compose/utilities.yml +++ b/docker-compose/utilities.yml @@ -36,6 +36,8 @@ services: - "traefik.http.routers.backrest.tls.certresolver=letsencrypt" - "traefik.http.routers.backrest.middlewares=authelia@docker" - "traefik.http.services.backrest.loadbalancer.server.port=9898" + - "x-dockge.url=https://backrest.${DOMAIN}" + - "x-dockge.url=https://backrest.${DOMAIN}" # Duplicati - Backup solution # Access at: https://duplicati.${DOMAIN} diff --git a/docker-compose/utilities/docker-compose.yml b/docker-compose/utilities/docker-compose.yml index 286833e..3afdc43 100644 --- a/docker-compose/utilities/docker-compose.yml +++ b/docker-compose/utilities/docker-compose.yml @@ -42,6 +42,8 @@ services: - traefik.http.routers.backrest.tls.certresolver=letsencrypt - traefik.http.routers.backrest.middlewares=authelia@docker - traefik.http.services.backrest.loadbalancer.server.port=9898 + - "x-dockge.url=https://backrest.${DOMAIN}" + - "x-dockge.url=https://backrest.${DOMAIN}" # Duplicati - Backup solution # Access at: https://duplicati.${DOMAIN} duplicati: