Standardize labels across remaining stacks - Part 1
- Updated core services (traefik, authelia, sablier) with standardized labels - Updated monitoring services (prometheus, grafana, cadvisor, uptime-kuma, loki) - Updated utilities services (duplicati, formio, vaultwarden) - Updated media management services (sonarr, radarr, prowlarr) - Updated homeassistant services (esphome) - Added proper TRAEFIK CONFIGURATION headers and comments - Maintained service-specific configurations (authelia middleware, vaultwarden SSO disabled)
This commit is contained in:
@@ -20,12 +20,17 @@ services:
|
||||
networks:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "9000:9000"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer-data:/data
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=alternatives"
|
||||
- "homelab.description=Docker container management UI (Alternative to Dockge)"
|
||||
- "traefik.enable=true"
|
||||
@@ -48,6 +53,8 @@ services:
|
||||
networks:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "9000:9000"
|
||||
volumes:
|
||||
- /opt/stacks/authentik/media:/media
|
||||
- /opt/stacks/authentik/custom-templates:/templates
|
||||
@@ -60,6 +67,9 @@ services:
|
||||
- AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY}
|
||||
- AUTHENTIK_ERROR_REPORTING__ENABLED=false
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=alternatives"
|
||||
- "homelab.description=SSO/Identity provider with web UI (Alternative to Authelia)"
|
||||
- "traefik.enable=true"
|
||||
@@ -94,6 +104,9 @@ services:
|
||||
- AUTHENTIK_SECRET_KEY=${AUTHENTIK_SECRET_KEY}
|
||||
- AUTHENTIK_ERROR_REPORTING__ENABLED=false
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=alternatives"
|
||||
- "homelab.description=Authentik background worker"
|
||||
depends_on:
|
||||
@@ -115,6 +128,9 @@ services:
|
||||
- POSTGRES_PASSWORD=${AUTHENTIK_DB_PASSWORD}
|
||||
- POSTGRES_DB=${AUTHENTIK_DB_NAME:-authentik}
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=alternatives"
|
||||
- "homelab.description=Authentik database"
|
||||
healthcheck:
|
||||
@@ -135,6 +151,9 @@ services:
|
||||
- authentik-redis-data:/data
|
||||
command: --save 60 1 --loglevel warning
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=alternatives"
|
||||
- "homelab.description=Authentik cache and messaging"
|
||||
healthcheck:
|
||||
@@ -155,6 +174,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "32400:32400"
|
||||
volumes:
|
||||
- ./plex/config:/config
|
||||
- /mnt/media:/media:ro # Large media files on separate drive
|
||||
@@ -183,6 +204,9 @@ services:
|
||||
# - NVIDIA_VISIBLE_DEVICES=all
|
||||
# - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=alternatives"
|
||||
- "homelab.description=Alternative media streaming server to Jellyfin"
|
||||
# Traefik labels - NO Authelia for app access
|
||||
|
||||
@@ -53,15 +53,20 @@ services:
|
||||
networks:
|
||||
- traefik-network
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=core"
|
||||
- "homelab.description=Reverse proxy and SSL termination"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.traefik.rule=Host(`traefik.${DOMAIN}`)"
|
||||
- "traefik.http.routers.traefik.entrypoints=websecure"
|
||||
- "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.traefik.middlewares=authelia@docker"
|
||||
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
|
||||
- "homelab.category=dashboards"
|
||||
- "homelab.description=Personal dashboard and service overview"
|
||||
- "x-dockge.url=https://traefik.${DOMAIN}"
|
||||
|
||||
authelia:
|
||||
# Single sign-on authentication service - must always run for user authentication
|
||||
@@ -70,6 +75,8 @@ services:
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
ports:
|
||||
- "9091:9091"
|
||||
volumes:
|
||||
- ./authelia/config:/config
|
||||
- ./authelia/secrets:/secrets
|
||||
@@ -78,16 +85,24 @@ services:
|
||||
depends_on:
|
||||
- traefik
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.authelia.rule=Host(`auth.${DOMAIN}`)
|
||||
- traefik.http.routers.authelia.entrypoints=websecure
|
||||
- traefik.http.routers.authelia.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.authelia.service=authelia
|
||||
- traefik.http.services.authelia.loadbalancer.server.port=9091
|
||||
- traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.${DOMAIN}/
|
||||
- traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=X-Secret
|
||||
- traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true
|
||||
- x-dockge.url=https://auth.${DOMAIN}
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=core"
|
||||
- "homelab.description=Single sign-on authentication"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.authelia.rule=Host(`auth.${DOMAIN}`)"
|
||||
- "traefik.http.routers.authelia.entrypoints=websecure"
|
||||
- "traefik.http.routers.authelia.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.authelia.service=authelia"
|
||||
- "traefik.http.services.authelia.loadbalancer.server.port=9091"
|
||||
# Authelia forward auth middleware configuration
|
||||
- "traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.${DOMAIN}/"
|
||||
- "traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=X-Secret"
|
||||
- "traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true"
|
||||
|
||||
# Sablier - Lazy loading service for Docker containers
|
||||
# Controls startup/shutdown of lazy-loaded services, must always run
|
||||
@@ -106,8 +121,9 @@ services:
|
||||
ports:
|
||||
- 10000:10000
|
||||
labels:
|
||||
- homelab.category=infrastructure
|
||||
- homelab.description=Lazy loading service for Docker containers
|
||||
# Service metadata
|
||||
- "homelab.category=core"
|
||||
- "homelab.description=Lazy loading service for Docker containers"
|
||||
|
||||
networks:
|
||||
traefik-network:
|
||||
|
||||
@@ -36,6 +36,7 @@ services:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /opt/stacks:/opt/stacks # Dockge manages stacks in this directory
|
||||
- ./data:/app/data
|
||||
- /usr/bin/docker:/usr/bin/docker:ro # Mount docker binary for CLI access
|
||||
environment:
|
||||
- DOCKGE_STACKS_DIR=/opt/stacks
|
||||
- DOCKGE_ENABLE_CONSOLE=true
|
||||
|
||||
@@ -57,6 +57,8 @@ services:
|
||||
networks:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "6052:6052"
|
||||
volumes:
|
||||
- ./esphome/config:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
@@ -65,15 +67,20 @@ services:
|
||||
- ESPHOME_DASHBOARD_USE_PING=true
|
||||
privileged: true # For USB device access
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=iot"
|
||||
- "homelab.description=ESP8266/ESP32 firmware manager"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "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}
|
||||
@@ -84,6 +91,8 @@ services:
|
||||
networks:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- /opt/stacks/tasmoadmin/data:/data
|
||||
environment:
|
||||
@@ -142,6 +151,8 @@ services:
|
||||
networks:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "1880:1880"
|
||||
volumes:
|
||||
- /opt/stacks/nodered/data:/data
|
||||
environment:
|
||||
|
||||
99
docker-compose/infrastructure/code-server/config/.bashrc
Normal file
99
docker-compose/infrastructure/code-server/config/.bashrc
Normal file
@@ -0,0 +1,99 @@
|
||||
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
||||
# for examples
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
[ -z "$PS1" ] && return
|
||||
|
||||
# don't put duplicate lines in the history. See bash(1) for more options
|
||||
# ... or force ignoredups and ignorespace
|
||||
HISTCONTROL=ignoredups:ignorespace
|
||||
|
||||
# append to the history file, don't overwrite it
|
||||
shopt -s histappend
|
||||
|
||||
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||
HISTSIZE=1000
|
||||
HISTFILESIZE=2000
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
shopt -s checkwinsize
|
||||
|
||||
# make less more friendly for non-text input files, see lesspipe(1)
|
||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||
|
||||
# set variable identifying the chroot you work in (used in the prompt below)
|
||||
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
|
||||
debian_chroot=$(cat /etc/debian_chroot)
|
||||
fi
|
||||
|
||||
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||
case "$TERM" in
|
||||
xterm-color) color_prompt=yes;;
|
||||
esac
|
||||
|
||||
# uncomment for a colored prompt, if the terminal has the capability; turned
|
||||
# off by default to not distract the user: the focus in a terminal window
|
||||
# should be on the output of commands, not on the prompt
|
||||
#force_color_prompt=yes
|
||||
|
||||
if [ -n "$force_color_prompt" ]; then
|
||||
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||
# We have color support; assume it's compliant with Ecma-48
|
||||
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
||||
# a case would tend to support setf rather than setaf.)
|
||||
color_prompt=yes
|
||||
else
|
||||
color_prompt=
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$color_prompt" = yes ]; then
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||
else
|
||||
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||
fi
|
||||
unset color_prompt force_color_prompt
|
||||
|
||||
# If this is an xterm set the title to user@host:dir
|
||||
case "$TERM" in
|
||||
xterm*|rxvt*)
|
||||
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# enable color support of ls and also add handy aliases
|
||||
if [ -x /usr/bin/dircolors ]; then
|
||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||
alias ls='ls --color=auto'
|
||||
#alias dir='dir --color=auto'
|
||||
#alias vdir='vdir --color=auto'
|
||||
|
||||
alias grep='grep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
fi
|
||||
|
||||
# some more ls aliases
|
||||
alias ll='ls -alF'
|
||||
alias la='ls -A'
|
||||
alias l='ls -CF'
|
||||
|
||||
# Alias definitions.
|
||||
# You may want to put all your additions into a separate file like
|
||||
# ~/.bash_aliases, instead of adding them here directly.
|
||||
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
|
||||
|
||||
if [ -f ~/.bash_aliases ]; then
|
||||
. ~/.bash_aliases
|
||||
fi
|
||||
|
||||
# enable programmable completion features (you don't need to enable
|
||||
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
||||
# sources /etc/bash.bashrc).
|
||||
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
|
||||
# . /etc/bash_completion
|
||||
#fi
|
||||
@@ -0,0 +1,4 @@
|
||||
bind-addr: 127.0.0.1:8080
|
||||
auth: password
|
||||
password: 4d6c2b20e8d2c62be2512281
|
||||
cert: false
|
||||
@@ -0,0 +1,9 @@
|
||||
# ~/.profile: executed by Bourne-compatible login shells.
|
||||
|
||||
if [ "$BASH" ]; then
|
||||
if [ -f ~/.bashrc ]; then
|
||||
. ~/.bashrc
|
||||
fi
|
||||
fi
|
||||
|
||||
mesg n 2> /dev/null || true
|
||||
@@ -30,6 +30,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "8989:8989"
|
||||
volumes:
|
||||
- ./sonarr/config:/config
|
||||
- /mnt/media:/media
|
||||
@@ -39,15 +41,20 @@ services:
|
||||
- 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
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=media"
|
||||
- "homelab.description=TV show management and automation"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "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:
|
||||
@@ -58,6 +65,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "7878:7878"
|
||||
volumes:
|
||||
- ./radarr/config:/config
|
||||
- /mnt/media:/media
|
||||
@@ -67,15 +76,20 @@ services:
|
||||
- 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
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=media"
|
||||
- "homelab.description=Movie management and automation"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "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:
|
||||
@@ -86,6 +100,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "9696:9696"
|
||||
volumes:
|
||||
- ./prowlarr/config:/config
|
||||
environment:
|
||||
@@ -93,15 +109,20 @@ services:
|
||||
- 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
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=media"
|
||||
- "homelab.description=Indexer manager for Sonarr/Radarr"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "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:
|
||||
@@ -112,6 +133,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "8787:8787"
|
||||
volumes:
|
||||
- ./readarr/config:/config
|
||||
- /mnt/media/books:/books
|
||||
@@ -139,6 +162,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "8686:8686"
|
||||
volumes:
|
||||
- ./lidarr/config:/config
|
||||
- /mnt/media/music:/music
|
||||
@@ -166,6 +191,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "5299:5299"
|
||||
volumes:
|
||||
- ./lazylibrarian/config:/config
|
||||
- /mnt/media/books:/books
|
||||
@@ -194,6 +221,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "8090:8090"
|
||||
volumes:
|
||||
- ./mylar3/config:/config
|
||||
- /mnt/media/comics:/comics
|
||||
@@ -221,6 +250,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "5055:5055"
|
||||
volumes:
|
||||
- ./jellyseerr/config:/app/config
|
||||
environment:
|
||||
@@ -262,6 +293,7 @@ services:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- 8265:8265 # Web UI port
|
||||
- 8266:8266 # Server port
|
||||
volumes:
|
||||
- ./tdarr/server:/app/server
|
||||
@@ -320,6 +352,8 @@ services:
|
||||
- media-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "8888:8888"
|
||||
volumes:
|
||||
- ./unmanic/config:/config
|
||||
- /mnt/media:/library
|
||||
|
||||
@@ -50,8 +50,14 @@ services:
|
||||
- '--web.console.templates=/etc/prometheus/consoles'
|
||||
- '--web.enable-lifecycle'
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=monitoring"
|
||||
- "homelab.description=Metrics collection and time-series database"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.prometheus.rule=Host(`prometheus.${DOMAIN}`)"
|
||||
- "traefik.http.routers.prometheus.entrypoints=websecure"
|
||||
@@ -94,8 +100,14 @@ services:
|
||||
depends_on:
|
||||
- prometheus
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=monitoring"
|
||||
- "homelab.description=Metrics visualization and dashboards"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.grafana.rule=Host(`grafana.${DOMAIN}`)"
|
||||
- "traefik.http.routers.grafana.entrypoints=websecure"
|
||||
@@ -149,8 +161,14 @@ services:
|
||||
devices:
|
||||
- /dev/kmsg
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=monitoring"
|
||||
- "homelab.description=Container metrics and performance monitoring"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.cadvisor.rule=Host(`cadvisor.${DOMAIN}`)"
|
||||
- "traefik.http.routers.cadvisor.entrypoints=websecure"
|
||||
@@ -158,8 +176,6 @@ 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}
|
||||
@@ -180,12 +196,20 @@ services:
|
||||
- monitoring-network
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "3001:3001"
|
||||
volumes:
|
||||
- uptime-kuma-data:/app/data
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=monitoring"
|
||||
- "homelab.description=Service uptime monitoring and alerts"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.uptime-kuma.rule=Host(`uptime-kuma.${DOMAIN}`)"
|
||||
- "traefik.http.routers.uptime-kuma.entrypoints=websecure"
|
||||
@@ -220,8 +244,14 @@ services:
|
||||
- loki-data:/loki
|
||||
command: -config.file=/etc/loki/loki-config.yml
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=monitoring"
|
||||
- "homelab.description=Log aggregation system"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.loki.rule=Host(`loki.${DOMAIN}`)"
|
||||
- "traefik.http.routers.loki.entrypoints=websecure"
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
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
|
||||
@@ -1,93 +0,0 @@
|
||||
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
|
||||
@@ -1,29 +0,0 @@
|
||||
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
|
||||
@@ -1,85 +0,0 @@
|
||||
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'
|
||||
@@ -1,135 +0,0 @@
|
||||
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
|
||||
@@ -1,100 +0,0 @@
|
||||
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'
|
||||
@@ -1,29 +0,0 @@
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
github: [andrewdalpino]
|
||||
@@ -1,39 +0,0 @@
|
||||
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
|
||||
@@ -1,35 +0,0 @@
|
||||
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"
|
||||
@@ -1 +0,0 @@
|
||||
github: [andrewdalpino]
|
||||
@@ -1,39 +0,0 @@
|
||||
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
|
||||
@@ -1,25 +0,0 @@
|
||||
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*
|
||||
@@ -1,335 +0,0 @@
|
||||
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'
|
||||
@@ -1 +0,0 @@
|
||||
github: [andrewdalpino]
|
||||
@@ -1,93 +0,0 @@
|
||||
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
|
||||
@@ -1,39 +0,0 @@
|
||||
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
|
||||
@@ -1,26 +0,0 @@
|
||||
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*
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
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
|
||||
@@ -1,15 +0,0 @@
|
||||
language: php
|
||||
php:
|
||||
- 7.1
|
||||
- 7.2
|
||||
- 7.3
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- "$HOME/.composer/cache/files"
|
||||
|
||||
before_install:
|
||||
- php --info
|
||||
- composer self-update
|
||||
- composer install
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# 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
|
||||
@@ -21,13 +21,16 @@ x-dockge:
|
||||
services:
|
||||
# Backrest - Backup solution for restic
|
||||
# Access at: https://backrest.${DOMAIN}
|
||||
# Uses Sablier lazy loading - starts on-demand, stops after 5min inactivity
|
||||
backrest:
|
||||
image: garethgeorge/backrest:latest
|
||||
container_name: backrest
|
||||
restart: unless-stopped
|
||||
restart: no
|
||||
networks:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "9898:9898"
|
||||
volumes:
|
||||
- ./backrest/data:/data
|
||||
- ./backrest/config:/config
|
||||
@@ -39,14 +42,26 @@ services:
|
||||
- BACKREST_CONFIG=/config/config.json
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
# ==========================================
|
||||
# TRAEFIK & SABLIER CONFIGURATION
|
||||
# ==========================================
|
||||
|
||||
# Service metadata
|
||||
- homelab.category=utilities
|
||||
- homelab.description=Backup management with restic
|
||||
|
||||
# Traefik reverse proxy (uncomment to enable)
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.backrest.rule=Host(`backrest.${DOMAIN}`)
|
||||
- traefik.http.routers.backrest.entrypoints=websecure
|
||||
- traefik.http.routers.backrest.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.backrest.middlewares=authelia@docker
|
||||
- traefik.http.services.backrest.loadbalancer.server.port=9898
|
||||
|
||||
# Sablier lazy loading (uncomment to enable)
|
||||
- sablier.enable=true
|
||||
- sablier.group=${SERVER_HOSTNAME:-debian}-backrest
|
||||
- sablier.start-on-demand=true
|
||||
- "x-dockge.url=https://backrest.${DOMAIN}"
|
||||
- "x-dockge.url=https://backrest.${DOMAIN}"
|
||||
# Duplicati - Backup solution
|
||||
@@ -58,6 +73,8 @@ services:
|
||||
networks:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "8200:8200"
|
||||
volumes:
|
||||
- ./duplicati/config:/config
|
||||
- /opt/stacks:/source/stacks:ro
|
||||
@@ -68,14 +85,20 @@ services:
|
||||
- PGID=${PGID:-1000}
|
||||
- TZ=${TZ}
|
||||
labels:
|
||||
- homelab.category=utilities
|
||||
- homelab.description=Backup software with encryption
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.duplicati.rule=Host(`duplicati.${DOMAIN}`)
|
||||
- traefik.http.routers.duplicati.entrypoints=websecure
|
||||
- traefik.http.routers.duplicati.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.duplicati.middlewares=authelia@docker
|
||||
- traefik.http.services.duplicati.loadbalancer.server.port=8200
|
||||
# TRAEFIK & SABLIER CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=utilities"
|
||||
- "homelab.description=Backup software with encryption"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.duplicati.rule=Host(`duplicati.${DOMAIN}`)"
|
||||
- "traefik.http.routers.duplicati.entrypoints=websecure"
|
||||
- "traefik.http.routers.duplicati.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.duplicati.middlewares=authelia@docker"
|
||||
- "traefik.http.services.duplicati.loadbalancer.server.port=8200"
|
||||
# Form.io - Form builder
|
||||
# Uncomment and configure if formio/formio image becomes available
|
||||
formio:
|
||||
@@ -86,6 +109,8 @@ services:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
- formio-network
|
||||
ports:
|
||||
- "3001:3001"
|
||||
environment:
|
||||
- MONGO=mongodb://formio-mongo:27017/formio
|
||||
- JWT_SECRET=${FORMIO_JWT_SECRET}
|
||||
@@ -93,8 +118,14 @@ services:
|
||||
depends_on:
|
||||
- formio-mongo
|
||||
labels:
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=utilities"
|
||||
- "homelab.description=Form builder platform"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.formio.rule=Host(`forms.${DOMAIN}`)"
|
||||
- "traefik.http.routers.formio.entrypoints=websecure"
|
||||
@@ -122,6 +153,8 @@ services:
|
||||
networks:
|
||||
- homelab-network
|
||||
- traefik-network
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- ./vaultwarden/data:/data
|
||||
environment:
|
||||
@@ -137,16 +170,22 @@ services:
|
||||
# - SMTP_USERNAME=${SMTP_USERNAME}
|
||||
# - SMTP_PASSWORD=${SMTP_PASSWORD}
|
||||
labels:
|
||||
- homelab.category=utilities
|
||||
- homelab.description=Self-hosted password manager (Bitwarden)
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.vaultwarden.rule=Host(`vault.${DOMAIN}`)
|
||||
- traefik.http.routers.vaultwarden.entrypoints=websecure
|
||||
- traefik.http.routers.vaultwarden.tls=true
|
||||
- traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt
|
||||
# TRAEFIK CONFIGURATION
|
||||
# ==========================================
|
||||
# Service metadata
|
||||
- "homelab.category=utilities"
|
||||
- "homelab.description=Self-hosted password manager (Bitwarden)"
|
||||
# Traefik reverse proxy (comment/uncomment to disable/enable)
|
||||
# If Traefik is on a remote server: these labels are NOT USED;
|
||||
# configure external yml files in /traefik/dynamic folder instead.
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.vaultwarden.rule=Host(`vault.${DOMAIN}`)"
|
||||
- "traefik.http.routers.vaultwarden.entrypoints=websecure"
|
||||
- "traefik.http.routers.vaultwarden.tls=true"
|
||||
- "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"
|
||||
# SSO disabled for browser extension and mobile app compatibility
|
||||
# - "traefik.http.routers.vaultwarden.middlewares=authelia@docker"
|
||||
- traefik.http.services.vaultwarden.loadbalancer.server.port=80
|
||||
- "traefik.http.services.vaultwarden.loadbalancer.server.port=80"
|
||||
# Authelia Redis - Session storage for Authelia
|
||||
# No web UI - backend service
|
||||
# authelia-redis:
|
||||
|
||||
Reference in New Issue
Block a user