Zero Touch Installation (ZTI)
The ZeroTouch (ZT or ZTI) installation is the easiest way to install FTS. Has been tested on the cloud and on the RasberryPi; however, only on Digital Ocean cloud (by virtue of appropriate defaults) you will have the optimal experience, where all is installed and configured.
The ZTI
can be run on different platforms,
make sure you have chosen the platform correctly,
or you will need to update configuration files later.
ZTI
Usage
The ZTI
provides usage documentation.
This information is the most current.
wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --help
The following instructions provide examples where these options are demonstrated.
Zero Touch Deployment Diagram
This ZTI
installs and configures FreeTAKHub components on a single device.
Note
The following list and diagram are not exhaustive.
- FreeTAKServer (FTS): The core server that interfaces with TAK-enabled clients
- FreeTAKServer User Interface (FTS-UI): A web-based user interface.
- Video Server: based on RTSP Simple Server. Handles video streaming.
- Server: Handle integration services (see below)
- FreeTAKHub Integration Server: Based on Node Red. Handles FTS integrations like SALUTE reports & video checking services (checks if videos are running and notifies FTS).
- FreeTAKHub Voice Server: Uses Murmur or Mumble VOIP Server for voice chatting.
- FreeTAKHub Webmap: A mapping component on the web interface.
Services Status
This command will output the status of these services
sudo systemctl status fts.service fts-ui.service mumble-server.service nodered.service mediamtx.service
how to start / stop / enable a service?
Platform Specific Instructions
The ZTI
only works on Linux systems.
Cloud Server (with automatic IP address discovery)
In this mode, ZTI
guesses your IP address using
curl ifconfig.me/ip
.
If this does not give the appropriate IP address you will need to provide it.
Run one of the following (equivalent) commands to start the ZeroTouch installer.
wget -qO - bit.ly/freetakhub2 | sudo bash
Alternate, full path.
wget -qO - https://raw.githubusercontent.com/FreeTAKTeam/FreeTAKHub-Installation/main/scripts/easy_install.sh | sudo bash
Explicit IP Address
Implicitly, the ZTI
guesses your IP address using https://ifconfig.me/ip
.
When installing on the devices not on the public internet
it is unlikely that this is what you want.
There are several ways to discover a candidate IP address, here are some.
Warning
The IP address should be stable; on reboot you may get a different IP address. You should take steps to ensure the IP address does not change without your knowledge.
Show the assigned IPv4 LAN addresses:
ip -4 addr
Extract specific LAN addresses
Wired, ethernet, RJ45
ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
On the public internet:
curl ifconfig.me/ip
It will be helpful to create an environment parameter to remember the IP address (MY_IPA) you have selected.
export MY_IPA=<the appropriate IP address>
Here is an example capturing the wired LAN address:
export MY_IPA=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
Run the Zero Touch Installer (ZTI)
With an appropriate IP address in hand you can run the ZTI
.
wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --ip-addr ${MY_IPA}
Alternate, full path.
wget -qO - https://raw.githubusercontent.com/FreeTAKTeam/FreeTAKHub-Installation/main/scripts/easy_install.sh | sudo bash -s -- --ip-addr ${MY_IPA}
How ZT
works
The command wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --ip-addr ${MY_IPA}
is a combination of several commands and options used together to perform a specific task.
Here's a breakdown of what each part of the command does:
wget : This is the command for a popular network downloader utility.
-q : This option tells wget to operate in quiet mode, which suppresses the usual output.
O - : as the capital letter 'o'. The -O - option tells wget to redirect the downloaded content to standard output (stdout) instead of saving it to a file. The - character is used here to denote stdout.
bit.ly/freetakhub2 : This is a shortened URL using the bit.ly service. It redirects to a longer URL from which wget will download content.
| : This is a pipe. It takes the output of the command on its left (wget in this case) and uses it as the input for the command on its right.
sudo : This command is used to execute the following command (bash) with superuser (root) privileges. It's required for commands that need higher permissions to run, typically for installing software or modifying system files.
bash : This is the command to invoke the Bash shell. When used without a filename, bash will read and execute commands from its standard input (which, in this case, is the output of wget).
-s : If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an interactive shell or when reading input through a pipe.
-- : End of options. Anything further on the command line is an argument, not an option.
--ip-addr ${MY_IPA}
: Provide an argument to configure FTS with a specific, MY_IPA
, IP address.
Variable Expansion
The command wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --ip-addr ${MY_IPA}
presumes that the variable MY_IPA
has been set.
If export MY_IPA=192.168.1.100
then, the statement expands to
wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --ip-addr 192.168.1.100
,
and NOT to wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --ip-addr $192.168.1.100
Putting it all together, wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --ip-addr ${MY_IPA}
downloads the content from the URL shortened as bit.ly/freetakhub2
,
then immediately executes that content as a bash script with superuser privileges.
A specific IP address (stored in the variable MY_IPA
, expanded) is provided as an argument to configure FTS.
Atypical Optional Behavior
As mentioned previously you can see several atypical behaviors are available. They are documented here.
ZTI
--help
Argument
show usage.
wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --help
ZTI
--verbose
Argument
Verbose output.
wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --verbose
ZTI
--pypi
Argument
Explicitly set the URL for the PYPI repository
wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --pypi https://test.pypi.org
pip
acquires python packages from https://pypi.org,
this option makes it possible to use an alternate repository.
ZTI
Legacy Argument
If you are still wanting to use the previous "legacy" version, use this option.
Note:: the legacy version only works with Ubuntu 20.04
wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --legacy
Alternate, environment variable.
wget -qO - bit.ly/freetakhub2 | sudo INSTALL_TYPE=legacy bash
ZTI
--repo
Argument
testing a forked repository.
export MY_IPA=10.2.118.124
export MY_REPO=babeloff
wget -qO - https://raw.githubusercontent.com/${MY_REPO}/FreeTAKHub-Installation/main/scripts/easy_install.sh | sudo bash -s -- --ip-addr ${MY_IPA} --repo https://github.com/${MY_REPO}/FreeTAKHub-Installation.git
Operation
Now that your shiny new FTS system has been installed, it is time to make sure it is nominally working.
FTS User Interface
- http://[use MY_IPA here]:5000/index
- username:
admin
- password:
password
FTS Hub : Node-Red
- http://[use MY_IPA here]:1880
- username:
admin
- password:
password
Reconfiguration
ZeroTouch
will have configured the system and started the services for you.
However, there are many corner cases which ZeroTouch
may miss.
Many (if not all) of the choices made by ZeroTouch
are written to stdout.
I recommend that you validate the properties in that output.
You should stop the fts services prior to reconfiguration,
and you must start (restart) the fts services after reconfiguration.
Try out the TAK Clients
Now try out TAK clients after connecting them to the shiny new FTS server.