Compare commits
31
Commits
918eaee72e
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e0fd61d4d5 | ||
|
|
e8cb9bdaaa | ||
|
|
fdd15925ae | ||
|
|
5906995a65 | ||
|
|
b5974ffa86 | ||
|
|
f19cf926e8 | ||
|
|
21c30ee072 | ||
|
|
a9f0b121c6 | ||
|
|
f7a88f4a34 | ||
|
|
a089a27771 | ||
|
|
62de3c75e5 | ||
|
|
15968c489b | ||
|
|
4c4ddd20df | ||
|
|
e12cd877f1 | ||
|
|
198e49cb92 | ||
|
|
0fc0cefa6f | ||
|
|
10bf991aa6 | ||
|
|
b3db1f6348 | ||
|
|
5257b3546b | ||
|
|
60cf09e800 | ||
|
|
9a72e128f1 | ||
|
|
defde8c94e | ||
|
|
65ec92d4d6 | ||
|
|
09f9cfc378 | ||
|
|
3fd2b94cff | ||
|
|
a5154cfc2a | ||
|
|
6ce89ed4a3 | ||
|
|
24a595a574 | ||
|
|
d4cb972e5f | ||
|
|
ad326b97a3 | ||
|
|
7844ff4c8f |
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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,14 +314,14 @@
|
||||
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
|
||||
- field: hosts_needing_updates
|
||||
label: Needs Updates
|
||||
- field: security_updates
|
||||
label: Security Updates
|
||||
- field: total_hosts
|
||||
label: Total Hosts
|
||||
- field: hosts_needing_updates
|
||||
label: Needs Updates
|
||||
- field: security_updates
|
||||
label: Security Updates
|
||||
############################################## Bookmark TAB Services #############################################################
|
||||
|
||||
- Bookmarks:
|
||||
@@ -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:
|
||||
|
||||
@@ -27,4 +27,4 @@ services:
|
||||
|
||||
networks:
|
||||
external:
|
||||
external: true # Tells Compose not to create this network
|
||||
external: true # Tells Compose not to create this network
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -55,4 +58,4 @@ networks:
|
||||
internal:
|
||||
external: true
|
||||
external:
|
||||
external: true
|
||||
external: true
|
||||
|
||||
+169
@@ -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
|
||||
@@ -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
|
||||
@@ -8,7 +8,7 @@ services:
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /opt/Docker-Deployments/Sencho/data:/app/data
|
||||
# Change this line so the container path matches the host path:
|
||||
# Change this line so the container path matches the host path:
|
||||
- /opt/Docker-Deployments:/opt/Docker-Deployments
|
||||
environment:
|
||||
- COMPOSE_DIR=/opt/Docker-Deployments
|
||||
|
||||
+4
-4
@@ -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
|
||||
@@ -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,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
|
||||
|
||||
#
|
||||
@@ -19,4 +19,4 @@ services:
|
||||
- GUNICORN_WORKER_CLASS=sync # Prevents threading conflicts during background updates
|
||||
networks:
|
||||
external:
|
||||
external: true # Tells Compose not to create this network..
|
||||
external: true # Tells Compose not to create this network..
|
||||
Reference in New Issue
Block a user