This commit is contained in:
2025-11-22 09:57:32 -08:00
parent 17a31e8b56
commit 8b4591482c
75 changed files with 4977 additions and 6 deletions

74
consul_backup/Authelia Normal file
View File

@@ -0,0 +1,74 @@
---
###############################################################
# Authelia configuration #
###############################################################
host: 0.0.0.0
port: 9091
# This secret can also be set using the env variables AUTHELIA_JWT_SECRET_FILE
jwt_secret: StifleUnifierRimmedHeadlampCornmealBobcat
default_redirection_url: https://fbleagh.duckdns.org
totp:
issuer: authelia.com
log_level: debug
# duo_api:
# hostname: api-123456789.example.com
# integration_key: ABCDEF
# # This secret can also be set using the env variables AUTHELIA_DUO_API_SECRET_KEY_FILE
# secret_key: 1234567890abcdefghifjkl
authentication_backend:
file:
path: /config/users_database.yml
access_control:
default_policy: deny
rules:
# Rules applied to everyone
- domain: "fbleagh.duckdns.org"
policy: one_factor
- domain: "m.fbleagh.duckdns.org"
policy: bypass
resources:
- "^/rest.*"
- domain: "rss.fbleagh.duckdns.org"
policy: bypass
resources:
- "^/api."
- domain: "*.fbleagh.duckdns.org"
policy: one_factor
session:
name: authelia_session
# This secret can also be set using the env variables AUTHELIA_SESSION_SECRET_FILE
secret: UpstreamClutterSlumPreplanCompactedBackspin
expiration: 3600 # 1 hour
inactivity: 300 # 5 minutes
domain: fbleagh.duckdns.org # Should match whatever your root protected domain is
regulation:
max_retries: 3
find_time: 120
ban_time: 300
storage:
local:
path: /config/db.sqlite3
notifier:
disable_startup_check: false
filesystem:
filename: /config/notification.txt
# notifier:
# smtp:
# username: test
# # This secret can also be set using the env variables AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE
# password: password
# host: mail.gmail.com
# port: 25
# sender: admin@example.com
# ...

16
consul_backup/Dex Normal file
View File

@@ -0,0 +1,16 @@
log-level = debug
whitelist = stuart.stent@gmail.com,stephen.bunt@gmail.com,Stephen.Bunt@gmail.com,inavinay@gmail.com,sdoltonz@gmail.com,andrewsayer@gmail.com
rule.music.action = allow
rule.music.rule = Host(`m.fbleagh.duckdns.org`) && PathPrefix(`/rest/`)
rule.musicdedyn.action = allow
rule.musicdedyn.rule = Host(`m.fbleagh.dedyn.io`) && PathPrefix(`/rest/`)
rule.rss.action = allow
rule.rss.rule = Host(`rss.fbleagh.duckdns.org`) && PathPrefix(`/api/`)
rule.rss.whitelist = stuart.stent@gmail.com
rule.rssdedyn.action = allow
rule.rssdedyn.rule = Host(`rss.fbleagh.dedyn.io`) && PathPrefix(`/api/`)
rule.rssdedyn.whitelist = stuart.stent@gmail.com

View File

@@ -0,0 +1 @@
{"tplink_ip": "192.168.4.52", "tv_ip": "192.168.4.51", "tv_mac": "c0:d7:aa:1d:a6:7e"}

View File

@@ -0,0 +1 @@
08408673506401e6f0546171c15cd181

1
consul_backup/MinioAuth Normal file
View File

@@ -0,0 +1 @@
minio:minio123

10
consul_backup/Rclone_conf Normal file
View File

@@ -0,0 +1,10 @@
[minio]
type = s3
provider = Minio
env_auth = false
access_key_id = minio
secret_access_key = minio123
endpoint = http://minio.service.dc1.consul:9000
location_constraint =
server_side_encryption =
acl = public-read-write

View File

@@ -0,0 +1 @@
eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIyMkJRTTkiLCJzdWIiOiIyRk5WTkYiLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZXMiOiJyc29jIHJlY2cgcnNldCByb3h5IHJudXQgcnBybyByc2xlIHJjZiByYWN0IHJyZXMgcmxvYyByd2VpIHJociBydGVtIiwiZXhwIjoxNzM3NDkzMjIzLCJpYXQiOjE3Mzc0NjQ0MjN9.xkeiYOsdjCnL1mj3iN0wRYxPusCKItCdwcY2c8bcw4k

View File

@@ -0,0 +1 @@
28800

66
consul_backup/alerts Normal file
View File

@@ -0,0 +1,66 @@
---
groups:
- name: hosts
rules:
- alert: NodeDown
expr: up{job="node-exporter"} == 0
for: 5s
labels:
severity: critical
annotations:
summary: "{{$labels.node}} Down"
description: "{{$labels.node}} is down"
- alert: Disk High
expr: nomad_client_host_disk_used_percent{disk="/dev/sda1"} > 80
for: 5m
labels:
severity: critical
annotations:
summary: "{{$labels.host}} Disk Usage > 80%"
description: "{{$labels.host}} disk usage at {{ $value }}%"
- alert: NomadJobFailed
expr: increase(nomad_nomad_job_summary_failed[1h]) > 0
for: 60m
labels:
severity: warning
annotations:
summary: Nomad job failed (instance {{ $labels.instance }})
description: "Nomad job failed\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: NomadJobLost
expr: increase(nomad_nomad_job_summary_lost[1h]) > 0
for: 60m
labels:
severity: warning
annotations:
summary: Nomad job lost (instance {{ $labels.instance }})
description: "Nomad job lost\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: NomadJobQueued
expr: nomad_nomad_job_summary_queued > 0
for: 2m
labels:
severity: warning
annotations:
summary: Nomad job queued (instance {{ $labels.instance }})
description: "Nomad job queued\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: NomadBlockedEvaluation
expr: nomad_nomad_blocked_evals_total_blocked > 0
for: 10m
labels:
severity: warning
annotations:
summary: Nomad blocked evaluation (instance {{ $labels.instance }})
description: "Nomad blocked evaluation\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: ConsulServiceHealthcheckFailed
expr: consul_catalog_service_node_healthy == 0
for: 10m
labels:
severity: critical
annotations:
summary: Consul service healthcheck failed (instance {{ $labels.instance }})
description: "Service: `{{ $labels.service_name }}` Healthcheck: `{{ $labels.service_id }}`\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"

View File

@@ -0,0 +1,199 @@
# This is an example configuration file that documents all the options.
# It will need to be modified for your specific use case.
# Please refer to the link below for more details on how to set up the configuration file
# https://github.com/StuffAnThings/qbit_manage/wiki/Config-Setup
commands:
# The commands defined below will IGNORE any commands used in command line and docker env variables.
dry_run: False
cross_seed: False
recheck: False
cat_update: False
tag_update: False
rem_unregistered: False
tag_tracker_error: False
rem_orphaned: True
tag_nohardlinks: False
skip_cleanup: False
qbt:
# qBittorrent parameters
host: "qbittorrent.service.dc1.consul:8080"
#user: "username"
#pass: "password"
settings:
force_auto_tmm: False # Will force qBittorrent to enable Automatic Torrent Management for each torrent.
tracker_error_tag: issue # Will set the tag of any torrents that do not have a working tracker.
ignoreTags_OnUpdate: # When running tag-update function, it will update torrent tags for a given torrent even if the torrent has one or more of the tags defined here.
- noHL
- issue
- cross-seed
directory:
# Do not remove these
# Cross-seed var: </your/path/here/> # Output directory of cross-seed
# root_dir var: </your/path/here/> # Root downloads directory used to check for orphaned files, noHL, and RecycleBin.
# <OPTIONAL> remote_dir var: </your/path/here/> # Path of docker host mapping of root_dir.
# Must be set if you're running qbit_manage locally and qBittorrent/cross_seed is in a docker
# <OPTIONAL> recycle_bin var: </your/path/here/> # Path of the RecycleBin folder. Default location is set to remote_dir/.RecycleBin
# <OPTIONAL> torrents_dir var: </your/path/here/> # Path of the your qbittorrent torrents directory. Required for `save_torrents` attribute in recyclebin
cross_seed: "/downloads/cross_seed/"
root_dir: "/downloads/"
recycle_bin: "/downloads/.RecycleBin/"
#torrents_dir: "/qbittorrent/data/BT_backup"
orphaned_dir: "/downloads/orphaned_data"
cat:
# Category & Path Parameters
# <Category Name> : <save_path> # Path of your save directory.
movies: "/data/torrents/Movies"
tv: "/data/torrents/TV"
cat_change:
# This moves all the torrents from one category to another category. This executes on --cat-update
# WARNING: if the paths are different and Default Torrent Management Mode is set to automatic the files could be moved !!!
# <Old Category Name> : <New Category>
Radarr-HD.cross-seed: movies-hd
Radarr-UHD.cross-seed: movies-uhd
movies-hd.cross-seed: movies-hd
movies-uhd.cross-seed: movies-uhd
tracker:
# Tag Parameters
# <Tracker URL Keyword>: # <MANDATORY> This is the keyword in the tracker url
# <MANDATORY> Set tag name. Can be a list of tags or a single tag
# tag: <Tag Name>
# <OPTIONAL> Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading. -2 means the global limit should be used, -1 means no limit.
# max_ratio: 5.0
# <OPTIONAL> Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding. -2 means the global limit should be used, -1 means no limit.
# max_seeding_time: 129600
# <OPTIONAL> Will limit the upload speed KiB/s (KiloBytes/second) (-1 sets the limit to infinity)
# limit_upload_speed: 150
# <OPTIONAL> Set this to the notifiarr react name. This is used to add indexer reactions to the notifications sent by Notifiarr
# notifiarr: <notifiarr indexer>
animebytes.tv:
tag: AnimeBytes
notifiarr: animebytes
avistaz:
tag:
- Avistaz
- tag2
- tag3
max_ratio: 5.0
max_seeding_time: 129600
limit_upload_speed: 150
notifiarr: avistaz
beyond-hd:
tag: [Beyond-HD, tag2, tag3]
notifiarr: beyondhd
blutopia:
tag: Blutopia
notifiarr: blutopia
cartoonchaos:
tag: CartoonChaos
digitalcore:
tag: DigitalCore
max_ratio: 5.0
notifiarr: digitalcore
gazellegames:
tag: GGn
limit_upload_speed: 150
hdts:
tag: HDTorrents
max_seeding_time: 129600
landof.tv:
tag: BroadcasTheNet
notifiarr: broadcasthenet
myanonamouse:
tag: MaM
passthepopcorn:
tag: PassThePopcorn
notifiarr: passthepopcorn
privatehd:
tag: PrivateHD
notifiarr:
tleechreload:
tag: TorrentLeech
notifiarr: torrentleech
torrentdb:
tag: TorrentDB
notifiarr: torrentdb
torrentleech:
tag: TorrentLeech
notifiarr: torrentleech
tv-vault:
tag: TV-Vault
nohardlinks:
# Tag Movies/Series that are not hard linked
# Mandatory to fill out directory parameter above to use this function (root_dir/remote_dir)
# This variable should be set to your category name of your completed movies/completed series in qbit. Acceptable variable can be any category you would like to tag if there are no hardlinks found
movies-completed:
# <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
exclude_tags:
- Beyond-HD
- AnimeBytes
- MaM
# <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
cleanup: false
# <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
max_ratio: 4.0
# <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
max_seeding_time: 86400
# <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
limit_upload_speed:
# <OPTIONAL> min seeding time var: Will ensure that torrent is not deleted by cleanup variable if torrent does not meet minimum seeding time (min).
min_seeding_time: 43200
# Can have additional categories set with separate ratio/seeding times defined.
series-completed:
# <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
exclude_tags:
- Beyond-HD
- BroadcasTheNet
# <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
cleanup: false
# <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
max_ratio: 4.0
# <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
max_seeding_time: 86400
# <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
limit_upload_speed:
# <OPTIONAL> min seeding time var: Will ensure that torrent is not deleted by cleanup variable if torrent does not meet minimum seeding time (min).
min_seeding_time: 43200
recyclebin:
# Recycle Bin method of deletion will move files into the recycle bin (Located in /root_dir/.RecycleBin) instead of directly deleting them in qbit
# By default the Recycle Bin will be emptied on every run of the qbit_manage script if empty_after_x_days is defined.
enabled: false
# <OPTIONAL> empty_after_x_days var:
# Will automatically remove all files and folders in recycle bin after x days. (Checks every script run)
# If this variable is not defined it, the RecycleBin will never be emptied.
# WARNING: Setting this variable to 0 will delete all files immediately upon script run!
empty_after_x_days: 60
# <OPTIONAL> save_torrents var:
# If this option is set to true you MUST fill out the torrents_dir in the directory attribute.
# This will save a copy of your .torrent and .fastresume file in the recycle bin before deleting it from qbittorrent
save_torrents: true
# <OPTIONAL> split_by_category var:
# This will split the recycle bin folder by the save path defined in the `cat` attribute
# and add the base folder name of the recycle bin that was defined in the `recycle_bin` sub-attribute under directory.
split_by_category: false
orphaned:
# Orphaned files are those in the root_dir download directory that are not referenced by any active torrents.
# Will automatically remove all files and folders in orphaned data after x days. (Checks every script run)
# If this variable is not defined it, the orphaned data will never be emptied.
# WARNING: Setting this variable to 0 will delete all files immediately upon script run!
empty_after_x_days: 60
# File patterns that will not be considered orphaned files. Handy for generated files that aren't part of the torrent but belong with the torrent's files
exclude_patterns:
- "**/.DS_Store"
- "**/Thumbs.db"
- "**/@eaDir"
- "/data/torrents/temp/**"
- "**/*.!qB"
- "/downloads/torrentfiles/*"

View File

@@ -0,0 +1 @@
sonarr

View File

@@ -0,0 +1 @@
192.168.4.109

1
consul_backup/expires_at Normal file
View File

@@ -0,0 +1 @@
1737493223.8591053

1
consul_backup/foo Normal file
View File

@@ -0,0 +1 @@
'hello consul'

View File

@@ -0,0 +1,59 @@
import qbittorrentapi
import logging
import sys
#Creating and Configuring Logger
Log_Format = "%(levelname)s %(asctime)s - %(message)s"
logging.basicConfig(stream = sys.stdout,
format = Log_Format,
level = logging.INFO)
logger = logging.getLogger()
#Testing our Logger
qbt_client = qbittorrentapi.Client(
host='qbittorrent.service.dc1.consul',
port=8080,
username='admin',
password='adminadmin',
)
try:
qbt_client.auth_log_in()
except qbittorrentapi.LoginFailed as e:
print(e)
sys.exit(1)
# display qBittorrent info
logger.info(f'qBittorrent: {qbt_client.app.version}')
logger.info(f'qBittorrent Web API: {qbt_client.app.web_api_version}')
# logger.info(f'Web API Supported: {qbittorrentapi.supported_app_versions}')
for k,v in qbt_client.app.build_info.items(): print(f'{k}: {v}')
for torrent in qbt_client.torrents_info():
tags = [word.strip() for word in torrent.tags.split(',')]
if "812415449bd161ba71e1a30fb5450e3d346a0594" == torrent.hash:
logger.info(f'Deleting: {torrent.name}')
qbt_client.torrents_delete(delete_files=True, torrent_hashes=torrent.hash)
continue
if "/downloads/" in torrent.save_path and "PR2100" not in tags:
logger.info(f'Tagging as PR2100: {torrent.name}')
qbt_client.torrents_add_tags(tags="PR2100",torrent_hashes=torrent.hash)
qbt_client.torrents_remove_tags(tags="WDMYCLOUD",torrent_hashes=torrent.hash)
if "/archiveseeding/" in torrent.save_path and "WDMYCLOUD" not in tags:
logger.info(f'Tagging as WDMYCLOUD: {torrent.name}')
qbt_client.torrents_remove_tags(tags="PR2100",torrent_hashes=torrent.hash)
qbt_client.torrents_add_tags(tags="WDMYCLOUD",torrent_hashes=torrent.hash)
if torrent.trackers[0]["msg"] != "This torrent is private" and len(torrent.trackers) == 4:
if "rawkbawx" not in torrent.trackers[3]["url"]:
logger.info(f'Tagging as Private: {torrent.name} {torrent.hash}')
qbt_client.torrents_set_share_limits(ratio_limit=1,seeding_time_limit=1440,inactive_seeding_time_limit=-1,torrent_hashes=torrent.hash)
qbt_client.torrents_add_tags(tags="PublicTracker",torrent_hashes=torrent.hash)
sys.exit(0)

View File

@@ -0,0 +1,87 @@
import qbittorrentapi
from pprint import pprint
# instantiate a Client using the appropriate WebUI configuration
qbt_client = qbittorrentapi.Client(
host='qbittorrent.service.dc1.consul',
port=8080,
username='admin',
password='adminadmin',
)
# the Client will automatically acquire/maintain a logged-in state
# in line with any request. therefore, this is not strictly necessary;
# however, you may want to test the provided login credentials.
try:
qbt_client.auth_log_in()
except qbittorrentapi.LoginFailed as e:
print(e)
# display qBittorrent info
print(f'qBittorrent: {qbt_client.app.version}')
print(f'qBittorrent Web API: {qbt_client.app.web_api_version}')
for k,v in qbt_client.app.build_info.items(): print(f'{k}: {v}')
# Creating an empty dictionary
trackermap = {}
# Adding list as value
trackermap["Docspedia"] = ["http://science.docspedia.world:2710/f200baf50d45595c269b7b2d8c475a56/announce"]
trackermap["MMA"] = ["http://a.mma-tracker.org:2710/ed6d78535267e979de36ec2401999d3a/announce"]
trackermap["IPT"] = ["http://127.0.0.1.stackoverflow.tech/cc7288bf91565af486c8e4bad2b63a37/announce"
"http://routing.bgp.technology/cc7288bf91565af486c8e4bad2b63a37/announce",
"http://async.empirehost.me/cc7288bf91565af486c8e4bad2b63a37/announce",
]
trackermap["Anthelion"] = ["https://tracker.anthelion.me:34001/LmD45Qf7p0MVgYkPm1Uogc8wNqDtvsjF/announce"]
trackermap["Cathode"] = ["https://signal.cathode-ray.tube/yebawgmvnvojwjnfw2a1qr5wg3pqwe4o/announce"]
trackermap["RedSeeding"] = ["https://flacsfor.me/f08a15129e4276f609c8b99abb746195/announce"]
trackermap["cinemaz"] = ["https://tracker.cinemaz.to/50500ba3815e18c837cd753ceb0080e3/announce"]
trackermap["iMetal"] = ["http://metal.iplay.ro/announce.php?passkey=2b4d98fe0f4b7325a15e5654961498ea"]
trackermap["rawk"] = ["http://rawkbawx.rocks:2710/announce","http://rawkbawx.rocks:2710/f7903677d2c030b89b69799f4bd9edbd/announce"]
trackermap["torrentleech"] = ["https://tracker.tleechreload.org/a/3d6cde5fd3bf1a375f3466d40f9ee9bb/announce"
,"https://tracker.torrentleech.org/a/3d6cde5fd3bf1a375f3466d40f9ee9bb/announce"]
trackermap["MyAnonamouse"] = ["https://t.myanonamouse.net/tracker.php/VPRYYAL-WpTwnr9G9aIN6044YVZ7x8Ao/announce"]
trackermap["Nebulance"] = ["https://tracker.nebulance.io/edcd6847fb3c31fd9958dd7144f0ea15/announce"]
trackermap["Orpheus_seeding"] = ["https://home.opsfet.ch/EAvBpDtmBtbziuydzwzhasgqAxrCqFwo/announce"]
trackermap["tvchaos"] = ["https://tvchaosuk.com/announce/cbaade5ac5612edf854b295153a60e6b"]
trackermap["filelist"] = ["http://reactor.filelist.io/98ece6e971fe7e89a0c86a00c20c1037/announce",
"http://reactor.flro.org/98ece6e971fe7e89a0c86a00c20c1037/announce"]
categories_to_tidy = ["radarr","tv-sonarr","lidar","readarr","readarrAudio","Uncategorized"]
#ensutre cats exist
torrents_cats = qbt_client.torrents_categories()
for tracker in trackermap:
if tracker not in torrents_cats:
savepath = "/downloads/seeding/" + tracker
qbt_client.torrents_create_category(name=tracker, save_path=savepath)
if tracker in torrents_cats:
savepath = "/downloads/seeding/" + tracker
if torrents_cats[tracker]["savePath"] != savepath:
# print(tracker)
# print(torrents_cats[tracker]["savePath"])
qbt_client.torrents_edit_category(name=tracker, save_path=savepath)
# retrieve and show all torrents
for torrent in qbt_client.torrents_info():
# pprint(torrent.category)
for messycat in categories_to_tidy:
if messycat == torrent.category:
# pprint(torrent["name"])
# pprint(torrent.trackers)
for tracker in torrent.trackers:
for knowntracker in trackermap:
if tracker["url"] in trackermap[knowntracker]:
name = torrent["name"]
pprint(f"{knowntracker} detected: {name}")
#seeding_time in seconds
if int(torrent.seeding_time) > 86400:
pprint(f"Moving {name} to {knowntracker}")
qbt_client.torrents_set_category(category=knowntracker,torrent_hashes=torrent.hash)
else:
pprint(f"seedtime {name} to {knowntracker}")

View File

@@ -0,0 +1 @@
your-admin-token

View File

@@ -0,0 +1 @@
your-metrics-token

View File

@@ -0,0 +1 @@
a656794c861ee8f9870050f9c4d271182f4f384d68784ce5ea501185566e1f8c

View File

@@ -0,0 +1 @@
https://gitea.service.dc1.fbleagh.duckdns.org

View File

@@ -0,0 +1 @@
jwNHqpUReAdJBIFkVqhEpi8OFYIJypCczi2rIMml

View File

@@ -0,0 +1,75 @@
APP_NAME = Gitea: Git with a cup of tea
RUN_USER = root
RUN_MODE = prod
[oauth2]
JWT_SECRET = kkj2kyhM1zFeAzxBeal4ldqTk8GByno3ZGzTXOaTpxM
[security]
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2MzA2OTA0ODB9.msVfikOWJX7Po0V8x9AJDGYJUuQNy60gCq9N7ZWx_2s
INSTALL_LOCK = true
SECRET_KEY = MjBF7z9rRsvKRdJDVc8hbx5ywH2IrUofn3hC5sGGK6joHsq7syGpqJBxb8OUj02c
PASSWORD_HASH_ALGO = pbkdf2
[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gitea
USER = gitea
PASSWD =
SCHEMA =
SSL_MODE = disable
CHARSET = utf8
PATH = /data/gitea.db
LOG_SQL = false
[repository]
ROOT = /data/gitea-repositories
ENABLE_PUSH_CREATE_USER = true
[server]
SSH_DOMAIN = gitea.service.dc1.consul
DOMAIN = gitea.service.dc1.consul
HTTP_PORT = 3000
ROOT_URL = http://gitea.service.dc1.consul/
DISABLE_SSH = false
START_SSH_SERVER = true
SSH_PORT = 2222
LFS_START_SERVER = true
LFS_CONTENT_PATH = /data/lfs
LFS_JWT_SECRET = U89qoyVUCrRNCJu4iAtBc0Sh_LPJJA4DiVAkqqEWRy8
OFFLINE_MODE = false
APP_DATA_PATH = /data
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = false
DEFAULT_ENABLE_TIMETRACKING = false
NO_REPLY_ADDRESS =
[picture]
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = true
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false
[session]
PROVIDER = file
[log]
MODE = console
LEVEL = info
ROOT_PATH = /data/log
ROUTER = console

View File

@@ -0,0 +1,406 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"description": "Nomad Jobs metrics",
"editable": true,
"gnetId": 6281,
"graphTooltip": 0,
"id": 4,
"iteration": 1632354194441,
"links": [],
"panels": [
{
"datasource": null,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 9,
"panels": [],
"repeat": "host",
"title": "$host",
"type": "row"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": true,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"decimals": 3,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percentunit"
},
"overrides": []
},
"gridPos": {
"h": 15,
"w": 10,
"x": 0,
"y": 1
},
"id": 2,
"links": [],
"options": {
"legend": {
"calcs": [
"max",
"mean"
],
"displayMode": "table",
"placement": "right"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.1.5",
"repeat": null,
"targets": [
{
"exemplar": true,
"expr": "avg(nomad_client_allocs_cpu_total_percent{host=~\"$host\"}) by(exported_job, task)/8",
"format": "time_series",
"interval": "",
"intervalFactor": 5,
"legendFormat": "{{task}}",
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "CPU Usage Percent",
"type": "timeseries"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "smooth",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": true,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"decimals": 3,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "decbytes"
},
"overrides": []
},
"gridPos": {
"h": 15,
"w": 8,
"x": 10,
"y": 1
},
"id": 6,
"links": [],
"options": {
"legend": {
"calcs": [
"max",
"mean"
],
"displayMode": "table",
"placement": "right"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.1.5",
"repeat": null,
"targets": [
{
"expr": "avg(nomad_client_allocs_memory_rss{host=~\"$host\"}) by(exported_job, task)",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "{{task}}",
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "RSS",
"type": "timeseries"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "decbytes"
},
"overrides": []
},
"gridPos": {
"h": 15,
"w": 6,
"x": 18,
"y": 1
},
"id": 7,
"links": [],
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "8.1.5",
"repeat": null,
"targets": [
{
"exemplar": true,
"expr": "(\navg by(exported_job) (nomad_client_allocs_memory_cache{host=~\"$host\"}) )",
"format": "time_series",
"instant": true,
"interval": "",
"intervalFactor": 1,
"legendFormat": "{{task}}",
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Memory Cache",
"type": "stat"
}
],
"schemaVersion": 30,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"allValue": null,
"current": {
"selected": false,
"text": "dc1",
"value": "dc1"
},
"datasource": "Prometheus",
"definition": "",
"description": null,
"error": null,
"hide": 0,
"includeAll": false,
"label": "DC",
"multi": false,
"name": "datacenter",
"options": [],
"query": {
"query": "label_values(nomad_client_uptime, datacenter)",
"refId": "Prometheus-datacenter-Variable-Query"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"selected": true,
"text": [
"odroid1.node.dc1.consul",
"odroid2.node.dc1.consul",
"odroid3.node.dc1.consul",
"odroid4.node.dc1.consul"
],
"value": [
"odroid1.node.dc1.consul",
"odroid2.node.dc1.consul",
"odroid3.node.dc1.consul",
"odroid4.node.dc1.consul"
]
},
"datasource": "Prometheus",
"definition": "",
"description": null,
"error": null,
"hide": 0,
"includeAll": true,
"label": "Host",
"multi": true,
"name": "host",
"options": [],
"query": {
"query": "label_values(nomad_client_uptime{datacenter=~\"$datacenter\"}, host)",
"refId": "Prometheus-host-Variable-Query"
},
"refresh": 2,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "",
"title": "Nomad JobsNEW",
"uid": "TvqbbhViz",
"version": 2
}

View File

@@ -0,0 +1,972 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"description": "Nomad built-in telemetry https://github.com/dereknex/nomad-grafana",
"editable": true,
"gnetId": 6278,
"graphTooltip": 1,
"iteration": 1632433053988,
"links": [],
"panels": [
{
"collapsed": false,
"datasource": null,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 24,
"panels": [],
"repeat": "node",
"title": "Node Stats - $node",
"type": "row"
},
{
"cacheTimeout": null,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"decimals": 1,
"mappings": [
{
"options": {
"match": "null",
"result": {
"text": "N/A"
}
},
"type": "special"
}
],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "green",
"value": 86400
}
]
},
"unit": "dtdurations"
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 2,
"x": 0,
"y": 1
},
"id": 4,
"interval": null,
"links": [],
"maxDataPoints": 100,
"options": {
"colorMode": "none",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "8.1.5",
"repeat": null,
"targets": [
{
"exemplar": true,
"expr": "nomad_client_uptime{datacenter=~\"$datacenter\", node=~\"$node\"}",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "",
"refId": "A"
}
],
"title": "Uptime($node)",
"type": "stat"
},
{
"cacheTimeout": null,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [
{
"options": {
"match": "null",
"result": {
"text": "N/A"
}
},
"type": "special"
}
],
"max": 1,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percentunit"
},
"overrides": []
},
"gridPos": {
"h": 3,
"w": 2,
"x": 2,
"y": 1
},
"id": 33,
"interval": null,
"links": [],
"maxDataPoints": 100,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "value"
},
"pluginVersion": "8.1.5",
"repeat": null,
"targets": [
{
"exemplar": true,
"expr": "nomad_client_allocated_cpu{datacenter=~\"$datacenter\", node=~\"$node\"}/(nomad_client_unallocated_cpu{datacenter=~\"$datacenter\", node=~\"$node\"}+nomad_client_allocated_cpu{datacenter=~\"$datacenter\", node=~\"$node\"})",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "",
"refId": "A"
}
],
"title": "CPU Alloc",
"type": "stat"
},
{
"cacheTimeout": null,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [
{
"options": {
"match": "null",
"result": {
"text": "N/A"
}
},
"type": "special"
}
],
"max": 1,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percentunit"
},
"overrides": []
},
"gridPos": {
"h": 3,
"w": 2,
"x": 4,
"y": 1
},
"id": 74,
"interval": null,
"links": [],
"maxDataPoints": 100,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "8.1.5",
"repeatDirection": "v",
"targets": [
{
"exemplar": true,
"expr": "nomad_client_allocated_memory{datacenter=~\"$datacenter\", node=~\"$node\"}/(nomad_client_unallocated_memory{datacenter=~\"$datacenter\", node=~\"$node\"}+nomad_client_allocated_memory{datacenter=~\"$datacenter\", node=~\"$node\"})",
"hide": false,
"interval": "",
"legendFormat": "",
"refId": "B"
}
],
"title": "Mem Alloc",
"type": "stat"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": true,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 5,
"x": 6,
"y": 1
},
"id": 73,
"links": [],
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "right"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.1.5",
"repeat": null,
"targets": [
{
"exemplar": true,
"expr": "(avg by(instance)(nomad_client_host_cpu_total{datacenter=~\"$datacenter\", node=~\"$node\"}))",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "Total",
"refId": "A"
},
{
"expr": "(avg by(instance)(nomad_client_host_cpu_system{datacenter=~\"$datacenter\", node=~\"$node\"}))",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "System",
"refId": "B"
},
{
"expr": "(avg by(instance)(nomad_client_host_cpu_user{datacenter=~\"$datacenter\", node=~\"$node\"}))",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "User",
"refId": "C"
}
],
"timeFrom": null,
"timeShift": null,
"title": "CPU ($node)",
"type": "timeseries"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": true,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "decbits"
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 4,
"x": 11,
"y": 1
},
"id": 103,
"links": [],
"options": {
"legend": {
"calcs": [
"max",
"mean"
],
"displayMode": "table",
"placement": "bottom"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.1.5",
"targets": [
{
"exemplar": true,
"expr": "(sum by(instance)(nomad_client_allocs_memory_usage{node=~\"$node\"}))",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "Allocated",
"refId": "A"
},
{
"exemplar": true,
"expr": "(sum by(instance)(nomad_client_allocs_memory_allocated{node=~\"$node\"}))",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "used",
"refId": "B"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Mem - $node",
"type": "timeseries"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 4,
"x": 15,
"y": 1
},
"id": 76,
"options": {
"legend": {
"calcs": [
"max",
"mean"
],
"displayMode": "table",
"placement": "right"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.1.4",
"targets": [
{
"exemplar": true,
"expr": "node_thermal_zone_temp{node=~\"$node\"}",
"interval": "",
"intervalFactor": 3,
"legendFormat": "{{zone}}",
"refId": "A"
}
],
"title": "Temps - $node",
"type": "timeseries"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 4,
"gradientMode": "opacity",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineStyle": {
"fill": "solid"
},
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "0"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "text",
"mode": "fixed"
}
}
]
}
]
},
"gridPos": {
"h": 6,
"w": 5,
"x": 19,
"y": 1
},
"id": 78,
"options": {
"legend": {
"calcs": [
"max",
"min",
"mean"
],
"displayMode": "table",
"placement": "right"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.1.4",
"targets": [
{
"exemplar": true,
"expr": "node_cpu_scaling_frequency_hertz{node=~\"$node\"}/1000/1000\n",
"interval": "",
"intervalFactor": 10,
"legendFormat": "{{cpu}}",
"refId": "A"
}
],
"type": "timeseries"
},
{
"cacheTimeout": null,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"max": 100,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 80
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 3,
"w": 2,
"x": 2,
"y": 4
},
"id": 48,
"interval": null,
"links": [],
"maxDataPoints": 100,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "8.1.5",
"repeat": null,
"targets": [
{
"expr": "nomad_client_host_disk_used_percent{datacenter=~\"$datacenter\", node=~\"$node\", disk=\"/dev/sda1\"}",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "",
"refId": "A"
}
],
"title": "Disk Used (Root)",
"type": "stat"
},
{
"cacheTimeout": null,
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [
{
"options": {
"match": "null",
"result": {
"text": "N/A"
}
},
"type": "special"
}
],
"max": 1,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percentunit"
},
"overrides": []
},
"gridPos": {
"h": 3,
"w": 2,
"x": 4,
"y": 4
},
"id": 131,
"interval": null,
"links": [],
"maxDataPoints": 100,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "8.1.5",
"repeatDirection": "v",
"targets": [
{
"exemplar": true,
"expr": "nomad_client_host_memory_used{datacenter=~\"$datacenter\", node=~\"$node\"}/nomad_client_host_memory_total{datacenter=~\"$datacenter\", node=~\"$node\"}",
"hide": false,
"instant": true,
"interval": "",
"legendFormat": "",
"refId": "B"
}
],
"title": "Mem Used",
"type": "stat"
}
],
"refresh": "30s",
"schemaVersion": 30,
"style": "dark",
"tags": [
"nomad",
"host",
"cluster"
],
"templating": {
"list": [
{
"allValue": null,
"current": {
"selected": false,
"text": "dc1",
"value": "dc1"
},
"datasource": "Prometheus",
"definition": "",
"description": null,
"error": null,
"hide": 0,
"includeAll": false,
"label": "DC",
"multi": false,
"name": "datacenter",
"options": [],
"query": {
"query": "label_values(nomad_client_uptime, datacenter)",
"refId": "Prometheus-datacenter-Variable-Query"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"selected": true,
"text": [
"All"
],
"value": [
"$__all"
]
},
"datasource": "Prometheus",
"definition": "",
"description": null,
"error": null,
"hide": 0,
"includeAll": true,
"label": "Host",
"multi": true,
"name": "host",
"options": [],
"query": {
"query": "label_values(nomad_client_uptime{datacenter=~\"$datacenter\"}, host)",
"refId": "Prometheus-host-Variable-Query"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"selected": true,
"text": [
"odroid1",
"odroid2",
"odroid3",
"odroid4"
],
"value": [
"odroid1",
"odroid2",
"odroid3",
"odroid4"
]
},
"datasource": "Prometheus",
"definition": "label_values(nomad_client_uptime{datacenter=~\"$datacenter\"}, node)",
"description": null,
"error": null,
"hide": 0,
"includeAll": true,
"label": "Node",
"multi": true,
"name": "node",
"options": [],
"query": {
"query": "label_values(nomad_client_uptime{datacenter=~\"$datacenter\"}, node)",
"refId": "StandardVariableQuery"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "",
"title": "NomadDashboard",
"uid": "CiP3mZVik",
"version": 1
}

View File

@@ -0,0 +1,353 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": 5,
"iteration": 1632162223791,
"links": [],
"panels": [
{
"collapsed": false,
"datasource": null,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 10,
"panels": [],
"repeat": "instance",
"title": "Thermals - $instance",
"type": "row"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 4,
"x": 0,
"y": 1
},
"id": 4,
"options": {
"displayMode": "gradient",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"text": {}
},
"pluginVersion": "8.1.4",
"targets": [
{
"exemplar": true,
"expr": "node_thermal_zone_temp{instance=~\"$instance\"}",
"interval": "",
"legendFormat": "{{zone}}",
"refId": "A"
}
],
"title": "$instance",
"type": "bargauge"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 8,
"x": 4,
"y": 1
},
"id": 8,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.1.4",
"targets": [
{
"exemplar": true,
"expr": "node_thermal_zone_temp{instance=~\"$instance\"}",
"interval": "",
"intervalFactor": 3,
"legendFormat": "{{zone}}",
"refId": "A"
}
],
"title": "$instance",
"type": "timeseries"
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "0"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "text",
"mode": "fixed"
}
}
]
}
]
},
"gridPos": {
"h": 7,
"w": 8,
"x": 12,
"y": 1
},
"id": 20,
"options": {
"legend": {
"calcs": [
"max",
"min",
"mean"
],
"displayMode": "table",
"placement": "right"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.1.4",
"targets": [
{
"exemplar": true,
"expr": "node_cpu_scaling_frequency_hertz{instance=~\"$instance\"}/1000/1000\n",
"interval": "",
"intervalFactor": 10,
"legendFormat": "{{cpu}}",
"refId": "A"
}
],
"title": "CPU Freq - $instance",
"type": "timeseries"
},
{
"datasource": null,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 32
},
"id": 2,
"title": "Row title",
"type": "row"
}
],
"refresh": "30s",
"schemaVersion": 30,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"allValue": null,
"current": {
"selected": false,
"text": [
"192.168.1.221:9100",
"192.168.1.222:9100",
"192.168.1.223:9100",
"192.168.1.224:9100"
],
"value": [
"192.168.1.221:9100",
"192.168.1.222:9100",
"192.168.1.223:9100",
"192.168.1.224:9100"
]
},
"datasource": "Prometheus",
"definition": "label_values(node_thermal_zone_temp, instance)",
"description": null,
"error": null,
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "instance",
"options": [],
"query": {
"query": "label_values(node_thermal_zone_temp, instance)",
"refId": "StandardVariableQuery"
},
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"type": "query"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Thermals",
"uid": "bSxgAGRgz",
"version": 11
}

View File

@@ -0,0 +1,96 @@
homeassistant:
name: Our_House
latitude: 40.7654
longitude: -73.8175
elevation: 26
unit_system: metric
time_zone: America/New_York
auth_providers:
- type: trusted_networks
trusted_networks:
- 127.0.0.1
- ::1
- 192.168.1.0/24
- 192.168.4.0/22
allow_bypass_login: true
- type: homeassistant
frontend:
lovelace:
mode: yaml
config:
zeroconf:
http:
sun:
mobile_app:
ecobee:
api_key: hstTGuQedckV2an8XDiLSmWA4GlZ1Hy5
sensor:
- platform: time_date
display_options:
- 'date_time'
automation:
- alias: bedroomblindsup
trigger:
platform: time
at: "06:50" #military time
action:
entity_id: cover.bedroom
service: cover.open_cover
- alias: bedroomblindsdown
trigger:
platform: time
at: "09:40" #military time
action:
entity_id: cover.bedroom
service: cover.close_cover
- alias: harddrives_on
trigger:
platform: time
at: "09:30" #military time
action:
entity_id: switch.harddrives
service: switch.turn_on
- alias: harddrives_off
trigger:
platform: time
at: "21:45" #military time
action:
entity_id: switch.harddrives
service: switch.turn_off
- alias: LightsAtSunset
trigger:
platform: sun
event: sunset
action:
service: switch.turn_on
entity_id: switch.lampdrawers
tplink:
discovery: true
wemo:
static:
- 192.168.99.200 # StuBed
- 192.168.99.201 # LampDrawers
- 192.168.99.202 # BigLamp
- 192.168.99.203 # TallTree
- 192.168.99.204 # ShortTree
- 192.168.99.205 # TallTree
- 192.168.99.210 # Harddrives
switch:
- platform: template
switches:
living_room_screen_off:
friendly_name: 'living_room_screen_off'
turn_off:
- service: webostv.command
data:
{
"entity_id": "media_player.lg_webos_smart_tv",
"command": "com.webos.service.tvpower/power/turnOffScreen"
}
turn_on:
- service: webostv.command
data:
{
"entity_id": "media_player.lg_webos_smart_tv",
"command": "com.webos.service.tvpower/power/turnOnScreen"
}

View File

@@ -0,0 +1,76 @@
title: Our_House
views:
- path: default_view
title: Home
cards:
- type: entities
entities:
- entity: switch.thinlampstudesk
- entity: switch.living_room_screen_off
title: Switch
- path: servers
title: Servers
cards:
- type: entities
entities:
- entity: switch.odroid1
- entity: switch.odroid2
- entity: switch.odroid3
- entity: switch.odroid4
- entity: switch.odroid5
- entity: switch.harddrives
title: Servers
- path: all
title: blinds
cards:
- type: entities
entities:
- entity: cover.lounge_farleft
- entity: cover.lounge_left
- entity: cover.lounge_right
- entity: cover.lounge_farright
title: Blinds
- type: button
name: Close Right
show_state: false
tap_action:
action: call-service
service: scene.turn_on
data:
entity_id: scene.close_right
- type: button
name: Close Left
show_state: false
tap_action:
action: call-service
service: scene.turn_on
data:
entity_id: scene.close_left
- type: button
name: All Close
show_state: false
tap_action:
action: call-service
service: scene.turn_on
data:
entity_id: scene.all_close
- type: button
name: All Open
show_state: false
tap_action:
action: call-service
service: scene.turn_on
data:
entity_id: scene.all_open
- type: sensor
entity: sensor.date_time
title: Time
- type: entities
entities:
- automation.bedroomblindsup
- automation.lightsatsunset
- automation.harddrives_on
- automation.harddrives_off
title: Automations
- type: media-control
entity: media_player.lg_webos_smart_tv

View File

@@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIECDCCA46gAwIBAgIRAOI5ocMIin5u5Gc2BvGVfkkwCgYIKoZIzj0EAwMwSzEL
MAkGA1UEBhMCQVQxEDAOBgNVBAoTB1plcm9TU0wxKjAoBgNVBAMTIVplcm9TU0wg
RUNDIERvbWFpbiBTZWN1cmUgU2l0ZSBDQTAeFw0yMzEyMzEwMDAwMDBaFw0yNDAz
MzAyMzU5NTlaMB0xGzAZBgNVBAMMEiouZmJsZWFnaC5kZWR5bi5pbzBZMBMGByqG
SM49AgEGCCqGSM49AwEHA0IABLwyO8TC7ENV77I2CIG5YR7xahnyTE4oE13Hpulb
XhPluUn0ovz51D8Fk9t162e+h+8NljRVbEzKg8OH42NbI0ejggJ/MIICezAfBgNV
HSMEGDAWgBQPa+ZLzjlHrvZ+kB558DCRkshfozAdBgNVHQ4EFgQU/q5zRHcinAcH
DqsW0ah+pt29Bz4wDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwHQYDVR0l
BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEkGA1UdIARCMEAwNAYLKwYBBAGyMQEC
Ak4wJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EM
AQIBMIGIBggrBgEFBQcBAQR8MHowSwYIKwYBBQUHMAKGP2h0dHA6Ly96ZXJvc3Ns
LmNydC5zZWN0aWdvLmNvbS9aZXJvU1NMRUNDRG9tYWluU2VjdXJlU2l0ZUNBLmNy
dDArBggrBgEFBQcwAYYfaHR0cDovL3plcm9zc2wub2NzcC5zZWN0aWdvLmNvbTCC
AQUGCisGAQQB1nkCBAIEgfYEgfMA8QB2AHb/iD8KtvuVUcJhzPWHujS0pM27Kdxo
Qgqf5mdMWjp0AAABjL0tTCoAAAQDAEcwRQIhAMuzR0SfI6ZCCgrq9es6jIxLSOoF
PWltmxXb3UKrfvX2AiA6ANYjox6S3IGgM6oqZvYtr4hxvUOnYRU9GuwbU4n+wgB3
ADtTd3U+LbmAToswWwb+QDtn2E/D9Me9AA0tcm/h+tQXAAABjL0tS84AAAQDAEgw
RgIhAJ/vVIARfM+nq64kzQ0x/QD2O+lAaucIDh9eBF8EquDiAiEA26IXr/li5tMr
rgak8jgpN2YIycs3qaCZ++RnzSQqSBkwHQYDVR0RBBYwFIISKi5mYmxlYWdoLmRl
ZHluLmlvMAoGCCqGSM49BAMDA2gAMGUCMDpYUA6nlJ0sDnNsJVggNZOFTeSJJo9N
9Tpqde9bXVFN1vrC34Pjozwzk7wA4CfxDAIxAPAw1BtGF8EVRQuMm3A9hkqzv9s8
12b1OKqrDPqREYmTZF4nafvtkHuuzvzB1voTJQ==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIEJs9e+wI54/HX12ueakomnBgNq9O0Vb9ad95Q3XzWUioAoGCCqGSM49
AwEHoUQDQgAEvDI7xMLsQ1XvsjYIgblhHvFqGfJMTigTXcem6VteE+W5SfSi/PnU
PwWT23XrZ76H7w2WNFVsTMqDw4fjY1sjRw==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,44 @@
-----BEGIN CERTIFICATE-----
MIIDhTCCAwygAwIBAgIQI7dt48G7KxpRlh4I6rdk6DAKBggqhkjOPQQDAzCBiDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl
eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT
JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwMTMw
MDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UEChMH
WmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBFQ0MgRG9tYWluIFNlY3VyZSBTaXRl
IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAENkFhFytTJe2qypTk1tpIV+9QuoRk
gte7BRvWHwYk9qUznYzn8QtVaGOCMBBfjWXsqqivl8q1hs4wAYl03uNOXgFu7iZ7
zFP6I6T3RB0+TR5fZqathfby47yOCZiAJI4go4IBdTCCAXEwHwYDVR0jBBgwFoAU
OuEJhtTPGcKWdnRJdtzgNcZjY5owHQYDVR0OBBYEFA9r5kvOOUeu9n6QHnnwMJGS
yF+jMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAEGzAZMA0GCysGAQQBsjEBAgJO
MAgGBmeBDAECATBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVz
dC5jb20vVVNFUlRydXN0RUNDQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYI
KwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5j
b20vVVNFUlRydXN0RUNDQWRkVHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wCgYIKoZIzj0EAwMDZwAwZAIwJHBUDwHJQN3I
VNltVMrICMqYQ3TYP/TXqV9t8mG5cAomG2MwqIsxnL937Gewf6WIAjAlrauksO6N
UuDdDXyd330druJcZJx0+H5j5cFOYBaGsKdeGW7sCMaR2PsDFKGllas=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID0zCCArugAwIBAgIQVmcdBOpPmUxvEIFHWdJ1lDANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgRUNDIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEGqxUWqn5aCPnetUkb1PGWthL
q8bVttHmc3Gu3ZzWDGH926CJA7gFFOxXzu5dP+Ihs8731Ip54KODfi2X0GHE8Znc
JZFjq38wo7Rw4sehM5zzvy5cU7Ffs30yf4o043l5o4HyMIHvMB8GA1UdIwQYMBaA
FKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1
xmNjmjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zARBgNVHSAECjAI
MAYGBFUdIAAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5j
b20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEEKDAmMCQG
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEM
BQADggEBABns652JLCALBIAdGN5CmXKZFjK9Dpx1WywV4ilAbe7/ctvbq5AfjJXy
ij0IckKJUAfiORVsAYfZFhr1wHUrxeZWEQff2Ji8fJ8ZOd+LygBkc7xGEJuTI42+
FsMuCIKchjN0djsoTI0DQoWz4rIjQtUfenVqGtF8qmchxDM6OW1TyaLtYiKou+JV
bJlsQ2uRl9EMC5MCHdK8aXdJ5htN978UeAOwproLtOGFfy/cQjutdAFI3tZs4RmY
CV4Ks2dH/hzg1cEo70qLRDEmBDeNiXQ2Lu+lIg+DdEmSx/cQwgwp+7e9un/jX9Wf
8qn0dNW44bOwgeThpWOjzOoEeJBuv/c=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,68 @@
-----BEGIN CERTIFICATE-----
MIIECDCCA46gAwIBAgIRAOI5ocMIin5u5Gc2BvGVfkkwCgYIKoZIzj0EAwMwSzEL
MAkGA1UEBhMCQVQxEDAOBgNVBAoTB1plcm9TU0wxKjAoBgNVBAMTIVplcm9TU0wg
RUNDIERvbWFpbiBTZWN1cmUgU2l0ZSBDQTAeFw0yMzEyMzEwMDAwMDBaFw0yNDAz
MzAyMzU5NTlaMB0xGzAZBgNVBAMMEiouZmJsZWFnaC5kZWR5bi5pbzBZMBMGByqG
SM49AgEGCCqGSM49AwEHA0IABLwyO8TC7ENV77I2CIG5YR7xahnyTE4oE13Hpulb
XhPluUn0ovz51D8Fk9t162e+h+8NljRVbEzKg8OH42NbI0ejggJ/MIICezAfBgNV
HSMEGDAWgBQPa+ZLzjlHrvZ+kB558DCRkshfozAdBgNVHQ4EFgQU/q5zRHcinAcH
DqsW0ah+pt29Bz4wDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwHQYDVR0l
BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEkGA1UdIARCMEAwNAYLKwYBBAGyMQEC
Ak4wJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EM
AQIBMIGIBggrBgEFBQcBAQR8MHowSwYIKwYBBQUHMAKGP2h0dHA6Ly96ZXJvc3Ns
LmNydC5zZWN0aWdvLmNvbS9aZXJvU1NMRUNDRG9tYWluU2VjdXJlU2l0ZUNBLmNy
dDArBggrBgEFBQcwAYYfaHR0cDovL3plcm9zc2wub2NzcC5zZWN0aWdvLmNvbTCC
AQUGCisGAQQB1nkCBAIEgfYEgfMA8QB2AHb/iD8KtvuVUcJhzPWHujS0pM27Kdxo
Qgqf5mdMWjp0AAABjL0tTCoAAAQDAEcwRQIhAMuzR0SfI6ZCCgrq9es6jIxLSOoF
PWltmxXb3UKrfvX2AiA6ANYjox6S3IGgM6oqZvYtr4hxvUOnYRU9GuwbU4n+wgB3
ADtTd3U+LbmAToswWwb+QDtn2E/D9Me9AA0tcm/h+tQXAAABjL0tS84AAAQDAEgw
RgIhAJ/vVIARfM+nq64kzQ0x/QD2O+lAaucIDh9eBF8EquDiAiEA26IXr/li5tMr
rgak8jgpN2YIycs3qaCZ++RnzSQqSBkwHQYDVR0RBBYwFIISKi5mYmxlYWdoLmRl
ZHluLmlvMAoGCCqGSM49BAMDA2gAMGUCMDpYUA6nlJ0sDnNsJVggNZOFTeSJJo9N
9Tpqde9bXVFN1vrC34Pjozwzk7wA4CfxDAIxAPAw1BtGF8EVRQuMm3A9hkqzv9s8
12b1OKqrDPqREYmTZF4nafvtkHuuzvzB1voTJQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDhTCCAwygAwIBAgIQI7dt48G7KxpRlh4I6rdk6DAKBggqhkjOPQQDAzCBiDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl
eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT
JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwMTMw
MDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UEChMH
WmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBFQ0MgRG9tYWluIFNlY3VyZSBTaXRl
IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAENkFhFytTJe2qypTk1tpIV+9QuoRk
gte7BRvWHwYk9qUznYzn8QtVaGOCMBBfjWXsqqivl8q1hs4wAYl03uNOXgFu7iZ7
zFP6I6T3RB0+TR5fZqathfby47yOCZiAJI4go4IBdTCCAXEwHwYDVR0jBBgwFoAU
OuEJhtTPGcKWdnRJdtzgNcZjY5owHQYDVR0OBBYEFA9r5kvOOUeu9n6QHnnwMJGS
yF+jMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAEGzAZMA0GCysGAQQBsjEBAgJO
MAgGBmeBDAECATBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVz
dC5jb20vVVNFUlRydXN0RUNDQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYI
KwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5j
b20vVVNFUlRydXN0RUNDQWRkVHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wCgYIKoZIzj0EAwMDZwAwZAIwJHBUDwHJQN3I
VNltVMrICMqYQ3TYP/TXqV9t8mG5cAomG2MwqIsxnL937Gewf6WIAjAlrauksO6N
UuDdDXyd330druJcZJx0+H5j5cFOYBaGsKdeGW7sCMaR2PsDFKGllas=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID0zCCArugAwIBAgIQVmcdBOpPmUxvEIFHWdJ1lDANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgRUNDIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEGqxUWqn5aCPnetUkb1PGWthL
q8bVttHmc3Gu3ZzWDGH926CJA7gFFOxXzu5dP+Ihs8731Ip54KODfi2X0GHE8Znc
JZFjq38wo7Rw4sehM5zzvy5cU7Ffs30yf4o043l5o4HyMIHvMB8GA1UdIwQYMBaA
FKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1
xmNjmjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zARBgNVHSAECjAI
MAYGBFUdIAAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5j
b20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEEKDAmMCQG
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEM
BQADggEBABns652JLCALBIAdGN5CmXKZFjK9Dpx1WywV4ilAbe7/ctvbq5AfjJXy
ij0IckKJUAfiORVsAYfZFhr1wHUrxeZWEQff2Ji8fJ8ZOd+LygBkc7xGEJuTI42+
FsMuCIKchjN0djsoTI0DQoWz4rIjQtUfenVqGtF8qmchxDM6OW1TyaLtYiKou+JV
bJlsQ2uRl9EMC5MCHdK8aXdJ5htN978UeAOwproLtOGFfy/cQjutdAFI3tZs4RmY
CV4Ks2dH/hzg1cEo70qLRDEmBDeNiXQ2Lu+lIg+DdEmSx/cQwgwp+7e9un/jX9Wf
8qn0dNW44bOwgeThpWOjzOoEeJBuv/c=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIDvDCCA0KgAwIBAgISBSkxFMnJGPCskIgEO0Mk6EKmMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NzAeFw0yNTExMjAxNTU1MDVaFw0yNjAyMTgxNTU1MDRaMCAxHjAcBgNVBAMMFSou
ZmJsZWFnaC5kdWNrZG5zLm9yZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEMp
g8Wlki34WWSjip7jID1y5+Cj0VNJ5ASEWpfdz0UZaPWyysNeAPJskQoFN7kTvEhb
NWRDMb+PnJoI+r4dKZyjggJIMIICRDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYw
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHZq
MAGYe8+YzwC4/4L9xSaUEidqMB8GA1UdIwQYMBaAFK5IntyHHUSgb9qi5WB0BHjC
nACAMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL2U3LmkubGVu
Y3Iub3JnLzBHBgNVHREEQDA+ghUqLmZibGVhZ2guZHVja2Rucy5vcmeCJWdpdGVh
LnNlcnZpY2UuZGMxLmZibGVhZ2guZHVja2Rucy5vcmcwEwYDVR0gBAwwCjAIBgZn
gQwBAgEwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2U3LmMubGVuY3Iub3JnLzM5
LmNybDCCAQIGCisGAQQB1nkCBAIEgfMEgfAA7gB2AMs49xWJfIShRF9bwd37yW7y
mlnNRwppBYWwyxTDFFjnAAABmqIvidQAAAQDAEcwRQIgGTOO3akMZ6o3l3It0uAJ
/lSNdxz+DJKS+w8uke4kQvUCIQDKcSlkC7ByBXKYNxiUJTwgwwLrUqV6WHE+hxE1
tGNvPQB0AA5XlLzzrqk+MxssmQez95Dfm8I9cTIl3SGpJaxhxU4hAAABmqIvib0A
AAQDAEUwQwIgM2SNEpVheNImpowlGvrb5bvzOb86JgQCdWgmOlHhqycCH1Fdsxnj
poDzuPBguZmyjXH+7mXtiWfgICrGuNkAiWgwCgYIKoZIzj0EAwMDaAAwZQIwFEW8
I6lBUKaEP7SDj0oljwGvC1W9H+/vti+glXHH1rhiW6UVtatYIW2S44/wi6XyAjEA
kLO3IOeXjFOhiix0cxcizUBAPCmSYPF6B7T1i1mg3VQwFQ6pmImhYVdRl3s47sCB
-----END CERTIFICATE-----

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIEctj4JDhGfmH9dAKmqCgYGNake1XwGr9GpUzEbO62+loAoGCCqGSM49
AwEHoUQDQgAEQymDxaWSLfhZZKOKnuMgPXLn4KPRU0nkBIRal93PRRlo9bLKw14A
8myRCgU3uRO8SFs1ZEMxv4+cmgj6vh0pnA==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAKp18eYrjwoiCWbTi7/UuqEwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCRTcwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARB6AST
CFh/vjcwDMCgQer+VtqEkz7JANurZxLP+U9TCeioL6sp5Z8VRvRbYk4P1INBmbef
QHJFHCxcSjKmwtvGBWpl/9ra8HW0QDsUaJW2qOJqceJ0ZVFT3hbUHifBM/2jgfgw
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSuSJ7chx1EoG/aouVgdAR4
wpwAgDAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAjx66fDdLk5ywFn3CzA1w1qfylHUD
aEf0QZpXcJseddJGSfbUUOvbNR9N/QQ16K1lXl4VFyhmGXDT5Kdfcr0RvIIVrNxF
h4lqHtRRCP6RBRstqbZ2zURgqakn/Xip0iaQL0IdfHBZr396FgknniRYFckKORPG
yM3QKnd66gtMst8I5nkRQlAg/Jb+Gc3egIvuGKWboE1G89NTsN9LTDD3PLj0dUMr
OIuqVjLB8pEC6yk9enrlrqjXQgkLEYhXzq7dLafv5Vkig6Gl0nuuqjqfp0Q1bi1o
yVNAlXe6aUXw92CcghC9bNsKEO1+M52YY5+ofIXlS/SEQbvVYYBLZ5yeiglV6t3S
M6H+vTG0aP9YHzLn/KVOHzGQfXDP7qM5tkf+7diZe7o2fw6O7IvN6fsQXEQQj8TJ
UXJxv2/uJhcuy/tSDgXwHM8Uk34WNbRT7zGTGkQRX0gsbjAea/jYAoWv0ZvQRwpq
Pe79D/i7Cep8qWnA+7AE/3B3S/3dEEYmc0lpe1366A/6GEgk3ktr9PEoQrLChs6I
tu3wnNLB2euC8IKGLQFpGtOO/2/hiAKjyajaBP25w1jF0Wl8Bbqne3uZ2q1GyPFJ
YRmT7/OXpmOH/FVLtwS+8ng1cAmpCujPwteJZNcDG0sF2n/sc0+SQf49fdyUK0ty
+VUwFj9tmWxyR/M=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,49 @@
-----BEGIN CERTIFICATE-----
MIIDvDCCA0KgAwIBAgISBSkxFMnJGPCskIgEO0Mk6EKmMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NzAeFw0yNTExMjAxNTU1MDVaFw0yNjAyMTgxNTU1MDRaMCAxHjAcBgNVBAMMFSou
ZmJsZWFnaC5kdWNrZG5zLm9yZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEMp
g8Wlki34WWSjip7jID1y5+Cj0VNJ5ASEWpfdz0UZaPWyysNeAPJskQoFN7kTvEhb
NWRDMb+PnJoI+r4dKZyjggJIMIICRDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYw
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHZq
MAGYe8+YzwC4/4L9xSaUEidqMB8GA1UdIwQYMBaAFK5IntyHHUSgb9qi5WB0BHjC
nACAMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL2U3LmkubGVu
Y3Iub3JnLzBHBgNVHREEQDA+ghUqLmZibGVhZ2guZHVja2Rucy5vcmeCJWdpdGVh
LnNlcnZpY2UuZGMxLmZibGVhZ2guZHVja2Rucy5vcmcwEwYDVR0gBAwwCjAIBgZn
gQwBAgEwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2U3LmMubGVuY3Iub3JnLzM5
LmNybDCCAQIGCisGAQQB1nkCBAIEgfMEgfAA7gB2AMs49xWJfIShRF9bwd37yW7y
mlnNRwppBYWwyxTDFFjnAAABmqIvidQAAAQDAEcwRQIgGTOO3akMZ6o3l3It0uAJ
/lSNdxz+DJKS+w8uke4kQvUCIQDKcSlkC7ByBXKYNxiUJTwgwwLrUqV6WHE+hxE1
tGNvPQB0AA5XlLzzrqk+MxssmQez95Dfm8I9cTIl3SGpJaxhxU4hAAABmqIvib0A
AAQDAEUwQwIgM2SNEpVheNImpowlGvrb5bvzOb86JgQCdWgmOlHhqycCH1Fdsxnj
poDzuPBguZmyjXH+7mXtiWfgICrGuNkAiWgwCgYIKoZIzj0EAwMDaAAwZQIwFEW8
I6lBUKaEP7SDj0oljwGvC1W9H+/vti+glXHH1rhiW6UVtatYIW2S44/wi6XyAjEA
kLO3IOeXjFOhiix0cxcizUBAPCmSYPF6B7T1i1mg3VQwFQ6pmImhYVdRl3s47sCB
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEVzCCAj+gAwIBAgIRAKp18eYrjwoiCWbTi7/UuqEwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCRTcwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARB6AST
CFh/vjcwDMCgQer+VtqEkz7JANurZxLP+U9TCeioL6sp5Z8VRvRbYk4P1INBmbef
QHJFHCxcSjKmwtvGBWpl/9ra8HW0QDsUaJW2qOJqceJ0ZVFT3hbUHifBM/2jgfgw
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSuSJ7chx1EoG/aouVgdAR4
wpwAgDAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAjx66fDdLk5ywFn3CzA1w1qfylHUD
aEf0QZpXcJseddJGSfbUUOvbNR9N/QQ16K1lXl4VFyhmGXDT5Kdfcr0RvIIVrNxF
h4lqHtRRCP6RBRstqbZ2zURgqakn/Xip0iaQL0IdfHBZr396FgknniRYFckKORPG
yM3QKnd66gtMst8I5nkRQlAg/Jb+Gc3egIvuGKWboE1G89NTsN9LTDD3PLj0dUMr
OIuqVjLB8pEC6yk9enrlrqjXQgkLEYhXzq7dLafv5Vkig6Gl0nuuqjqfp0Q1bi1o
yVNAlXe6aUXw92CcghC9bNsKEO1+M52YY5+ofIXlS/SEQbvVYYBLZ5yeiglV6t3S
M6H+vTG0aP9YHzLn/KVOHzGQfXDP7qM5tkf+7diZe7o2fw6O7IvN6fsQXEQQj8TJ
UXJxv2/uJhcuy/tSDgXwHM8Uk34WNbRT7zGTGkQRX0gsbjAea/jYAoWv0ZvQRwpq
Pe79D/i7Cep8qWnA+7AE/3B3S/3dEEYmc0lpe1366A/6GEgk3ktr9PEoQrLChs6I
tu3wnNLB2euC8IKGLQFpGtOO/2/hiAKjyajaBP25w1jF0Wl8Bbqne3uZ2q1GyPFJ
YRmT7/OXpmOH/FVLtwS+8ng1cAmpCujPwteJZNcDG0sF2n/sc0+SQf49fdyUK0ty
+VUwFj9tmWxyR/M=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,44 @@
-----BEGIN CERTIFICATE-----
MIIDhTCCAwygAwIBAgIQI7dt48G7KxpRlh4I6rdk6DAKBggqhkjOPQQDAzCBiDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl
eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT
JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwMTMw
MDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UEChMH
WmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBFQ0MgRG9tYWluIFNlY3VyZSBTaXRl
IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAENkFhFytTJe2qypTk1tpIV+9QuoRk
gte7BRvWHwYk9qUznYzn8QtVaGOCMBBfjWXsqqivl8q1hs4wAYl03uNOXgFu7iZ7
zFP6I6T3RB0+TR5fZqathfby47yOCZiAJI4go4IBdTCCAXEwHwYDVR0jBBgwFoAU
OuEJhtTPGcKWdnRJdtzgNcZjY5owHQYDVR0OBBYEFA9r5kvOOUeu9n6QHnnwMJGS
yF+jMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAEGzAZMA0GCysGAQQBsjEBAgJO
MAgGBmeBDAECATBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVz
dC5jb20vVVNFUlRydXN0RUNDQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYI
KwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5j
b20vVVNFUlRydXN0RUNDQWRkVHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wCgYIKoZIzj0EAwMDZwAwZAIwJHBUDwHJQN3I
VNltVMrICMqYQ3TYP/TXqV9t8mG5cAomG2MwqIsxnL937Gewf6WIAjAlrauksO6N
UuDdDXyd330druJcZJx0+H5j5cFOYBaGsKdeGW7sCMaR2PsDFKGllas=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID0zCCArugAwIBAgIQVmcdBOpPmUxvEIFHWdJ1lDANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgRUNDIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEGqxUWqn5aCPnetUkb1PGWthL
q8bVttHmc3Gu3ZzWDGH926CJA7gFFOxXzu5dP+Ihs8731Ip54KODfi2X0GHE8Znc
JZFjq38wo7Rw4sehM5zzvy5cU7Ffs30yf4o043l5o4HyMIHvMB8GA1UdIwQYMBaA
FKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1
xmNjmjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zARBgNVHSAECjAI
MAYGBFUdIAAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5j
b20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEEKDAmMCQG
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEM
BQADggEBABns652JLCALBIAdGN5CmXKZFjK9Dpx1WywV4ilAbe7/ctvbq5AfjJXy
ij0IckKJUAfiORVsAYfZFhr1wHUrxeZWEQff2Ji8fJ8ZOd+LygBkc7xGEJuTI42+
FsMuCIKchjN0djsoTI0DQoWz4rIjQtUfenVqGtF8qmchxDM6OW1TyaLtYiKou+JV
bJlsQ2uRl9EMC5MCHdK8aXdJ5htN978UeAOwproLtOGFfy/cQjutdAFI3tZs4RmY
CV4Ks2dH/hzg1cEo70qLRDEmBDeNiXQ2Lu+lIg+DdEmSx/cQwgwp+7e9un/jX9Wf
8qn0dNW44bOwgeThpWOjzOoEeJBuv/c=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIEAzCCA4mgAwIBAgIQWtkE2yzjtUSkH+96px28OTAKBggqhkjOPQQDAzBLMQsw
CQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBF
Q0MgRG9tYWluIFNlY3VyZSBTaXRlIENBMB4XDTIzMDMwODAwMDAwMFoXDTIzMDYw
NjIzNTk1OVowGzEZMBcGA1UEAxMQZmJsZWFnaC5kZWR5bi5pbzBZMBMGByqGSM49
AgEGCCqGSM49AwEHA0IABGqkxVFQH7yCqOZP0MQ8WjZLYX319DcG1eArZ7C9zJ5I
nELzasTTPiFMh2SB8AcNSRPYtX+6CyoBjIXPgOWYvRCjggJ9MIICeTAfBgNVHSME
GDAWgBQPa+ZLzjlHrvZ+kB558DCRkshfozAdBgNVHQ4EFgQU01SDptDSomC9SRKU
+bY0XJck8zkwDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMEkGA1UdIARCMEAwNAYLKwYBBAGyMQECAk4w
JTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQIB
MIGIBggrBgEFBQcBAQR8MHowSwYIKwYBBQUHMAKGP2h0dHA6Ly96ZXJvc3NsLmNy
dC5zZWN0aWdvLmNvbS9aZXJvU1NMRUNDRG9tYWluU2VjdXJlU2l0ZUNBLmNydDAr
BggrBgEFBQcwAYYfaHR0cDovL3plcm9zc2wub2NzcC5zZWN0aWdvLmNvbTCCAQUG
CisGAQQB1nkCBAIEgfYEgfMA8QB2AK33vvp8/xDIi509nB4+GGq0Zyldz7EMJMqF
hjTr3IKKAAABhsKcwf4AAAQDAEcwRQIgA6y7EukoNVTev0mEXlbOtIhJROjFIuLl
X0qvXlq9WLICIQDpopPhM16oT6IkpEwGkjnbmho18JAl7/MAbFpDNi89KwB3AHoy
jFTYty22IOo44FIe6YQWcDIThU070ivBOlejUutSAAABhsKcwmIAAAQDAEgwRgIh
AMQvXj0sJ+80JoPLb1Y5J9dDMnB1ahIl1gourbCqbC2oAiEA1PKQu47rlUAdiDDm
j3nEQK01u2HjQVjxVa7VQ8WNLT8wGwYDVR0RBBQwEoIQZmJsZWFnaC5kZWR5bi5p
bzAKBggqhkjOPQQDAwNoADBlAjEA6qTxxO89gKy5v7uYCJix2an2y2GiPhmg2jbC
+1JMSGAmA6R9NgF3vQLPkYlGexShAjBAgiOuRzx2RTtv/JI84xXyTPBkTunQ1ikH
9fsxIA8PkZP/Fgj0ctifN5Lxy7gmZgI=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIOODcSkLPIoEqIwrFc7Uw6Mvy4FQlIMqVp01CYDV6HRqoAoGCCqGSM49
AwEHoUQDQgAEaqTFUVAfvIKo5k/QxDxaNkthffX0NwbV4CtnsL3MnkicQvNqxNM+
IUyHZIHwBw1JE9i1f7oLKgGMhc+A5Zi9EA==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,68 @@
-----BEGIN CERTIFICATE-----
MIIEAzCCA4mgAwIBAgIQWtkE2yzjtUSkH+96px28OTAKBggqhkjOPQQDAzBLMQsw
CQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBF
Q0MgRG9tYWluIFNlY3VyZSBTaXRlIENBMB4XDTIzMDMwODAwMDAwMFoXDTIzMDYw
NjIzNTk1OVowGzEZMBcGA1UEAxMQZmJsZWFnaC5kZWR5bi5pbzBZMBMGByqGSM49
AgEGCCqGSM49AwEHA0IABGqkxVFQH7yCqOZP0MQ8WjZLYX319DcG1eArZ7C9zJ5I
nELzasTTPiFMh2SB8AcNSRPYtX+6CyoBjIXPgOWYvRCjggJ9MIICeTAfBgNVHSME
GDAWgBQPa+ZLzjlHrvZ+kB558DCRkshfozAdBgNVHQ4EFgQU01SDptDSomC9SRKU
+bY0XJck8zkwDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMEkGA1UdIARCMEAwNAYLKwYBBAGyMQECAk4w
JTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQIB
MIGIBggrBgEFBQcBAQR8MHowSwYIKwYBBQUHMAKGP2h0dHA6Ly96ZXJvc3NsLmNy
dC5zZWN0aWdvLmNvbS9aZXJvU1NMRUNDRG9tYWluU2VjdXJlU2l0ZUNBLmNydDAr
BggrBgEFBQcwAYYfaHR0cDovL3plcm9zc2wub2NzcC5zZWN0aWdvLmNvbTCCAQUG
CisGAQQB1nkCBAIEgfYEgfMA8QB2AK33vvp8/xDIi509nB4+GGq0Zyldz7EMJMqF
hjTr3IKKAAABhsKcwf4AAAQDAEcwRQIgA6y7EukoNVTev0mEXlbOtIhJROjFIuLl
X0qvXlq9WLICIQDpopPhM16oT6IkpEwGkjnbmho18JAl7/MAbFpDNi89KwB3AHoy
jFTYty22IOo44FIe6YQWcDIThU070ivBOlejUutSAAABhsKcwmIAAAQDAEgwRgIh
AMQvXj0sJ+80JoPLb1Y5J9dDMnB1ahIl1gourbCqbC2oAiEA1PKQu47rlUAdiDDm
j3nEQK01u2HjQVjxVa7VQ8WNLT8wGwYDVR0RBBQwEoIQZmJsZWFnaC5kZWR5bi5p
bzAKBggqhkjOPQQDAwNoADBlAjEA6qTxxO89gKy5v7uYCJix2an2y2GiPhmg2jbC
+1JMSGAmA6R9NgF3vQLPkYlGexShAjBAgiOuRzx2RTtv/JI84xXyTPBkTunQ1ikH
9fsxIA8PkZP/Fgj0ctifN5Lxy7gmZgI=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDhTCCAwygAwIBAgIQI7dt48G7KxpRlh4I6rdk6DAKBggqhkjOPQQDAzCBiDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl
eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT
JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwMTMw
MDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UEChMH
WmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBFQ0MgRG9tYWluIFNlY3VyZSBTaXRl
IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAENkFhFytTJe2qypTk1tpIV+9QuoRk
gte7BRvWHwYk9qUznYzn8QtVaGOCMBBfjWXsqqivl8q1hs4wAYl03uNOXgFu7iZ7
zFP6I6T3RB0+TR5fZqathfby47yOCZiAJI4go4IBdTCCAXEwHwYDVR0jBBgwFoAU
OuEJhtTPGcKWdnRJdtzgNcZjY5owHQYDVR0OBBYEFA9r5kvOOUeu9n6QHnnwMJGS
yF+jMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAEGzAZMA0GCysGAQQBsjEBAgJO
MAgGBmeBDAECATBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVz
dC5jb20vVVNFUlRydXN0RUNDQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYI
KwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5j
b20vVVNFUlRydXN0RUNDQWRkVHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wCgYIKoZIzj0EAwMDZwAwZAIwJHBUDwHJQN3I
VNltVMrICMqYQ3TYP/TXqV9t8mG5cAomG2MwqIsxnL937Gewf6WIAjAlrauksO6N
UuDdDXyd330druJcZJx0+H5j5cFOYBaGsKdeGW7sCMaR2PsDFKGllas=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIID0zCCArugAwIBAgIQVmcdBOpPmUxvEIFHWdJ1lDANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgRUNDIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEGqxUWqn5aCPnetUkb1PGWthL
q8bVttHmc3Gu3ZzWDGH926CJA7gFFOxXzu5dP+Ihs8731Ip54KODfi2X0GHE8Znc
JZFjq38wo7Rw4sehM5zzvy5cU7Ffs30yf4o043l5o4HyMIHvMB8GA1UdIwQYMBaA
FKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1
xmNjmjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zARBgNVHSAECjAI
MAYGBFUdIAAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5j
b20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEEKDAmMCQG
CCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEM
BQADggEBABns652JLCALBIAdGN5CmXKZFjK9Dpx1WywV4ilAbe7/ctvbq5AfjJXy
ij0IckKJUAfiORVsAYfZFhr1wHUrxeZWEQff2Ji8fJ8ZOd+LygBkc7xGEJuTI42+
FsMuCIKchjN0djsoTI0DQoWz4rIjQtUfenVqGtF8qmchxDM6OW1TyaLtYiKou+JV
bJlsQ2uRl9EMC5MCHdK8aXdJ5htN978UeAOwproLtOGFfy/cQjutdAFI3tZs4RmY
CV4Ks2dH/hzg1cEo70qLRDEmBDeNiXQ2Lu+lIg+DdEmSx/cQwgwp+7e9un/jX9Wf
8qn0dNW44bOwgeThpWOjzOoEeJBuv/c=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIEKTCCAxGgAwIBAgISBFI4R7wyurqkuEa8OoOaWmktMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yNDAyMjcxNDM5MzNaFw0yNDA1MjcxNDM5MzJaMB4xHDAaBgNVBAMT
E2ZibGVhZ2guZHVja2Rucy5vcmcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQg
GhGMUACI6cinDLdFVX4YMRJsJMqHrroKmjVLpcb7k4GZpp5IZ/5ik/O5RnLyhhDU
qJbszmOfNhxooCV24Xfio4ICFjCCAhIwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBS/
JmOInfWkqR+OBCYBP4qPBNLo8DAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDmH6+d
ixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5vLmxl
bmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzAeBgNV
HREEFzAVghNmYmxlYWdoLmR1Y2tkbnMub3JnMBMGA1UdIAQMMAowCAYGZ4EMAQIB
MIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcAO1N3dT4tuYBOizBbBv5AO2fYT8P0
x70ADS1yb+H61BcAAAGN6ziiQgAABAMASDBGAiEAyN/Q4W+6a68JUJqPJDziB5SX
OhgQcwdFL3GKuJ+8BPACIQDM3b6jFUMO/39+Yy7JDNUEfv7Fy93lZqxamlzm1BR6
qgB2AKLiv9Ye3i8vB6DWTm03p9xlQ7DGtS6i2reK+Jpt9RfYAAABjes4okEAAAQD
AEcwRQIhALWq457YbcZQvY7tDxRAza1x9SkWyPYpo4BZZqKuqnq+AiBXnC2+O/yh
czGL/VJ5/JGva6KlgmtPGZZY9Rj4bJfw/TANBgkqhkiG9w0BAQsFAAOCAQEAsA8U
URxOF+bE4dZtSy3rPGE7txh9hJ61Qs/Qb+GjX5zVm7FVqtl+JvB7KQO4C81ckHak
kIWA6u59oCRHZ+rQcHadbghQYSN3LX3cFJGnf5oOfeln0CpKWdR7aSdsd4KjNHA3
hzMTZsaAb5iq6kvs045mpEKCOAaahPgA5w3FUVuFHTrFon0qw++U3Wy+QdBi4eR3
auVLLzMWMSQrrVbm8MyRt0i0A/1sqM+uhe4D6rnaHGp84AW5yKwRAqzs8UydHyDr
YKlYfXzqD9gOJl1qrpIg9u90oEVIRQzqEWJByHrDf/dc++ub41stftLNAL6GWDbT
80uKExuPI0424OIWFw==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,5 @@
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIDTRN7o5o3K8DpFpas9m3+lxK7DgDTRDnfwtt7ReuL4loAoGCCqGSM49
AwEHoUQDQgAEIBoRjFAAiOnIpwy3RVV+GDESbCTKh666Cpo1S6XG+5OBmaaeSGf+
YpPzuUZy8oYQ1KiW7M5jnzYcaKAlduF34g==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,56 @@
-----BEGIN CERTIFICATE-----
MIIEKTCCAxGgAwIBAgISBFI4R7wyurqkuEa8OoOaWmktMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yNDAyMjcxNDM5MzNaFw0yNDA1MjcxNDM5MzJaMB4xHDAaBgNVBAMT
E2ZibGVhZ2guZHVja2Rucy5vcmcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQg
GhGMUACI6cinDLdFVX4YMRJsJMqHrroKmjVLpcb7k4GZpp5IZ/5ik/O5RnLyhhDU
qJbszmOfNhxooCV24Xfio4ICFjCCAhIwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBS/
JmOInfWkqR+OBCYBP4qPBNLo8DAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDmH6+d
ixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5vLmxl
bmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzAeBgNV
HREEFzAVghNmYmxlYWdoLmR1Y2tkbnMub3JnMBMGA1UdIAQMMAowCAYGZ4EMAQIB
MIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcAO1N3dT4tuYBOizBbBv5AO2fYT8P0
x70ADS1yb+H61BcAAAGN6ziiQgAABAMASDBGAiEAyN/Q4W+6a68JUJqPJDziB5SX
OhgQcwdFL3GKuJ+8BPACIQDM3b6jFUMO/39+Yy7JDNUEfv7Fy93lZqxamlzm1BR6
qgB2AKLiv9Ye3i8vB6DWTm03p9xlQ7DGtS6i2reK+Jpt9RfYAAABjes4okEAAAQD
AEcwRQIhALWq457YbcZQvY7tDxRAza1x9SkWyPYpo4BZZqKuqnq+AiBXnC2+O/yh
czGL/VJ5/JGva6KlgmtPGZZY9Rj4bJfw/TANBgkqhkiG9w0BAQsFAAOCAQEAsA8U
URxOF+bE4dZtSy3rPGE7txh9hJ61Qs/Qb+GjX5zVm7FVqtl+JvB7KQO4C81ckHak
kIWA6u59oCRHZ+rQcHadbghQYSN3LX3cFJGnf5oOfeln0CpKWdR7aSdsd4KjNHA3
hzMTZsaAb5iq6kvs045mpEKCOAaahPgA5w3FUVuFHTrFon0qw++U3Wy+QdBi4eR3
auVLLzMWMSQrrVbm8MyRt0i0A/1sqM+uhe4D6rnaHGp84AW5yKwRAqzs8UydHyDr
YKlYfXzqD9gOJl1qrpIg9u90oEVIRQzqEWJByHrDf/dc++ub41stftLNAL6GWDbT
80uKExuPI0424OIWFw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----

View File

@@ -1,8 +1,7 @@
{
"backup_timestamp": "2025-11-22T17:50:56.601241",
"total_keys": 0,
"successful_backups": 0,
"failed_backups": 0,
"consul_address": "http://192.168.4.250:4646",
"status": "empty_kv_store"
"backup_timestamp": "2025-11-22T09:57:22.836671",
"total_keys": 79,
"successful_backups": 74,
"failed_backups": 5,
"consul_address": "http://consul.service.dc1.consul:8500"
}

1
consul_backup/nginx Normal file
View File

@@ -0,0 +1 @@
ee2c95d2-3341-ab8b-0067-b663febe56cb

42
consul_backup/nginx_index Normal file
View File

@@ -0,0 +1,42 @@
<!DOCTYPE html>
<html>
<title>Dashboard</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://www.w3schools.com/lib/w3-theme-blue-grey.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<body class="w3-theme-l4">
<div style="min-width:200px">
<div class="w3-bar w3-large w3-theme-d4">
<a href="#" class="w3-bar-item w3-button"><i class="fa fa-bars"></i></a>
<span class="w3-bar-item">Dashboard</span>
<a href="#" class="w3-bar-item w3-button w3-right"><i class="fa fa-search"></i></a>
</div>
<div class="w3-container w3-content">
<p class="w3-opacity"><b>Tools</b></p>
{{range services}}
{{range $i, $s :=service .Name}}
{{ if eq $i 0 }}
{{if .Tags | contains "tools"}}
<div class="w3-container w3-white w3-center w3-col s4 w3-cell-padding w3-card w3-mobile w3-margin" style="width30%; ">
<p class="w3-text-blue"><b>{{.Name}}</b></p>
{{$iconname := .Name}}
{{range $tag, $services := service .Name | byTag }}{{if $tag | regexMatch "logo=*"}}{{$iconname = index ($tag | split "=") 1}}{{end}}{{end}}
<a href="http://{{.Name}}.service.dc1.consul" target="_blank"><img src="./repo/png/{{$iconname}}.png" alt="HTML tutorial" class="w3-margin" style="width:84px;height:84px;"></a>
</div>
{{end}}{{end}}{{end}}{{end}}
</div>
<p>
Node Environment Information: <br />
node_id: {{ env "node.unique.id" }} <br/>
datacenter: {{ env "NOMAD_DC" }}
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
{"ttl":30,"loop_wait":10,"retry_timeout":10,"maximum_lag_on_failover":1048576,"postgresql":{"use_pg_rewind":true,"use_slots":true,"parameters":{"timezone":"UTC","max_connections":100,"shared_preload_libraries":"pg_stat_statements","shared_buffers":"64MB","work_mem":"16MB","effective_cache_size":"512MB","tcp_keepalives_idle":300,"timescaledb.telemetry_level":false}}}

View File

@@ -0,0 +1 @@
{}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
7304297315619373086

View File

@@ -0,0 +1 @@
pg-odroid8

View File

@@ -0,0 +1 @@
{"conn_url":"postgres://192.168.4.226:5432/postgres","api_url":"http://192.168.4.226:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":587649285064,"replication_state":"streaming","timeline":248}

View File

@@ -0,0 +1 @@
{"conn_url":"postgres://192.168.4.227:5432/postgres","api_url":"http://192.168.4.227:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":587649284200,"replication_state":"streaming","timeline":248}

View File

@@ -0,0 +1 @@
{"conn_url":"postgres://192.168.4.228:5432/postgres","api_url":"http://192.168.4.228:8008/patroni","state":"running","role":"primary","version":"4.0.4","xlog_location":587649284200,"timeline":248}

View File

@@ -0,0 +1 @@
{"conn_url":"postgres://192.168.4.36:5432/postgres","api_url":"http://192.168.4.36:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":587649285816,"replication_state":"streaming","timeline":248}

View File

@@ -0,0 +1 @@
{"optime":587649284200,"slots":{"pg_odroid6":587649284200,"pg_odroid7":587649284200,"pg_opti1":587649284200,"pg_odroid8":587649284200},"retain_slots":["pg_odroid6","pg_odroid7","pg_odroid8","pg_opti1"]}

View File

@@ -0,0 +1 @@
8ab24a39-8747-2d2b-3789-9316e77035cc

View File

@@ -0,0 +1,90 @@
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_timeout: 12s
external_labels:
monitor: 'example'
rule_files:
- "alerts.yml"
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- "alertmanager.service.dc1.consul:9093"
scrape_configs:
- job_name: postgres-job
metrics_path: /metrics
scheme: http
static_configs:
- targets: ['postgres.service.dc1.consul:8008']
- job_name: minio-job
metrics_path: /minio/v2/metrics/cluster
scheme: http
static_configs:
- targets: ['minio.service.dc1.consul:9000']
- job_name: 'traefik'
static_configs:
- targets:
- 'traefik.service.dc1.consul:80'
- job_name: 'consulservices'
consul_sd_configs:
- server: 'consul.service.dc1.consul:8500'
services:
- cadvisor
relabel_configs:
- source_labels: [__meta_consul_service]
target_label: job
- source_labels: [__meta_consul_node]
regex: (.+)
target_label: node
replacement: '${1}'
- job_name: nomad_metrics
params:
format:
- prometheus
scrape_interval: 10s
scrape_timeout: 10s
metrics_path: /v1/metrics
consul_sd_configs:
- server: 'consul.service.dc1.consul:8500'
datacenter: 'dc1'
tag_separator: ','
scheme: http
services:
- nomad-client
relabel_configs:
- source_labels: [__meta_consul_tags]
separator: ;
regex: (.*)http(.*)
replacement: $1
action: keep
- source_labels: [__meta_consul_address]
separator: ;
regex: (.*)
target_label: __meta_consul_service_address
replacement: $1
action: replace
- source_labels: [__meta_consul_node]
regex: (.+)
target_label: node
replacement: '${1}'
- job_name: node_exporter
params:
format:
- prometheus
scrape_interval: 10s
scrape_timeout: 10s
metrics_path: /metrics
consul_sd_configs:
- server: 'consul.service.dc1.consul:8500'
datacenter: 'dc1'
tag_separator: ','
scheme: http
services:
- node-exporter
relabel_configs:
- source_labels: [__meta_consul_node]
regex: (.+)
target_label: node
replacement: '${1}'

View File

@@ -0,0 +1 @@
{"state": null, "start_time": null, "stabilization_checks": 0}

View File

@@ -0,0 +1 @@
{"start_time": null}

View File

@@ -0,0 +1 @@
{"connection_state": "stable", "last_state_change_time": 1763829844.4920733, "consecutive_failures": 21, "consecutive_stable_checks": 122, "last_failure_time": 1763829749.067393}

View File

@@ -0,0 +1 @@
{"vpn_status": "running", "last_vpn_status_change": 1763829147.0930555, "public_ip": "192.30.89.67", "last_public_ip_change": 1763829147.2012818, "public_ip_details": {"public_ip": "192.30.89.67", "region": "British Columbia", "country": "Canada", "city": "Vancouver", "location": "49.2497,-123.1193", "organization": "AS394256 Tech Futures Interactive Inc.", "postal_code": "V5Y", "timezone": "America/Vancouver"}}

View File

@@ -0,0 +1 @@
cd4bdd286cd7aef23033995ffcbd77f5059aefb13638966e059d752d59bce851

View File

@@ -0,0 +1,122 @@
#!/bin/sh
set -x
ls -la
pwd
whoami
# Define active DuckDNS variables
DUCKDNS_DOMAIN="*.fbleagh.duckdns.org"
DUCKDNS_BASE="fbleagh.duckdns.org"
# CONSUL_URL is set externally by Nomad: ${attr.unique.network.ip-address}
# --- ACME Setup (Switching BACK to Let's Encrypt) ---
# Using a specific email to register a fresh account context
/usr/local/bin/acme.sh --register-account --server letsencrypt -m "admin-${DUCKDNS_BASE}@mailinator.com"
/usr/local/bin/acme.sh --set-default-ca --server letsencrypt
sleep 10
# --- 🎯 Dynamic Service Discovery ---
SERVICES=""
CHALLENGE_ALIAS_ARGS=""
for service in $(curl -s "http://$CONSUL_URL:8500/v1/catalog/services" | jq -r 'to_entries[] | select(.value | index("sslcert")) | .key'); do
SERVICE_DOMAIN="${service}.service.dc1.fbleagh.duckdns.org"
SERVICES="$SERVICES -d $SERVICE_DOMAIN"
# Correct pipe syntax for service domain alias
CHALLENGE_ALIAS_ARGS="$CHALLENGE_ALIAS_ARGS --challenge-alias $SERVICE_DOMAIN|$DUCKDNS_BASE"
done
# Build the complete domain list for logging/reference
DOMAIN_ARGS="-d $DUCKDNS_DOMAIN $SERVICES"
echo "Requesting certificate for: $DOMAIN_ARGS"
echo "--- Starting 2-STEP ISSUANCE (Back to Let's Encrypt) ---"
# ----------------------------------------------------------------------------------
## ➡️ STEP 1: Issue Wildcard Domain
# Note: We removed the explicit alias for the wildcard to simplify the request.
# The dns_duckdns hook naturally handles the root domain for the wildcard.
echo "--- STEP 1: Issuing Wildcard Domain ---"
/usr/local/bin/acme.sh --insecure --issue --dns dns_duckdns \
-d "$DUCKDNS_DOMAIN" \
--ecc --force --dnssleep 60
ACME_STATUS_1=$?
if [ $ACME_STATUS_1 -ne 0 ]; then
echo "🚨 ERROR: acme.sh STEP 1 (Wildcard) failed with exit code $ACME_STATUS_1."
# If step 1 fails on Let's Encrypt, we cannot proceed.
exit $ACME_STATUS_1
fi
echo "✅ STEP 1 (Wildcard) completed successfully."
# ----------------------------------------------------------------------------------
# ----------------------------------------------------------------------------------
## ➡️ STEP 2: Issue Wildcard + Service Domains
echo "--- STEP 2: Issuing Wildcard + Service Domains ---"
/usr/local/bin/acme.sh --insecure --issue --dns dns_duckdns \
-d "$DUCKDNS_DOMAIN" \
$SERVICES \
$CHALLENGE_ALIAS_ARGS \
--ecc --force --dnssleep 60
ACME_STATUS_2=$?
if [ $ACME_STATUS_2 -ne 0 ]; then
echo "🚨 ERROR: acme.sh STEP 2 (Wildcard + Services) failed with exit code $ACME_STATUS_2."
exit $ACME_STATUS_2
fi
echo "✅ STEP 2 (Wildcard + Services) completed successfully. Proceeding to upload."
# ----------------------------------------------------------------------------------
# --- Upload to Consul ---
CERT_DIR="/acme.sh/${DUCKDNS_DOMAIN}_ecc"
CONSUL_KV_PATH="/v1/kv/letsconsul/${DUCKDNS_DOMAIN}"
upload_to_consul () {
FILE_PATH="$1"
KV_KEY="$2"
CURL_RESPONSE=$(curl -XPUT --data-binary "@$FILE_PATH" "http://$CONSUL_URL:8500$KV_KEY" 2>&1)
if echo "$CURL_RESPONSE" | grep -q "^true$"; then
echo "✅ Consul upload SUCCESS: $KV_KEY"
else
echo "❌ Consul upload FAILED: $KV_KEY"
echo "--- Full CURL Output ---"
echo "$CURL_RESPONSE"
exit 1
fi
}
echo "Starting Consul Uploads for ${DUCKDNS_DOMAIN}..."
upload_to_consul "$CERT_DIR/${DUCKDNS_DOMAIN}.key" "${CONSUL_KV_PATH}/${DUCKDNS_DOMAIN}.key"
upload_to_consul "$CERT_DIR/fullchain.cer" "${CONSUL_KV_PATH}/fullchain.cer"
upload_to_consul "$CERT_DIR/${DUCKDNS_DOMAIN}.cer" "${CONSUL_KV_PATH}/${DUCKDNS_DOMAIN}.cer"
upload_to_consul "$CERT_DIR/ca.cer" "${CONSUL_KV_PATH}/ca.cer"
# --- Verification ---
echo "--- Starting Certificate and Consul Verification ---"
echo "1. Checking SANs in local fullchain.cer..."
if [ -f "$CERT_DIR/fullchain.cer" ]; then
openssl x509 -in "$CERT_DIR/fullchain.cer" -text -noout | grep -A1 "X509v3 Subject Alternative Name"
echo "✅ Local SAN check complete."
else
echo "❌ ERROR: fullchain.cer not found."
exit 1
fi
CONSUL_CHECK_KEY="${CONSUL_KV_PATH}/fullchain.cer"
echo "2. Checking existence of ${CONSUL_CHECK_KEY} in Consul..."
CONSUL_METADATA=$(curl -s "http://$CONSUL_URL:8500${CONSUL_CHECK_KEY}?stale&keys&index=1")
CERT_VALUE_LENGTH=$(echo "$CONSUL_METADATA" | jq -r '.[0].Value' | wc -c)
if [ "$CERT_VALUE_LENGTH" -gt 100 ]; then
echo "✅ Consul upload verification SUCCESS."
else
echo "❌ Consul upload verification FAILED."
exit 1
fi
exit 0

View File

@@ -0,0 +1,27 @@
#!/bin/sh
set -e
set -x
ls -ld $(find /etc/letsencrypt)
apk add curl
#$LETSCONSUL_DOMAIN
certbot certonly \
-v \
--cert-name $LETSCONSUL_DOMAIN \
--preferred-challenges dns \
--authenticator dns-duckdns \
--dns-duckdns-token e4b5ca33-1f4d-494b-b06d-6dd4600df662 \
--dns-duckdns-propagation-seconds 60 \
--non-interactive \
--agree-tos \
-d *.${LETSCONSUL_DOMAIN} --email "stuart.stent@gmail.com"
curl -XPUT --data-bin "@/etc/letsencrypt/live/$LETSCONSUL_DOMAIN/privkey.pem" http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/$LETSCONSUL_DOMAIN/privkey
curl -XPUT --data-bin "@/etc/letsencrypt/live/$LETSCONSUL_DOMAIN/fullchain.pem" http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/$LETSCONSUL_DOMAIN/fullchain
curl -XPUT --data-bin "@/etc/letsencrypt/live/$LETSCONSUL_DOMAIN/cert.pem" http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/$LETSCONSUL_DOMAIN/cert
curl -XPUT --data-bin "@/etc/letsencrypt/live/$LETSCONSUL_DOMAIN/chain.pem" http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/$LETSCONSUL_DOMAIN/chain
#curl -XPUT --data-bin @/var/log/letsencrypt/letsencrypt.log http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/letsencrypt.log
/bin/sleep 600

View File

@@ -0,0 +1,40 @@
#!/bin/sh
set -e
set -x
IFS=";"
apk add curl
for group in $LETSCONSUL_DOMAINS
do
echo
echo "-----------------------"
IFS=" "
domains=""
domain_main=""
for domain in $group
do
if [ "$domain_main" = "" ]
then
domain_main="$domain"
fi
domains="$domains -d $domain"
done
echo certbot certonly \
-vvv \
--test-cert \
--preferred-challenges dns \
--authenticator dns-duckdns \
--dns-duckdns-token e4b5ca33-1f4d-494b-b06d-6dd4600df662 \
--dns-duckdns-propagation-seconds 120 \
--non-interactive \
--agree-tos \
--renew-by-default \
$domains --email "stuart.stent@gmail.com"
echo curl -XPUT --data-bin "@/etc/letsencrypt/live/\*.${domain_main}/privkey.pem" http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/$domain_main/privkey
echo curl -XPUT --data-bin "@/etc/letsencrypt/live/\*.${domain_main}/fullchain.pem" http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/$domain_main/fullchain
done
echo curl -XPUT --data-bin @/var/log/letsencrypt/letsencrypt.log http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/letsencrypt.log

View File

@@ -0,0 +1,24 @@
#!/bin/sh
set -e
set -x
IFS=";"
apk add curl
echo certbot certonly \
-vvv \
--test-cert \
--preferred-challenges dns \
--authenticator dns-duckdns \
--dns-duckdns-token e4b5ca33-1f4d-494b-b06d-6dd4600df662 \
--dns-duckdns-propagation-seconds 120 \
--non-interactive \
--agree-tos \
--renew-by-default \
*.fbleagh-int.duckdns.org --email "stuart.stent@gmail.com"
echo curl -XPUT --data-bin "@/etc/letsencrypt/live/\*.fbleagh-int.duckdns.org/privkey.pem" http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/$domain_main/privkey
echo curl -XPUT --data-bin "@/etc/letsencrypt/live/\*.fbleagh-int.duckdns.org/fullchain.pem" http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/$domain_main/fullchain
done
echo curl -XPUT --data-bin @/var/log/letsencrypt/letsencrypt.log http://$LETSCONSUL_CONSUL_URL:8500/v1/kv/letsconsul/letsencrypt.log

View File

@@ -0,0 +1 @@
odroid6,odroid7,odroid8

View File

@@ -0,0 +1 @@
odroid6,odroid7,odroid8

View File

@@ -0,0 +1 @@
10

View File

@@ -0,0 +1 @@
{"installed":{"client_id":"182877671696-qj1oq6pi50s6v7nk16m59ulmg28klo0r.apps.googleusercontent.com","project_id":"quickstart-1588344492360","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"oSI3LMMY9caNiGgH0NKSO3oS","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}

View File

@@ -0,0 +1 @@
{"access_token":"ya29.a0ARrdaM9Cp7ib2ELAhWSmJWJIHN7xQe3CIuo7q-g1w4szCwTtcdPmSpfhMYX2Hes9GZP9RTernaEf6AaocBtGcv468yYnlbNOAQXBmizVUj12ZEY851NJU9UGwHl7JaB8NbfX5nGz1ndjzzBZoDN-drEHzIvf","token_type":"Bearer","refresh_token":"1//0duM7hhKdeXdmCgYIARAAGA0SNwF-L9Ir4W6QgqnyQ4RVIaHleOqkicvJTUc-Vd827_x1WabNQfP-S1P-WSDMC59XqHjn8uMEirQ","expiry":"2021-10-20T14:45:39.828013486-04:00"}

File diff suppressed because one or more lines are too long

1
consul_backup/testkey Normal file
View File

@@ -0,0 +1 @@
tesstvale

View File

@@ -0,0 +1 @@
0f37bd66-43c8-4fa2-a164-4721fd60c85e