Initial resurrection kit — 81 scripts, 62 references, configs, systemd units, crons, Docker compose files, Caddy config, master README

This commit is contained in:
root
2026-07-15 17:45:36 -04:00
commit ae056eaf83
197 changed files with 26127 additions and 0 deletions
@@ -0,0 +1,60 @@
=== Home Router Backup 2026-07-03 19:04:40 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-03
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 172.31.1.1 (avoids ppp0 recursion)
generating QUICK_MODE request 2581205473 [ HASH SA No KE ID ID ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (316 bytes)
received packet: from 76.195.7.60[500] to 5.161.114.8[500] (300 bytes)
parsed QUICK_MODE response 2581205473 [ HASH SA No KE ID ID ]
selected proposal: ESP:AES_CBC_128/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ
detected rekeying of CHILD_SA wisp-vpn{17}
CHILD_SA wisp-vpn{18} established with SPIs ca6bda58_i 05979acf_o and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
connection 'wisp-vpn' established successfully
[+] VPN connected! Interface: ppp0, IP: 192.168.88.105
[*] Adding route to VPN peer's subnet via ppp0 ...
[route] Added 192.168.88.0/24 via ppp0
[*] Adding static routes for tower subnets ...
(no routes configured in config.yaml)
[*] Checking internet connectivity ...
[+] Internet reachable — VPN is safe
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[DRY RUN] Would backup these towers:
- home-gateway (192.168.88.1) @ site: home
[DRY RUN] Would upload to s3://CHANGE_ME/
[*] Tearing down VPN ...
closing CHILD_SA wisp-vpn{14} with SPIs c15c0861_i (4356 bytes) 07582a47_o (0 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c15c0861
generating INFORMATIONAL_V1 request 309377479 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
closing CHILD_SA wisp-vpn{15} with SPIs c854c79d_i (1342 bytes) 03f97f5a_o (0 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c854c79d
generating INFORMATIONAL_V1 request 185272777 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
closing CHILD_SA wisp-vpn{16} with SPIs c76b3715_i (2614 bytes) 0b2d4f29_o (0 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c76b3715
generating INFORMATIONAL_V1 request 3117177119 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
closing CHILD_SA wisp-vpn{17} with SPIs c42ff070_i (161340 bytes) 01ab374b_o (0 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c42ff070
generating INFORMATIONAL_V1 request 3677623384 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
closing CHILD_SA wisp-vpn{18} with SPIs ca6bda58_i (1008 bytes) 05979acf_o (944 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI ca6bda58
generating INFORMATIONAL_V1 request 3772474848 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
deleting IKE_SA wisp-vpn[16] between 5.161.114.8[5.161.114.8]...76.195.7.60[76.195.7.60]
sending DELETE for IKE_SA wisp-vpn[16]
generating INFORMATIONAL_V1 request 1012455368 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (92 bytes)
IKE_SA [16] closed successfully
[+] VPN disconnected
=== Exit code: 0 ===
@@ -0,0 +1,194 @@
=== Home Router Backup 2026-07-04 02:50:30 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-04
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 172.31.1.1 (avoids ppp0 recursion)
generating QUICK_MODE request 3349541925 [ HASH SA No KE ID ID ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (316 bytes)
received packet: from 76.195.7.60[500] to 5.161.114.8[500] (300 bytes)
parsed QUICK_MODE response 3349541925 [ HASH SA No KE ID ID ]
selected proposal: ESP:AES_CBC_128/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ
detected rekeying of CHILD_SA wisp-vpn{19}
CHILD_SA wisp-vpn{20} established with SPIs c2b4c21a_i 0011d94f_o and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
generating QUICK_MODE request 3349541925 [ HASH ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (60 bytes)
connection 'wisp-vpn' established successfully
[+] VPN connected! Interface: ppp0, IP: 192.168.88.105
[*] Adding route to VPN peer's subnet via ppp0 ...
[route] Added 192.168.88.0/24 via ppp0
[*] Adding static routes for tower subnets ...
(no routes configured in config.yaml)
[*] Checking internet connectivity ...
[+] Internet reachable — VPN is safe
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (192.168.88.1) — backing up ...
[FAIL] SSH connection failed: Authentication failed.
[*] Step 3: Disconnecting VPN ...
[*] Tearing down VPN ...
closing CHILD_SA wisp-vpn{19} with SPIs cb762789_i (94880 bytes) 0fe7c68a_o (0 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI cb762789
generating INFORMATIONAL_V1 request 2707403376 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
closing CHILD_SA wisp-vpn{20} with SPIs c2b4c21a_i (4042 bytes) 0011d94f_o (3538 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c2b4c21a
generating INFORMATIONAL_V1 request 4260970196 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
deleting IKE_SA wisp-vpn[22] between 5.161.114.8[5.161.114.8]...76.195.7.60[76.195.7.60]
sending DELETE for IKE_SA wisp-vpn[22]
generating INFORMATIONAL_V1 request 2803316938 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (92 bytes)
IKE_SA [22] closed successfully
[+] VPN disconnected
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 0 OK, 1 Failed
╚══════════════════════════════════════════╝
✗ home-gateway (home) — SSH connection failed: Authentication failed.
=== Exit code: 1 ===
=== Home Router Backup 2026-07-04 02:51:04 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-04
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 172.31.1.1 (avoids ppp0 recursion)
initiating Main Mode IKE_SA wisp-vpn[33] to 76.195.7.60
generating ID_PROT request 0 [ SA V V V V V ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (252 bytes)
received packet: from 76.195.7.60[500] to 5.161.114.8[500] (164 bytes)
parsed ID_PROT response 0 [ SA V V V V ]
received NAT-T (RFC 3947) vendor ID
received XAuth vendor ID
received DPD vendor ID
received FRAGMENTATION vendor ID
selected proposal: IKE:AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
generating ID_PROT request 0 [ KE No NAT-D NAT-D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (244 bytes)
received packet: from 76.195.7.60[500] to 5.161.114.8[500] (236 bytes)
parsed ID_PROT response 0 [ KE No NAT-D NAT-D ]
generating ID_PROT request 0 [ ID HASH N(INITIAL_CONTACT) ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (108 bytes)
received packet: from 76.195.7.60[500] to 5.161.114.8[500] (76 bytes)
parsed ID_PROT response 0 [ ID HASH ]
IKE_SA wisp-vpn[33] established between 5.161.114.8[5.161.114.8]...76.195.7.60[76.195.7.60]
scheduling reauthentication in 85494s
maximum IKE_SA lifetime 86034s
generating QUICK_MODE request 2963618619 [ HASH SA No KE ID ID ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (316 bytes)
received packet: from 76.195.7.60[500] to 5.161.114.8[500] (300 bytes)
parsed QUICK_MODE response 2963618619 [ HASH SA No KE ID ID ]
selected proposal: ESP:AES_CBC_128/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ
CHILD_SA wisp-vpn{21} established with SPIs c0d9045b_i 00059898_o and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
generating QUICK_MODE request 2963618619 [ HASH ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (60 bytes)
connection 'wisp-vpn' established successfully
[+] VPN connected! Interface: ppp0, IP: 192.168.88.105
[*] Adding route to VPN peer's subnet via ppp0 ...
[route] Added 192.168.88.0/24 via ppp0
[*] Adding static routes for tower subnets ...
(no routes configured in config.yaml)
[*] Checking internet connectivity ...
[+] Internet reachable — VPN is safe
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (192.168.88.1) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-04/home-gateway-2026-07-04.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-04/home-gateway-2026-07-04.log.gz
[*] Step 3: Disconnecting VPN ...
[*] Tearing down VPN ...
closing CHILD_SA wisp-vpn{21} with SPIs c0d9045b_i (41526 bytes) 00059898_o (8190 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c0d9045b
generating INFORMATIONAL_V1 request 2696552594 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
deleting IKE_SA wisp-vpn[33] between 5.161.114.8[5.161.114.8]...76.195.7.60[76.195.7.60]
sending DELETE for IKE_SA wisp-vpn[33]
generating INFORMATIONAL_V1 request 410247037 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (92 bytes)
IKE_SA [33] closed successfully
[+] VPN disconnected
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
=== Home Router Backup 2026-07-04 06:00:47 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-04
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 172.31.1.1 (avoids ppp0 recursion)
generating QUICK_MODE request 223228910 [ HASH SA No KE ID ID ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (316 bytes)
received packet: from 76.195.7.60[500] to 5.161.114.8[500] (300 bytes)
parsed QUICK_MODE response 223228910 [ HASH SA No KE ID ID ]
selected proposal: ESP:AES_CBC_128/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ
detected rekeying of CHILD_SA wisp-vpn{22}
CHILD_SA wisp-vpn{23} established with SPIs c3fdf06d_i 08e55d09_o and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
generating QUICK_MODE request 223228910 [ HASH ]
connection 'wisp-vpn' established successfully
[+] VPN connected! Interface: ppp0, IP: 192.168.88.105
[*] Adding route to VPN peer's subnet via ppp0 ...
[route] Added 192.168.88.0/24 via ppp0
[*] Adding static routes for tower subnets ...
(no routes configured in config.yaml)
[*] Checking internet connectivity ...
[+] Internet reachable — VPN is safe
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (192.168.88.1) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-04/home-gateway-2026-07-04.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-04/home-gateway-2026-07-04.log.gz
[*] Step 3: Disconnecting VPN ...
[*] Tearing down VPN ...
closing CHILD_SA wisp-vpn{22} with SPIs c9cd56ac_i (38724 bytes) 0adab1f2_o (0 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c9cd56ac
generating INFORMATIONAL_V1 request 1367800329 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
closing CHILD_SA wisp-vpn{23} with SPIs c3fdf06d_i (41462 bytes) 08e55d09_o (8682 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c3fdf06d
generating INFORMATIONAL_V1 request 492351832 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
deleting IKE_SA wisp-vpn[34] between 5.161.114.8[5.161.114.8]...76.195.7.60[76.195.7.60]
sending DELETE for IKE_SA wisp-vpn[34]
generating INFORMATIONAL_V1 request 985162767 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (92 bytes)
IKE_SA [34] closed successfully
[+] VPN disconnected
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,60 @@
=== Home Router Backup 2026-07-05 06:00:00 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-05
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 172.31.1.1 (avoids ppp0 recursion)
generating QUICK_MODE request 645441876 [ HASH SA No KE ID ID ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (316 bytes)
received packet: from 76.195.7.60[500] to 5.161.114.8[500] (300 bytes)
parsed QUICK_MODE response 645441876 [ HASH SA No KE ID ID ]
selected proposal: ESP:AES_CBC_128/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ
detected rekeying of CHILD_SA wisp-vpn{27}
CHILD_SA wisp-vpn{28} established with SPIs cffd07da_i 0f0fe43c_o and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
generating QUICK_MODE request 645441876 [ HASH ]
connection 'wisp-vpn' established successfully
[+] VPN connected! Interface: ppp0, IP: 192.168.88.105
[*] Adding route to VPN peer's subnet via ppp0 ...
[route] Added 192.168.88.0/24 via ppp0
[*] Adding static routes for tower subnets ...
(no routes configured in config.yaml)
[*] Checking internet connectivity ...
[+] Internet reachable — VPN is safe
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (192.168.88.1) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-05/home-gateway-2026-07-05.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-05/home-gateway-2026-07-05.log.gz
[*] Step 3: Disconnecting VPN ...
[*] Tearing down VPN ...
closing CHILD_SA wisp-vpn{27} with SPIs c95bfd1b_i (7778 bytes) 0d60180b_o (0 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c95bfd1b
generating INFORMATIONAL_V1 request 2474571922 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
closing CHILD_SA wisp-vpn{28} with SPIs cffd07da_i (43496 bytes) 0f0fe43c_o (8796 bytes) and TS 5.161.114.8/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI cffd07da
generating INFORMATIONAL_V1 request 4205869785 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (76 bytes)
deleting IKE_SA wisp-vpn[67] between 5.161.114.8[5.161.114.8]...76.195.7.60[76.195.7.60]
sending DELETE for IKE_SA wisp-vpn[67]
generating INFORMATIONAL_V1 request 3920562488 [ HASH D ]
sending packet: from 5.161.114.8[500] to 76.195.7.60[500] (92 bytes)
IKE_SA [67] closed successfully
[+] VPN disconnected
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,6 @@
=== Home Router Backup 2026-07-06 10:00:08 UTC ===
Traceback (most recent call last):
File "/root/.hermes/scripts/wisp-backup/wisp-backup.py", line 17, in <module>
import paramiko
ModuleNotFoundError: No module named 'paramiko'
=== Exit code: 1 ===
@@ -0,0 +1,12 @@
=== Home Router Backup 2026-07-07 10:00:24 UTC ===
Traceback (most recent call last):
File "/root/.hermes/scripts/wisp-backup/wisp-backup.py", line 17, in <module>
import paramiko
ModuleNotFoundError: No module named 'paramiko'
=== Exit code: 1 ===
=== Home Router Backup 2026-07-07 11:03:39 UTC ===
Warning: Permanently added '10.77.0.2' (RSA) to the list of known hosts.
Warning: Permanently added '10.77.0.2' (RSA) to the list of known hosts.
Warning: Permanently added '10.77.0.2' (RSA) to the list of known hosts.
Completed 17.7 KiB/17.7 KiB (82.7 KiB/s) with 1 file(s) remaining
upload: ../../../../tmp/home-router-backup/itpp-backup-2026-07-07.rsc to s3://itpropartner-backups/home-router/2026-07-07-config.rsc
@@ -0,0 +1,205 @@
=== Home Router Backup 2026-07-08 10:00:49 UTC ===
Warning: Permanently added '10.77.0.2' (RSA) to the list of known hosts.
Warning: Permanently added '10.77.0.2' (RSA) to the list of known hosts.
scp: itpp-backup-2026-07-08.rsc: No such file or directory
Warning: Permanently added '10.77.0.2' (RSA) to the list of known hosts.
no such item (/file/remove; line 1)
The user-provided path /tmp/home-router-backup/itpp-backup-2026-07-08.rsc does not exist.
FAILED: S3 upload error
=== Home Router Backup 2026-07-08 23:32:56 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-08
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 152.53.192.1 (avoids ppp0 recursion)
[-] VPN connection failed (ppp0 not up).
Cleaning up IPsec to avoid orphaned tunnel ...
Check logs: journalctl -u xl2tpd -n 20
ipsec status
[stderr] /root/.hermes/scripts/wisp-backup/home-router-vpn.sh: line 61: /etc/xl2tpd/xl2tpd.conf: No such file or directory
[stderr] /root/.hermes/scripts/wisp-backup/home-router-vpn.sh: line 80: /etc/ppp/options.wisp-vpn: No such file or directory
[stderr] /root/.hermes/scripts/wisp-backup/home-router-vpn.sh: line 103: /etc/ppp/chap-secrets: No such file or directory
[stderr] /root/.hermes/scripts/wisp-backup/home-router-vpn.sh: line 124: /var/run/xl2tpd/l2tp-control: No such file or directory
[stderr] /root/.hermes/scripts/wisp-backup/home-router-vpn.sh: line 178: /var/run/xl2tpd/l2tp-control: No such file or directory
[-] VPN connection failed. Aborting.
=== Exit code: 1 ===
=== Home Router Backup 2026-07-08 23:34:04 UTC ===
Exception (client): Error reading SSH protocol banner
Traceback (most recent call last):
File "/opt/awscli-venv/lib/python3.13/site-packages/paramiko/transport.py", line 2213, in _check_banner
buf = self.packetizer.readline(timeout)
File "/opt/awscli-venv/lib/python3.13/site-packages/paramiko/packet.py", line 395, in readline
buf += self._read_timeout(timeout)
~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/opt/awscli-venv/lib/python3.13/site-packages/paramiko/packet.py", line 665, in _read_timeout
raise EOFError()
EOFError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/awscli-venv/lib/python3.13/site-packages/paramiko/transport.py", line 2029, in run
self._check_banner()
~~~~~~~~~~~~~~~~~~^^
File "/opt/awscli-venv/lib/python3.13/site-packages/paramiko/transport.py", line 2217, in _check_banner
raise SSHException(
"Error reading SSH protocol banner" + str(e)
)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-08
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 152.53.192.1 (avoids ppp0 recursion)
initiating Main Mode IKE_SA wisp-vpn[1] to 76.195.7.60
generating ID_PROT request 0 [ SA V V V V V ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (252 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (164 bytes)
parsed ID_PROT response 0 [ SA V V V V ]
received NAT-T (RFC 3947) vendor ID
received XAuth vendor ID
received DPD vendor ID
received FRAGMENTATION vendor ID
selected proposal: IKE:AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
generating ID_PROT request 0 [ KE No NAT-D NAT-D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (244 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (236 bytes)
parsed ID_PROT response 0 [ KE No NAT-D NAT-D ]
generating ID_PROT request 0 [ ID HASH N(INITIAL_CONTACT) ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (108 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (92 bytes)
invalid HASH_V1 payload length, decryption failed?
could not decrypt payloads
message parsing failed
ignore malformed INFORMATIONAL request
INFORMATIONAL_V1 request with message ID 966687587 processing failed
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (76 bytes)
parsed ID_PROT response 0 [ ID HASH ]
IKE_SA wisp-vpn[1] established between 152.53.192.33[152.53.192.33]...76.195.7.60[76.195.7.60]
scheduling reauthentication in 85352s
maximum IKE_SA lifetime 85892s
generating QUICK_MODE request 3071489454 [ HASH SA No KE ID ID ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (316 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (300 bytes)
parsed QUICK_MODE response 3071489454 [ HASH SA No KE ID ID ]
selected proposal: ESP:AES_CBC_128/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ
CHILD_SA wisp-vpn{1} established with SPIs c8225420_i 0739aab7_o and TS 152.53.192.33/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
connection 'wisp-vpn' established successfully
[+] VPN connected! Interface: ppp0, IP: 192.168.88.104
[*] Adding route to VPN peer's subnet via ppp0 ...
[route] Added 192.168.88.0/24 via ppp0
[*] Adding static routes for tower subnets ...
(no routes configured in config.yaml)
[*] Checking internet connectivity ...
[+] Internet reachable — VPN is safe
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (192.168.88.1) — backing up ...
[FAIL] SSH connection failed: Error reading SSH protocol banner
[*] Step 3: Disconnecting VPN ...
[*] Tearing down VPN ...
closing CHILD_SA wisp-vpn{1} with SPIs c8225420_i (1028 bytes) 0739aab7_o (1045 bytes) and TS 152.53.192.33/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c8225420
generating INFORMATIONAL_V1 request 1674779512 [ HASH D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (76 bytes)
deleting IKE_SA wisp-vpn[1] between 152.53.192.33[152.53.192.33]...76.195.7.60[76.195.7.60]
sending DELETE for IKE_SA wisp-vpn[1]
generating INFORMATIONAL_V1 request 3552681913 [ HASH D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (92 bytes)
IKE_SA [1] closed successfully
[+] VPN disconnected
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 0 OK, 1 Failed
╚══════════════════════════════════════════╝
✗ home-gateway (home) — SSH connection failed: Error reading SSH protocol banner
=== Exit code: 1 ===
=== Home Router Backup 2026-07-08 23:34:58 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-08
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 152.53.192.1 (avoids ppp0 recursion)
initiating Main Mode IKE_SA wisp-vpn[2] to 76.195.7.60
generating ID_PROT request 0 [ SA V V V V V ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (252 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (164 bytes)
parsed ID_PROT response 0 [ SA V V V V ]
received NAT-T (RFC 3947) vendor ID
received XAuth vendor ID
received DPD vendor ID
received FRAGMENTATION vendor ID
selected proposal: IKE:AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
generating ID_PROT request 0 [ KE No NAT-D NAT-D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (244 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (236 bytes)
parsed ID_PROT response 0 [ KE No NAT-D NAT-D ]
generating ID_PROT request 0 [ ID HASH N(INITIAL_CONTACT) ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (108 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (76 bytes)
parsed ID_PROT response 0 [ ID HASH ]
IKE_SA wisp-vpn[2] established between 152.53.192.33[152.53.192.33]...76.195.7.60[76.195.7.60]
scheduling reauthentication in 85828s
maximum IKE_SA lifetime 86368s
generating QUICK_MODE request 1842263490 [ HASH SA No KE ID ID ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (316 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (300 bytes)
parsed QUICK_MODE response 1842263490 [ HASH SA No KE ID ID ]
selected proposal: ESP:AES_CBC_128/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ
CHILD_SA wisp-vpn{2} established with SPIs c3a88a35_i 0030d7ca_o and TS 152.53.192.33/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
generating QUICK_MODE request 1842263490 [ HASH ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (60 bytes)
connection 'wisp-vpn' established successfully
[+] VPN connected! Interface: ppp0, IP: 192.168.88.104
[*] Adding route to VPN peer's subnet via ppp0 ...
[route] Added 192.168.88.0/24 via ppp0
[*] Adding static routes for tower subnets ...
(no routes configured in config.yaml)
[*] Checking internet connectivity ...
[+] Internet reachable — VPN is safe
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-08/home-gateway-2026-07-08.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-08/home-gateway-2026-07-08.log.gz
[*] Step 3: Disconnecting VPN ...
[*] Tearing down VPN ...
closing CHILD_SA wisp-vpn{2} with SPIs c3a88a35_i (848 bytes) 0030d7ca_o (829 bytes) and TS 152.53.192.33/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c3a88a35
generating INFORMATIONAL_V1 request 2340666817 [ HASH D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (76 bytes)
deleting IKE_SA wisp-vpn[2] between 152.53.192.33[152.53.192.33]...76.195.7.60[76.195.7.60]
sending DELETE for IKE_SA wisp-vpn[2]
generating INFORMATIONAL_V1 request 257487867 [ HASH D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (92 bytes)
IKE_SA [2] closed successfully
[+] VPN disconnected
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,102 @@
=== Home Router Backup 2026-07-09 10:00:06 UTC ===
Traceback (most recent call last):
File "/root/.hermes/scripts/wisp-backup/wisp-backup.py", line 17, in <module>
import paramiko
ModuleNotFoundError: No module named 'paramiko'
=== Exit code: 1 ===
=== Home Router Backup 2026-07-09 13:51:17 UTC ===
=== Home Router Backup 2026-07-09 13:52:57 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-09
╚══════════════════════════════════════════╝
[*] Step 1: Connecting VPN ...
[*] Bringing up L2TP/IPsec VPN to 76.195.7.60 ...
[route] 76.195.7.60 via 152.53.192.1 (avoids ppp0 recursion)
generating QUICK_MODE request 840838784 [ HASH SA No KE ID ID ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (316 bytes)
received packet: from 76.195.7.60[500] to 152.53.192.33[500] (300 bytes)
parsed QUICK_MODE response 840838784 [ HASH SA No KE ID ID ]
selected proposal: ESP:AES_CBC_128/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ
detected rekeying of CHILD_SA wisp-vpn{3}
CHILD_SA wisp-vpn{4} established with SPIs c3ae9bdc_i 06734c30_o and TS 152.53.192.33/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
generating QUICK_MODE request 840838784 [ HASH ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (60 bytes)
connection 'wisp-vpn' established successfully
[-] VPN connection failed (ppp0 not up).
Cleaning up IPsec to avoid orphaned tunnel ...
closing CHILD_SA wisp-vpn{3} with SPIs cb69dfab_i (1206 bytes) 0950d1ab_o (0 bytes) and TS 152.53.192.33/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI cb69dfab
generating INFORMATIONAL_V1 request 765197973 [ HASH D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (76 bytes)
closing CHILD_SA wisp-vpn{4} with SPIs c3ae9bdc_i (842 bytes) 06734c30_o (863 bytes) and TS 152.53.192.33/32[udp/l2f] === 76.195.7.60/32[udp/l2f]
sending DELETE for ESP CHILD_SA with SPI c3ae9bdc
generating INFORMATIONAL_V1 request 3365963436 [ HASH D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (76 bytes)
deleting IKE_SA wisp-vpn[3] between 152.53.192.33[152.53.192.33]...76.195.7.60[76.195.7.60]
sending DELETE for IKE_SA wisp-vpn[3]
generating INFORMATIONAL_V1 request 2403172059 [ HASH D ]
sending packet: from 152.53.192.33[500] to 76.195.7.60[500] (92 bytes)
IKE_SA [3] closed successfully
Check logs: journalctl -u xl2tpd -n 20
ipsec status
[-] VPN connection failed. Aborting.
=== Exit code: 1 ===
=== Home Router Backup 2026-07-09 13:59:00 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-09
╚══════════════════════════════════════════╝
[*] Step 1: Checking connectivity via WireGuard ...
[+] Router reachable at 10.77.0.2 via WireGuard — skipping VPN
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-09/home-gateway-2026-07-09.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-09/home-gateway-2026-07-09.log.gz
[*] Step 3: Disconnecting VPN ...
(WireGuard already active — no VPN teardown needed)
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
=== Home Router Backup 2026-07-09 13:59:16 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-09
╚══════════════════════════════════════════╝
[*] Step 1: Checking connectivity via WireGuard ...
[+] Router reachable at 10.77.0.2 via WireGuard — skipping VPN
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-09/home-gateway-2026-07-09.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-09/home-gateway-2026-07-09.log.gz
[*] Step 3: Disconnecting VPN ...
(WireGuard already active — no VPN teardown needed)
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,29 @@
=== Home Router Backup 2026-07-10 10:00:36 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-10
╚══════════════════════════════════════════╝
[*] Step 1: Checking connectivity via WireGuard ...
[+] Router reachable at 10.77.0.2 via WireGuard — skipping VPN
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-10/home-gateway-2026-07-10.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-10/home-gateway-2026-07-10.log.gz
[*] Step 3: Disconnecting VPN ...
(WireGuard already active — no VPN teardown needed)
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,29 @@
=== Home Router Backup 2026-07-11 10:00:53 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-11
╚══════════════════════════════════════════╝
[*] Step 1: Checking connectivity via WireGuard ...
[+] Router reachable at 10.77.0.2 via WireGuard — skipping VPN
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-11/home-gateway-2026-07-11.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-11/home-gateway-2026-07-11.log.gz
[*] Step 3: Disconnecting VPN ...
(WireGuard already active — no VPN teardown needed)
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,29 @@
=== Home Router Backup 2026-07-12 10:00:43 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-12
╚══════════════════════════════════════════╝
[*] Step 1: Checking connectivity via WireGuard ...
[+] Router reachable at 10.77.0.2 via WireGuard — skipping VPN
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-12/home-gateway-2026-07-12.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-12/home-gateway-2026-07-12.log.gz
[*] Step 3: Disconnecting VPN ...
(WireGuard already active — no VPN teardown needed)
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,29 @@
=== Home Router Backup 2026-07-13 10:00:23 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-13
╚══════════════════════════════════════════╝
[*] Step 1: Checking connectivity via WireGuard ...
[+] Router reachable at 10.77.0.2 via WireGuard — skipping VPN
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-13/home-gateway-2026-07-13.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-13/home-gateway-2026-07-13.log.gz
[*] Step 3: Disconnecting VPN ...
(WireGuard already active — no VPN teardown needed)
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,29 @@
=== Home Router Backup 2026-07-14 10:00:59 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-14
╚══════════════════════════════════════════╝
[*] Step 1: Checking connectivity via WireGuard ...
[+] Router reachable at 10.77.0.2 via WireGuard — skipping VPN
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-14/home-gateway-2026-07-14.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-14/home-gateway-2026-07-14.log.gz
[*] Step 3: Disconnecting VPN ...
(WireGuard already active — no VPN teardown needed)
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===
@@ -0,0 +1,29 @@
=== Home Router Backup 2026-07-15 10:00:24 UTC ===
╔══════════════════════════════════════════╗
║ WISP Backup — 2026-07-15
╚══════════════════════════════════════════╝
[*] Step 1: Checking connectivity via WireGuard ...
[+] Router reachable at 10.77.0.2 via WireGuard — skipping VPN
[*] Verifying internet connectivity ...
[+] Internet OK — proceeding with backup
[*] Step 2: Backing up towers ...
[home-gateway] (10.77.0.2) — backing up ...
Fetching config ...
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/configs/home/2026-07-15/home-gateway-2026-07-15.rsc.gz
Fetching last 500 log lines ...
[warn] Command exited 1:
[s3] Uploaded → s3://mikrotik-ccr-backups/wisp-backups/logs/home/2026-07-15/home-gateway-2026-07-15.log.gz
[*] Step 3: Disconnecting VPN ...
(WireGuard already active — no VPN teardown needed)
[*] Step 4: Cleaning up local temp files ...
╔══════════════════════════════════════════╗
║ Summary: 1 OK, 0 Failed
╚══════════════════════════════════════════╝
✓ home-gateway (home) — config ✓ logs ✓
=== Exit code: 0 ===