Compare commits

..

10 Commits

Author SHA1 Message Date
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
9 changed files with 383 additions and 0 deletions

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

@@ -0,0 +1,57 @@
services:
ghost:
image: ghost:latest
container_name: ghost
deploy:
# placement:
# constraints: [node.role == worker]
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
# networks:
# - caddy_net
mysql:
image: mysql:8.4.6 # latest or last version of version 8; Ghost doesn't recognise version 9
container_name: mysql
deploy:
placement:
constraints:
- node.labels.database == here
restart: always
volumes:
- /mnt/cephfs/docker/ghost/mysql:/var/lib/mysql:rw
environment:
MYSQL_ROOT_PASSWORD: Vegetable
MYSQL_DATABASE: ghostdb
MYSQL_USER: ghost
MYSQL_PASSWORD: Carrot
# networks:
# - caddy_net
#networks:
# caddy_net:
# external: true

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,18 @@
services:
grafana:
image: grafana/grafana
# container_name: grafana
restart: unless-stopped
ports:
- '3030:3000'
environment:
- 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-storage:/var/lib/grafana

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

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,15 @@
services:
prometheus:
image: prom/prometheus
container_name: prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- 9090:9090
restart: unless-stopped
volumes:
- ./prometheus:/etc/prometheus
- prom_data:/prometheus
volumes:
prom_data:

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']