diff options
author | Clyhtsuriva <aimeric@adjutor.xyz> | 2025-05-24 17:09:04 +0200 |
---|---|---|
committer | Clyhtsuriva <aimeric@adjutor.xyz> | 2025-05-24 17:09:04 +0200 |
commit | bd967b68a274f79a0c5f351d228ff9279e0e9a89 (patch) | |
tree | d207feaf70f34c7c9468e83ef43dd9e0fc169e35 |
Initial commit
-rw-r--r-- | anubis-nginx/compose.yaml | 16 | ||||
-rw-r--r-- | authentik/compose.yaml | 89 | ||||
-rw-r--r-- | cadvisor/compose.yaml | 17 | ||||
m--------- | docker-acid-banger | 0 | ||||
-rw-r--r-- | docuseal/compose.yaml | 10 | ||||
-rw-r--r-- | gotify/compose.yaml | 14 | ||||
-rw-r--r-- | grafana/compose.yaml | 31 | ||||
-rw-r--r-- | nodeexporter/compose.yaml | 12 | ||||
-rw-r--r-- | portainer/compose.yaml | 15 | ||||
-rw-r--r-- | privatebin/compose.yaml | 11 | ||||
-rw-r--r-- | prometheus/compose.yaml | 15 | ||||
-rw-r--r-- | roundcube/compose.yaml | 39 | ||||
m--------- | searxng-docker | 0 | ||||
-rw-r--r-- | semaphore/compose.yaml | 54 | ||||
-rw-r--r-- | syncthing/compose.yaml | 24 | ||||
-rw-r--r-- | uptime-kuma/compose.yaml | 13 | ||||
-rw-r--r-- | vaultwarden/compose.yaml | 10 | ||||
-rw-r--r-- | wud/compose.yaml | 8 |
18 files changed, 378 insertions, 0 deletions
diff --git a/anubis-nginx/compose.yaml b/anubis-nginx/compose.yaml new file mode 100644 index 0000000..5471654 --- /dev/null +++ b/anubis-nginx/compose.yaml @@ -0,0 +1,16 @@ +services: + anubis-nginx: + image: ghcr.io/techarohq/anubis:latest + environment: + BIND: :8923 + DIFFICULTY: "5" + METRICS_BIND: :9090 + SERVE_ROBOTS_TXT: "true" + TARGET: http://nginx + ports: + - 10.0.0.1:8923:8923 + nginx: + image: nginx + volumes: + - ./www:/usr/share/nginx/html +networks: {} diff --git a/authentik/compose.yaml b/authentik/compose.yaml new file mode 100644 index 0000000..5532e1d --- /dev/null +++ b/authentik/compose.yaml @@ -0,0 +1,89 @@ +services: + postgresql: + image: docker.io/library/postgres:16-alpine + restart: unless-stopped + healthcheck: + test: + - CMD-SHELL + - pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER} + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + volumes: + - database:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: ${PG_PASS:?database password required} + POSTGRES_USER: ${PG_USER:-authentik} + POSTGRES_DB: ${PG_DB:-authentik} + env_file: + - .env + redis: + image: docker.io/library/redis:alpine + command: --save 60 1 --loglevel warning + restart: unless-stopped + healthcheck: + test: + - CMD-SHELL + - redis-cli ping | grep PONG + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s + volumes: + - redis:/data + server: + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.10.2} + restart: unless-stopped + command: server + environment: + AUTHENTIK_REDIS__HOST: redis + AUTHENTIK_POSTGRESQL__HOST: postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + volumes: + - ./media:/media + - ./custom-templates:/templates + env_file: + - .env + ports: + - 10.0.0.1:${COMPOSE_PORT_HTTP:-9000}:9000 + - 10.0.0.1:${COMPOSE_PORT_HTTPS:-9443}:9443 + - 10.0.0.1:9300:9300 + depends_on: + - postgresql + - redis + worker: + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.10.2} + restart: unless-stopped + command: worker + environment: + AUTHENTIK_REDIS__HOST: redis + AUTHENTIK_POSTGRESQL__HOST: postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + # `user: root` and the docker socket volume are optional. + # See more for the docker socket integration here: + # https://goauthentik.io/docs/outposts/integrations/docker + # Removing `user: root` also prevents the worker from fixing the permissions + # on the mounted folders, so when removing this make sure the folders have the correct UID/GID + # (1000:1000 by default) + user: root + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./media:/media + - ./certs:/certs + - ./custom-templates:/templates + env_file: + - .env + depends_on: + - postgresql + - redis +volumes: + database: + driver: local + redis: + driver: local +networks: {} diff --git a/cadvisor/compose.yaml b/cadvisor/compose.yaml new file mode 100644 index 0000000..3f96f9e --- /dev/null +++ b/cadvisor/compose.yaml @@ -0,0 +1,17 @@ +services: + cadvisor: + image: gcr.io/cadvisor/cadvisor:v0.52.1 + container_name: cadvisor + ports: + - 10.0.0.1:8084:8080 + volumes: + - /:/rootfs:ro + - /run:/run:ro + - /sys:/sys:ro + - /var/lib/docker/:/var/lib/docker:ro + - /dev/disk/:/dev/disk:ro + devices: + - /dev/kmsg + privileged: true + restart: unless-stopped +networks: {} diff --git a/docker-acid-banger b/docker-acid-banger new file mode 160000 +Subproject a6df26dd80b55d49bbcabef50770deff66d47d0 diff --git a/docuseal/compose.yaml b/docuseal/compose.yaml new file mode 100644 index 0000000..3736d64 --- /dev/null +++ b/docuseal/compose.yaml @@ -0,0 +1,10 @@ +services: + docuseal: + container_name: docuseal + image: docuseal/docuseal:2.0.0 + ports: + - 10.0.0.1:3030:3000 + volumes: + - ./data-docuseal:/data + restart: unless-stopped +networks: {} diff --git a/gotify/compose.yaml b/gotify/compose.yaml new file mode 100644 index 0000000..ae8060f --- /dev/null +++ b/gotify/compose.yaml @@ -0,0 +1,14 @@ +services: + gotify: + image: gotify/server:2.6.3 + restart: unless-stopped + ports: + - 10.0.0.1:8082:80 + environment: + - GOTIFY_DEFAULTUSER_NAME=admin + - GOTIFY_DEFAULTUSER_PASS=gotify + - TZ="Europe/Paris" + - GOTIFY_REGISTRATION=false + volumes: + - ./gotify_data:/app/data +networks: {} diff --git a/grafana/compose.yaml b/grafana/compose.yaml new file mode 100644 index 0000000..6064d91 --- /dev/null +++ b/grafana/compose.yaml @@ -0,0 +1,31 @@ +volumes: + grafana-data: + driver: local +services: + grafana: + image: docker.io/grafana/grafana-oss:11.3.0 + container_name: grafana + ports: + - 10.0.0.1:3000:3000 + volumes: + - grafana-data:/var/lib/grafana + - $PWD/custom.ini:/etc/grafana/grafana.ini + restart: unless-stopped + environment: + GF_AUTH_GENERIC_OAUTH_ENABLED: "true" + GF_AUTH_GENERIC_OAUTH_NAME: authentik + GF_AUTH_GENERIC_OAUTH_CLIENT_ID: 0M61k3ylqKnGDCSjPbHwtaoIFG6gfiD9crgnSseh + GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET: VkyB9lbMxxLCLCuy8GAEZTxiY5falzpPpEyUGpZaLu1Fuxl6fgScuaDcaZsmBWJLfOBKMkcqbVFfttZyUXQsUeWrghXqblia2K6ZJrwwFMtarTQcy3HLMRPTgUNPr7JN + GF_AUTH_GENERIC_OAUTH_SCOPES: openid profile email + GF_AUTH_GENERIC_OAUTH_AUTH_URL: https://auth.adjutor.eu.org/application/o/authorize/ + GF_AUTH_GENERIC_OAUTH_TOKEN_URL: https://auth.adjutor.eu.org/application/o/token/ + GF_AUTH_GENERIC_OAUTH_API_URL: https://auth.adjutor.eu.org/application/o/userinfo/ + GF_AUTH_SIGNOUT_REDIRECT_URL: https://auth.adjutor.eu.org/application/o/grafana/end-session/ + # Behind a reverse proxy : + GF_SERVER_ROOT_URL: "https://dash.adjutor.xyz" + # Optionally enable auto-login (bypasses Grafana login screen) + GF_AUTH_OAUTH_AUTO_LOGIN: "true" + # Optionally map user groups to Grafana roles + GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH: contains(groups, 'Grafana Admins') && + 'Admin' || contains(groups, 'Grafana Editors') && 'Editor' || 'Viewer' +networks: {} diff --git a/nodeexporter/compose.yaml b/nodeexporter/compose.yaml new file mode 100644 index 0000000..a7ea6d5 --- /dev/null +++ b/nodeexporter/compose.yaml @@ -0,0 +1,12 @@ +services: + node_exporter: + image: quay.io/prometheus/node-exporter:v1.8.2 + ports: + - 10.0.0.1:9100:9100 + container_name: node_exporter + command: --path.rootfs=/host + pid: host + restart: unless-stopped + volumes: + - /:/host:ro,rslave +networks: {} diff --git a/portainer/compose.yaml b/portainer/compose.yaml new file mode 100644 index 0000000..6b6abbd --- /dev/null +++ b/portainer/compose.yaml @@ -0,0 +1,15 @@ +services: + portainer-ce: + image: portainer/portainer-ce:2.27.6 + ports: + - 10.0.0.1:8000:8000 + - 10.0.0.1:9443:9443 + container_name: portainer + restart: unless-stopped + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - portainer_data:/data +volumes: + portainer_data: + external: true +networks: {} diff --git a/privatebin/compose.yaml b/privatebin/compose.yaml new file mode 100644 index 0000000..5cb67b1 --- /dev/null +++ b/privatebin/compose.yaml @@ -0,0 +1,11 @@ +services: + nginx-fpm-alpine: + image: privatebin/nginx-fpm-alpine:1.7.6 + restart: unless-stopped + read_only: true + ports: + - 10.0.0.1:8081:8080 + volumes: + - $PWD/privatebin-data:/srv/data + - $PWD/conf.php:/srv/cfg/conf.php:ro +networks: {} diff --git a/prometheus/compose.yaml b/prometheus/compose.yaml new file mode 100644 index 0000000..e535363 --- /dev/null +++ b/prometheus/compose.yaml @@ -0,0 +1,15 @@ +volumes: + prometheus-data: + driver: local +services: + prometheus: + image: docker.io/prom/prometheus:v3.4.0 + container_name: prometheus + ports: + - 10.0.0.1:9090:9090 + command: --config.file=/etc/prometheus/prometheus.yaml + volumes: + - ./config/prometheus.yaml:/etc/prometheus/prometheus.yaml:ro + - prometheus-data:/prometheus + restart: unless-stopped +networks: {} diff --git a/roundcube/compose.yaml b/roundcube/compose.yaml new file mode 100644 index 0000000..a5faaaf --- /dev/null +++ b/roundcube/compose.yaml @@ -0,0 +1,39 @@ +services: + roundcubedb: + image: mysql:5.7 + container_name: roundcubedb + restart: unless-stopped + volumes: + - ./db/mysql:/var/lib/mysql + ports: + - 10.0.0.1:34010:5432 + - 10.0.0.1:33006:3306 + environment: + - MYSQL_ROOT_PASSWORD=roundcube-mysql-pw + - MYSQL_DATABASE=roundcubemail + roundcubemail: + image: roundcube/roundcubemail:1.6.9-apache + container_name: roundcubemail + restart: unless-stopped + depends_on: + - roundcubedb + links: + - roundcubedb + volumes: + - ./www:/var/www/html + ports: + - 10.0.0.1:9001:80 + environment: + - ROUNDCUBEMAIL_DB_TYPE=mysql + - ROUNDCUBEMAIL_DB_HOST=roundcubedb + - ROUNDCUBEMAIL_DB_PASSWORD=roundcube-mysql-pw + - ROUNDCUBEMAIL_SKIN=elastic + - ROUNDCUBEMAIL_DEFAULT_HOST=tls://mail.adjutor.xyz + - ROUNDCUBEMAIL_SMTP_SERVER=tls://mail.adjutor.xyz +networks: {} + +### Optional: add a full mail server stack to use with Roundcube like https://github.com/docker-mailserver/docker-mailserver +# mailserver: +# image: mailserver/docker-mailserver:14.0.0 +# hostname: mail.example.org +# ... # for more options see https://github.com/docker-mailserver/docker-mailserver#examples diff --git a/searxng-docker b/searxng-docker new file mode 160000 +Subproject 5020f8982377c09ad857d4101a533cc866c8b6c diff --git a/semaphore/compose.yaml b/semaphore/compose.yaml new file mode 100644 index 0000000..337b489 --- /dev/null +++ b/semaphore/compose.yaml @@ -0,0 +1,54 @@ +services: + semaphore_db: + image: postgres + env_file: + - .env + environment: + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} + volumes: + - semaphore_postgres:/var/lib/postgresql/data + networks: + - semaphore_network + semaphore: + image: semaphoreui/semaphore:v2.13.12 + env_file: + - .env + ports: + - 10.0.0.1:3080:3000 + depends_on: + - semaphore_db + environment: + SEMAPHORE_DB_DIALECT: postgres + SEMAPHORE_DB_HOST: semaphore_db + SEMAPHORE_DB_NAME: semaphore + SEMAPHORE_DB_USER: ${SEMAPHORE_DB_USER} + SEMAPHORE_DB_PASS: ${SEMAPHORE_DB_PASS} + SEMAPHORE_ADMIN: ${SEMAPHORE_ADMIN} + SEMAPHORE_ADMIN_PASSWORD: ${SEMAPHORE_ADMIN_PASSWORD} + SEMAPHORE_ADMIN_NAME: ${SEMAPHORE_ADMIN_NAME} + SEMAPHORE_ADMIN_EMAIL: ${SEMAPHORE_ADMIN_EMAIL} + SEMAPHORE_EMAIL_SENDER: ${SEMAPHORE_EMAIL_SENDER} + SEMAPHORE_EMAIL_HOST: ${SEMAPHORE_EMAIL_HOST} + SEMAPHORE_EMAIL_PORT: ${SEMAPHORE_EMAIL_PORT} + SEMAPHORE_EMAIL_USERNAME: ${SEMAPHORE_EMAIL_USERNAME} + SEMAPHORE_EMAIL_PASSWORD: ${SEMAPHORE_EMAIL_PASSWORD} + SEMAPHORE_EMAIL_SECURE: "True" + SEMAPHORE_GOTIFY_ALERT: "True" + SEMAPHORE_GOTIFY_URL: https://notify.adjutor.eu.org + SEMAPHORE_GOTIFY_TOKEN: ${SEMAPHORE_GOTIFY_TOKEN} + volumes: + - semaphore_data:/var/lib/semaphore + - semaphore_config:/etc/semaphore + - semaphore_tmp:/tmp/semaphore + networks: + - semaphore_network +volumes: + semaphore_data: null + semaphore_config: null + semaphore_tmp: null + semaphore_postgres: null +networks: + semaphore_network: + driver: bridge diff --git a/syncthing/compose.yaml b/syncthing/compose.yaml new file mode 100644 index 0000000..16d140f --- /dev/null +++ b/syncthing/compose.yaml @@ -0,0 +1,24 @@ +services: + syncthing: + image: syncthing/syncthing:1.29.6 + container_name: syncthing + hostname: VPS + environment: + - PUID=1000 + - PGID=1000 + volumes: + - /data/Synck:/var/syncthing + - /data/music:/var/syncthing/music + ports: + - 10.0.0.1:8384:8384 # Web UI + - 10.0.0.1:22000:22000/tcp # TCP file transfers + - 10.0.0.1:22000:22000/udp # QUIC file transfers + - 10.0.0.1:21027:21027/udp # Receive local discovery broadcasts + restart: unless-stopped + healthcheck: + test: curl -fkLsS -m 2 10.0.0.1:8384/rest/noauth/health | grep -o --color=never + OK || exit 1 + interval: 1m + timeout: 10s + retries: 3 +networks: {} diff --git a/uptime-kuma/compose.yaml b/uptime-kuma/compose.yaml new file mode 100644 index 0000000..d366636 --- /dev/null +++ b/uptime-kuma/compose.yaml @@ -0,0 +1,13 @@ +services: + uptime-kuma: + restart: unless-stopped + ports: + - 10.0.0.1:3001:3001 + volumes: + - uptime-kuma:/app/data + container_name: uptime-kuma + image: louislam/uptime-kuma:1.23.16 +volumes: + uptime-kuma: + external: true +networks: {} diff --git a/vaultwarden/compose.yaml b/vaultwarden/compose.yaml new file mode 100644 index 0000000..5d6da0a --- /dev/null +++ b/vaultwarden/compose.yaml @@ -0,0 +1,10 @@ +services: + server: + container_name: vaultwarden + volumes: + - /vw-data/:/data/ + ports: + - 10.0.0.1:8090:80 + restart: unless-stopped + image: vaultwarden/server:1.33.2 +networks: {} diff --git a/wud/compose.yaml b/wud/compose.yaml new file mode 100644 index 0000000..f950b84 --- /dev/null +++ b/wud/compose.yaml @@ -0,0 +1,8 @@ +services: + whatsupdocker: + image: ghcr.io/getwud/wud + container_name: wud + volumes: + - /var/run/docker.sock:/var/run/docker.sock + ports: + - 10.0.0.1:3002:3000
\ No newline at end of file |