Compare commits

...
31 Commits
Author SHA1 Message Date
Mike McFetridge e0fd61d4d5 Update
Deploy searxng / deploy (push) Successful in 7s
2026-08-11 08:27:30 -04:00
Mike McFetridge e8cb9bdaaa sear-Update
Deploy searxng / deploy (push) Successful in 7s
2026-08-11 08:25:32 -04:00
Mike McFetridge fdd15925ae Sear-update
Deploy searxng / deploy (push) Successful in 8s
2026-08-11 08:22:30 -04:00
Mike McFetridge 5906995a65 .
Deploy searxng / deploy (push) Failing after 6s
2026-08-11 08:21:13 -04:00
Mike McFetridge b5974ffa86 .
Deploy searxng / deploy (push) Failing after 6s
2026-08-11 08:18:16 -04:00
Mike McFetridge f19cf926e8 Update
Deploy Homepage / deploy (push) Successful in 7s
2026-07-26 08:35:47 -04:00
Mike McFetridge 21c30ee072 Update
Deploy Homepage / deploy (push) Successful in 8s
2026-07-26 08:34:44 -04:00
Mike McFetridge a9f0b121c6 update watchtower
Deploy Watchtower / deploy (push) Successful in 9s
2026-07-25 08:19:39 -04:00
Mike McFetridge f7a88f4a34 update
Deploy NginxProxyManager / deploy (push) Successful in 14s
2026-07-24 19:15:52 -04:00
Mike McFetridge a089a27771 .
Deploy NginxProxyManager / deploy (push) Failing after 7s
2026-07-24 19:14:06 -04:00
Mike McFetridge 62de3c75e5 update health chrck
Deploy NginxProxyManager / deploy (push) Failing after 2m2s
2026-07-24 19:12:00 -04:00
Mike McFetridge 15968c489b update
Deploy NginxProxyManager / deploy (push) Successful in 18s
Deploy Watchtower / deploy (push) Successful in 8s
2026-07-22 20:23:34 -04:00
Mike McFetridge 4c4ddd20df .
Deploy Watchtower / deploy (push) Successful in 8s
2026-07-21 17:28:55 -04:00
Mike McFetridge e12cd877f1 .
Deploy Homepage / deploy (push) Successful in 8s
2026-07-20 18:41:12 -04:00
Mike McFetridge 198e49cb92 .
Deploy Homepage / deploy (push) Successful in 8s
2026-07-20 18:39:04 -04:00
Mike McFetridge 0fc0cefa6f Merge branch 'main' of gitea.mikemcfetridge.com:miker/Docker-02
Deploy Homepage / deploy (push) Successful in 8s
2026-07-20 18:33:44 -04:00
Mike McFetridge 10bf991aa6 . 2026-07-20 18:33:38 -04:00
miker b3db1f6348 Update Patchmon/.env
Deploy Patchmon / deploy (push) Successful in 8s
2026-07-20 18:27:37 +00:00
miker 5257b3546b Update Patchmon/docker-compose.yml
Deploy Patchmon / deploy (push) Successful in 19s
2026-07-20 18:12:18 +00:00
miker 60cf09e800 Update Patchmon/docker-compose.yml
Deploy Patchmon / deploy (push) Successful in 9s
2026-07-20 18:09:23 +00:00
Mike McFetridge 9a72e128f1 Merge branch 'main' of gitea.mikemcfetridge.com:miker/Docker-02
Deploy Patchmon / deploy (push) Successful in 1m9s
2026-07-20 14:08:57 -04:00
Mike McFetridge defde8c94e . 2026-07-20 14:08:47 -04:00
miker 65ec92d4d6 Update Homepage/docker-compose.yml
Deploy Homepage / deploy (push) Successful in 15s
2026-07-20 15:19:03 +00:00
miker 09f9cfc378 Update NginxProxyManager/docker-compose.yml
Deploy NginxProxyManager / deploy (push) Successful in 28s
2026-07-20 15:18:46 +00:00
miker 3fd2b94cff Update searxng/docker-compose.yml
Deploy searxng / deploy (push) Successful in 13s
2026-07-20 15:18:24 +00:00
miker a5154cfc2a Update wsdashboard/docker-compose.yml
Deploy wsdashboard / deploy (push) Successful in 13s
2026-07-20 15:18:05 +00:00
Mike McFetridge 6ce89ed4a3 Merge branch 'main' of gitea.mikemcfetridge.com:miker/Docker-02 2026-07-20 11:17:41 -04:00
Mike McFetridge 24a595a574 . 2026-07-20 11:17:33 -04:00
miker d4cb972e5f Update Sencho/docker-compose.yml
Deploy Sencho / deploy (push) Successful in 18s
2026-07-20 14:18:46 +00:00
Mike McFetridge ad326b97a3 Merge branch 'main' of gitea.mikemcfetridge.com:miker/Docker-02 2026-07-20 10:17:15 -04:00
Mike McFetridge 7844ff4c8f . 2026-07-20 10:17:12 -04:00
17 changed files with 581 additions and 89 deletions
@@ -0,0 +1,35 @@
name: Deploy NginxProxyManager
on:
push:
branches:
- main
paths:
- 'NginxProxyManager/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync NginxProxyManager to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "NginxProxyManager/*"
target: "/opt/Docker-Deployments/NginxProxyManager"
strip_components: 1
- name: Deploy NginxProxyManager Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/NginxProxyManager
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy Homepage
on:
push:
branches:
- main
paths:
- 'Homepage/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync Homepage to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "Homepage/*"
target: "/opt/Docker-Deployments/Homepage"
strip_components: 1
- name: Deploy Homepage Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/Homepage
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy Patchmon
on:
push:
branches:
- main
paths:
- 'Patchmon/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync Patchmon to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "Patchmon/*"
target: "/opt/Docker-Deployments/Patchmon"
strip_components: 1
- name: Deploy Patchmon Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/Patchmon
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy searxng
on:
push:
branches:
- main
paths:
- 'searxng/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync searxng to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "searxng/*"
target: "/opt/Docker-Deployments/searxng"
strip_components: 1
- name: Deploy searxng Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/searxng
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy Sencho
on:
push:
branches:
- main
paths:
- 'Sencho/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync Sencho to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "Sencho/*"
target: "/opt/Docker-Deployments/Sencho"
strip_components: 1
- name: Deploy Sencho Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/Sencho
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy wsdashboard
on:
push:
branches:
- main
paths:
- 'wsdashboard/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync wsdashboard to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "wsdashboard/*"
target: "/opt/Docker-Deployments/wsdashboard"
strip_components: 1
- name: Deploy wsdashboard Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.14"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/wsdashboard
docker compose up -d --remove-orphans
+11 -34
View File
@@ -84,21 +84,21 @@
id: lime
tab: Home
icon: myspeed.png
href: http://192.168.2.6:5216
href: http://192.168.2.13:5216
widget:
type: myspeed
url: http://192.168.2.6:5216
url: http://192.168.2.13:5216
password: "!Sucyetat123" # only required if password is set
- mealie:
id: cobalt
tab: Home
icon: mealie.png
href: http://192.168.2.7:9200/
href: http://192.168.2.13:9200/
widget:
type: mealie
url: http://192.168.2.7:9200
key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb25nX3Rva2VuIjp0cnVlLCJpZCI6ImVhNDAxMTIzLTg1ZGItNDZhMi04Y2M1LTEzYmVmNGM2ZjgxMCIsIm5hbWUiOiJIb21lcGFnZSIsImludGVncmF0aW9uX2lkIjoiZ2VuZXJpYyIsImV4cCI6MTk0MDE1NTE4NX0.NgpovwuA-FGjt6f6q5kInmmIUadjXRCEpoowfRnYhHE
url: http://192.168.2.13:9200
key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb25nX3Rva2VuIjp0cnVlLCJpZCI6IjMxNWM4ZmNjLWI1Y2ItNDMyMy1hNDNmLTIyNjAwYjU2ZTJlOSIsIm5hbWUiOiJob21lcGFnZSIsImludGVncmF0aW9uX2lkIjoiZ2VuZXJpYyIsImV4cCI6MTk0MjI2NjU4NH0.iPE6newlQ3PVqdbgDCDdsAqZrwZ6glROWI1kvq5zb_I
version: 2 # only required if version > 1, defaults to 1
- Nextcloud:
@@ -114,16 +114,6 @@
password: "!Sucyetat123"
- MyGitea:
id: navy
tab: Home
icon: gitea.png
href: https://mygitea.mikemcfetridge.com/
widget:
type: gitea
url: https://mygitea.mikemcfetridge.com/
key: 1ba8eac5698e4e1ea9461b814635e5220b707767
- Gitea:
id: navy
tab: Home
icon: gitea.png
@@ -131,8 +121,7 @@
widget:
type: gitea
url: https://gitea.mikemcfetridge.com/
key: 10db6351209bc8cd900f6b03064e5a4f3f971eb3
key: 6cac00dd2f58fcc1bcdeae858f896b1995a19fd9
- BookStack:
id: slate
@@ -260,27 +249,15 @@
##################################### Network & System TAB Services ##############################################################
- Network:
- Pi-hole:
id: slate
tab: Network
href: http://192.168.2.5/admin/login
icon: pi-hole.png
widget:
type: pihole
url: http://192.168.2.5
version: 6
key: "!Sucyetat123"
fields: ["queries", "blocked", "blocked_percent", "gravity"]
- Nginx Proxy Manager:
id: emerald
tab: Network
href: http://192.168.2.12:81
href: http://192.168.2.14:81
icon: nginx-proxy-manager.png
description: Nginx Proxy Manager
widget:
type: npm
url: http://192.168.2.12:81
url: http://192.168.2.14:81
username: mmcfetridg@aol.com
password: "!Sucyetat123"
fields: ["enabled", "disabled", "total"]
@@ -337,7 +314,7 @@
type: customapi
url: https://patch.mikemcfetridge.com/api/v1/gethomepage/stats
headers:
Authorization: Basic cGF0Y2htb25fYWVfYzJlZGUxODcyNzI4NDU0MTM1ZWI5ZWE3ZThkYmY1MTY6MzdlMDdlNjM4YjFiMjUzYjIyYWFjMWQ3ODA0ZTdhODExZTM0ZTMzNGM0MDczMjI5YWQwN2EwYjIzODU2NDhhOQ==
Authorization: Basic cGF0Y2htb25fYWVfNTIxMmM5ZDg4M2E1NzA0NGIzZmJhZDdhMzQyYjVlODg6MTI0YzlhYzQ3ZTBlM2EzYWZiMTdjOTE5MWExYzU5M2YxOGJhNDdkYWQ0NjBjZmU2MDJmZDQ5MzE2ZDM0MTQ1Ng==
mappings:
- field: total_hosts
label: Total Hosts
@@ -372,14 +349,14 @@
id: cerulean
tab: Bookmarks
icon: semaphore.png
href: http://192.168.2.7:3020
href: http://192.168.2.13:3020
description: CI/CD Automation
- Wg-Easy:
id: rose
tab: Bookmarks
icon: wireguard.png
href: http://192.168.2.7:10086
href: http://192.168.2.13:10086
description: Wireguard VPN
- YouTube:
+13
View File
@@ -0,0 +1,13 @@
# ============================================================
# SYSTEM SETTINGS
# ============================================================
TZ=America/New_York
DATA_PATH=/opt/Docker-Deployments/NginxProxyManager/data
# ============================================================
# DATABASE CREDENTIALS
# ============================================================
MYSQL_ROOT_PASSWORD=rhDGjilZm6XEMJ
MYSQL_DATABASE=npm
MYSQL_USER=npm
MYSQL_PASSWORD=rhDGjilZm6XEMJ
+20 -17
View File
@@ -1,51 +1,54 @@
# Nginx Proxy Manager & MariaDB Stack
services:
db:
image: 'jc21/mariadb-aria:latest'
image: jc21/mariadb-aria:latest
container_name: npm-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=rhDGjilZm6XEMJ
- MYSQL_DATABASE=npm
- MYSQL_USER=npm
- MYSQL_PASSWORD=rhDGjilZm6XEMJ
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MARIADB_AUTO_UPGRADE=1
- TZ=${TZ}
volumes:
- /opt/Docker-Deployments/NginxProxyManager/data/mysql:/var/lib/mysql
- ${DATA_PATH}/mysql:/var/lib/mysql
networks:
- internal
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u$MYSQL_USER", "-p$MYSQL_PASSWORD"]
test: ["CMD-SHELL", "mariadb-admin ping -h 127.0.0.1 -u root -p$$MYSQL_ROOT_PASSWORD || exit 1"]
interval: 20s
timeout: 5s
retries: 5
start_period: 30s
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
environment:
- TZ=America/New_York
- TZ=${TZ}
- DB_MYSQL_HOST=db
- DB_MYSQL_PORT=3306
- DB_MYSQL_USER=npm
- DB_MYSQL_PASSWORD=rhDGjilZm6XEMJ
- DB_MYSQL_NAME=npm
- DB_MYSQL_USER=${MYSQL_USER}
- DB_MYSQL_PASSWORD=${MYSQL_PASSWORD}
- DB_MYSQL_NAME=${MYSQL_DATABASE}
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /opt/Docker-Deployments/NginxProxyManager/data/npm:/data
- /opt/Docker-Deployments/NginxProxyManager/data/letsencrypt:/etc/letsencrypt
- /opt/Docker-Deployments/NginxProxyManager/logs:/data/logs
- ${DATA_PATH}/npm:/data
- ${DATA_PATH}/letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
condition: service_healthy
restart: true
networks:
- internal
- external
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:81/api/status"]
test: ["CMD", "curl", "-f", "http://localhost:81/"]
interval: 20s
timeout: 5s
retries: 5
+169
View File
@@ -0,0 +1,169 @@
# Documentation: https://patchmon.net/docs/patchmon-operator-guide#patchmon-environment-variables-reference
# ==============================================================================
# Run the script ./setup-env.sh for easy first time filling of variables
# Or Manually perform the tasks below
# ==============================================================================
# [ ] Enter in your frontend URLs you will use to access PatchMon in CORS_ORIGIN
# [ ] Run "openssl rand -hex 64" and put that value in the JWT_SECRET=
# [ ] Run "openssl rand -hex 64" and put that value in the AI_ENCRYPTION_KEY=
# [ ] Run "openssl rand -hex 64" and put that value in the SESSION_SECRET==
# [ ] Run "openssl rand -hex 32" and put that password in where it says POSTGRES_PASSWORD= for the postgresql database
# [ ] Run "openssl rand -hex 32" and put that password in where it says REDIS_PASSWORD= for the redis db
# ==============================================================================
# SERVER
# ==============================================================================
# CORS_ORIGIN must match your frontend URL. Comma-separated for multiple origins.
# Example:
#CORS_ORIGIN=https://patchmon.domain.tld,http://patchmon.local:3000
CORS_ORIGIN=https://patch.mikemcfetridge.com,http://192.168.2.14:3000,http://localhost:3000
JWT_SECRET=b552dcd09a958144ee3e436acd09767574fba73d2f4237496c97e6d2d59d2b6d4575d0148a3869276130d505492e73c023d40c090c42780fb611d0be9c29f4dc
# ==============================================================================
# DATABASE (Postgresql)
# ==============================================================================
# It's optional to change the patchmon_user and patchmon_db
# POSTGRES_HOST is "database" because that's the name of the docker container.
# If you are using an external DB or localhost then you may change this accordingly
POSTGRES_HOST=database
POSTGRES_PASSWORD=0200334338be290e45a13737783fc4e3c873bf63fd4817bf6f254e23f4db38c6
POSTGRES_USER=patchmon_user
POSTGRES_DB=patchmon_db
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}
# ==============================================================================
# REDIS
# ==============================================================================
## REDIS_HOST is "redis" because that's the name of the docker container.
# If you are using an external redis server then you may change this accordingly
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=0200334338be290e45a13737783fc4e3c873bf63fd4817bf6f254e23f4db38c6
REDIS_DB=0
# ==============================================================================
# SESSION ENCRYPTION SECRETS
# ==============================================================================
# Used in various encryptions (keep these safe)
SESSION_SECRET=b552dcd09a958144ee3e436acd09767574fba73d2f4237496c97e6d2d59d2b6d4575d0148a3869276130d505492e73c023d40c090c42780fb611d0be9c29f4dc
AI_ENCRYPTION_KEY=b552dcd09a958144ee3e436acd09767574fba73d2f4237496c97e6d2d59d2b6d4575d0148a3869276130d505492e73c023d40c090c42780fb611d0be9c29f4dc
# ==============================================================================
# GUACAMOLE (Windows RDP - Beta)
# ==============================================================================
# RDP: connect to guacd sidecar (server image has no guacd binary)
GUACD_ADDRESS=guacd:4822
# ==============================================================================
# OPTIONAL - CAN BE CONFIGURED VIA APP SETTINGS UI
# ==============================================================================
### Setting them here overrides the configured settings from the app or defaults coded in
## Server
## TRUST_PROXY is to be set to true if you are using another proxy in front of the app like nginx / caddy etc
# ENABLE_HSTS=false
TRUST_PROXY=true
## Timezone (TZ or TIMEZONE) Set in full as an example : TZ=Europe/London
# TZ=UTC
## Logging
## LOG_LEVEL can be info/warn/debug/error
# ENABLE_LOGGING=true
# LOG_LEVEL=info
## Authentication / Lockout
# MAX_LOGIN_ATTEMPTS=5
# LOCKOUT_DURATION_MINUTES=15
# SESSION_INACTIVITY_TIMEOUT_MINUTES=30
# TFA_MAX_REMEMBER_SESSIONS=5
## Auth / JWT / TFA
# When true, auth cookies are browser session cookies (cleared when the browser session ends; not persisted across browser restarts).
# AUTH_BROWSER_SESSION_COOKIES=true
# JWT_EXPIRES_IN=1h
# MAX_TFA_ATTEMPTS=5
# TFA_LOCKOUT_DURATION_MINUTES=30
# TFA_REMEMBER_ME_EXPIRES_IN=30d
## Password policy
# PASSWORD_MIN_LENGTH=8
# PASSWORD_REQUIRE_UPPERCASE=true
# PASSWORD_REQUIRE_LOWERCASE=true
# PASSWORD_REQUIRE_NUMBER=true
# PASSWORD_REQUIRE_SPECIAL=true
## Body limits (e.g. 5mb, 10mb, 2mb)
# JSON_BODY_LIMIT=5mb
# AGENT_UPDATE_BODY_LIMIT=2mb
## Env file path (default: .env)
# ENV_FILE=.env
## Database connection / pool (startup only)
# PM_DB_CONN_MAX_ATTEMPTS=30
# PM_DB_CONN_WAIT_INTERVAL=2
# DB_CONNECTION_LIMIT=30
# DB_CONNECT_TIMEOUT=10
# DB_TRANSACTION_LONG_TIMEOUT=60000
## Server - Port 3000 is the frontend port, which is proxying backend queries to the backend. This is handled by the server itself. If you change this port, you change the port that is used to access PatchMon and therefore will also need to ammend the "ports" values in your docker-compose.yml
# PORT=3000
# APP_ENV=production
## Rate limits (env-only)
# RATE_LIMIT_WINDOW_MS=900000
# RATE_LIMIT_MAX=5000
# AUTH_RATE_LIMIT_WINDOW_MS=600000
# AUTH_RATE_LIMIT_MAX=500
# AGENT_RATE_LIMIT_WINDOW_MS=60000
# AGENT_RATE_LIMIT_MAX=1000
# PASSWORD_RATE_LIMIT_WINDOW_MS=900000
# PASSWORD_RATE_LIMIT_MAX=5
## User default - Can be changed in settings
# DEFAULT_USER_ROLE=user
## Redis
# REDIS_TLS=false
# REDIS_TLS_VERIFY=false
# REDIS_TLS_CA=/path/to/ca.pem
# REDIS_CONNECT_TIMEOUT_MS=60000
# REDIS_COMMAND_TIMEOUT_MS=60000
## OIDC / SSO (when OIDC_ENABLED=true, issuer/client/secret/redirect required)
# OIDC_ENABLED=false
# OIDC_ISSUER_URL=
# OIDC_CLIENT_ID=
# OIDC_CLIENT_SECRET=
# OIDC_REDIRECT_URI=
# OIDC_SCOPES=openid email profile groups
# OIDC_AUTO_CREATE_USERS=false
# OIDC_DEFAULT_ROLE=user
# OIDC_DISABLE_LOCAL_AUTH=false
# OIDC_BUTTON_TEXT=Login with SSO
# OIDC_SESSION_TTL=600
# OIDC_POST_LOGOUT_URI=
# OIDC_SYNC_ROLES=false
# OIDC_ADMIN_GROUP=
# OIDC_SUPERADMIN_GROUP=
# OIDC_HOST_MANAGER_GROUP=
# OIDC_READONLY_GROUP=
# OIDC_USER_GROUP=
# OIDC_ENFORCE_HTTPS=true
# FRONTEND_URL= # Fallback for OIDC_POST_LOGOUT_URI
## Agent binaries
# AGENTS_DIR=agents
# AGENT_BINARIES_DIR #
## RDP (in-browser RDP for Windows hosts via guacd)
# GUACD_PATH= # Path to guacd binary, or empty to use PATH
# GUACD_ADDRESS=127.0.0.1:4822
+118
View File
@@ -0,0 +1,118 @@
# =============================================================================
# PatchMon Docker Compose - Production
# =============================================================================
# To set up your environment, run the setup script:
#
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/PatchMon/PatchMon/refs/heads/main/docker/setup-env.sh)"
#
# This will download env.example, generate secrets, and create your .env file.
# Alternatively, copy env.example to .env and fill in the values manually.
#
# Then start PatchMon:
#
# docker compose up -d
#
# See the PatchMon documentation for full configuration details.
# =============================================================================
name: patchmon
services:
server:
image: ghcr.io/patchmon/patchmon-server:latest
restart: unless-stopped
env_file: .env
ports:
- "3000:3000"
networks:
- internal
- external
depends_on:
database:
condition: service_healthy
redis:
condition: service_healthy
guacd:
condition: service_healthy
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
database:
image: postgres:17-alpine
restart: unless-stopped
env_file: .env
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- internal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 3s
timeout: 5s
retries: 7
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
redis:
image: redis:7-alpine
restart: unless-stopped
env_file: .env
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- redis_data:/data
networks:
- internal
healthcheck:
test: ["CMD", "redis-cli", "--no-auth-warning", "-a", "${REDIS_PASSWORD}", "ping"]
interval: 3s
timeout: 5s
retries: 7
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
guacd:
image: guacamole/guacd:latest
restart: unless-stopped
read_only: true
tmpfs:
- /tmp:size=64m
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
mem_limit: 512m
cpus: '1.0'
networks:
- internal
- external
healthcheck:
test: ["CMD-SHELL", "nc -z localhost 4822 || exit 1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
postgres_data:
redis_data:
networks:
internal:
external: true # Tells Compose not to create this network
external:
external: true # Tells Compose not to create this network
+4 -4
View File
@@ -1,11 +1,13 @@
TZ=America/New_York
PUID=1000
PGID=1000
WATCHTOWER_CLEANUP=true
WATCHTOWER_INCLUDE_RESTARTING=true
WATCHTOWER_ROLLING_RESTARTING=true
WATCHTOWER_SCHEDULE=0 0 4 * * *
WATCHTOWER_SCHEDULE="0 0 4 * * *"
WATCHTOWER_INCLUDE_STOPPED=true
WATCHTOWER_NOTIFICATIONS=email
WATCHTOWER_NOTIFICATIONS_HOSTNAME=Docker-Deply # Add Server Name or IP Address
WATCHTOWER_NOTIFICATIONS_HOSTNAME=Docker-02
WATCHTOWER_NOTIFICATION_EMAIL_FROM=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_TO=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.mmcfetridge.net
@@ -13,5 +15,3 @@ WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=!Sucyetat123
WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2
PUID=1000
PGID=1000
+22 -20
View File
@@ -1,28 +1,29 @@
services:
watchtower:
image: containrrr/watchtower
image: nickfedor/watchtower:latest
container_name: watchtower
restart: unless-stopped
env_file: .env
env_file:
- .env
environment:
- DOCKER_API_VERSION=1.44
- TZ=America/New_York
- PUID:=1000 # Reference PUID from .env
- PGID=1000 # Reference PGID from .env
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_INCLUDE_RESTARTING=true
- WATCHTOWER_ROLLING_RESTARTING=true
- WATCHTOWER_SCHEDULE=0 0 4 * * *
- WATCHTOWER_INCLUDE_STOPPED=true
- WATCHTOWER_NOTIFICATIONS=email
- WATCHTOWER_NOTIFICATIONS_HOSTNAME=Docker-Deployment # Add Server Name or IP Address
- WATCHTOWER_NOTIFICATION_EMAIL_FROM=miker@mmcfetridge.net
- WATCHTOWER_NOTIFICATION_EMAIL_TO=miker@mmcfetridge.net
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.mmcfetridge.net
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=miker@mmcfetridge.net
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=!Sucyetat123
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2
- TZ=${TZ}
- PUID=${PUID}
- PGID=${PGID}
- WATCHTOWER_CLEANUP=${WATCHTOWER_CLEANUP}
- WATCHTOWER_INCLUDE_RESTARTING=${WATCHTOWER_INCLUDE_RESTARTING}
- WATCHTOWER_ROLLING_RESTARTING=${WATCHTOWER_ROLLING_RESTARTING}
- WATCHTOWER_SCHEDULE=${WATCHTOWER_SCHEDULE}
- WATCHTOWER_INCLUDE_STOPPED=${WATCHTOWER_INCLUDE_STOPPED}
- WATCHTOWER_NOTIFICATIONS=${WATCHTOWER_NOTIFICATIONS}
- WATCHTOWER_NOTIFICATIONS_HOSTNAME=${WATCHTOWER_NOTIFICATIONS_HOSTNAME}
- WATCHTOWER_NOTIFICATION_EMAIL_FROM=${WATCHTOWER_NOTIFICATION_EMAIL_FROM}
- WATCHTOWER_NOTIFICATION_EMAIL_TO=${WATCHTOWER_NOTIFICATION_EMAIL_TO}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD}
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=${WATCHTOWER_NOTIFICATION_EMAIL_DELAY}
security_opt:
- no-new-privileges:true
volumes:
@@ -31,6 +32,7 @@ services:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- external
networks:
external:
external: true # Tells Compose not to create this network.
external: true
+4 -4
View File
@@ -4,18 +4,18 @@ services:
image: docker.io/searxng/searxng:latest
restart: unless-stopped
ports:
- "8080:8080"
- "8081:8080"
volumes:
- /opt/Docker-Deployments/searxng:/etc/searxng:rw
- /opt/Docker-Deployments/searxng_cache:/var/cache/searxng:rw
- /opt/Docker-Deployments/searxng/searxng_cache:/var/cache/searxng:rw
environment:
- SEARXNG_BASE_URL=https://search.mikemcfetridge.com
- UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
- UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8080" ]
test: [ "CMD", "curl", "-f", "http://localhost:8081" ]
interval: 10s
retries: 3
timeout: 10s
start_period: 30s
#