From 828fa9d62d3641c36eb51695f25b004d00522052 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 8 Feb 2026 02:08:34 +0000 Subject: [PATCH] chore: backup infrastructure configurations [skip ci] --- .../logs/2026-02-07T02:14:25.243733+00:00 | 1 + .../logs/2026-02-07T03:14:27.920000+00:00 | 1 + .../logs/2026-02-07T04:14:30.755687+00:00 | 1 + .../logs/2026-02-07T05:14:33.919792+00:00 | 1 + .../logs/2026-02-07T06:14:37.193524+00:00 | 1 + .../logs/2026-02-07T07:14:40.299998+00:00 | 1 + .../logs/2026-02-07T08:14:43.455727+00:00 | 1 + .../logs/2026-02-07T09:14:46.795707+00:00 | 1 + .../logs/2026-02-07T10:14:49.556551+00:00 | 1 + .../logs/2026-02-07T11:14:52.503726+00:00 | 1 + .../logs/2026-02-07T12:14:55.925228+00:00 | 1 + .../logs/2026-02-07T13:14:58.587750+00:00 | 1 + .../logs/2026-02-07T14:15:01.984666+00:00 | 1 + .../logs/2026-02-07T15:15:04.897815+00:00 | 1 + .../logs/2026-02-07T16:15:07.745367+00:00 | 1 + .../logs/2026-02-07T17:15:10.643596+00:00 | 1 + .../logs/2026-02-07T18:15:14.315898+00:00 | 1 + .../logs/2026-02-07T19:15:17.386296+00:00 | 1 + .../logs/2026-02-07T20:15:20.537235+00:00 | 1 + .../logs/2026-02-07T21:15:23.535730+00:00 | 1 + .../logs/2026-02-07T22:15:26.283729+00:00 | 1 + .../logs/2026-02-07T23:15:28.899086+00:00 | 1 + .../logs/2026-02-08T00:15:31.485154+00:00 | 1 + .../logs/2026-02-08T01:15:34.069542+00:00 | 1 + .../*.fbleagh.duckdns.org.cer | 30 ++--- .../letsconsul/*.fbleagh.duckdns.org/ca.cer | 48 ++++---- .../*.fbleagh.duckdns.org/fullchain.cer | 78 ++++++------- consul_backup/litefs/navidrome | 1 + nomad_backup/check-firewall.hcl | 22 ++++ nomad_backup/cleanup-litefs-all.hcl | 25 ++++ nomad_backup/host-check.hcl | 26 +++++ nomad_backup/jfs-controller.hcl | 3 +- nomad_backup/jfs-node.hcl | 33 +++--- nomad_backup/navidrome-litefs.hcl | 108 ++++++++++++++++++ nomad_backup/nomad-config-check.hcl | 20 ++++ nomad_backup/port-discovery.hcl | 34 ++++++ 36 files changed, 356 insertions(+), 96 deletions(-) create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T02:14:25.243733+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T03:14:27.920000+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T04:14:30.755687+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T05:14:33.919792+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T06:14:37.193524+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T07:14:40.299998+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T08:14:43.455727+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T09:14:46.795707+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T10:14:49.556551+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T11:14:52.503726+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T12:14:55.925228+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T13:14:58.587750+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T14:15:01.984666+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T15:15:04.897815+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T16:15:07.745367+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T17:15:10.643596+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T18:15:14.315898+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T19:15:17.386296+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T20:15:20.537235+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T21:15:23.535730+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T22:15:26.283729+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-07T23:15:28.899086+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-08T00:15:31.485154+00:00 create mode 100644 consul_backup/fitbit-garmin-sync/logs/2026-02-08T01:15:34.069542+00:00 create mode 100644 consul_backup/litefs/navidrome create mode 100644 nomad_backup/check-firewall.hcl create mode 100644 nomad_backup/cleanup-litefs-all.hcl create mode 100644 nomad_backup/host-check.hcl create mode 100644 nomad_backup/navidrome-litefs.hcl create mode 100644 nomad_backup/nomad-config-check.hcl create mode 100644 nomad_backup/port-discovery.hcl diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T02:14:25.243733+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T02:14:25.243733+00:00 new file mode 100644 index 0000000..9aad41e --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T02:14:25.243733+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T02:14:25.243733+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T03:14:27.920000+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T03:14:27.920000+00:00 new file mode 100644 index 0000000..b96852f --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T03:14:27.920000+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T03:14:27.920000+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T04:14:30.755687+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T04:14:30.755687+00:00 new file mode 100644 index 0000000..913e073 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T04:14:30.755687+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T04:14:30.755687+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T05:14:33.919792+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T05:14:33.919792+00:00 new file mode 100644 index 0000000..d01971d --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T05:14:33.919792+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T05:14:33.919792+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T06:14:37.193524+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T06:14:37.193524+00:00 new file mode 100644 index 0000000..ddb58f2 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T06:14:37.193524+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T06:14:37.193524+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T07:14:40.299998+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T07:14:40.299998+00:00 new file mode 100644 index 0000000..f72974a --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T07:14:40.299998+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T07:14:40.299998+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T08:14:43.455727+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T08:14:43.455727+00:00 new file mode 100644 index 0000000..fbf5e82 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T08:14:43.455727+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T08:14:43.455727+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T09:14:46.795707+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T09:14:46.795707+00:00 new file mode 100644 index 0000000..ac0291a --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T09:14:46.795707+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T09:14:46.795707+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T10:14:49.556551+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T10:14:49.556551+00:00 new file mode 100644 index 0000000..8fa7c59 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T10:14:49.556551+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T10:14:49.556551+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T11:14:52.503726+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T11:14:52.503726+00:00 new file mode 100644 index 0000000..2672ca5 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T11:14:52.503726+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T11:14:52.503726+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T12:14:55.925228+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T12:14:55.925228+00:00 new file mode 100644 index 0000000..d1f7454 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T12:14:55.925228+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T12:14:55.925228+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T13:14:58.587750+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T13:14:58.587750+00:00 new file mode 100644 index 0000000..b5729a2 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T13:14:58.587750+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T13:14:58.587750+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T14:15:01.984666+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T14:15:01.984666+00:00 new file mode 100644 index 0000000..e4ae294 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T14:15:01.984666+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T14:15:01.984666+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T15:15:04.897815+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T15:15:04.897815+00:00 new file mode 100644 index 0000000..349f4f3 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T15:15:04.897815+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T15:15:04.897815+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T16:15:07.745367+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T16:15:07.745367+00:00 new file mode 100644 index 0000000..48e99f6 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T16:15:07.745367+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T16:15:07.745367+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T17:15:10.643596+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T17:15:10.643596+00:00 new file mode 100644 index 0000000..96e4f0d --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T17:15:10.643596+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T17:15:10.643596+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T18:15:14.315898+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T18:15:14.315898+00:00 new file mode 100644 index 0000000..77578b4 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T18:15:14.315898+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T18:15:14.315898+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T19:15:17.386296+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T19:15:17.386296+00:00 new file mode 100644 index 0000000..19a7904 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T19:15:17.386296+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T19:15:17.386296+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T20:15:20.537235+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T20:15:20.537235+00:00 new file mode 100644 index 0000000..7bc55f1 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T20:15:20.537235+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T20:15:20.537235+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T21:15:23.535730+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T21:15:23.535730+00:00 new file mode 100644 index 0000000..5e73959 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T21:15:23.535730+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T21:15:23.535730+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T22:15:26.283729+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T22:15:26.283729+00:00 new file mode 100644 index 0000000..d21386b --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T22:15:26.283729+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T22:15:26.283729+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-07T23:15:28.899086+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T23:15:28.899086+00:00 new file mode 100644 index 0000000..64fe14c --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-07T23:15:28.899086+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-07T23:15:28.899086+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-08T00:15:31.485154+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-08T00:15:31.485154+00:00 new file mode 100644 index 0000000..e9d1f19 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-08T00:15:31.485154+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-08T00:15:31.485154+00:00"} \ No newline at end of file diff --git a/consul_backup/fitbit-garmin-sync/logs/2026-02-08T01:15:34.069542+00:00 b/consul_backup/fitbit-garmin-sync/logs/2026-02-08T01:15:34.069542+00:00 new file mode 100644 index 0000000..b840475 --- /dev/null +++ b/consul_backup/fitbit-garmin-sync/logs/2026-02-08T01:15:34.069542+00:00 @@ -0,0 +1 @@ +{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-08T01:15:34.069542+00:00"} \ No newline at end of file diff --git a/consul_backup/letsconsul/*.fbleagh.duckdns.org/*.fbleagh.duckdns.org.cer b/consul_backup/letsconsul/*.fbleagh.duckdns.org/*.fbleagh.duckdns.org.cer index 066de30..c09975b 100644 --- a/consul_backup/letsconsul/*.fbleagh.duckdns.org/*.fbleagh.duckdns.org.cer +++ b/consul_backup/letsconsul/*.fbleagh.duckdns.org/*.fbleagh.duckdns.org.cer @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE----- -MIIDxjCCA0ygAwIBAgISBdSUOjdLe//tmcsLEMMMN2FyMAoGCCqGSM49BAMDMDIx +MIIDwDCCA0agAwIBAgISBmoy3agj0JSULya57ONt6jduMAoGCCqGSM49BAMDMDIx CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF -NzAeFw0yNjAxMzEyMzA1NDZaFw0yNjA1MDEyMzA1NDVaMCAxHjAcBgNVBAMMFSou +ODAeFw0yNjAyMDcyMzA1NDlaFw0yNjA1MDgyMzA1NDhaMCAxHjAcBgNVBAMMFSou ZmJsZWFnaC5kdWNrZG5zLm9yZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEMp g8Wlki34WWSjip7jID1y5+Cj0VNJ5ASEWpfdz0UZaPWyysNeAPJskQoFN7kTvEhb -NWRDMb+PnJoI+r4dKZyjggJSMIICTjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYw +NWRDMb+PnJoI+r4dKZyjggJMMIICSDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYw FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHZq -MAGYe8+YzwC4/4L9xSaUEidqMB8GA1UdIwQYMBaAFK5IntyHHUSgb9qi5WB0BHjC -nACAMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL2U3LmkubGVu +MAGYe8+YzwC4/4L9xSaUEidqMB8GA1UdIwQYMBaAFI8NE6L2Ln7RUGwzGDhdWY4j +cpHKMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL2U4LmkubGVu Y3Iub3JnLzBHBgNVHREEQDA+ghUqLmZibGVhZ2guZHVja2Rucy5vcmeCJWdpdGVh LnNlcnZpY2UuZGMxLmZibGVhZ2guZHVja2Rucy5vcmcwEwYDVR0gBAwwCjAIBgZn -gQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2U3LmMubGVuY3Iub3JnLzEx -NS5jcmwwggELBgorBgEEAdZ5AgQCBIH8BIH5APcAfQDjI43yjaKI4KrgrPD6kMmF -8La/9dKlJ7AB/BxEWMS26AAAAZwWg7YLAAgAAAUAMRzGGgQDAEYwRAIgFItFD0W9 -czHJF3sECfFN0hRJJcbtAJT4p6ghQjkWa6ACIDOBr7th0ZgpDG/fzrH9bG8wr6Wi -JSa6sSmW/bvZBkyRAHYA0W6ppWgHfmY1oD83pd28A6U8QRIU1IgY9ekxsyPLlQQA -AAGcFoO9VwAABAMARzBFAiBeMZNrXcoX11e+RecDiNaYwYqTzelZpiwLETX/Pnmu -GwIhAPzHkN+72ODm8PbP49Hv2c3tyyLnQEarozBrbJJK9Wm1MAoGCCqGSM49BAMD -A2gAMGUCMEbaDw2ePaFk3FKr+86G/DOUKa+isuLvVy8uNEpl0cy8xc/gsKaszsfT -JgWBTIXMigIxAJnpwfvMjLKrCMKcMHIBlMlEy8HrA64QnUAkEMYBq25gVLE1nXCR -RIQtQpRiAIBW0A== +gQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2U4LmMubGVuY3Iub3JnLzEx +MS5jcmwwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEAdwCWl2S/VViXrfdDh2g3CEJ3 +6fA61fak8zZuRqQ/D8qpxgAAAZw6kEfFAAAEAwBIMEYCIQDMumKShULNSYMUrwU4 +slQJfb++ThtpEcU66p+0guasGwIhAMgSl1jSALqYVARNyDMegI5betAzyax0fe+7 +zWmz29BAAHYAZBHEbKQS7KeJHKICLgC8q08oB9QeNSer6v7VA8l9zfAAAAGcOpBP +SQAABAMARzBFAiBfLa8HrFXso+hNe7L5FgW6bQvP0CcPuEW0tp1qz3M6uAIhAPzl +UgLRxt3MTumFDcYOYmjbyk2mrNeAzs+cLAadg92nMAoGCCqGSM49BAMDA2gAMGUC +MG4Vsy5j+CetlfzOwkkJ8ReixuYjF6QtrhWmC25709xyN/q3crQ8UOjEvbxEJKdh +ugIxAL6y/55ULqfFAvfioaa8UtT/J5aBBa7swRKj6NXu2V/zS5GjvYfJKWDEibz5 +a2SoGA== -----END CERTIFICATE----- diff --git a/consul_backup/letsconsul/*.fbleagh.duckdns.org/ca.cer b/consul_backup/letsconsul/*.fbleagh.duckdns.org/ca.cer index 049e753..12fab82 100644 --- a/consul_backup/letsconsul/*.fbleagh.duckdns.org/ca.cer +++ b/consul_backup/letsconsul/*.fbleagh.duckdns.org/ca.cer @@ -1,27 +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= +MIIEVjCCAj6gAwIBAgIQY5WTY8JOcIJxWRi/w9ftVjANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy +Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa +Fw0yNzAzMTIyMzU5NTlaMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF +bmNyeXB0MQswCQYDVQQDEwJFODB2MBAGByqGSM49AgEGBSuBBAAiA2IABNFl8l7c +S7QMApzSsvru6WyrOq44ofTUOTIzxULUzDMMNMchIJBwXOhiLxxxs0LXeb5GDcHb +R6EToMffgSZjO9SNHfY9gjMy9vQr5/WWOrQTZxh7az6NSNnq3u2ubT6HTKOB+DCB +9TAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI8NE6L2Ln7RUGwzGDhdWY4j +cpHKMB8GA1UdIwQYMBaAFHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEB +BCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzATBgNVHSAE +DDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veDEuYy5sZW5j +ci5vcmcvMA0GCSqGSIb3DQEBCwUAA4ICAQBnE0hGINKsCYWi0Xx1ygxD5qihEjZ0 +RI3tTZz1wuATH3ZwYPIp97kWEayanD1j0cDhIYzy4CkDo2jB8D5t0a6zZWzlr98d +AQFNh8uKJkIHdLShy+nUyeZxc5bNeMp1Lu0gSzE4McqfmNMvIpeiwWSYO9w82Ob8 +otvXcO2JUYi3svHIWRm3+707DUbL51XMcY2iZdlCq4Wa9nbuk3WTU4gr6LY8MzVA +aDQG2+4U3eJ6qUF10bBnR1uuVyDYs9RhrwucRVnfuDj29CMLTsplM5f5wSV5hUpm +Uwp/vV7M4w4aGunt74koX71n4EdagCsL/Yk5+mAQU0+tue0JOfAV/R6t1k+Xk9s2 +HMQFeoxppfzAVC04FdG9M+AC2JWxmFSt6BCuh3CEey3fE52Qrj9YM75rtvIjsm/1 +Hl+u//Wqxnu1ZQ4jpa+VpuZiGOlWrqSP9eogdOhCGisnyewWJwRQOqK16wiGyZeR +xs/Bekw65vwSIaVkBruPiTfMOo0Zh4gVa8/qJgMbJbyrwwG97z/PRgmLKCDl8z3d +tA0Z7qq7fta0Gl24uyuB05dqI5J1LvAzKuWdIjT1tP8qCoxSE/xpix8hX2dt3h+/ +jujUgFPFZ0EVZ0xSyBNRF3MboGZnYXFUxpNjTWPKpagDHJQmqrAcDmWJnMsFY3jS +u1igv3OefnWjSQ== -----END CERTIFICATE----- diff --git a/consul_backup/letsconsul/*.fbleagh.duckdns.org/fullchain.cer b/consul_backup/letsconsul/*.fbleagh.duckdns.org/fullchain.cer index 75e0ab8..434a727 100644 --- a/consul_backup/letsconsul/*.fbleagh.duckdns.org/fullchain.cer +++ b/consul_backup/letsconsul/*.fbleagh.duckdns.org/fullchain.cer @@ -1,50 +1,50 @@ -----BEGIN CERTIFICATE----- -MIIDxjCCA0ygAwIBAgISBdSUOjdLe//tmcsLEMMMN2FyMAoGCCqGSM49BAMDMDIx +MIIDwDCCA0agAwIBAgISBmoy3agj0JSULya57ONt6jduMAoGCCqGSM49BAMDMDIx CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF -NzAeFw0yNjAxMzEyMzA1NDZaFw0yNjA1MDEyMzA1NDVaMCAxHjAcBgNVBAMMFSou +ODAeFw0yNjAyMDcyMzA1NDlaFw0yNjA1MDgyMzA1NDhaMCAxHjAcBgNVBAMMFSou ZmJsZWFnaC5kdWNrZG5zLm9yZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEMp g8Wlki34WWSjip7jID1y5+Cj0VNJ5ASEWpfdz0UZaPWyysNeAPJskQoFN7kTvEhb -NWRDMb+PnJoI+r4dKZyjggJSMIICTjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYw +NWRDMb+PnJoI+r4dKZyjggJMMIICSDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYw FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHZq -MAGYe8+YzwC4/4L9xSaUEidqMB8GA1UdIwQYMBaAFK5IntyHHUSgb9qi5WB0BHjC -nACAMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL2U3LmkubGVu +MAGYe8+YzwC4/4L9xSaUEidqMB8GA1UdIwQYMBaAFI8NE6L2Ln7RUGwzGDhdWY4j +cpHKMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL2U4LmkubGVu Y3Iub3JnLzBHBgNVHREEQDA+ghUqLmZibGVhZ2guZHVja2Rucy5vcmeCJWdpdGVh LnNlcnZpY2UuZGMxLmZibGVhZ2guZHVja2Rucy5vcmcwEwYDVR0gBAwwCjAIBgZn -gQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2U3LmMubGVuY3Iub3JnLzEx -NS5jcmwwggELBgorBgEEAdZ5AgQCBIH8BIH5APcAfQDjI43yjaKI4KrgrPD6kMmF -8La/9dKlJ7AB/BxEWMS26AAAAZwWg7YLAAgAAAUAMRzGGgQDAEYwRAIgFItFD0W9 -czHJF3sECfFN0hRJJcbtAJT4p6ghQjkWa6ACIDOBr7th0ZgpDG/fzrH9bG8wr6Wi -JSa6sSmW/bvZBkyRAHYA0W6ppWgHfmY1oD83pd28A6U8QRIU1IgY9ekxsyPLlQQA -AAGcFoO9VwAABAMARzBFAiBeMZNrXcoX11e+RecDiNaYwYqTzelZpiwLETX/Pnmu -GwIhAPzHkN+72ODm8PbP49Hv2c3tyyLnQEarozBrbJJK9Wm1MAoGCCqGSM49BAMD -A2gAMGUCMEbaDw2ePaFk3FKr+86G/DOUKa+isuLvVy8uNEpl0cy8xc/gsKaszsfT -JgWBTIXMigIxAJnpwfvMjLKrCMKcMHIBlMlEy8HrA64QnUAkEMYBq25gVLE1nXCR -RIQtQpRiAIBW0A== +gQwBAgEwLgYDVR0fBCcwJTAjoCGgH4YdaHR0cDovL2U4LmMubGVuY3Iub3JnLzEx +MS5jcmwwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEAdwCWl2S/VViXrfdDh2g3CEJ3 +6fA61fak8zZuRqQ/D8qpxgAAAZw6kEfFAAAEAwBIMEYCIQDMumKShULNSYMUrwU4 +slQJfb++ThtpEcU66p+0guasGwIhAMgSl1jSALqYVARNyDMegI5betAzyax0fe+7 +zWmz29BAAHYAZBHEbKQS7KeJHKICLgC8q08oB9QeNSer6v7VA8l9zfAAAAGcOpBP +SQAABAMARzBFAiBfLa8HrFXso+hNe7L5FgW6bQvP0CcPuEW0tp1qz3M6uAIhAPzl +UgLRxt3MTumFDcYOYmjbyk2mrNeAzs+cLAadg92nMAoGCCqGSM49BAMDA2gAMGUC +MG4Vsy5j+CetlfzOwkkJ8ReixuYjF6QtrhWmC25709xyN/q3crQ8UOjEvbxEJKdh +ugIxAL6y/55ULqfFAvfioaa8UtT/J5aBBa7swRKj6NXu2V/zS5GjvYfJKWDEibz5 +a2SoGA== -----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= +MIIEVjCCAj6gAwIBAgIQY5WTY8JOcIJxWRi/w9ftVjANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy +Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa +Fw0yNzAzMTIyMzU5NTlaMDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF +bmNyeXB0MQswCQYDVQQDEwJFODB2MBAGByqGSM49AgEGBSuBBAAiA2IABNFl8l7c +S7QMApzSsvru6WyrOq44ofTUOTIzxULUzDMMNMchIJBwXOhiLxxxs0LXeb5GDcHb +R6EToMffgSZjO9SNHfY9gjMy9vQr5/WWOrQTZxh7az6NSNnq3u2ubT6HTKOB+DCB +9TAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI8NE6L2Ln7RUGwzGDhdWY4j +cpHKMB8GA1UdIwQYMBaAFHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEB +BCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzATBgNVHSAE +DDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veDEuYy5sZW5j +ci5vcmcvMA0GCSqGSIb3DQEBCwUAA4ICAQBnE0hGINKsCYWi0Xx1ygxD5qihEjZ0 +RI3tTZz1wuATH3ZwYPIp97kWEayanD1j0cDhIYzy4CkDo2jB8D5t0a6zZWzlr98d +AQFNh8uKJkIHdLShy+nUyeZxc5bNeMp1Lu0gSzE4McqfmNMvIpeiwWSYO9w82Ob8 +otvXcO2JUYi3svHIWRm3+707DUbL51XMcY2iZdlCq4Wa9nbuk3WTU4gr6LY8MzVA +aDQG2+4U3eJ6qUF10bBnR1uuVyDYs9RhrwucRVnfuDj29CMLTsplM5f5wSV5hUpm +Uwp/vV7M4w4aGunt74koX71n4EdagCsL/Yk5+mAQU0+tue0JOfAV/R6t1k+Xk9s2 +HMQFeoxppfzAVC04FdG9M+AC2JWxmFSt6BCuh3CEey3fE52Qrj9YM75rtvIjsm/1 +Hl+u//Wqxnu1ZQ4jpa+VpuZiGOlWrqSP9eogdOhCGisnyewWJwRQOqK16wiGyZeR +xs/Bekw65vwSIaVkBruPiTfMOo0Zh4gVa8/qJgMbJbyrwwG97z/PRgmLKCDl8z3d +tA0Z7qq7fta0Gl24uyuB05dqI5J1LvAzKuWdIjT1tP8qCoxSE/xpix8hX2dt3h+/ +jujUgFPFZ0EVZ0xSyBNRF3MboGZnYXFUxpNjTWPKpagDHJQmqrAcDmWJnMsFY3jS +u1igv3OefnWjSQ== -----END CERTIFICATE----- diff --git a/consul_backup/litefs/navidrome b/consul_backup/litefs/navidrome new file mode 100644 index 0000000..09f2b1c --- /dev/null +++ b/consul_backup/litefs/navidrome @@ -0,0 +1 @@ +{"hostname":"45411fdf596d","advertise-url":"http://192.168.4.227:8081"} \ No newline at end of file diff --git a/nomad_backup/check-firewall.hcl b/nomad_backup/check-firewall.hcl new file mode 100644 index 0000000..d80c2a8 --- /dev/null +++ b/nomad_backup/check-firewall.hcl @@ -0,0 +1,22 @@ +job "check-firewall" { + datacenters = ["dc1"] + type = "batch" + + group "check" { + count = 1 + constraint { + attribute = "${attr.unique.hostname}" + value = "odroid7" + } + + task "check" { + driver = "docker" + config { + image = "busybox" + network_mode = "host" + command = "sh" + args = ["-c", "nc -zv 127.0.0.1 20202 && echo 'Listening'"] + } + } + } +} diff --git a/nomad_backup/cleanup-litefs-all.hcl b/nomad_backup/cleanup-litefs-all.hcl new file mode 100644 index 0000000..64c2d99 --- /dev/null +++ b/nomad_backup/cleanup-litefs-all.hcl @@ -0,0 +1,25 @@ +job "cleanup-litefs-all" { + datacenters = ["dc1"] + type = "batch" + + group "cleanup" { + count = 4 + constraint { + attribute = "${attr.unique.hostname}" + operator = "regexp" + value = "odroid6|odroid7|odroid8|opti1" + } + + task "clean" { + driver = "docker" + config { + image = "busybox" + volumes = [ + "/mnt/configs/navidrome_litefs:/mnt/data" + ] + command = "sh" + args = ["-c", "rm -rf /mnt/data/* && echo \"Cleaned $(hostname)\""] + } + } + } +} \ No newline at end of file diff --git a/nomad_backup/host-check.hcl b/nomad_backup/host-check.hcl new file mode 100644 index 0000000..2ade251 --- /dev/null +++ b/nomad_backup/host-check.hcl @@ -0,0 +1,26 @@ +job "host-check" { + datacenters = ["dc1"] + type = "batch" + + constraint { + attribute = "${attr.unique.hostname}" + value = "odroid7" + } + + group "check" { + task "ss" { + driver = "raw_exec" + config { + command = "ss" + args = ["-tln"] + } + } + task "ufw" { + driver = "raw_exec" + config { + command = "ufw" + args = ["status"] + } + } + } +} diff --git a/nomad_backup/jfs-controller.hcl b/nomad_backup/jfs-controller.hcl index 0247343..00b4f71 100644 --- a/nomad_backup/jfs-controller.hcl +++ b/nomad_backup/jfs-controller.hcl @@ -31,7 +31,8 @@ job "jfs-controller" { } env { POD_NAME = "csi-controller" + POD_NAMESPACE = "default" } } } -} +} \ No newline at end of file diff --git a/nomad_backup/jfs-node.hcl b/nomad_backup/jfs-node.hcl index 60815d9..83c84b8 100644 --- a/nomad_backup/jfs-node.hcl +++ b/nomad_backup/jfs-node.hcl @@ -3,25 +3,24 @@ job "jfs-node" { type = "system" group "nodes" { -network { + network { port "metrics" { static = 9567 to = 8080 } } -# Add this inside your "juicefs-plugin" task in jfs-node.nomad -service { - name = "juicefs-metrics" - port = "metrics" # References the static port 9567 defined in your network block - tags = ["prometheus"] - check { - type = "http" - path = "/metrics" - interval = "10s" - timeout = "2s" - } -} + service { + name = "juicefs-metrics" + port = "metrics" + tags = ["prometheus"] + check { + type = "http" + path = "/metrics" + interval = "10s" + timeout = "2s" + } + } task "juicefs-plugin" { driver = "docker" @@ -29,12 +28,12 @@ service { config { image = "juicedata/juicefs-csi-driver:v0.31.1" memory_hard_limit = 2048 -ports = ["metrics"] + ports = ["metrics"] args = [ "--endpoint=unix://csi/csi.sock", "--logtostderr", "--v=5", - "--nodeid=${node.unique.name}", # Better than hardcoded "test" + "--nodeid=${node.unique.name}", "--by-process=true", ] @@ -53,7 +52,7 @@ ports = ["metrics"] } env { POD_NAME = "csi-node" - AWS_REGION = "garage" + POD_NAMESPACE = "default" # Aggregates metrics from children onto the 8080 port JFS_METRICS = "0.0.0.0:8080" # Ensures mounts run as background processes managed by the driver @@ -61,4 +60,4 @@ ports = ["metrics"] } } } -} +} \ No newline at end of file diff --git a/nomad_backup/navidrome-litefs.hcl b/nomad_backup/navidrome-litefs.hcl new file mode 100644 index 0000000..223f538 --- /dev/null +++ b/nomad_backup/navidrome-litefs.hcl @@ -0,0 +1,108 @@ +job "navidrome-litefs" { + datacenters = ["dc1"] + type = "service" + + constraint { + attribute = "${attr.kernel.name}" + value = "linux" + } + + group "navidrome" { + count = 2 + + update { + max_parallel = 1 + min_healthy_time = "30s" + healthy_deadline = "5m" + auto_revert = false + } + + constraint { + distinct_hosts = true + } + + network { + # Request static ports on the host + port "http" { + static = 4533 + to = 4533 # Direct to Navidrome + } + port "litefs" { + static = 20202 + to = 20202 # Maps host 20202 to container 20202 (LiteFS Replication) + } + port "health" { + static = 8082 + to = 8082 # Handled by nc loop in litefs.yml exec + } + } + + task "navidrome" { + driver = "docker" + + config { + image = "gitea.service.dc1.fbleagh.duckdns.org/sstent/navidrome-litefs:latest" + privileged = true # Still needed for FUSE + ports = ["http", "litefs", "health"] + + volumes = [ + "/mnt/configs/navidrome_litefs:/var/lib/litefs", + "/mnt/Public/configs/navidrome:/shared_data", + "/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro", + "/mnt/Public/Downloads/news/slskd/downloads:/music/slskd:ro", + "/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro" + ] + } + + env { + # LiteFS Config + CONSUL_URL = "http://${attr.unique.network.ip-address}:8500" + ADVERTISE_IP = "${attr.unique.network.ip-address}" + PORT = "8080" # Internal proxy port (unused by direct routing but kept for image compat) + + # Navidrome Config + ND_DATAFOLDER = "/local/data" + ND_CACHEFOLDER = "/shared_data/cache" + ND_CONFIGFILE = "/local/data/navidrome.toml" + + # Database is on the LiteFS FUSE mount + ND_DBPATH = "/data/navidrome.db?_busy_timeout=30000&_journal_mode=WAL&_foreign_keys=on&synchronous=NORMAL" + + ND_SCANSCHEDULE = "0" + ND_SCANNER_FSWATCHER_ENABLED = "false" + ND_LOGLEVEL = "info" + ND_REVERSEPROXYWHITELIST = "0.0.0.0/0" + ND_REVERSEPROXYUSERHEADER = "X-Forwarded-User" + } + + service { + name = "navidrome" + tags = [ + "navidrome", + "web", + "traefik.enable=true", + "urlprefix-/navidrome", + "tools", + "traefik.http.routers.navidromelan.rule=Host(`navidrome.service.dc1.consul`)", + "traefik.http.routers.navidromewan.rule=Host(`m.fbleagh.duckdns.org`)", + "traefik.http.routers.navidromewan.middlewares=dex@consulcatalog", + "traefik.http.routers.navidromewan.tls=true", + ] + port = "http" + + check { + type = "http" + port = "health" + path = "/" + interval = "10s" + timeout = "2s" + } + } + + resources { + cpu = 500 + memory = 512 + } + } + } +} diff --git a/nomad_backup/nomad-config-check.hcl b/nomad_backup/nomad-config-check.hcl new file mode 100644 index 0000000..3fc16da --- /dev/null +++ b/nomad_backup/nomad-config-check.hcl @@ -0,0 +1,20 @@ +job "nomad-config-check" { + datacenters = ["dc1"] + type = "batch" + + group "check" { + count = 1 + constraint { + attribute = "${attr.unique.hostname}" + value = "odroid7" + } + + task "config" { + driver = "raw_exec" + config { + command = "grep" + args = ["-r", "disable_script_checks", "/etc/nomad.d/"] + } + } + } +} diff --git a/nomad_backup/port-discovery.hcl b/nomad_backup/port-discovery.hcl new file mode 100644 index 0000000..5af9d71 --- /dev/null +++ b/nomad_backup/port-discovery.hcl @@ -0,0 +1,34 @@ +job "port-discovery" { + datacenters = ["dc1"] + type = "batch" + + group "scan" { + count = 1 + constraint { + attribute = "${attr.unique.hostname}" + value = "odroid6" + } + + task "scan" { + driver = "docker" + config { + image = "busybox" + network_mode = "host" + command = "sh" + args = ["local/scan.sh"] + } + template { + data = <&1 | grep -q "refused" && echo "MATCH: $p is AVAILABLE (Refused)" + nc -zv -w 3 $TARGET $p 2>&1 | grep -q "succeeded" && echo "BUSY: $p is IN USE" +done +EOF + destination = "local/scan.sh" + } + } + } +} \ No newline at end of file