diff --git a/rootfs/standard/usr/share/mynode_apps/canary/canary.json b/rootfs/standard/usr/share/mynode_apps/canary/canary.json new file mode 100644 index 00000000..1dc0ec00 --- /dev/null +++ b/rootfs/standard/usr/share/mynode_apps/canary/canary.json @@ -0,0 +1,39 @@ +{ + "name": "Canary", + "short_name": "canary", + "author": { + "name": "Canary Team", + "link": "https://github.com/schjonhaug/canary" + }, + "website": { + "name": "Canary", + "link": "https://github.com/schjonhaug/canary" + }, + "category": "bitcoin_app", + "short_description": "Wallet Monitor", + "description": [ + "Canary is a Bitcoin wallet monitoring and early warning system for cold storage.", + "Get instant notifications when your bitcoins move via ntfy push notifications.", + "Features include: transaction monitoring, RBF/CPFP detection, balance alerts, and deep wallet scanning." + ], + "latest_version": "v1.3.0", + "supported_archs": ["amd64", "arm64"], + "download_skip": true, + "requires_docker_image_installation": true, + "requires_electrs": true, + "requires_bitcoin": false, + "requires_lightning": false, + "http_port": "3005", + "show_on_homepage": true, + "show_on_application_page": true, + "app_tile_name": "Canary", + "app_tile_running_status_text": "Monitoring", + "app_tile_default_status_text": "Wallet Monitor", + "app_tile_button_text": "Open", + "app_tile_button_href": "http://mynode.local:3005", + "can_uninstall": true, + "can_reinstall": true, + "can_enable_disable": true, + "homepage_order": 75, + "sdk_version": 1 +} diff --git a/rootfs/standard/usr/share/mynode_apps/canary/canary.png b/rootfs/standard/usr/share/mynode_apps/canary/canary.png new file mode 100644 index 00000000..edad34c0 Binary files /dev/null and b/rootfs/standard/usr/share/mynode_apps/canary/canary.png differ diff --git a/rootfs/standard/usr/share/mynode_apps/canary/canary.service b/rootfs/standard/usr/share/mynode_apps/canary/canary.service new file mode 100644 index 00000000..24a9d36b --- /dev/null +++ b/rootfs/standard/usr/share/mynode_apps/canary/canary.service @@ -0,0 +1,23 @@ +[Unit] +Description=Canary +Wants=electrs.service docker.service +After=electrs.service docker.service + +[Service] +# Clean up any existing containers +ExecStartPre=-/usr/bin/docker stop canary canary-frontend +ExecStartPre=-/usr/bin/docker rm canary canary-frontend +# Start backend container +ExecStartPre=/usr/bin/docker run -d --name canary --network host -v /mnt/hdd/mynode/canary:/app/data -e CANARY_DATA_DIR=/app/data -e CANARY_ELECTRUM_URL=tcp://127.0.0.1:50001 -e CANARY_NETWORK=mainnet -e CANARY_MODE=self-hosted -e CANARY_BIND_ADDRESS=0.0.0.0:3010 schjonhaug/canary-backend:v1.3.0 +# Give backend time to start +ExecStartPre=/bin/sleep 2 +# Start frontend container (main process) +ExecStart=/usr/bin/docker run --rm --name canary-frontend --network host -e API_URL=http://127.0.0.1:3010 -e PORT=3005 schjonhaug/canary-frontend:v1.3.0 +ExecStop=/usr/bin/docker stop canary canary-frontend +ExecStopPost=-/usr/bin/docker rm canary +Type=simple +Restart=always +RestartSec=60 + +[Install] +WantedBy=multi-user.target diff --git a/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-01.png b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-01.png new file mode 100644 index 00000000..f04dbc3d Binary files /dev/null and b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-01.png differ diff --git a/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-02.png b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-02.png new file mode 100644 index 00000000..c9b1784b Binary files /dev/null and b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-02.png differ diff --git a/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-03.png b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-03.png new file mode 100644 index 00000000..7eeacf71 Binary files /dev/null and b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-03.png differ diff --git a/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-04.png b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-04.png new file mode 100644 index 00000000..f2db4f8a Binary files /dev/null and b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-04.png differ diff --git a/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-05.png b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-05.png new file mode 100644 index 00000000..ee1df860 Binary files /dev/null and b/rootfs/standard/usr/share/mynode_apps/canary/screenshots/screenshot-05.png differ diff --git a/rootfs/standard/usr/share/mynode_apps/canary/scripts/install_canary.sh b/rootfs/standard/usr/share/mynode_apps/canary/scripts/install_canary.sh new file mode 100755 index 00000000..88e2c76c --- /dev/null +++ b/rootfs/standard/usr/share/mynode_apps/canary/scripts/install_canary.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e + +echo "Pulling Canary Docker images..." +docker pull schjonhaug/canary-backend:v1.3.0 +docker pull schjonhaug/canary-frontend:v1.3.0 + +echo "Creating data directory..." +mkdir -p /mnt/hdd/mynode/canary +chown -R bitcoin:bitcoin /mnt/hdd/mynode/canary + +echo "Canary installation complete." diff --git a/rootfs/standard/usr/share/mynode_apps/canary/scripts/post_canary.sh b/rootfs/standard/usr/share/mynode_apps/canary/scripts/post_canary.sh new file mode 100755 index 00000000..d81b4457 --- /dev/null +++ b/rootfs/standard/usr/share/mynode_apps/canary/scripts/post_canary.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +# This will run after launching the application diff --git a/rootfs/standard/usr/share/mynode_apps/canary/scripts/pre_canary.sh b/rootfs/standard/usr/share/mynode_apps/canary/scripts/pre_canary.sh new file mode 100755 index 00000000..b3a38d72 --- /dev/null +++ b/rootfs/standard/usr/share/mynode_apps/canary/scripts/pre_canary.sh @@ -0,0 +1,4 @@ +#!/bin/bash +# Ensure data directory exists before starting +mkdir -p /mnt/hdd/mynode/canary +chown -R bitcoin:bitcoin /mnt/hdd/mynode/canary diff --git a/rootfs/standard/usr/share/mynode_apps/canary/scripts/uninstall_canary.sh b/rootfs/standard/usr/share/mynode_apps/canary/scripts/uninstall_canary.sh new file mode 100755 index 00000000..ea597be1 --- /dev/null +++ b/rootfs/standard/usr/share/mynode_apps/canary/scripts/uninstall_canary.sh @@ -0,0 +1,13 @@ +#!/bin/bash +echo "Stopping Canary containers..." +docker stop canary canary-frontend 2>/dev/null || true +docker rm canary canary-frontend 2>/dev/null || true + +echo "Removing Docker images..." +docker rmi schjonhaug/canary-backend:v1.3.0 2>/dev/null || true +docker rmi schjonhaug/canary-frontend:v1.3.0 2>/dev/null || true + +echo "Removing data directory..." +rm -rf /mnt/hdd/mynode/canary + +echo "Canary uninstalled."