Compare commits

...

25 Commits

Author SHA1 Message Date
7eb1a2c039 Update ghost/docker-compose.yml
Modify for the ELITE cluster
2025-12-05 14:47:10 +00:00
e151ec34f0 Add amudanan/docker-compose.yml 2025-12-03 18:25:04 +00:00
a2123343e5 Delete anudanan/docker-compose.yml 2025-12-03 18:24:43 +00:00
0ae86255b7 Add collabora/docker-compose.yml 2025-12-03 18:19:23 +00:00
e3ba49dba9 Add anudanan/docker-compose.yml 2025-12-03 18:18:10 +00:00
5cb0927eea Update grafana/docker-compose.yml 2025-12-01 10:29:45 +00:00
0071abb0c3 Update grafana/docker-compose.yml 2025-12-01 10:28:26 +00:00
6c6431348b Update grafana/docker-compose.yml 2025-12-01 10:17:39 +00:00
947a1a259a Update prometheus/docker-compose.yml 2025-12-01 00:23:57 +00:00
f1a41335af Update grafana/docker-compose.yml 2025-11-30 23:13:33 +00:00
9be4ff7a0f Update grafana/docker-compose.yml 2025-11-30 23:05:20 +00:00
fa3b476741 Update grafana/docker-compose.yml 2025-11-30 22:57:20 +00:00
e0946f30db Upload files to "uptime-kuma" 2025-11-29 14:13:35 +00:00
3f27d57836 Update n8n/docker-compose.yml 2025-11-29 12:22:50 +00:00
790a185166 Upload files to "n8n" 2025-11-29 12:19:47 +00:00
7032d2de5b Add prometheus/prometheus.yml 2025-11-27 16:38:24 +00:00
8e04118d48 Add prometheus/docker-compose.yml 2025-11-27 16:37:32 +00:00
dd4ac1c72b Add paperless-ngx/docker-compose.yml
Add in the requirement for the POSTGRES database container to alwyas run on the same node
2025-11-27 16:27:34 +00:00
82247663f9 Add it-tools/docker-compose.yml 2025-11-27 16:24:44 +00:00
761576e688 Add iperf3/docker-compose.yml 2025-11-27 16:23:55 +00:00
739e660f68 Add hoarder/docker-compose.yml 2025-11-27 16:06:40 +00:00
bb223749ef Add grafana/docker-compose.yml 2025-11-27 16:05:36 +00:00
18576db135 Add gotify/docker-compose.yml 2025-11-27 16:03:56 +00:00
91c5956211 Update ghost/docker-compose.yml
Ensure that mysql database remains on the same node; if it goes down add the label to another node and hope that the databases have been replicated properly
2025-11-27 15:59:13 +00:00
a3920e42ff Add ghost/docker-compose.yml 2025-11-27 15:55:46 +00:00
13 changed files with 497 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
services:
owncloud:
image: owncloud/server:latest
container_name: owncloud_server
restart: always
ports:
- 8080:8080
depends_on:
- mariadb
- redis
environment:
- OWNCLOUD_DOMAIN=192.168.1.4:8080
- OWNCLOUD_TRUSTED_DOMAINS=amudanan.johnsnexus.click
- OWNCLOUD_DB_TYPE=mysql
- OWNCLOUD_DB_NAME=owncloud
- OWNCLOUD_DB_USERNAME=owncloud
- OWNCLOUD_DB_PASSWORD=owncloud
- OWNCLOUD_DB_HOST=mariadb
- OWNCLOUD_ADMIN_USERNAME=admin
- OWNCLOUD_ADMIN_PASSWORD=Zephie2023
- OWNCLOUD_MYSQL_UTF8MB4=true
- OWNCLOUD_REDIS_ENABLED=true
- OWNCLOUD_REDIS_HOST=redis
healthcheck:
test: ["CMD", "/usr/bin/healthcheck"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- /mnt/cephfs/docker/owncloud/data:/mnt/data
mariadb:
image: mariadb:10.11 # minimum required ownCloud version is 10.9
container_name: owncloud_mariadb
restart: always
environment:
- MYSQL_ROOT_PASSWORD=owncloud
- MYSQL_USER=owncloud
- MYSQL_PASSWORD=owncloud
- MYSQL_DATABASE=owncloud
- MARIADB_AUTO_UPGRADE=1
command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"]
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=owncloud"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- /mnt/cephfs/docker/mysql/owncloud:/var/lib/mysql
redis:
image: redis:6
container_name: owncloud_redis
restart: always
command: ["--databases", "1"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- /mnt/cephfs/docker/redis/owncloud:/data

View File

@@ -0,0 +1,20 @@
# Collabora for OWNCLOUD (amudanan) on the ELITE cluster
services:
collabora:
image: collabora/code:latest
container_name: collabora
expose:
- 9980:9980
ports:
- 9980:9980
cap_add:
- MKNOD
restart: unless-stopped
environment:
- extra_params=-o:ssl.enable=true # key parameter
- domain=https://amudanan.johnsnexus.click
- TZ=Europe/London
# - password=Zephie2023
# - username=admin

45
ghost/docker-compose.yml Normal file
View File

@@ -0,0 +1,45 @@
services:
ghost:
image: ghost:latest
deploy:
replicas: 1
restart: always
ports:
- 2368:2368
environment:
# see https://ghost.org/docs/config/#configuration-options
database__client: mysql
database__connection__host: mysql
database__connection__user: ghost
database__connection__password: Carrot
database__connection__database: ghostdb
url: https://ghost.johnsnexus.click
#
mail__transport: "SMTP"
mail__options__host: "smtp.gmail.com"
# mail__options__host: "smtp.mailgun.org"
mail__options__port: "587"
mail__options__secureConnection: "false"
mail__options__auth__user: "revjohndanderson@gmail.com"
mail__options__auth__pass: "sorc lxqh araw lppf"
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explic>
#NODE_ENV: development
depends_on:
- mysql
volumes:
- /mnt/cephfs/docker/ghost/data:/var/lib/ghost/content
mysql:
image: mysql:8.4.6 # latest or last version of version 8; Ghost doesn't recognise version 9
deploy:
placement:
constraints:
- node.labels.database == here
restart: always
volumes:
- /mnt/cephfs/docker/mysql/ghost:/var/lib/mysql:rw
environment:
MYSQL_ROOT_PASSWORD: Vegetable
MYSQL_DATABASE: ghostdb
MYSQL_USER: ghost
MYSQL_PASSWORD: Carrot

13
gotify/docker-compose.yml Normal file
View File

@@ -0,0 +1,13 @@
services:
gotify:
image: gotify/server:latest
volumes:
- /mnt/cephfs/docker/gotify:/app/data
restart: unless-stopped
ports:
- 8111:80
security_opt:
- no-new-privileges:true
environment:
- TZ=Europe/London

View File

@@ -0,0 +1,22 @@
services:
grafana:
image: grafana/grafana:11.6
container_name: grafana
restart: unless-stopped
ports:
- '3030:3000'
user: '0'
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=Zephie2023
- GF_INSTALL_PLUGINS=
- GF_SMTP_startTLS_policy
- GF_SMTP_ENABLED=true
- GF_SMTP_HOST=smtp.gmail.com:587
- GF_SMTP_SKIP_VERIFY=true
- GF_SMTP_USER=john.anderson1955@gmail.com
- GF_SMTP_PASSWORD=ohzyczbzdgrnspxc
- GF_SMTP_FROM_NAME=grafana
- GF_SMTP_FROM_ADDRESS=john.anderson1955@gmail.com
volumes:
- /mnt/cephfs/docker/grafana_data:/var/lib/grafana:rw

View File

@@ -0,0 +1,47 @@
services:
web:
image: ghcr.io/karakeep-app/karakeep:release
restart: unless-stopped
volumes:
# By default, the data is stored in a docker volume called "data".
# If you want to mount a custom directory, change the volume mapping to:
# - /path/to/your/directory:/data
- /mnt/cephfs/docker/hoarder/data:/data
ports:
- 3200:3000
environment:
MEILI_ADDR: http://meilisearch:7700
BROWSER_WEB_URL: http://chrome:9222
NEXTAUTH_SECRET: tZ4AJx370L2PrqdCCsier9Almay6GxgF
MEILI_MASTER_KEY: quoK8t8zoTPOJfcF4Fw9hg44IyhyqreS
NEXTAUTH_URL: http://localhost:3000 # this is internal to the container
CRAWLER_DOWNLOAD_BANNER_IMAGE: "true"
# OPENAI_API_KEY: ...
# You almost never want to change the value of the DATA_DIR variable.
# If you want to mount a custom directory, change the volume mapping above instead.
DATA_DIR: /data # DON'T CHANGE THIS
chrome:
image: gcr.io/zenika-hub/alpine-chrome:124
restart: unless-stopped
command:
- --no-sandbox
- --disable-gpu
- --disable-dev-shm-usage
- --remote-debugging-address=0.0.0.0
- --remote-debugging-port=9222
- --hide-scrollbars-enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb
meilisearch:
image: getmeili/meilisearch:v1.13.1
restart: unless-stopped
environment:
MEILI_NO_ANALYTICS: "true"
NEXTAUTH_SECRET: tZ4AJx370L2PrqdCCsier9Almay6GxgF
MEILI_MASTER_KEY: quoK8t8zoTPOJfcF4Fw9hg44IyhyqreS
NEXTAUTH_URL: http://localhost:3000
volumes:
- /mnt/cephfs/docker/hoarder/meili:/meili_data

View File

@@ -0,0 +1,9 @@
version: '3.9'
services:
iperf3:
image: mlabbe/iperf3
ports:
- '5201:5201/udp'
- '5201:5201/tcp'
restart: unless-stopped
container_name: iperf3

View File

@@ -0,0 +1,7 @@
services:
it-tools:
image: 'corentinth/it-tools:latest'
ports:
- '8090:80'
restart: unless-stopped
container_name: it-tools

31
n8n/docker-compose.yml Normal file
View File

@@ -0,0 +1,31 @@
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
- WEBHOOK_URL=https://donut.johnsnexus.click
- GENERIC_TIMEZONE=Europe/London
- DB_SQLITE_POOL_SIZE=1
- N8N_RUNNERS_ENABLED=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
#
- N8N_HOST=donut.johnsnexus.click
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- N8N_PROXY_HOPS=1
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
driver: local
driver_opts:
o: bind
type: none
device: /mnt/cephfs/docker/n8n/n8n_data

View File

@@ -0,0 +1,96 @@
# Docker Compose file for running paperless from the docker container registry.
# This file contains everything paperless needs to run.
# Paperless supports amd64, arm and arm64 hardware.
#
# All compose files of paperless configure paperless in the following way:
#
# - Paperless is (re)started on system boot, if it was running before shutdown.
# - Docker volumes for storing data are managed by Docker.
# - Folders for importing and exporting files are created in the same directory
# as this file and mounted to the correct folders inside the container.
# - Paperless listens on port 8000.
#
# In addition to that, this Docker Compose file adds the following optional
# configurations:
#
# - Instead of SQLite (default), PostgreSQL is used as the database server.
# - Apache Tika and Gotenberg servers are started with paperless and paperless
# is configured to use these services. These provide support for consuming
# Office documents (Word, Excel, Power Point and their LibreOffice counter-
# parts.
#
# To install and update paperless with this file, do the following:
#
# - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env'
# and '.env' into a folder.
# - Run 'docker compose pull'.
# - Run 'docker compose run --rm webserver createsuperuser' to create a user.
# - Run 'docker compose up -d'.
#
# For more extensive installation and update instructions, refer to the
# documentation.
services:
broker:
image: docker.io/library/redis:7
restart: unless-stopped
volumes:
- /mnt/cephfs/docker/paperless-ngx/redisdata:/data
db:
image: docker.io/library/postgres:16
restart: unless-stopped
deploy:
placement:
constraints:
- node.labels.database == here
volumes:
- /mnt/cephfs/docker/paperless-ngx/pgdata:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- db
- broker
- gotenberg
- tika
ports:
- "8600:8000"
volumes:
- /mnt/cephfs/docker/paperless-ngx/data:/usr/src/paperless/data
- /mnt/cephfs/docker/paperless-ngx/media:/usr/src/paperless/media
- /mnt/cephfs/docker/paperless-ngx/export:/usr/src/paperless/export
- /mnt/cephfs/docker/paperless-ngx/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://broker:6379
PAPERLESS_DBHOST: db
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
#
USERMAP_UID: 1000
USERMAP_GID: 1000
PAPERLESS_TIME_ZONE: Europe/London
PAPERLESS_OCR_LANGUAGE: eng
#
PAPERLESS_URL: https://wastebin.johnsnexus.click
#
gotenberg:
image: docker.io/gotenberg/gotenberg:8.7
restart: unless-stopped
# The gotenberg chromium route is used to convert .eml files. We do not
# want to allow external content like tracking pixels or even javascript.
command:
- "gotenberg"
- "--chromium-disable-javascript=true"
- "--chromium-allow-list=file:///tmp/.*"
tika:
image: docker.io/apache/tika:latest
restart: unless-stopped

View File

@@ -0,0 +1,12 @@
services:
prometheus:
image: prom/prometheus
# container_name: prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- 9090:9090
restart: unless-stopped
volumes:
- /mnt/cephfs/docker/prometheus:/etc/prometheus
- /mnt/cephfs/docker/prometheus/prom_data:/prometheus

121
prometheus/prometheus.yml Normal file
View File

@@ -0,0 +1,121 @@
global:
scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets: []
scheme: http
timeout: 10s
api_version: v2
scrape_configs:
- job_name: prometheus
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
static_configs:
- targets:
- localhost:9090
# - job_name: 'omega' # static address fpr OMEGA 2.5Gb link
# static_configs:
# - targets: ['192.168.1.5:9100']
#
# - job_name: 'valhalla' # Change to whatever you like
# static_configs:
# - targets: ['192.168.1.7:9100'] #Change this to your server's IP
#
- job_name: monitor
static_configs:
- targets: ['192.168.1.22:9100']
# - job_name: rasp3b
# static_configs:
# - targets: ['192.168.1.23:9100']
- job_name: prod-01
static_configs:
- targets: ['192.168.1.12:9100']
- job_name: prod-02
static_configs:
- targets: ['192.168.1.13:9100']
- job_name: prod-03
static_configs:
- targets: ['192.168.1.14:9100']
- job_name: prod-04
static_configs:
- targets: ['192.168.1.15:9100']
#
# ***
#
- job_name: node-16
static_configs:
- targets: ['192.168.1.16:9100']
- job_name: node-17
static_configs:
- targets: ['192.168.1.17:9100']
- job_name: node-18
static_configs:
- targets: ['192.168.1.18:9100']
- job_name: node-19
static_configs:
- targets: ['192.168.1.19:9100']
#
# ^^^
#
- job_name: delta
static_configs:
- targets: ['192.168.1.10:9100']
- job_name: gamma
static_configs:
- targets: ['192.168.1.11:9100']
- job_name: beta
static_configs:
- targets: ['192.168.1.9:9100']
#
#
#
# - job_name: cadvisor_paradise
# scrape_interval: 5s
# static_configs:
# - targets: ['192.168.1.151:8083']
#
# - job_name: cadvisor_monitor
# scrape_interval: 5s
# static_configs:
# - targets: ['192.168.1.22:8083']
##
# - job_name: cadvisor_prod-01
# scrape_interval: 5s
# static_configs:
# - targets: ['192.168.1.50:8083']
#
# - job_name: cadvisor_prod-02
# scrape_interval: 5s
# static_configs:
# - targets: ['192.168.1.52:8083']
#
# - job_name: cadvisor_prod-03
# scrape_interval: 5s
# static_configs:
# - targets: ['192.168.1.54:8083']
#
# - job_name: cadvisor_prod-04
# scrape_interval: 5s
# static_configs:
# - targets: ['192.168.1.53:8083']
#
# - job_name: cadvisor_prod-06
# scrape_interval: 5s
# static_configs:
# - targets: ['192.168.1.55:8083']
#
# Attempt to scrape the metrics from the standard admin port of 2019
# Requires Caddyfile to have 2019 accessible from 0.0.0.0; "metrics" declared in the globall secrtion AND
# a metrics handler declaring metrics are avaiable on 2019! Weird but it works!!
#
- job_name: caddy
scrape_interval: 30s
scrape_timeout: 25s
static_configs:
- targets: ['192.168.1.1:2019']

View File

@@ -0,0 +1,11 @@
services:
uptime-kuma:
image: louislam/uptime-kuma:2.0.2
container_name: uptime-kuma
restart: always
ports:
- "3010:3001"
volumes:
- /mnt/cephfs/docker/uptime-kuma:/app/data
- /var/run/docker.sock:/var/run/docker.sock