I have a bash script that generates a synoptic weather image. I need you to review, strengthen and extend it, then create all the deployment config files to run it on my VPS. Machines: Local dev machine: cr4y (Arch Linux) VPS: pestrel.com, user st33v, Arch Linux, SSH port 40022 Project layout on cr4y: synopticChart.sh func/ deriveTimeString.sh Please read both files before doing anything else. Then: 1) Review and strengthen both synopticChart.sh and func/deriveTimeString.sh. Inline the logic from deriveTimeString.sh directly into synopticChart.sh, simplifying it in the process — it was written as a separate file only for experimentation. Delete func/deriveTimeString.sh and the func/ directory. The git working tree is clean so all changes and deletions are safe. Apply bash best practices throughout (set -euo pipefail, quoting, meaningful exit codes, etc.) but do not change the core logic. Ask before any non-obvious changes. 2) Extend synopticChart.sh to add these final steps after a successful image generation: Copy the timestamped PNG to /var/lib/synoptic/archive/ Move/rename it to /srv/www/synopticLatest.png Web serving: nginx serves /srv/www/ as the document root for pestrel.com Create a static index.html in /srv/www/ whose contains only Latest synoptic There is an existing nginx installation on the VPS from a previous project — write a new site config, don't assume anything about the existing config, and warn about any potential conflicts Systemd units — create four unit files: synoptic.timer — regular schedule, ask me what interval I want before creating this synoptic.service — oneshot, runs synopticChart.sh as user st33v, OnFailure=synoptic-retry.timer synoptic-retry.timer — oneshot timer, fires 15 minutes after a failure synoptic-retry.service — oneshot, runs the same script All services must: Set SyslogIdentifier, StandardOutput=journal, StandardError=journal Use ExecStopPost= to log an explicit SUCCESS or FAILURE marker (including $EXIT_STATUS) via logger, visible with journalctl -p err setup.sh — run once on pestrel to: Create /opt/synoptic/ and /opt/synoptic/func/ with correct ownership for st33v Create /var/lib/synoptic/archive/ owned by st33v Create /srv/www/ owned by st33v Write index.html to /srv/www/ Install the four systemd unit files to /etc/systemd/system/ Run systemctl daemon-reload and systemctl enable --now synoptic.timer Install the nginx site config and reload nginx Warn about any pre-existing nginx config that might conflict deploy.sh — run from cr4y to push updated scripts to pestrel: bashscp -P 40022 synopticChart.sh st33v@pestrel.com:/opt/synoptic/ scp -P 40022 func/deriveTimeString.sh st33v@pestrel.com:/opt/synoptic/func/ After copying, SSH in and restart the synoptic service to test immediately: bashssh -p 40022 st33v@pestrel.com "sudo systemctl restart synoptic.service" Report success or failure clearly. Ask me the desired timer schedule before generating the systemd units, and ask any other clarifying questions before generating files.