From 5290f0036881857cdb2f981ac36a189437d02f5c Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 14:03:32 -0400 Subject: [PATCH 01/12] iiab-remoteit-off: failsafe as connectd may no longer exist --- roles/remoteit/templates/iiab-remoteit-off | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/remoteit/templates/iiab-remoteit-off b/roles/remoteit/templates/iiab-remoteit-off index 80207f8be..41f204bbb 100755 --- a/roles/remoteit/templates/iiab-remoteit-off +++ b/roles/remoteit/templates/iiab-remoteit-off @@ -18,8 +18,8 @@ fi # https://github.com/iiab/iiab/tree/master/roles/remoteit/tasks/enable-or-disable.yml # remote.it "parent" service -systemctl stop connectd -systemctl disable connectd +systemctl stop connectd || true # connectd may no longer exist. See PR #3363 +systemctl disable connectd || true # "Remote tcp command service" systemctl stop schannel From 3796735b89b44b7be79f1f0f075d4b0833fe0784 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 14:10:44 -0400 Subject: [PATCH 02/12] Clarify iiab-remoteit-off: connectd may not exist --- roles/remoteit/templates/iiab-remoteit-off | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/remoteit/templates/iiab-remoteit-off b/roles/remoteit/templates/iiab-remoteit-off index 41f204bbb..4e84d117c 100755 --- a/roles/remoteit/templates/iiab-remoteit-off +++ b/roles/remoteit/templates/iiab-remoteit-off @@ -18,7 +18,7 @@ fi # https://github.com/iiab/iiab/tree/master/roles/remoteit/tasks/enable-or-disable.yml # remote.it "parent" service -systemctl stop connectd || true # connectd may no longer exist. See PR #3363 +systemctl stop connectd || true # connectd may not exist. See PR #3363 systemctl disable connectd || true # "Remote tcp command service" From e30b2bbc0be9d06d7511426177a7195912e040d9 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 14:28:52 -0400 Subject: [PATCH 03/12] templates/iiab-remoteit: Compact prompt conditionals --- roles/remoteit/templates/iiab-remoteit | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/remoteit/templates/iiab-remoteit b/roles/remoteit/templates/iiab-remoteit index 9d310e492..c64ebc690 100755 --- a/roles/remoteit/templates/iiab-remoteit +++ b/roles/remoteit/templates/iiab-remoteit @@ -55,7 +55,7 @@ if [ -f /etc/remoteit/config.json ]; then read -n 1 -r ans < /dev/tty # Prompt for a single character echo; echo - if [[ $ans = "n" || $ans = "N" ]]; then # Nearly the same as Lines 142-189 + if [[ $ans =~ ^[nN]$ ]]; then # Nearly the same as Lines 142-189 echo -e "Let's try to enable remote.it, with your existing /etc/remoteit/config.json...\n" systemctl enable connectd @@ -88,7 +88,7 @@ echo -en "\e[1m\nOptionally purge + install latest remote.it Device Package? [y/ read -n 1 -r ans < /dev/tty # Prompt for a single character echo; echo -if [[ $ans = "y" || $ans = "Y" ]]; then +if [[ $ans =~ ^[yY]$ ]]; then # Full apt path avoids problematic /usr/local/bin/apt on Linux Mint /usr/bin/apt -y purge "remoteit*" || true From 0d646a2b8582b6653d357b6209b2bca7b11d1404 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 14:51:49 -0400 Subject: [PATCH 04/12] enable-or-disable.yml: Remove empty file /etc/remoteit/registration if remoteit_enabled --- roles/remoteit/tasks/enable-or-disable.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/roles/remoteit/tasks/enable-or-disable.yml b/roles/remoteit/tasks/enable-or-disable.yml index c80830a8b..ee8134a11 100644 --- a/roles/remoteit/tasks/enable-or-disable.yml +++ b/roles/remoteit/tasks/enable-or-disable.yml @@ -17,6 +17,18 @@ when: remoteit_license_key is defined +- name: Does empty file /etc/remoteit/registration exist? + stat: + path: /etc/remoteit/registration + register: remoteit_reg + +- name: Remove empty file /etc/remoteit/registration if remoteit_enabled + file: + path: /etc/remoteit/registration + state: absent + when: remoteit_enabled and remoteit_reg.stat.exists and remoteit_reg.stat.size == 0 + + # 2022-04-07 FYI: connectd (below) never deletes /etc/remoteit/registration - name: Enable & Restart remote.it "parent" service connectd, which exits after spawning 2 "child" services/daemons below From 5cd21877965a7195f608685cda6cbc14ee3baf12 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 15:09:10 -0400 Subject: [PATCH 05/12] remoteit/tasks/install.yml: Defer deletion of /etc/remoteit/registration --- roles/remoteit/tasks/install.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/roles/remoteit/tasks/install.yml b/roles/remoteit/tasks/install.yml index 4e52bd586..4de54a116 100644 --- a/roles/remoteit/tasks/install.yml +++ b/roles/remoteit/tasks/install.yml @@ -47,7 +47,7 @@ state: directory path: /etc/remoteit -- name: "'touch /etc/remoteit/registration' to block generation of claim code below, also speeding things up a bit" +- name: "'touch /etc/remoteit/registration' (might contain a remoteit_license_key) to prevent generation of claim code below; also speeding things up a bit" file: state: touch path: /etc/remoteit/registration @@ -86,11 +86,13 @@ when: is_linuxmint -- name: "'rm /etc/remoteit/registration' (empty file used just above)" - file: - state: absent - path: /etc/remoteit/registration - ignore_errors: yes # In case a future version of install_agent.sh deletes it for us +# 2022-10-09: Let's keep the file (empty or not!) If it exists with size zero +# bytes, enable-or-disable.yml or /usr/bin/iiab-remoteit delete it later as nec. +# - name: "'rm /etc/remoteit/registration' (empty file used just above)" +# file: +# state: absent +# path: /etc/remoteit/registration +# ignore_errors: yes # In case a future version of install_agent.sh deletes it for us - name: Install /usr/bin/iiab-remoteit from template -- so IIAB operators can quickly enable remote.it AND generate a new remote.it claim code (in /etc/remoteit/config.json) -- optionally downloading + installing the very latest Device Package (like the 2 steps above) From 84397e67b2687a0ba2243574948099aaeb0bced3 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 16:29:54 -0400 Subject: [PATCH 06/12] remoteit/defaults/main.yml: New arch dict + URLs for optional CLI --- roles/remoteit/defaults/main.yml | 33 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/roles/remoteit/defaults/main.yml b/roles/remoteit/defaults/main.yml index 48a7f0304..5acf6b379 100644 --- a/roles/remoteit/defaults/main.yml +++ b/roles/remoteit/defaults/main.yml @@ -7,7 +7,7 @@ # If nec, change them by editing /etc/iiab/local_vars.yml prior to installing! -# # 2022-03-31: https://remote.it/download/ offers 4 relevant "Device Packages" +# # 2022-03-31: https://remote.it/download/ offered 4 relevant "Device Packages" # # 1) Raspberry Pi (ARM) = armhf.rpi # # 2) Raspberry Pi (ARM64) = arm64.rpi # # 3) Debian Linux (ARM64) = arm64 @@ -32,23 +32,26 @@ # # # Example... https://downloads.remote.it/remoteit/v4.14.1/remoteit-4.14.1.armhf.rpi.deb -# 2022-03-31: https://remote.it/download/ offers 4 relevant "CLI" installs: -# 1) Debian Linux (ARM v6) OR Raspberry Pi (ARM) = armv6 -# 2) Debian Linux (ARM v7) = armv7 -# 3) Debian Linux (ARM64) OR Raspberry Pi (ARM64) = arm64 +# 2022-10-09: https://remote.it/download/ offers 4 relevant "CLI" installs: +# 1) Debian Linux (ARM v6) OR Raspberry Pi (ARM) = armv6 -> arm-v6 +# 2) Debian Linux (ARM v7) = armv7 -> arm-v7 +# 3) Debian Linux (ARM64) OR Raspberry Pi (ARM64) = arm64 -> aarch64 # 4) Debian Linux (x86_64) = x86_64 -# See https://docs.remote.it/software/cli/overview to refine URL below: -cli_suffixes: - armv6: armv6 - armv6l: armv6 - armv7: armv7 - armv7l: armv7 - armv8: arm64 - aarch64: arm64 +# SEE https://www.remote.it/download-list +# https://www.remote.it/download-list?products=cli to refine arch/URL below +# BUT https://docs.remote.it/software/cli/overview can be useful OR stale :/ +remoteit_arch_dict: + armv6: arm-v6 + armv6l: arm-v6 + armv7: arm-v7 + armv7l: arm-v7 + armv8: aarch64 + aarch64: aarch64 x86_64: x86_64 -remoteit_cli_suffix: "{{ cli_suffixes[ansible_architecture] | default('unknown') }}" -remoteit_cli_url: https://downloads.remote.it/cli/latest/remoteit_linux_{{ remoteit_cli_suffix }} +remoteit_arch: "{{ remoteit_arch_dict[ansible_machine] | default('unknown') }}" # A bit safer than ansible_architecture (see kiwix/defaults/main.yml) +remoteit_cli_url: https://downloads.remote.it/cli/latest/remoteit.{{ remoteit_arch }}-linux + # OPTION #1: Run 'sudo iiab-remoteit' after IIAB is installed. From 865d2434ebc0c8f42baa1132d10112e1b3232250 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 16:34:04 -0400 Subject: [PATCH 07/12] remoteit/tasks/main.yml: Use skip_role_on_error --- roles/remoteit/tasks/main.yml | 56 ++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/roles/remoteit/tasks/main.yml b/roles/remoteit/tasks/main.yml index 1e1c85230..197010c3b 100644 --- a/roles/remoteit/tasks/main.yml +++ b/roles/remoteit/tasks/main.yml @@ -11,31 +11,39 @@ quiet: yes -- name: Install remoteit if 'remoteit_installed' not defined, e.g. in {{ iiab_state_file }} # /etc/iiab/iiab_state.yml - include_tasks: install.yml - when: remoteit_installed is undefined +- block: + - name: Install remoteit if 'remoteit_installed' not defined, e.g. in {{ iiab_state_file }} # /etc/iiab/iiab_state.yml + include_tasks: install.yml + when: remoteit_installed is undefined -- include_tasks: enable-or-disable.yml + - include_tasks: enable-or-disable.yml -# - name: Extract claim code from /etc/remoteit/config.json if it exists -# shell: grep claim /etc/remoteit/config.json | rev | cut -d\" -f2 | rev -# register: remoteit_claim_code + # - name: Extract claim code from /etc/remoteit/config.json if it exists + # shell: grep claim /etc/remoteit/config.json | rev | cut -d\" -f2 | rev + # register: remoteit_claim_code -- name: Add 'remoteit' variable values to {{ iiab_ini_file }} - ini_file: - path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini - section: remoteit - option: "{{ item.option }}" - value: "{{ item.value | string }}" - with_items: - - option: name - value: remote.it - - option: description - value: '"https://remote.it can help you remotely maintain an IIAB. Some benefits include: crossing multiple NATs/firewalls using a single TCP port, without requiring router port forwarding, and reducing your network''s vulnerability."' - - option: remoteit_install - value: "{{ remoteit_install }}" - - option: remoteit_enabled - value: "{{ remoteit_enabled }}" - # - option: remoteit_claim_code - # value: "{{ remoteit_claim_code.stdout }}" + - name: Add 'remoteit' variable values to {{ iiab_ini_file }} + ini_file: + path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini + section: remoteit + option: "{{ item.option }}" + value: "{{ item.value | string }}" + with_items: + - option: name + value: remote.it + - option: description + value: '"https://remote.it can help you remotely maintain an IIAB. Some benefits include: crossing multiple NATs/firewalls using a single TCP port, without requiring router port forwarding, and reducing your network''s vulnerability."' + - option: remoteit_install + value: "{{ remoteit_install }}" + - option: remoteit_enabled + value: "{{ remoteit_enabled }}" + # - option: remoteit_claim_code + # value: "{{ remoteit_claim_code.stdout }}" + + rescue: + + - name: 'SEE ERROR ABOVE (skip_role_on_error: {{ skip_role_on_error }})' + fail: + msg: "" + when: not skip_role_on_error From 617c4436a26b5b6a857cdf9210e51e12cb882004 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 17:09:23 -0400 Subject: [PATCH 08/12] remoteit/tasks/enable-or-disable.yml: Use /usr/share/remoteit/refresh.sh not connected --- roles/remoteit/tasks/enable-or-disable.yml | 45 ++++++++++++---------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/roles/remoteit/tasks/enable-or-disable.yml b/roles/remoteit/tasks/enable-or-disable.yml index ee8134a11..2bd305ef6 100644 --- a/roles/remoteit/tasks/enable-or-disable.yml +++ b/roles/remoteit/tasks/enable-or-disable.yml @@ -22,40 +22,43 @@ path: /etc/remoteit/registration register: remoteit_reg -- name: Remove empty file /etc/remoteit/registration if remoteit_enabled +- name: Remove empty file /etc/remoteit/registration if remoteit_enabled, so claim code can be generated file: path: /etc/remoteit/registration state: absent when: remoteit_enabled and remoteit_reg.stat.exists and remoteit_reg.stat.size == 0 -# 2022-04-07 FYI: connectd (below) never deletes /etc/remoteit/registration +# 2022-10-09: refresh.sh is equivalent to their old connectd "parent" systemd +# service, that they removed from 4.15.2 device packages on 2022-09-07. +# (Either way, the job below never deletes /etc/remoteit/registration) -- name: Enable & Restart remote.it "parent" service connectd, which exits after spawning 2 "child" services/daemons below - systemd: - name: connectd - daemon_reload: yes - enabled: yes - state: restarted +- name: 'Run /usr/share/remoteit/refresh.sh to put a claim code in /etc/remoteit/config.json (if you don't already have a license key in /etc/remoteit/registration) -- FYI this spawns 2 "child" services/daemons: schannel & e.g. remoteit@80:00:01:7F:7E:00:56:36.service' + command: /usr/share/remoteit/refresh.sh when: remoteit_enabled -- name: Enable remote.it daemon schannel ("Remote tcp command service") -- try to avoid contention with connectd which auto-spawns it as nec (just above) +# - name: Enable & Restart remote.it "parent" service connectd, which exits after spawning 2 "child" services/daemons below +# systemd: +# name: connectd +# daemon_reload: yes +# enabled: yes +# state: restarted +# when: remoteit_enabled + +# 2022-10-09: refresh.sh (above) now takes care of this too +# - name: Enable remote.it daemon schannel ("Remote tcp command service") -- try to avoid contention with connectd which auto-spawns it as nec (just above) +# systemd: +# name: schannel +# enabled: yes +# state: started +# when: remoteit_enabled + + +- name: Disable & Stop remote.it service schannel systemd: name: schannel - enabled: yes - state: started - when: remoteit_enabled - - -- name: Disable & Stop remote.it services {connectd, schannel} - systemd: - name: "{{ item }}" enabled: no state: stopped - with_items: - - connectd - - schannel - ignore_errors: yes when: not remoteit_enabled - name: Stop & Disable "Remote tcp connection services" remoteit@* found in /etc/systemd/system/multi-user.target.wants/ e.g. remoteit@80:00:01:7F:7E:00:56:36.service From 586efa1ecf80898f2e3e39972dc2fe2dd7d61292 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 17:43:26 -0400 Subject: [PATCH 09/12] /usr/bin/iiab-remoteit: connectd systemd service GONE from 4.15.2 --- roles/remoteit/templates/iiab-remoteit | 30 +++++++++++--------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/roles/remoteit/templates/iiab-remoteit b/roles/remoteit/templates/iiab-remoteit index c64ebc690..8aa64b758 100755 --- a/roles/remoteit/templates/iiab-remoteit +++ b/roles/remoteit/templates/iiab-remoteit @@ -58,9 +58,9 @@ if [ -f /etc/remoteit/config.json ]; then if [[ $ans =~ ^[nN]$ ]]; then # Nearly the same as Lines 142-189 echo -e "Let's try to enable remote.it, with your existing /etc/remoteit/config.json...\n" - systemctl enable connectd - systemctl restart connectd - systemctl enable schannel + /usr/share/remoteit/refresh.sh # Just like connectd systemd service + # prior to 4.15.2 (its new remoteit-refresh.service is insufficient, as + # it's not installed initially, by their curl script install_agent.sh) if grep -q '^remoteit_enabled:' /etc/iiab/local_vars.yml; then sed -i "s/^remoteit_enabled:.*/remoteit_enabled: True/" /etc/iiab/local_vars.yml @@ -123,9 +123,7 @@ else # regardless whether /etc/remoteit/registration exists and what it contains, # and regardless whether /etc/remoteit/config.json contains a claim code. - echo -e "In a few seconds, all 3 {connectd, schannel, remoteit@...} should be enabled!\n" - - systemctl stop connectd # "Safer" (though it's generally exited already!) + echo -e "In a few seconds, both services {schannel, remoteit@...} should be enabled!\n" #if [ ! -f /etc/remoteit/registration ] && [ -f /etc/remoteit/config.json ]; then if [ -f /etc/remoteit/config.json ]; then @@ -139,20 +137,18 @@ else echo -e "/etc/remoteit/config.json moved aside, for fresh device registration.\n" fi - systemctl start connectd # Registration logic (use license key or - # generate claim code) then kickstart 2 "child" services below. - # FYI running /usr/share/remoteit/refresh.sh appears to do the exact same - # thing (as bouncing service connectd). + /usr/share/remoteit/refresh.sh # Registration logic (use license key or + # generate claim code) then kickstart 2 "child" services below. In the + # past, we bounced the connectd service which did the same, and we enabled + # services {connectd, schannel} like enable-or-disable.yml used to do too. - systemctl enable connectd # 2 enable lines, like enable-or-disable.yml + # schannel.service - Remote tcp command service + # remoteit@80:00:01:7F:7E:00:56:36.service - Remote tcp connection service - # schannel = "Remote tcp command service" started by connectd above if nec - systemctl enable schannel # 2 enable lines, like enable-or-disable.yml - - # "Remote tcp connection service" appears a few seconds after connectd is - # started above. Auto-enabled when spawned by connectd, SO NOT NEC HERE: + # Both above appear a few seconds after refresh.sh is run, MANUAL NOT NEC: # systemctl enable $(ls /etc/systemd/system/multi-user.target.wants/ | grep remoteit@*) - # These systemd service names e.g. remoteit@80:00:01:7F:7E:00:56:36.service + + # FYI systemd service names like remoteit@80:00:01:7F:7E:00:56:36.service # change, e.g. when a new claim code is generated, and more arise when the # IIAB device is registered to a remote.it account (#3166), etc. fi From da88bdba9e36506c516a8054839e124594d191d0 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 9 Oct 2022 18:31:22 -0400 Subject: [PATCH 10/12] roles/remoteit: small fixes + cleanup --- roles/remoteit/tasks/enable-or-disable.yml | 2 +- roles/remoteit/tasks/install.yml | 4 ++-- roles/remoteit/templates/iiab-remoteit | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/remoteit/tasks/enable-or-disable.yml b/roles/remoteit/tasks/enable-or-disable.yml index 2bd305ef6..5fba120ca 100644 --- a/roles/remoteit/tasks/enable-or-disable.yml +++ b/roles/remoteit/tasks/enable-or-disable.yml @@ -33,7 +33,7 @@ # service, that they removed from 4.15.2 device packages on 2022-09-07. # (Either way, the job below never deletes /etc/remoteit/registration) -- name: 'Run /usr/share/remoteit/refresh.sh to put a claim code in /etc/remoteit/config.json (if you don't already have a license key in /etc/remoteit/registration) -- FYI this spawns 2 "child" services/daemons: schannel & e.g. remoteit@80:00:01:7F:7E:00:56:36.service' +- name: 'Run /usr/share/remoteit/refresh.sh to put a claim code in /etc/remoteit/config.json (if you don''t already have a license key in /etc/remoteit/registration) -- FYI this spawns 2 "child" services/daemons: schannel & e.g. remoteit@80:00:01:7F:7E:00:56:36.service' command: /usr/share/remoteit/refresh.sh when: remoteit_enabled diff --git a/roles/remoteit/tasks/install.yml b/roles/remoteit/tasks/install.yml index 4de54a116..360cb7397 100644 --- a/roles/remoteit/tasks/install.yml +++ b/roles/remoteit/tasks/install.yml @@ -108,10 +108,10 @@ mode: 0755 -- name: Fail if architecture remoteit_cli_suffix == "unknown" +- name: Fail if architecture remoteit_arch == "unknown" fail: msg: "Could not find a remote.it CLI binary for CPU architecture \"{{ ansible_architecture }}\"" - when: remoteit_cli_suffix == "unknown" + when: remoteit_arch == "unknown" - name: Download OPTIONAL {{ remoteit_cli_url }} (CLI) to /usr/bin/remoteit (755) get_url: diff --git a/roles/remoteit/templates/iiab-remoteit b/roles/remoteit/templates/iiab-remoteit index 8aa64b758..e4f8097b0 100755 --- a/roles/remoteit/templates/iiab-remoteit +++ b/roles/remoteit/templates/iiab-remoteit @@ -55,7 +55,7 @@ if [ -f /etc/remoteit/config.json ]; then read -n 1 -r ans < /dev/tty # Prompt for a single character echo; echo - if [[ $ans =~ ^[nN]$ ]]; then # Nearly the same as Lines 142-189 + if [[ $ans =~ ^[nN]$ ]]; then # Nearly the same as Lines 140-185 echo -e "Let's try to enable remote.it, with your existing /etc/remoteit/config.json...\n" /usr/share/remoteit/refresh.sh # Just like connectd systemd service From c1e83a5965611330343ce12c160ef2235f79fbd9 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 18:46:20 -0400 Subject: [PATCH 11/12] iiab-remoteit-off: Comment out obsolete connectd ops --- roles/remoteit/templates/iiab-remoteit-off | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/remoteit/templates/iiab-remoteit-off b/roles/remoteit/templates/iiab-remoteit-off index 4e84d117c..8cd9b1b1b 100755 --- a/roles/remoteit/templates/iiab-remoteit-off +++ b/roles/remoteit/templates/iiab-remoteit-off @@ -17,9 +17,9 @@ fi # 3 sections below should be equivalent to -- and much faster than: # https://github.com/iiab/iiab/tree/master/roles/remoteit/tasks/enable-or-disable.yml -# remote.it "parent" service -systemctl stop connectd || true # connectd may not exist. See PR #3363 -systemctl disable connectd || true +# remote.it "parent" service no longer part of Device Package 4.15.2 on 2022-09-07 +#systemctl stop connectd +#systemctl disable connectd # "Remote tcp command service" systemctl stop schannel From 09fbcbb71fa0bcd0d637b46fd63810513a406ac0 Mon Sep 17 00:00:00 2001 From: A Holt Date: Sun, 9 Oct 2022 18:52:13 -0400 Subject: [PATCH 12/12] remoteit/README.md: Their $6/month rose to $10/month --- roles/remoteit/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/remoteit/README.md b/roles/remoteit/README.md index 11b2d281b..5a7cf8bbb 100644 --- a/roles/remoteit/README.md +++ b/roles/remoteit/README.md @@ -2,7 +2,7 @@ Remote.it can be a [great way](https://docs.remote.it/introduction/get-started/readme) to remotely support an Internet-in-a-Box (IIAB). -As of [April 2022](https://remote.it/pricing/), 5 IIAB devices can be managed for free, and an unlimited number can be managed for $6/month. +As of [October 2022](https://remote.it/pricing/), 5 IIAB devices can be managed for free, and an unlimited number can be managed for $10/month. For other approaches, please see [FAQ.IIAB.IO](https://wiki.iiab.io/go/FAQ) -> "How can I remotely manage my Internet-in-a-Box?"