summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClyhtsuriva <aimeric@adjutor.xyz>2025-05-24 17:09:04 +0200
committerClyhtsuriva <aimeric@adjutor.xyz>2025-05-24 17:09:04 +0200
commitbd967b68a274f79a0c5f351d228ff9279e0e9a89 (patch)
treed207feaf70f34c7c9468e83ef43dd9e0fc169e35
Initial commit
-rw-r--r--anubis-nginx/compose.yaml16
-rw-r--r--authentik/compose.yaml89
-rw-r--r--cadvisor/compose.yaml17
m---------docker-acid-banger0
-rw-r--r--docuseal/compose.yaml10
-rw-r--r--gotify/compose.yaml14
-rw-r--r--grafana/compose.yaml31
-rw-r--r--nodeexporter/compose.yaml12
-rw-r--r--portainer/compose.yaml15
-rw-r--r--privatebin/compose.yaml11
-rw-r--r--prometheus/compose.yaml15
-rw-r--r--roundcube/compose.yaml39
m---------searxng-docker0
-rw-r--r--semaphore/compose.yaml54
-rw-r--r--syncthing/compose.yaml24
-rw-r--r--uptime-kuma/compose.yaml13
-rw-r--r--vaultwarden/compose.yaml10
-rw-r--r--wud/compose.yaml8
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