diff --git a/docs/docs/API/REST_API_Doc.md b/docs/docs/API/REST_API_Doc.md index 545552266..7f59d88a0 100644 --- a/docs/docs/API/REST_API_Doc.md +++ b/docs/docs/API/REST_API_Doc.md @@ -6,7 +6,7 @@ status: ood The FreeTAKServer REST API is a human-readable approach to the TAK world. The API allows you to easily connect third parties to the TAK family, -without the need to understand the complexity of the COT structure or what a TCP connection is. +without the need to understand the complexity of the CoT structure or what a TCP connection is. FTS also supports an [Internal API](REST_API_InternalDoc.md). ## How FTS manages the information @@ -111,6 +111,7 @@ Set of commands relative to API management. #### getHelp Retrieve API version and supported endpoints. + * verb: GET * endpoint: /manageAPI/getHelp * returns: json containing API version and supported endpoints @@ -290,7 +291,7 @@ A GeoObject is an element place on a map. It has a name, characteristics, and an ###### List of supported HOW the following list contains -API term : Translation in the COT +API term : Translation in the CoT * "nonCoT": "h-g-i-g-o", * "mensurated": "m-i", @@ -835,7 +836,7 @@ latitude : the angular distance of the geoobject from the earths equator expressed in positive or negative float. (e.g. 43.855682). uid -: OPTIONAL input parameter, needed to update existing drone COT. +: OPTIONAL input parameter, needed to update existing drone CoT. SPIName : the name of the Sensor Point of Interest the UAS is currently aiming to. currently will NOT work in an update message (when you send the UID). diff --git a/docs/docs/API/REST_API_InternalDoc.md b/docs/docs/API/REST_API_InternalDoc.md index eb103228c..4fce32050 100644 --- a/docs/docs/API/REST_API_InternalDoc.md +++ b/docs/docs/API/REST_API_InternalDoc.md @@ -509,15 +509,18 @@ code: `200` ] } ``` + * uid: uid of the user * Group: new user group (optional) * Token: new api token of user(optional) * Password: new password for user(optional) + # DataPackageTable ## description Endpoint used to access data regarding DataPackages ### methods + * POST * GET * DELETE @@ -535,6 +538,7 @@ returns JSON data containing information regarding all DataPackages currently on ## POST accepts the zipped form of the file in the body of the message and the following arguments in the url + * filename: the name of the zipped file * creatorUid(optional): the uid of the user associated with the DataPackage defaults to ```server``` if none is provided @@ -559,6 +563,7 @@ accepts the following JSON data ] } ``` + * PrimaryKey: primary key of DataPackage to be modified * Name: optional new name of DataPackage if not set name will not be changed * Keywords: optional new keywords of DataPackage if not set keywords will not be changed @@ -569,6 +574,7 @@ accepts the following JSON data Endpoint used to access data regarding mission packages ## methods + * GET * POST * DELETE @@ -630,10 +636,11 @@ not yet implemented not yet implemented # ExCheckTable -Endpoint used to access data regarding ExCheck items such as checklists and templates +Endpoint used to access data regarding `ExCheck` items such as checklists and templates ## POST creates a template on the server from a supplied xml file accepting the following URL encoded values: + * clientUid: the uid of the client to be recognized as the creator of the template body of the message should be the xml of the template @@ -649,6 +656,7 @@ accepts the following data } } ``` + `uid`: the uid of those Checklists and Templates to be deleted ## GET @@ -683,6 +691,7 @@ return JSON data containing the following information about Checklists and Templ } ``` ### Templates + * "filename": name of file containing template xml * "name": name associated with template * "submissionTime": time template was submitted to server @@ -693,6 +702,7 @@ return JSON data containing the following information about Checklists and Templ * "description": description of template ### Checklists + * "filename": name of file containing checklist xml * "name": name associated with template * "startTime": time checklist was created diff --git a/docs/docs/About/FAQ.md b/docs/docs/About/FAQ.md index 45816e05f..773fc29ff 100644 --- a/docs/docs/About/FAQ.md +++ b/docs/docs/About/FAQ.md @@ -11,12 +11,15 @@ FTS is a TAK server written in Python that connects all your TAK devices. We released our software under the "Eclipse Public License" allowing not only private usage but also commercial products built on top of it. ## TAK clients on the same network can communicate directly! So, why should I use a server? -There are many reasons for using a server, including the availability of a centralized repository of information (data packages), the administration of users and security (SSL), server-side functions (e.g., ExCheck, Data Sync), and integration with other non-TAK systems (e.g., video, audio, Telegram) using the FTS API. +There are many reasons for using a server, including the availability of a centralized repository of information (data packages), +the administration of users and security (SSL), +server-side functions (e.g., `ExCheck`, Data Sync), +and integration with other non-TAK systems (e.g., video, audio, Telegram) using the FTS API. ## There are other servers for TAK. Why should I use FTS? FTS is not only powerful–it's also more user-friendly when [compared](FeaturesCompared.md) to other systems. Also, FTS is a community-driven Open Source project at its core. -Under the covers, FTS is based on a [domain model](architecture/COTDomain.md), +Under the covers, FTS is based on a [domain model](architecture/CoTDomain.md), so it is the only TAK server that can provide analysis and interpretation of the information it collects–not just receive requests from clients and provides the requested data or perform the requested actions. diff --git a/docs/docs/About/FeaturesCompared.md b/docs/docs/About/FeaturesCompared.md index 28c203470..f412855bf 100644 --- a/docs/docs/About/FeaturesCompared.md +++ b/docs/docs/About/FeaturesCompared.md @@ -30,13 +30,13 @@ Users have spoken: FTS is the best TAK server on github! | Data Package | O | O | O | O | | Data Sync | X | O | O | X | | Easy Certificate | O | X | O | X | -| COT Database Recording | O | O | O | O | +| CoT Database Recording | O | O | O | O | | KML Generation | O | O | O | X | | ExCheck Support | O | O | O | X | | SSL Encryption | O | O | O | O | | REST API | O (Full) | Ø | O (Extended) | X | -| XML COT | O | O | O | O | -| Protobuf COT | X | O | O | X | +| XML CoT | O | O | O | O | +| Protobuf CoT | X | O | O | X | | WebMAP | O | O | O | X | | Video Server | O | X | O | X | | Voice Server | O | X | O | X | diff --git a/docs/docs/About/PubServer.md b/docs/docs/About/PubServer.md index 869153a8a..058950ebd 100644 --- a/docs/docs/About/PubServer.md +++ b/docs/docs/About/PubServer.md @@ -8,7 +8,9 @@ status: ood We support a public instance of FTS hosted by DigitalOcean. -The Public server (PUB) is an instance of FTS made available for you to test and play with. We are not going to spy on you, but keep in mind that information will be shared with all the connected users. For production consider to install your own instance. +The Public server (PUB) is an instance of FTS made available for you to test and play with. +We are not going to spy on you, but keep in mind that information will be shared with all the connected users. +For production consider to install your own instance. ### FTS Public Instance Server Rules diff --git a/docs/docs/About/architecture/.pages b/docs/docs/About/architecture/.pages index 97d5ba1bb..26428efc5 100644 --- a/docs/docs/About/architecture/.pages +++ b/docs/docs/About/architecture/.pages @@ -1,6 +1,6 @@ nav: - Cursor On Target: - - COT Domain: COTDomain.md - - COT Class Hierarchy: COTHierarchyTree.md - - COT Table: COTTable.md - - Common Warfighting Symbology 2525: MilSTD2525.md \ No newline at end of file + - CoT Domain: cot_domain.md + - CoT Class Hierarchy: cot_hierarchy.md + - CoT Table: cot_table.md + - Common Warfighting Symbology 2525: mil_std_2525.md \ No newline at end of file diff --git a/docs/docs/About/architecture/COTDomain.md b/docs/docs/About/architecture/cot_domain.md similarity index 99% rename from docs/docs/About/architecture/COTDomain.md rename to docs/docs/About/architecture/cot_domain.md index 2b465a57e..d83438a87 100644 --- a/docs/docs/About/architecture/COTDomain.md +++ b/docs/docs/About/architecture/cot_domain.md @@ -2,7 +2,7 @@ status: todo --- -# **COT Domain Model** +# **CoT Domain Model** The Cursor-On-Target (CoT) Event data model defines a Domain model as a system of abstractions that describes selected aspects @@ -13,7 +13,7 @@ The Domain model can be translated into an XML data schema for exchanging time sensitive position of moving objects, or "what", "when", and "where" (WWW) information, between systems. -![FTS COT domain Model](https://user-images.githubusercontent.com/60719165/193834333-ea041722-e3ea-46f9-9eb6-7417c19807ea.png) +![FTS CoT domain Model](https://user-images.githubusercontent.com/60719165/193834333-ea041722-e3ea-46f9-9eb6-7417c19807ea.png) ## \_\_serverdestination @@ -741,7 +741,8 @@ some type of location? This is a Cursor On TargetClass for a generic remarks (aka "FreeText"). -Provides a place to annotate CoT with free text information. e.g. comments from other users about the current COT. Used also for the geoChat. +Provides a place to annotate CoT with free text information. e.g. comments from other users about the current CoT. +Used also for the geoChat. **the xml body of this class is used to transport the chat message** diff --git a/docs/docs/About/architecture/COTHierarchyTree.md b/docs/docs/About/architecture/cot_hierarchy.md similarity index 99% rename from docs/docs/About/architecture/COTHierarchyTree.md rename to docs/docs/About/architecture/cot_hierarchy.md index de098c485..4ecd44cee 100644 --- a/docs/docs/About/architecture/COTHierarchyTree.md +++ b/docs/docs/About/architecture/cot_hierarchy.md @@ -2,10 +2,10 @@ status: todo --- -# Work in progress COT Hierarchy Tree +# Work in progress CoT Hierarchy Tree
- COT Hierarchy Tree + CoT Hierarchy Tree ### Heading diff --git a/docs/docs/About/architecture/COTTable.md b/docs/docs/About/architecture/cot_table.md similarity index 99% rename from docs/docs/About/architecture/COTTable.md rename to docs/docs/About/architecture/cot_table.md index e627afc6a..427258591 100644 --- a/docs/docs/About/architecture/COTTable.md +++ b/docs/docs/About/architecture/cot_table.md @@ -2,11 +2,11 @@ status: todo --- -# Center On Target (COT) +# Center On Target (CoT) The following table combines Center On Target information found in COTTYpes.XML, aligning it to MIL-STD-2525 CIDC code (when possible). -To find more information read the [MilSTD2525 documentation](MilSTD2525.md) +To find more information read the [MIL-STD-D-D-D-2525 documentation](MilSTD2525.md) | **COTID** | **Hierarchy** | **Name** | **nickname** | **"ID"** | **CIDC** | **Category1** | **Category2** | **Category3** | |:--------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------|:---------|:-------------------------|:-------------------------------------|:------------------------------------|:-----------------------------------------------| diff --git a/docs/docs/About/architecture/MilSTD2525.md b/docs/docs/About/architecture/mil_std_2525.md similarity index 68% rename from docs/docs/About/architecture/MilSTD2525.md rename to docs/docs/About/architecture/mil_std_2525.md index cb0eb940e..8c7ee4264 100644 --- a/docs/docs/About/architecture/MilSTD2525.md +++ b/docs/docs/About/architecture/mil_std_2525.md @@ -2,70 +2,186 @@ status: todo --- -# About Mil-STD-2525 and COTS +# About [MIL-STD-2525](https://en.wikipedia.org/wiki/NATO_Joint_Military_Symbology) and CoT The Center on Target (CoT) is a data exchange format primarily used in military and emergency response applications such as the TAK ecosystem. -It's designed to facilitate real-time sharing of geospatial information among various systems and users. -The CoT protocol enables efficient communication of location, status, and other relevant situational data, enhancing operational awareness and coordination. MIL-STD-2525 is a military standard that specifies symbols for use on maps, charts, and other graphical displays in military command, control, communications, computers, and intelligence (C4I) system. -The original 'NATO symbol' are expressed as a set of Military Symbols for Land Based Systems (Mil-STD-2525). -The COT system is only partially overlapping with 2525. on a list of 3000+ COTS , 1000 are directly traceable to milstd 2525. +It is designed to facilitate real-time sharing of geospatial information among various systems and users. +The CoT protocol enables efficient communication of location, status, and other relevant situational data, +enhancing operational awareness and coordination. +MIL-STD-2525 is a military standard that specifies symbols for use on maps, charts, and other graphical displays +in military command, control, communications, computers, and intelligence (C4I) system. +The original 'NATO symbol' are expressed as a set of Military Symbols for Land Based Systems (MIL-STD-2525). +The CoT system is only partially overlapping with 2525. +On a list of 3000+ CoT's , 1000 are directly traceable to MIL-STD-2525. + +The MIL_STD-2525 has had several versions: +* [MIL-STD-2525D](https://www.jcs.mil/Portals/36/Documents/Doctrine/Other_Pubs/ms_2525d.pdf) 2014 +* [MIL-STD-2525C](https://www.jcs.mil/Portals/36/Documents/Doctrine/Other_Pubs/ms_2525c.pdf) 2008 +* [MIL-STD-2525B](http://www.mapsymbs.com/ms2525b_ch1_full.pdf) 2005 + +The standard make use of 'Symbol Identification Code' (SIDC). + +In MIL-STD-2525C/B, +"An alphanumeric code based on a database structure that +provides the minimum elements required to construct +the basic icon and/or a complete symbol." + +MIL-STD-2525C further specifies that +A SIDC is a 15-character alphanumeric +identifier that provides the information necessary to display or transmit +a tactical symbol between MIL-STD-2525 compliant systems." + +In MIL-STD-2525D this changed substantially, +"A.5.2 Elements of the symbol identification codes. +The symbol identification code is composed of eleven elements of information +which are presented in two sets of ten digits. +An additional set of ten digits composed of three elements must be used +when a symbology originator version extension flag is used." + +As the SIDC does not require that all positions be used +the vacant positions are conventionally occupied by a '-'. +When used with CoT this introduces an ambiguity which is addressed below. + ## Event.type -Defines what the event is about. An event may describe a physical object, a set of raw, unprocessed bits, or a tasking. + +Defines what the event is about. +An event may describe a physical object, a set of raw, unprocessed bits, or a tasking. + +See the [Cursor on Target Message Router User's Guide](https://www.mitre.org/sites/default/files/pdf/09_4937.pdf) for details. + +### section 2.3 'CoT Type Field Details' +Duplicated (with edits) herein: + +The Cursor-on-Target Message Router often uses the CoT type string as a test for publication. +For this reason, the type field is briefly explained here. + +The set of possible CoT types is defined by a tree structure. +The type attribute, as defined in Event.xsd, identifies a specific node in the type tree. +It is a hyphen delimited set of alphanumeric characters. +For example, a-f-G represents a type tree of "atoms-friendly-ground". +The root element (first character in the type field) of the tree +has several values to include atoms, bits, reservations, capability descriptions, etc. + +The atoms branch of the tree leverages the MIL-STD-2525B specification for defining the detailed type. +The string is broken out as `atoms-affiliation-battle dimension-from 2525 function code`. +For example, the type string `a-h-A-MFA` represents "atoms-hostile-Airborne-Military-Attack/Strike". +The lower case `a-h` prefix is defined in `Event.xsd`. + +In the discussion found below, the "atoms" branch of the type +string will be described by the term's affiliation, battle dimension, and 2525 function code +per the description in this paragraph. + +The following tree diagrams the valid atomic event combinations. + +#### Level 1 : atoms +* a (atom) + +#### Level 2 : affiliation +* p (pending) +* u (unknown) +* a (assumed friend) +* f (friend) +* n (neutral) +* s (suspect) +* h (hostile) +* j (joker) +* k (faker) +* o (none specified) +* x (other) + +#### Level 3 : battle dimension + +* P (space) +* A (air) +* G (ground) +* S (sea surface) +* U (sea subsurface) +* X (other) + +The first `-A-` is the MIL-STD-2525 battle dimension (air, ground, surface, etc). +It is derived from the battle-dimension portion of the SIDC (position 3). + +#### Level 4 : function code + +The remaining characters are the MIL-STD-2525B function code. +In this example, `MFA` represents "Military-Attack/Strike" which +corresponds with the SIDC / function-code (positions 5-10) `MFA---`. + ### Hierarchically organized hint about event type -The "type" attribute is a composite of components delimited by the semicolon character (e.g. 'a-f-G-I' for "Friendly Ground infrastructure). The first component of this composite attribute is defined below. +The "type" attribute is a composite of components delimited by the semicolon character +(e.g. `a-f-G-I` for "Friendly Ground infrastructure"). +The first component of this composite attribute is defined below. Future versions of this schema will define other components which we expect will aid in machine filtering. -Despite the exclusion of definitions for additional components in this version of the schema, users of this schema should expect and design an optional trailing field delimited by the semicolon character. +Despite the exclusion of definitions for additional components in this version of the schema, +users of this schema should expect and design an optional trailing field +delimited by the semicolon character. + This field can be ignored. -``` +```text component1;optional field ``` The first component (component1) is a hierarchically organized hint about type. -The intention is that this hierarchy be flexible and extensible and facilitate simple filtering, translation and display. +The intention is that this hierarchy be flexible and extensible and +facilitate simple filtering, translation and display. To facilitate filtering, the hierarchy needs to present key fields in an easily parsed and logical order. -To facilitate this, this component is a composite of fields separated by the "-" punctuation character, so a valid type would be: +To facilitate this, this component is a composite of fields separated by the "-" punctuation character, +so a valid type would be: ``` x-x-X-X-x. ``` -Using a punctuation for field separation allows arbitrary expansion of the type space, +Using a punctuation for field separation allows arbitrary expansion of the type space. ``` e.g., a-fzp-mlk-gm-... ``` Field meanings are type specific. -That is, the third field of an "atom" type may represent air vs. ground while the same field for a "reservation" type may represent purpose. +That is, the third field of an "atom" type may represent air vs. ground +while the same field for a "reservation" type may represent purpose. ### MEANING of 'a' in the first position The "Atoms" portion of the type tree requires some additional explanation past the taxonomy defined below. -The "Atoms" portion of the type tree contains CoT defined fields and part of the MIL-STD-2525 type definition. To distinguish MIL-STD-2525 type strings from CoT defined fields, the MIL-STD-2525 types must be represented in all upper case. Differentiation of type namespace with upper/lower case facilitates extension of CoT types and MIL-STD-2525 types without name space conflict. An example: +The "Atoms" portion of the type tree contains CoT defined fields +and part of the MIL-STD-2525 type definition. +To distinguish MIL-STD-2525 type strings from CoT defined fields, +the MIL-STD-2525 types must be represented in all upper case. +Differentiation of type namespace with upper/lower case +facilitates extension of CoT types and MIL-STD-2525 types without name space conflict. +An example: ``` a-f-A-B-C-x ``` * a = Atom * f = attitude or disposition (friendly in this case) - * A-B-C =the symbol identification coding (SIDC) scheme for 2525 – a strings of 15 characters used to transmit symbols. - * x = non capital COT specific extension + * A-B-C = the symbol identification coding (SIDC) scheme for 2525 – a strings of 15 characters used to transmit symbols. + * x = non capital CoT specific extension - The organization of CoT and MIL-STD-2525 types can be determined from the taxonomy, but additional details are provided here. - The "Atoms" portion of the "type" tree contains the "Battle Dimension" and "Function ID" fields taken from MIL-STD-2525 (see below). + The organization of CoT and MIL-STD-2525 types can be determined from the taxonomy, + but additional details are provided here. + The "Atoms" portion of the "type" tree contains + the "Battle Dimension" and "Function ID" fields taken from MIL-STD-2525 (see below). "Battle Dimension" is a single character taken from MIL-STD-2525 and is located in the position 5. ``` a-.- **G** -I-M-N-B ``` -The typical 2525 representation for "Function ID" is three groups of two characters separated by a space (e.g. "12 34 56"). The CoT schema maps this to a "-" delimited list of characters. (e.g. "1-2-3-4-5-6"). - The concatenation of the "Battle Dimension" and "Function ID" fields from the MIL-STD-2525 specification represented in the CoT schema will be as follows: +The typical 2525 representation for "Function ID" is three groups of two characters separated by a space (e.g. "12 34 56"). +The CoT schema maps this to a "-" delimited list of characters. (e.g. "1-2-3-4-5-6"). + The concatenation of the "Battle Dimension" and "Function ID" fields + from the MIL-STD-2525 specification represented in the CoT schema will be as follows: ``` battle dimension-func id char1-func id char2- ... -func id char6 ``` - When an appropriate MIL-STD-2525 type exists, it should be used. If there is a MIL-STD-2525 representation which is close, but may be refined, a CoT extension to the 2525 type can be appended. + When an appropriate MIL-STD-2525 type exists, it should be used. + If there is a MIL-STD-2525 representation which is close, but may be refined, + a CoT extension to the 2525 type can be appended. For example: `a-h-X-X-X-X-X-i` might represent hostile MIL-STD-2525 type `X-X-X-X-X` of Israeli (the 'i') manufacture. @@ -214,7 +330,7 @@ S\*G\*IE----H\*\*\*\* Test code [here:](https://www.spatialillusions.com/milsymbol/example.html#angular) -## Example COT +## Example CoT Equipment manufacture Building is part of Gnd/Structure/Factory diff --git a/docs/docs/FreeTAKHub/Video/howtoStartOnPi.md b/docs/docs/FreeTAKHub/Video/howtoStartOnPi.md index d901da8b5..164c22ec9 100644 --- a/docs/docs/FreeTAKHub/Video/howtoStartOnPi.md +++ b/docs/docs/FreeTAKHub/Video/howtoStartOnPi.md @@ -6,14 +6,14 @@ status: ood Hardware: Raspberry Pi 4b- 8g OS: Ubuntu Server 22.04 lts -Program: rtsp-simple-server +Program: mediamtx When trying to accomplish Auto start on system startup/reboot, Solution: -For the `rtsp-simple.service` file, you will need to add and edit the following: +For the `mediamtx.service` file, you will need to add and edit the following: ```ini -{!FreeTAKHub/Video/rtsp-simple.service!} +{!FreeTAKHub/Video/mediamtx.service!} ``` To build the auto start file, the Solution: @@ -28,7 +28,7 @@ crontab -e at the end of the file add the 3 @ lines ``` -@reboot sudo systemctl enable rtsp-simple-server & -@reboot sudo systemctl stop rtsp-simple-server & -@reboot nohup sudo rtsp-simple-server & +@reboot sudo systemctl enable mediamtx.service & +@reboot sudo systemctl stop mediamtx.service & +@reboot nohup sudo mediamtx.service & ``` diff --git a/docs/docs/FreeTAKHub/Video/mediamtx.service b/docs/docs/FreeTAKHub/Video/mediamtx.service index aa27d63fe..17af8d525 100644 --- a/docs/docs/FreeTAKHub/Video/mediamtx.service +++ b/docs/docs/FreeTAKHub/Video/mediamtx.service @@ -1,6 +1,10 @@ [Unit] -After=network.target +Description=mediamtx +After=network-online.target +Wants=network-online.target + [Service] ExecStart=/usr/local/bin/mediamtx /usr/local/etc/mediamtx.yml + [Install] WantedBy=multi-user.target \ No newline at end of file diff --git a/docs/docs/FreeTAKHub/Video/rtsp-simple.service b/docs/docs/FreeTAKHub/Video/rtsp-simple.service deleted file mode 100644 index 0acce5513..000000000 --- a/docs/docs/FreeTAKHub/Video/rtsp-simple.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=rtsp-simple-server -After=network-online.target -Wants=netowrk-online.target - -[Service] -ExecStart=/usr/local/bin/rtsp-simple-server /usr/local/etc/rtsp-simple-server.yml - -[Install] -WantedBy=multi-user.target \ No newline at end of file diff --git a/docs/docs/FreeTAKHub/WebMap/Installation.md b/docs/docs/FreeTAKHub/WebMap/Installation.md index 30f1ab570..fb0cb3b3a 100644 --- a/docs/docs/FreeTAKHub/WebMap/Installation.md +++ b/docs/docs/FreeTAKHub/WebMap/Installation.md @@ -3,7 +3,7 @@ status: ood --- ## About webmap -The webmap provides insights of user presence and COTS shared with everyone. +The webmap provides insights of user presence and CoT's shared with everyone. Also in his NodeRed version can create certain types of CoT. There are 2 versions of the webmap: @@ -118,7 +118,7 @@ now connect a TAK client to see if that displays ## configure to start as a service Systemd is the service manager used by Ubuntu, Debian and many other Linux distributions, -and allows to launch `rtsp-simple-server` on boot. +and allows to launch `mediamtx` on boot. move the executable ```bash diff --git a/docs/docs/HowToHelp/GettingStartedAsHelper.md b/docs/docs/HowToHelp/GettingStartedAsHelper.md index 8f8b8a55d..b082bc1c6 100644 --- a/docs/docs/HowToHelp/GettingStartedAsHelper.md +++ b/docs/docs/HowToHelp/GettingStartedAsHelper.md @@ -24,7 +24,7 @@ As a Hobby user you want to install and use the FTS-TAK platform. ## Professional User / SME ### getting started as Professional User / SME -* Create a github user +* Create a GitHub user * Submit issues to GitHub ## Unix Admin / DevOps @@ -65,4 +65,4 @@ You are an architect or a very experienced developer with deep understanding of Object-Oriented thinking, patterns and Models. #### get the digital environment -we use Sparx Enterprise Architect as modeling tool. +we use Sparx ™ Enterprise Architect as modeling tool. diff --git a/docs/docs/HowToHelp/WriteDocumentation.md b/docs/docs/HowToHelp/WriteDocumentation.md index 11f35564c..91039fd6a 100644 --- a/docs/docs/HowToHelp/WriteDocumentation.md +++ b/docs/docs/HowToHelp/WriteDocumentation.md @@ -147,3 +147,21 @@ TODO: Explain how this is to be used. * https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax * https://github.com/ikatyang/emoji-cheat-sheet/blob/master/README.md + +### Ventilated Prose + +Prefer ventilated prose in composition. + +* https://writetheasciidocs.netlify.app/ventilated-prose +* https://vanemden.wordpress.com/2009/01/01/ventilated-prose/ +* https://mattwidmann.net/notes/using-markdown-effectively/ + +Ventilated prose dates back to the 1930s, +when Buckminster Fuller first coined the term. + +The main benefit in using ventilated prose is +that it works well with tools like `git`. +`git` defaults to using `diff` which compares lines of text. +(This `git` default is seldom changed.) +This implies that ideas should be confined to lines of text, +which is precisely what ventilated code. diff --git a/docs/docs/Installation/.pages b/docs/docs/Installation/.pages index 42e100eb1..d1135d2f1 100644 --- a/docs/docs/Installation/.pages +++ b/docs/docs/Installation/.pages @@ -11,4 +11,5 @@ nav: - Android: Android - Container: Docker - Windows: Windows + - Operation: Operation - Troubleshooting: Troubleshooting diff --git a/docs/docs/Installation/Android/installUIOnAndroid.md b/docs/docs/Installation/Android/installUIOnAndroid.md index 7b22c5b39..0323c5f0e 100644 --- a/docs/docs/Installation/Android/installUIOnAndroid.md +++ b/docs/docs/Installation/Android/installUIOnAndroid.md @@ -74,7 +74,8 @@ certpath = "/sdcard/FreeTAKServer/certs/" FLASK_APP=/data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.8/site-packages/FreeTAKServer-UI/run.py nohup python3 /data/user/0/ru.iiec.pydroid3/files/arm-linux-androideabi/lib/python3.8/site-packages/FreeTAKServer-UI/run.py ``` -Now open your web browser and navigate to and login with the default creds `(admin/password)`. +Now open your web browser and navigate to +and login with the default creds `(admin/password)`. # Troubleshooting @@ -85,7 +86,7 @@ Error: `Protocol not found` Solution: You didn't update `WKS.py` correctly # Notes -* All testing was performed with a RPi4 8GB running LineageOS 18.1 32bit and Pydroid3 +* All testing was performed with a RaspPi4 8GB running LineageOS 18.1 32bit and Pydroid3 * These instructions assume you are running FTS and FTS-UI on the same device * We downgrade SQLAlchemy because versions 1.4+ were not compatible with SQLAlchemy-utils -* You need root access to update the tcp/udp protocol numbers (if you are using a RPi4 and LineageOS it is trivial to enable) +* You need root access to update the tcp/udp protocol numbers (if you are using a RaspPi4 and LineageOS it is trivial to enable) diff --git a/docs/docs/Installation/Ansible/ZeroTouchInstall.md b/docs/docs/Installation/Ansible/ZeroTouchInstall.md index ead548667..b379825a0 100644 --- a/docs/docs/Installation/Ansible/ZeroTouchInstall.md +++ b/docs/docs/Installation/Ansible/ZeroTouchInstall.md @@ -9,6 +9,11 @@ on the [RasberryPi](../RaspberryPi/Installation.md); however, only on Digital Ocean cloud you will have the perfect experience, where all is installed and configured. +If you accept all the defaults, +when completed your RaspPi will be configured similar to the following: + +![image](../images/zero-touch-deply-default.png) + ## Instructions To install, enter into the console on an Ubuntu 22.04 server: ```console @@ -70,10 +75,7 @@ This script will install and configure FreeTAKHub components. 6. FreeTAKHub Voice Server: Uses [Murmur](https://github.com/mumble-voip/mumble) or Mumble VOIP Server for voice chatting. 7. FreeTAKHub Webmap: A mapping component on the web interface. - - -![FreeTAK 1 9 9 ZTI deployment](https://user-images.githubusercontent.com/60719165/207360218-a7b7a619-4cb0-4234-b7bb-9f74910019f6.png) - +![FreeTAK 2.1 ZTI deployment](../images/zero-touch-deply-default.png) # Custom Deployment (Advanced) @@ -90,7 +92,6 @@ wget -qO rb.gy/ocghax | sudo bash ``` # Verify your installation at the end of the ZT you will see a report that will provide credentials and a play recap -![image](https://github.com/FreeTAKTeam/FreeTAKServer-User-Docs/assets/60719165/47afb1a2-76db-44d0-becb-b66708f80289) you may now proceed to [Installation Check](../Troubleshooting/InstallationCheck.md) ## Services the current name of the services installed by the Zero Touch : @@ -99,7 +100,7 @@ the current name of the services installed by the Zero Touch : * fts-ui.service * mumble-server.service * nodered.service -* rtsp-simple-server.service +* mediamtx.service (was rtsp-simple-server.service) use ``` @@ -115,7 +116,7 @@ systemctl status [SERVICENAME].service this command will output the status of all the services ``` -sudo systemctl status fts.service fts-ui.service mumble-server.service nodered.service rtsp-simple-server.service +sudo systemctl status fts.service fts-ui.service mumble-server.service nodered.service mediamtx.service ``` [how to start / stop / enable a service?](../Linux/Service.md) diff --git a/docs/docs/Installation/Cloud/AWS.md b/docs/docs/Installation/Cloud/AWS.md index 23767cda3..c7418e4bc 100644 --- a/docs/docs/Installation/Cloud/AWS.md +++ b/docs/docs/Installation/Cloud/AWS.md @@ -17,15 +17,15 @@ status: ood * Under Network Settings, select a security group that has the necessary ports configured inbound for both SSH and FreeTAK server operations. ## FTS Ports (FTSConfig.yaml) -* 8087 - TCP COT (FTS_COT_PORT) -* 8089 - SSL COT (FTS_SSLCOT_PORT) +* 8087 - TCP CoT (FTS_COT_PORT) +* 8089 - SSL CoT (FTS_SSLCOT_PORT) * 19023 - API (FTS_API_PORT) ## FTS UI Ports (config.py) * 5000 - Web UI (APPPort) * 1880 - Webmap (WEBMAPPORT) -## RTSP-simple-server -AKA video Server +## [MediaMTX](https://github.com/bluenviron/mediamtx) - Video Server * 9997 - REST API * 9998 - Metrics Listener diff --git a/docs/docs/Installation/InfrastructurePlanning.md b/docs/docs/Installation/InfrastructurePlanning.md index 652122909..d148bfa54 100644 --- a/docs/docs/Installation/InfrastructurePlanning.md +++ b/docs/docs/Installation/InfrastructurePlanning.md @@ -8,13 +8,13 @@ status: ood TAK Infrastructure thoughts: Give some thought to how you are going to deploy FTS server. 1. **Cloud** - A Digital Ocean (DO) or other virtually hosted server will allow the quickest deployment and is scalable to as many users as you wish -2. **LAN** - An RPi server located on your home/office LAN may require additional complexities for non-LAN TAK clients to access your server, e.g. dynamic +2. **LAN** - An RaspPi server located on your home/office LAN may require additional complexities for non-LAN TAK clients to access your server, e.g. dynamic DNS services () and NAT port forwarding. -3. **VPN** - An RPi server running as a ZeroTier (or other SD-WAN) client will mostly circumvent the need for the complexities listed above and allow any TAK -client on the ZeroTier network to access the RPi server regardless of internet connection method (broadband, cellular data, etc.) -4. **Edge** - An RPi server running on an ad hoc or local infrastructure LAN configuration – Can be setup completely off-grid and without reliance on a +3. **VPN** - An RaspPi server running as a ZeroTier (or other SD-WAN) client will mostly circumvent the need for the complexities listed above and allow any TAK +client on the ZeroTier network to access the RaspPi server regardless of internet connection method (broadband, cellular data, etc.) +4. **Edge** - An RaspPi server running on an ad hoc or local infrastructure LAN configuration – Can be setup completely off-grid and without reliance on a functioning internet, but will suffer significant limitations in range for TAK clients to connect. -5. **Hybrid off-grid** – A DO installed server or RPi with one or more of the TAK clients connected as a "bridge" to an off-grid mesh network such as Meshtastic +5. **Hybrid off-grid** – A DO installed server or RaspPi with one or more of the TAK clients connected as a "bridge" to an off-grid mesh network such as Meshtastic LoRa. This configuration will allow any off-grid Meshtastic clients to have their communications reach all "internet-connected" TAK clients via a TAK client who is simultaneously connected to both the internet and mesh sides of the network. @@ -64,17 +64,36 @@ However, devices on the internet cannot directly access or see the private IP ad such as a 19.X.X.X address. ## Ports -![image](https://github.com/FreeTAKTeam/FreeTAKServer-User-Docs/assets/60719165/2293abf0-b5af-42e4-a7e2-4df208df3eaf) +![image](images/zero-touch-deply-default.png) A complete FTS installation includes several components that need to have access to the 'internet'. They will typically share the same IP but have different ports that need to be open on the firewall. +### FTS Web UI (fts-ui.service) * 5000: Required for the Web UI + +### FTS (fts.service) + +#### DigitalPy Service * 8080: Required for HTTP * 8443: Required for HTTPS + +#### Cursor On Target Service * 8087: required for TCP COTS * 8089: required for SSL COTS + +#### Federation Service * 9000: Required for Federation + +#### API Service + * 19023: REST / websocket API for FTS + +### Video Server [MediaMTX](https://github.com/bluenviron/mediamtx) (mediamtx.service) * 9997: required for the Video Server (MediaMTX) - * 64738: required for the Voice Server (Murmur) + +### Voice Server [Mumble](https://wiki.mumble.info/wiki/Running_Murmur) (mumble.service) + * 64738: required for the Voice Server (Mumble) + +### Integration Server [NodeRed](https://nodered.org/) (nodered.service) * 1880: required for the Integration server (NodeRed) + * 8000: WebUI communication with the Integration server diff --git a/docs/docs/Installation/Linux/Installation.md b/docs/docs/Installation/Linux/Installation.md index 429536b49..11a23c595 100644 --- a/docs/docs/Installation/Linux/Installation.md +++ b/docs/docs/Installation/Linux/Installation.md @@ -34,7 +34,7 @@ Ubuntu ```bash -sudo apt update && sudo apt upgrade +sudo apt update && sudo apt upgrade -y ```
@@ -61,8 +61,8 @@ Ubuntu ```bash -sudo apt update && sudo apt install python3 && sudo apt install python3-pip -sudo apt install python3-dev python3-setuptools build-essential python3-gevent python3-lxml libcairo2-dev +sudo apt update && sudo apt install -y python3 && sudo apt install -y python3-pip +sudo apt install -y python3-dev python3-setuptools build-essential python3-gevent python3-lxml libcairo2-dev ``` @@ -273,7 +273,7 @@ functionality is declared but not fully implemented. On the first run, a configuration wizard will help set up the config file. > :memo: **Note:** If the wizard does not appear, -> see [troubleshooting](../../Installation/Troubleshooting/troubleshooting.md). +> see [troubleshooting](../Troubleshooting/troubleshooting_faq.md). ### Using the Wizard @@ -387,7 +387,7 @@ The following items can be updated to use your own secrets, however the values must be updated in both the `FreeTAKServer-UI/config.py` and the `FreeTAKServer/core/configuration/MainConfig.py` files. -The API key used by the UI to comunicate with FTS. +The API key used by the UI to communicate with FTS. Generate a new system user and then set it. [//]: # (What does this mean?) @@ -455,7 +455,7 @@ python run.py You will see the UI server start up in your terminal, which should look similar to that shown below. -```python +```text (55501) wsgi starting up on http://0.0.0.0:5000 (55501) accepted ('192.168.1.100', 49842) ``` @@ -484,8 +484,8 @@ sudo pip install eventlet The config file will also need to be updated. ```python -IP = [FTS external IP] -APPIP = [FTS-UI internal IP] +IP = '[FTS external IP]' +APPIP = '[FTS-UI internal IP]' ``` ## 12. Check Installation diff --git a/docs/docs/Installation/Operation/.pages b/docs/docs/Installation/Operation/.pages new file mode 100644 index 000000000..333deb596 --- /dev/null +++ b/docs/docs/Installation/Operation/.pages @@ -0,0 +1,5 @@ +title: FTS Configuration + +nav: + - Configuration: fts-config.md + - Service Management: fts-service-mgmt.md diff --git a/docs/docs/Installation/Operation/fts-config.md b/docs/docs/Installation/Operation/fts-config.md new file mode 100644 index 000000000..cf12cbdab --- /dev/null +++ b/docs/docs/Installation/Operation/fts-config.md @@ -0,0 +1,22 @@ + +## Configuration + +`ZeroTouch` will have configured the system and started the services for you. +However, there are many corner cases which `ZeroTouch` may miss. + +### [Verify and/or Edit the `fts-ui` configuration file](../../administration/usingConsole.md) +```text +/usr/local/lib/python3.11/dist-packages/FreeTAKServer-UI/config.py +``` +`WEBMAPPORT` is 1880 for a `NodeRedFlow` install and `8000` for a compiled `webmap`. + +For specific instructions on validating the configuration, +see [these notes](../Troubleshooting/fts-ui-server.md). + +### [Verify and/or Edit the `fts` configuration file](../../administration/usingConsole.md) +```text +/opt/FTSConfig.yaml +``` + +For specific instructions on validating the configuration, +see [these notes](../Troubleshooting/fts-server.md). \ No newline at end of file diff --git a/docs/docs/Installation/Operation/fts-service-mgmt.md b/docs/docs/Installation/Operation/fts-service-mgmt.md new file mode 100644 index 000000000..f447cea3d --- /dev/null +++ b/docs/docs/Installation/Operation/fts-service-mgmt.md @@ -0,0 +1,26 @@ + +## Mange the FTS services + +If the `ZTI` had run it will have attempted to start the `fts` services. +As you make changes to their configurations you will need to restart them. +```bash +sudo systemctl stop fts-ui +sudo systemctl stop fts + +sudo systemctl start fts +sudo systemctl start fts-ui +``` + +Your `FTS` should now be running. + +See [troubleshooting](../Troubleshooting/troubleshooting_faq.md) for more information. + +There are other services which `ZTI` will start. +They are also managed by `systemd`. + +```bash +sudo systemctl status nodered.service +sudo systemctl status mediamtx.service +sudo systemctl status webmap.service +sudo systemctl status murmur.service +``` diff --git a/docs/docs/Installation/RaspberryPi/Installation.md b/docs/docs/Installation/RaspberryPi/Installation.md index bf3d37b85..b9bdfe9a6 100644 --- a/docs/docs/Installation/RaspberryPi/Installation.md +++ b/docs/docs/Installation/RaspberryPi/Installation.md @@ -1,84 +1,145 @@ --- -status: ood +status: current --- # Raspberry Pi -this procedure Installs FTS + UI + video Server of a Raspberry Pi +this procedure Installs FTS + UI + video Server onto a Raspberry Pi ## Hardware requirements -you need a Pi with at least 4 GB RAM +you need a RaspPi with at least 4 GB RAM ## Procedure -Need to start with new installation of ubuntu 22.04 server for pi 64 FTS 2.x need ubuntu 22.04 -[https://cdimage.ubuntu.com/releases/22.04/release/](https://ubuntu.com/download/raspberry-pi/thank-you?version=22.04.3&architecture=server-arm64+raspi) -Previous FTS versions works with 20.04 -https://cdimage.ubuntu.com/releases/20.04.4/release/ubuntu-20.04.3-preinstalled-server-arm64+raspi.img.xz - - -download an imager - - -follow the instructions to create a card with the image -![image](https://github.com/FreeTAKTeam/FreeTAKServer-User-Docs/assets/60719165/cdfbab6a-783f-4107-9d3c-ea8c1197500a) - - * insert the card into the PI 4 - * the initial setup takes ~5 minutes on a PI 4 - * login with ubuntu / ubuntu - * If the RPi is connected to your router, - when it boots it will display the IP grabbed from DHCP server. - Write it down - * OS should prompt you to create a new password - * If desired, update OS – Run: -``` -sudo apt-get update; sudo reboot -n; sudo apt-get upgrade + +### Prepare an SD Card +Start with new installation of ubuntu 22.04 server for RaspPi 64. +FTS 2.1 expects [Ubuntu 22.04 (64 bit)](https://ubuntu.com/download/raspberry-pi/thank-you?version=22.04.3&architecture=server-arm64+raspi). + +You will need an imager. + +* [Raspberry Pi Imager](https://www.raspberrypi.com/software/) (you may also use [BalenaEtcher Imager](https://www.balena.io/etcher)) + +Follow the instructions to prepare an SD card with the appropriate image. + +![](rpi-imager.png) + +The `rpi-imager` provides a means for setting an `ssh` authorized key and default `username` and `password`. + +![](rpi-imager-ssh-settings.png) +![](rpi-imager-general-settings.png) + +### Setup Hardware + + * insert the prepared SD card into the Raspberry Pi. + * connect a keyboard + * connect a monitor + * connect to an ethernet network + +### Update the OS + +The initial setup takes ~5 minutes on a RaspPi 4 +Login with `fts` / `ubuntu` (or whichever user you selected) + +If the RaspPi is connected to your router, +when it boots it will display the IP grabbed from DHCP server. +Write down the IP address, we will need it later. + +```bash +sudo apt update -y +sudo apt upgrade -y ``` - * In some cases you need to run: ```sudo apt full-upgrade``` or ```sudo apt-get dist-upgrade``` - * reboot may be needed a couple of times to get the OS completely updated -```sudo reboot -n might``` +You may be prompted during the upgrade. +Generally, accepting the defaults is appropriate. - * install wget +In some cases you need to run: +```sudo apt full-upgrade``` or ```sudo apt-get dist-upgrade```. + +It is generally easier to communicate with your server via `ssh`. +You will need the IP address (you should write the address down for later reference). +```bash +sudo apt install -y net-tools ``` -sudo apt install wget +```bash +ip addr ``` - * type or copy this string to start the [ZeroTouch](../../Installation/Ansible/ZeroTouchInstall.md) installer +Here is representative fragment from an output. +```text +2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 + link/ether d8:3a:dd:5f:27:24 brd ff:ff:ff:ff:ff:ff + inet 10.2.118.237/24 metric 100 brd 10.2.118.255 scope global dynamic eth0 + valid_lft 53818sec preferred_lft 53818sec + inet6 fe80::da3a:ddff:fe5f:2724/64 scope link + valid_lft forever preferred_lft forever ``` -wget -qO - bit.ly/freetakhub2 | sudo bash +The IP address in this case is `10.2.118.237`. +This is the same address you may have captured earlier during initial boot. + +Multiple `reboot` may be required to get the OS fully updated. +```bash +sudo reboot +``` + +From here on it should be possible to connect via `ssh`. +Here is an example with the IP address obtained previously and `fts` user. +```bash +ssh fts@10.2.118.237 +``` + +### Update Prerequisites + +Verify the following packages are installed. +```bash +sudo apt install -y wget curl ``` -in alternative use +### Run the Zero Touch Installer (ZTI) +The `ZTI` can be run in different environments, +make sure you are running it correctly or you will need to update configuration files later. + +#### [default] Cloud Server +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](../../Installation/Ansible/ZeroTouchInstall.md) installer. +```bash +wget -qO - bit.ly/freetakhub2 | sudo bash ``` +Alternate, full path. +```bash wget -qO - https://raw.githubusercontent.com/FreeTAKTeam/FreeTAKHub-Installation/main/scripts/easy_install.sh | bash ``` -> 1.9.9.5 version of Zero Touch DOES NOT install the compiled webmap. -> You will need to install the [flow version](../../FreeTAKHub/WebMap/Installation.md) - -## After installation - * ZeroTouch should configure the system and start all the services for you. - * In case the configuration need to be changed manually - * Edit the file using [VIM](../../administration/usingConsole.md) - - ``` - /usr/local/lib/python3.11/dist-packages/FreeTAKServer-UI/config.py - ``` - * Use + +#### Custom IP Address +By default, the `ZTI` guesses your IP address. +There are several ways to discover a candidate IP address, here are two (and a capture). +```bash +ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' +curl ifconfig.me/ip +export MY_IP=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}') +```` +With an appropriate IP address in hand you can run the `ZTI`. +```bash +wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --ip-addr ${MY_IP} +``` +Alternate, full path. +```bash +wget -qO - https://raw.githubusercontent.com/FreeTAKTeam/FreeTAKHub-Installation/main/scripts/easy_install.sh | sudo bash -s -- --ip-addr ${MY_IP} ``` -sudo vim /usr/local/lib/python3.11/dist-packages/FreeTAKServer-UI/config.py + +#### `ZTI` Usage + +```bash +wget -qO - bit.ly/freetakhub2 | sudo bash -s -- --help ``` - - * Or browse to that location with WinSCP and double-click on ‘config.py’ - * Change FTS IP (if necessary) = Your EXTERNAL IP (or ZeroTier IP) address for your RPi - * Leave APPIP = 0.0.0.0 - * Change WEBMAPIP (if necessary) = Your IP (or ZeroTier IP) address for your RPi - * Change WEBMAPPORT = 1880 for a NodeRedFlow install and 8000 for a compiled webmap - * Edit this file: /opt/FTSConfig.yaml - * Use command: sudo vim /opt/FTSConfig.yaml -* Or browse to that location with WinSCP and double-click on ‘FTSConfig.yaml’ -* Change FTS_DP_ADDRESS, FTS_USER_ADDRESS & FTS_API_ADDRESS = Your IP (or ZeroTier IP) address for your RPi -* Start the FTS service: - -```sudo systemctl start fts ``` - -* Start the FTS-UI service - -```sudo systemctl start fts-ui``` + +## Operation + +`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. +I recommend that you stop the fts services prior to reconfiguration. + +* [Service Management](../Operation/fts-config.md) +* [Configuration](../Operation/fts-config.md) + diff --git a/docs/docs/Installation/RaspberryPi/belena-etcher-flashing.png b/docs/docs/Installation/RaspberryPi/belena-etcher-flashing.png new file mode 100644 index 000000000..a47518eb5 Binary files /dev/null and b/docs/docs/Installation/RaspberryPi/belena-etcher-flashing.png differ diff --git a/docs/docs/Installation/RaspberryPi/rpi-imager-general-settings.png b/docs/docs/Installation/RaspberryPi/rpi-imager-general-settings.png new file mode 100644 index 000000000..a9106cb5b Binary files /dev/null and b/docs/docs/Installation/RaspberryPi/rpi-imager-general-settings.png differ diff --git a/docs/docs/Installation/RaspberryPi/rpi-imager-ssh-settings.png b/docs/docs/Installation/RaspberryPi/rpi-imager-ssh-settings.png new file mode 100644 index 000000000..36068dec9 Binary files /dev/null and b/docs/docs/Installation/RaspberryPi/rpi-imager-ssh-settings.png differ diff --git a/docs/docs/Installation/RaspberryPi/rpi-imager.png b/docs/docs/Installation/RaspberryPi/rpi-imager.png new file mode 100644 index 000000000..55b9e1c24 Binary files /dev/null and b/docs/docs/Installation/RaspberryPi/rpi-imager.png differ diff --git a/docs/docs/Installation/Tools.md b/docs/docs/Installation/Tools.md index 15d88431e..0e974ea58 100644 --- a/docs/docs/Installation/Tools.md +++ b/docs/docs/Installation/Tools.md @@ -7,21 +7,21 @@ status: ood ## Helpful Tools ### PuTTy -Allows you to remotely connect and manage your RPi. -Helpful for being able to copy/paste from this document into the RPi Terminal CLI. +Allows you to remotely connect and manage your RaspPi. +Helpful for being able to copy/paste from this document into the RaspPi Terminal CLI. 1. Download PuTTY - [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) -2. To set up: Under Host Name, enter your RPi IP address and select SSH for the Connection type +2. To set up: Under Host Name, enter your RaspPi IP address and select SSH for the Connection type ### WinSCP A GUI-type file manager. -Helpful for basic file management and understanding the RPi’s file structure. +Helpful for basic file management and understanding the RaspPi’s file structure. You can also start Putty from a WinSCP 1. Download WinSCP - [https://winscp.net/eng/download.php](https://winscp.net/eng/download.php) -2. To set up: Click New Site; select SCP for File protocol; enter RPi’s IP address for Host name; click Advanced button, select ‘Shell’ under +2. To set up: Click New Site; select SCP for File protocol; enter RaspPi’s IP address for Host name; click Advanced button, select ‘Shell’ under environment and change Shell setting from Default to ```sudo su -``` (this will allow your changes to have Root privileges) 3. Click `OK` and then `Save` (if desired) diff --git a/docs/docs/Installation/Troubleshooting/.pages b/docs/docs/Installation/Troubleshooting/.pages index fd9426afc..142a6b69d 100644 --- a/docs/docs/Installation/Troubleshooting/.pages +++ b/docs/docs/Installation/Troubleshooting/.pages @@ -1,6 +1,14 @@ title: Troubleshooting nav: - - FAQ: troubleshooting.md + - FAQ: troubleshooting_faq.md - Installation Check: InstallationCheck.md - Socket SSL Issue: SocketIssue.md + - FTS Servers: + - FTS Main Server (FTS) : fts-core-server.md + - FTS UI : fts-ui-server.md + - Web Map : fts-webmap-server.md + - 3rd Party Servers: + - Video Server: video-server.md + - Voice Server: voip-server.md + - FTS Hub (FTH) : fts-hub-server.md diff --git a/docs/docs/Installation/Troubleshooting/InstallationCheck.md b/docs/docs/Installation/Troubleshooting/InstallationCheck.md index 7ba9d3c74..c6f827871 100644 --- a/docs/docs/Installation/Troubleshooting/InstallationCheck.md +++ b/docs/docs/Installation/Troubleshooting/InstallationCheck.md @@ -12,7 +12,10 @@ Open a web browser to: default - login with your credentials - - by default is user: `admin`, password: `password` (you should promptly change the default password) + - by default is user: `admin`, password: `password` + - you should promptly change the login credentials + - [change profile password](../../administration/Web_Admin.md) , or + - [create a new user and delete `admin`](../../administration/Web_Admin.md) - check whether services are OK (blue) ![image](https://user-images.githubusercontent.com/60719165/148986287-0c83aa3f-e909-4b38-bc81-d66cddb08f89.png) - connect a client to the server @@ -34,7 +37,7 @@ Confirm the configuration (which is in `json` format): "logDestinations": [ "stdout" ], - "logFile": "rtsp-simple-server.log", + "logFile": "mediamtx-server.log", "readTimeout": "10s", "writeTimeout": "10s", "readBufferCount": 512, diff --git a/docs/docs/Installation/Troubleshooting/fts-core-server.md b/docs/docs/Installation/Troubleshooting/fts-core-server.md new file mode 100644 index 000000000..0a8fb8729 --- /dev/null +++ b/docs/docs/Installation/Troubleshooting/fts-core-server.md @@ -0,0 +1,37 @@ +--- +status: ood +--- + +# Free TAK Server : core + + +![image](../images/zero-touch-deply-default.png) + +Some of these services have a secure and a clear instance. + +The core consists of the following logical elements (with the indicated default ports): + +* API Service + * REST instance (port 19023) + * websocket instance (port 19023) +* DP Service + * SSL instance (port 8443) + * Clear instance (port 8080) +* Federation Service + * Clear instance (port 9000) +* CoT Service + * SSL instance (port 8089) + * Clear instance (port 8087) + +## API Service + + +## DP Service + + +## Federation Service + + +## CoT Service + + diff --git a/docs/docs/Installation/Troubleshooting/fts-hub-server.md b/docs/docs/Installation/Troubleshooting/fts-hub-server.md new file mode 100644 index 000000000..eac31e6c3 --- /dev/null +++ b/docs/docs/Installation/Troubleshooting/fts-hub-server.md @@ -0,0 +1,37 @@ +--- +status: ood +--- + +# Integration Server + + +![image](../images/zero-touch-deply-default.png) + +The integration server is [NodeRed]() + +1. Instructions here: +2. Use command: `bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)` + * Select `Y` to continue and `Y` to install Pi specific nodes + * For additional settings, you can run the command: `node-red admin init` +3. Enable Node Red service: + * Use command: sudo systemctl enable nodered.service +4. Run Node Red service: + * Use command: sudo node-red-start +5. Login to Node Red at `:1880` +6. Check to see if you have tabs for Webmap and FTH Video Checker Flows in Node Red + 1. If not, go to: + 2. Click the copy button on the right side of the line to copy the raw contents of WebMap.json to your clipboard + 3. Go back to your Node Red and click the Hamburger menu icon (right upper corner) and select Import + 4. Paste the raw contents here and click import + 5. If you get an error about missing “world map, world map in & config” + 1. Click Hamburger menu and select Manage palette + 2. Select install and search for “node-red-contrib-web-worldmap” and click install + 3. Click back in search field and search for “node-red-contrib-config” and click install +7. In Node Red WebMap flow tab: +8. Select the FTH Global Config node and update the FTH_FTS_URL and FTH_FTS_VIDEO_URL fields with your IP (or ZeroTier) address + * Select the Post CoT to FTS node and update the “bearer authentication” Token field with ‘’ +9. Click DEPLOY in upper right corner of Node Red to save settings +10. You should now get green “connected” indicators under one or all these nodes: FTS Server, TAK Map, tak-map & event +11. Confirm that the flow is working by logging back into the FTS Web UI: `:5000` and click on the WebMap tab. + Now you should see the world map displayed + diff --git a/docs/docs/Installation/Troubleshooting/fts-server.md b/docs/docs/Installation/Troubleshooting/fts-server.md new file mode 100644 index 000000000..aca50ec39 --- /dev/null +++ b/docs/docs/Installation/Troubleshooting/fts-server.md @@ -0,0 +1,43 @@ +--- +status: ood +--- + +# Free TAK Server : core + +![image](../images/zero-touch-deply-default.png) + +## Zero Touch Installer + +`ZeroTouch` makes assumptions configuring the system. +However, there are many corner cases which `ZeroTouch` may miss. +For example, `ZTI` acquires the IP address by, effectively using: +```bash +curl http://ifconfig.me/ip +``` +In many environments this produces the desired result. +In cases, not on the public internet, this result will be incorrect. +The following is more likely to be what you want. +```bash +ip addr +``` + +Validate the properties set in the `fts-ui` configuration file. + +[Verify and/or Edit the `fts` configuration file](../../administration/usingConsole.md) +``` +/opt/FTSConfig.yaml +``` +Here is a fragment of that configuration file. +```yaml +Addresses: + FTS_COT_PORT: 8087 + FTS_SSLCOT_PORT: 8089 + FTS_DP_ADDRESS: 127.0.0.1 + FTS_USER_ADDRESS: 127.0.0.1 + FTS_API_PORT: 19023 + FTS_FED_PORT: 9000 + FTS_API_ADDRESS: 127.0.0.1 +``` +Adjust `FTS_DP_ADDRESS`, `FTS_USER_ADDRESS` & `FTS_API_ADDRESS` +to reflect your IP (or ZeroTier IP) address. + diff --git a/docs/docs/Installation/Troubleshooting/fts-ui-server.md b/docs/docs/Installation/Troubleshooting/fts-ui-server.md new file mode 100644 index 000000000..e09d263c2 --- /dev/null +++ b/docs/docs/Installation/Troubleshooting/fts-ui-server.md @@ -0,0 +1,70 @@ +--- +status: ood +--- + +# Free TAK Server User Interface + +The `WebUI` is typically under the control of `systemd` as `fts-ui.service`. + +![image](../images/zero-touch-deply-default.png) + + +The `FTS-UI` communicates with +the [FTS](fts-core-server.md) and +the [FTH](fts-hub-server). + +## Inbound Connection (in port 5000) + +(port 5000) + +## API Service Connection (websocket port 19023) + + +## Integration Connection (websocket port 8000) + + + +## Zero Touch Installer (`ZTI`) + +`ZeroTouch` makes assumptions configuring the system. +However, there are many corner cases which `ZeroTouch` may miss. +For example, `ZTI` acquires the IP address by, effectively using: +```bash +curl http://ifconfig.me/ip +``` +In many environments this produces the desired result. +In cases, not on the public internet, this result will be incorrect. +The following is more likely to be what you want. +```bash +ip addr +``` + +Validate the properties set in the `fts-ui` configuration file. + +[Verify and/or Edit the `fts-ui` configuration file](../../administration/usingConsole.md) +``` +/usr/local/lib/python3.11/dist-packages/FreeTAKServer-UI/config.py +``` +Here is a sample fragment of that file. +```python +class Config(object): + + # this IP will be used to connect with the FTS API + IP = '127.0.0.1' + + # the public IP your server is exposing + APPIP = '0.0.0.0' + + # The IP the Web UI service will use to access the Webmap service + WEBMAPIP = '127.0.0.1' + + # The TCP port the Web UI service will use to access the Webmap service + WEBMAPPORT = 1880 + +``` +`ZTI` sets the `IP` and `WEBMAPIP` to your externally known IP address. +If you are not on a public network this will need to be adjusted. + +`WEBMAPPORT` is 1880 for a `NodeRedFlow` install +and `8000` for a compiled `webmap`. + diff --git a/docs/docs/Installation/Troubleshooting/mediamtx.service b/docs/docs/Installation/Troubleshooting/mediamtx.service new file mode 100644 index 000000000..3a5cd9325 --- /dev/null +++ b/docs/docs/Installation/Troubleshooting/mediamtx.service @@ -0,0 +1,10 @@ +[Unit] +After=network.target + +[Service] +StandardOutput=append:/var/log/mediamtx/mediamtx-stdout.log +StandardError=append:/var/log/mediamtx/mediamtx-stderr.log +ExecStart=/opt/mediamtx/rtsp-simple-server /opt/mediamtx/rtsp-simple-server.yml + +[Install] +WantedBy=multi-user.target diff --git a/docs/docs/Installation/Troubleshooting/troubleshooting.md b/docs/docs/Installation/Troubleshooting/troubleshooting_faq.md similarity index 99% rename from docs/docs/Installation/Troubleshooting/troubleshooting.md rename to docs/docs/Installation/Troubleshooting/troubleshooting_faq.md index be37d4244..cbe182873 100644 --- a/docs/docs/Installation/Troubleshooting/troubleshooting.md +++ b/docs/docs/Installation/Troubleshooting/troubleshooting_faq.md @@ -101,7 +101,7 @@ Cause: the certs are duplicated on your machine This has been observed on `ATAK` 4.7 + and `WinTAK` for functions that requires both encrypted TCP and SSL connections. The `ExCheck` plugin is an example of that. -the main symptom on the client is that the connection to the server fails (for specific functions). +The main symptom on the client is that the connection to the server fails (for specific functions). This is NOT a FTS issue, it's provoked by the way `ATAK` stores certificates. ### Workaround `ATAK` diff --git a/docs/docs/Installation/Troubleshooting/video-server.md b/docs/docs/Installation/Troubleshooting/video-server.md new file mode 100644 index 000000000..a2a936558 --- /dev/null +++ b/docs/docs/Installation/Troubleshooting/video-server.md @@ -0,0 +1,107 @@ +--- +status: ood +--- + +# Video Server (third party application) + + +![image](../images/zero-touch-deply-default.png) + +The video server is a third party application. + +The video server is [Media MTX](https://github.com/bluenviron/mediamtx) (previously known as `rtsp-simple-server`. + +## Known Issues + +It may be that your problem may be related to a known issue. +Please, check the known issues. + +* [Open Issues](https://github.com/FreeTAKTeam/FreeTAKHub_VideoChecker/issues) +* [Bugs](https://github.com/FreeTAKTeam/FreeTAKHub_VideoChecker/labels/bug) + + +## Acquire the Appropriate Version + +Different versions exist depending on the type of RaspPi you are using. +Instructions below are for RaspPi 4, having an ARM64 v8 processor. + +This example uses a specific version verified for use with `FTS`, +vis. . + +```bash +wget https://github.com/bluenviron/mediamtx/releases/download/v0.18.5/rtsp-simple-server_v0.18.5_linux_arm64v8.tar.gz +``` + +Extract the application into a suitable directory, e.g. `/opt`. +```bash +sudo mkdir -p /opt/mediamtx +sudo tar -zxvf rtsp-simple-server_v0.18.5_linux_arm64v8.tar.gz -C /opt/mediamtx/ +``` + +Edit the configuration file `/opt/mediamtx/rtsp-simple-server.yml`. +The following shows the fragments of interest, before editing. +```yaml +# Enable the HTTP API. +api: no +# Address of the API listener. +apiAddress: 127.0.0.1:9997 + +# Encrypt handshake and TCP streams with TLS (RTSPS). +# Available values are "no", "strict", "optional". +encryption: "no" +# Address of the TCP/RTSP listener. This is needed only when encryption is "no" or "optional". +rtspAddress: :8554 +# Address of the TCP/TLS/RTSPS listener. This is needed only when encryption is "strict" or "optional". +rtspsAddress: :8322 +``` +* Enable the HTTP API +* Set the listener's address to the RaspPi's IP address (or ZeroTier) + +Here is an example with the relevant properties after updates (in context). +```yaml +# Enable the HTTP API. +api: yes +# Address of the API listener. +apiAddress: 10.2.118.237:9997 + +# Encrypt handshake and TCP streams with TLS (RTSPS). +# Available values are "no", "strict", "optional". +encryption: "no" +# Address of the TCP/RTSP listener. This is needed only when encryption is "no" or "optional". +rtspAddress: 10.2.118.237:8554 +# Address of the TCP/TLS/RTSPS listener. This is needed only when encryption is "strict" or "optional". +rtspsAddress: :8322 +``` + +## Smoke Test (is it running?) + +* https://github.com/FreeTAKTeam/FreeTAKHub-Installation/blob/main/roles/videoserver/templates/rtsp-simple-server.service.j2 + +```text +{!Installation/Troubleshooting/mediamtx.service!} +``` + +Put the `mediamtx.service` file in `/etc/systemd/system/mediamtx.service`. +```bash +sudo systemctl daemon-reload +sudo systemctl enable mediamtx.service +sudo systemctl start mediamtx.service +``` + +## Integrate Media Server with Integration Server + +This presumes the prior installation of [`NodeRed`](fts-hub-server). + +The integration server is configured with the `video-checker` via a `JSON` file. +`NodeRed` provides . + + + +* +* + +## Connect a Client (ICU and/or drone) to Video Server + +* Receive the CoT notification in TAK client (`WinTAK` and `ATAK`) +* Use notification to start video (`WinTAK` and `ATAK`) + diff --git a/docs/docs/Installation/Troubleshooting/voip-server.md b/docs/docs/Installation/Troubleshooting/voip-server.md new file mode 100644 index 000000000..39db60030 --- /dev/null +++ b/docs/docs/Installation/Troubleshooting/voip-server.md @@ -0,0 +1,10 @@ +--- +status: ood +--- + +# Chat Server + + +![image](../images/zero-touch-deply-default.png) + + diff --git a/docs/docs/Installation/Troubleshooting/webmap-server.md b/docs/docs/Installation/Troubleshooting/webmap-server.md new file mode 100644 index 000000000..8dc8e554f --- /dev/null +++ b/docs/docs/Installation/Troubleshooting/webmap-server.md @@ -0,0 +1,27 @@ +--- +status: current +--- + +# WebMap Installation + +![image](../images/zero-touch-deply-default.png) + +Some versions of the `Zero Touch Installer` do not install the compiled `webmap`. + +In those cases you will need to install the [flow version](../../FreeTAKHub/WebMap/Installation.md). + +The WebMap is similar in function to `WebTAK`. + + +Web Team Awareness Kit (WebTAK) +: [A web-based interface which allows users to type in the website for a specific TAK server +(configured to support WebTAK) was recently developed. +The primary use of WebTAK is to provide quick access to data collected +in the TAK server to enable situational awareness to be shared and avoid having to install TAK clients +(i.e. `ATAK`, `WinTAK`, `iTAK`) on hardware.](https://www.dhs.gov/sites/default/files/publications/tactical_awareness_kit_508.pdf) + +* [Press Release](https://www.draper.com/news-releases/us-inaugurations-military-units-used-draper-developed-webtak-communications) +* [Video](https://vimeo.com/433760943) + + + diff --git a/docs/docs/Installation/Windows/FreeTAKServer_Windows_Install.md b/docs/docs/Installation/Windows/FreeTAKServer_Windows_Install.md index d1ab39bbc..fee1240b8 100644 --- a/docs/docs/Installation/Windows/FreeTAKServer_Windows_Install.md +++ b/docs/docs/Installation/Windows/FreeTAKServer_Windows_Install.md @@ -25,14 +25,14 @@ FreeTAKServer provides Situational Awareness and other capabilities such as: - Data Package upload and retrieval - Private data package (user to user) - Image transfer and storage -- COT recording in a database -- Execution of common task list (using the ExCheck plugin for `WinTAK`; `ATAK` plugin only available to users with `takmaps.com` access) +- CoT recording in a database +- Execution of common task list (using the `ExCheck` plugin for `WinTAK`; `ATAK` plugin only available to users with `takmaps.com` access) - User Management - Command Line Interface - REST API for creation of information such as emergency, Enemy units and so on -the preferred way to install FTS is by using Pip, that would solve all the required dependencies. -the offline release requires additional manual work and has to be used +The preferred way to install FTS is by using Pip, that would solve all the required dependencies. +The offline release requires additional manual work and has to be used only in the cases where internet connection is not available. ----------- @@ -194,7 +194,7 @@ and paste a copy of your `StartFreeTAKServer.bat` file there. ## ERRORS -COT error v1.5.13 +CoT error v1.5.13 ![](CotError.png) diff --git a/docs/docs/Installation/images/zero-touch-deploy.png b/docs/docs/Installation/images/zero-touch-deploy.png deleted file mode 100644 index 0988b8270..000000000 Binary files a/docs/docs/Installation/images/zero-touch-deploy.png and /dev/null differ diff --git a/docs/docs/Installation/images/zero-touch-deply-default.png b/docs/docs/Installation/images/zero-touch-deply-default.png new file mode 100644 index 000000000..006b0fa46 Binary files /dev/null and b/docs/docs/Installation/images/zero-touch-deply-default.png differ diff --git a/docs/docs/Usage/Connecting_ATAK.md b/docs/docs/Usage/Connecting_ATAK.md index 17838828a..757834cb2 100644 --- a/docs/docs/Usage/Connecting_ATAK.md +++ b/docs/docs/Usage/Connecting_ATAK.md @@ -38,6 +38,7 @@ This configuration includes `fts-offical-pub.pref`: #### Download maps (optional) There are places where you may acquire `ATAK` maps. Representative place are: + * [ATAK-Maps](https://github.com/joshuafuller/ATAK-Maps) * [reddit `ATAK` MapSources](https://www.reddit.com/r/ATAK/wiki/index/#wiki_loading_mapsources_.2F_base_maps_to_tak) * [CivTAK Files](https://www.civtak.org/files/) diff --git a/docs/docs/Usage/ExCheck.md b/docs/docs/Usage/ExCheck.md index 4c5933dca..e2a0687f5 100644 --- a/docs/docs/Usage/ExCheck.md +++ b/docs/docs/Usage/ExCheck.md @@ -2,19 +2,20 @@ status: current --- -ExCheck - -**ExCheck** is a plugin for `ATAK` and `WinTAK`. +# ExCheck +`ExCheck` is a plugin for `ATAK` and `WinTAK`. It allows users to collaborate on the execution and monitoring of tasks based on templates. -To use ExCheck, you need to have a server that supports it. -FTS supports the plugin since version 1.3. Version 1.5 supports also ExCheck in the WebUI +To use `ExCheck`, you need to have a server that supports it. +FTS supports the plugin since version 1.3. +Version 1.5 supports also `ExCheck` in the WebUI. ## `WinTAK` -in `WinTAK` (since version 4.1) you can find the plugin as ExCheck under the plugin tab. +in `WinTAK` (since version 4.1) you can find the plugin as `ExCheck` under the plugin tab. On the top of the window you will see two buttons. A list of active checklists shows up below them. with the buttons You can: + - create a new Template - create a new template based on an existing one - Join active checklist @@ -22,9 +23,9 @@ with the buttons You can: ### create a new Template -You need to define a name , a description and at least a task, to be able to save the template. +You need to define: a name, a description, and at least a task, to be able to save the template. +Standard columns can be modified or deleted, -standard columns can be modified or deleted, - No: sequence of the task - Description: name of the task - Req. : this step is required to complete the checklist (???) @@ -36,6 +37,7 @@ standard columns can be modified or deleted, - Due relative DTG: the timing of the competition of the task required field after that you have created a task you can right-click the hamburger menu (the 3 lines) to the left to: + - Delete the task - add some background color - Toggle linebreak: allows to create a block of tasks diff --git a/docs/docs/administration/Web_Admin.md b/docs/docs/administration/Web_Admin.md index 8a2ef4539..7f5450b77 100644 --- a/docs/docs/administration/Web_Admin.md +++ b/docs/docs/administration/Web_Admin.md @@ -26,8 +26,8 @@ FreeTAKServer, as of Release 1.9, provides Situational Awareness and other capab - Data Package upload and retrieval - Private data package (user to user) - Image transfer and storage -- COT recording in a database -- Execution of common task list (using the ExCheck plugin for `WinTAK`; `ATAK` plugin only available to users with access) +- CoT recording in a database +- Execution of common task list (using the `ExCheck` plugin for `WinTAK`; `ATAK` plugin only available to users with access) - SSL Encryption - User Management - REST API for creation of information such as emergency, Enemy units and so on @@ -196,7 +196,7 @@ part of the FreeTAKHub concept (see f ![](https://lh6.googleusercontent.com/Zjv0YMGv5Jg-S4qDHQkPm0ZiJuOjAAGJuZqSs1pRqwgTrLzaXInNp6ooqIlJOHfqCJO50DeaeW4yjXhPjzZjYx1XU5vuGZf3fUaOJTKkXdjaGw6p2vNhdETg2GwB8y9AmUSgSJWWlai4cZVp5-PW) The webmap is a partial TAK client only. -It displays all the connected clients and the COT sent from the moment in which it connects. +It displays all the connected clients and the CoT sent from the moment in which it connects. Clicking on another tab closes the webmap, no memory of past events is kept. @@ -224,7 +224,7 @@ Following functions are also available: - Delete an existing Marker ![](https://lh6.googleusercontent.com/KhEYmzHfYzow75H-IkCAgdIJcYZUrmhoaehvSeGZM3Fya6l4MV7w-9_4AwL1IsvpJ2cqINnuZ6wQG2hAE5JNucaJc17fJe210qA4zX35gTe9IOSlvryPI7O_ZzibBXW7WE2dkzTn-iAHeprMlt8e) -- Search COT by name +- Search CoT by name ![](https://lh4.googleusercontent.com/sYR-yciATcpnkoflgmKxg-M80wgTQOyr4-bUInTU48Ml5xYAx4VavoIVqAZimEmh6CGhyi2iELraPqnFvyRZMJ705z2dqUixKjnG3YeerW20OCqvCS3UH5MlSBN9ln7pUIBuK3eUO8NNJ21FQY0i) - Search geolocation ![](https://lh5.googleusercontent.com/wnkwf61BbfoHw74DMnjEymWyVfHEOawm9nFS8KMPHOSpUarIEkN7g45lClK4gixsfIUoaqLnp2b_YVKFxyeBhzMi-bd_T5wu6-PDh2XjmbyleCIraLdvxzVW_k_tzw_XrwCkixxEHbZ3xJgZAbhL) @@ -234,7 +234,7 @@ Following functions are also available: -- Filter COTs by type (each COT type is placed in a layer) +- Filter CoT's by type (each CoT type is placed in a layer) ![](https://lh3.googleusercontent.com/cC2GJQ7lLKOLp-aqpuWeeglG3KN5U5Wyrh4TbguXO5-_KeHP-O_bntfrSjzeXvO84yAayek9gdvY95ef8no179kqO97p0MtA9-HCUzgviFahBBj9N7J2VJHNLCSuyfTmJluUz5eMUsOzRqMLkCrj) @@ -268,14 +268,14 @@ You can change this size in the UI configuration `[UIInstallation]/UI/app/__init ![](https://lh3.googleusercontent.com/04gIddsk_djteM76jBQUht3DbW3rBqCyq9pdDdrBvVBix2y525OUS61fM_wJp63UvmpKykwsVTdPq-PMKxI1TjsX_ql4EGidVVlimajIypiBhfNjeYIR5srzvpgtG-lxGkhKsEJX3HC70I4gS8kQ) For future development,currently non-functional. -Will allow users to share data packages, CoTs and ExCheck lists with others, organized in "missions". +Will allow users to share data packages, CoTs and `ExCheck` lists with others, organized in "missions". Still under development as of this version of FTS (V 1.9). -## 4.3 ExCheck +## 4.3 `ExCheck` -ExCheck allows users to collaborate on the execution and monitoring of tasks based on templates. -To use ExCheck, you need to have a server that supports it. +`ExCheck` allows users to collaborate on the execution and monitoring of tasks based on templates. +To use `ExCheck`, you need to have a server that supports it. FTS supports the plugin since version 1.3. See this article for an example of how to use it: @@ -294,7 +294,7 @@ The uploaded template must be valid in an XML format. ## 4.4 Federation The federation function allows FTS to connect to another server -of the TAK family and exchange information such as COT and chats. +of the TAK family and exchange information such as CoT and chats. The current implementation (1.9) does not allow sending Data packages and Missions yet. @@ -318,13 +318,19 @@ and upload it to the Legacy TAK server you want to federate to. Here one can see the status of federated servers the current instance connects to, as well as deleting, editing and adding news ones. -- **Add**: Pressing the "Add" button will open an extension of the window. In the correct slots, fill out the pertinent information (Name, IP Address, and Port). Additionally, you can add a fallback (backup) server, by enabling or disabling the option. In the current version (1.5 this is not yet active) Press submit once finished. +- **Add**: Pressing the "Add" button will open an extension of the window. + In the correct slots, fill out the pertinent information (Name, IP Address, and Port). + Additionally, you can add a fallback (backup) server, by enabling or disabling the option. In the current version (1.5 this is not yet active) Press submit once finished. - **In the event the status remains disabled it is likely there was an error in the creation of your federation, the associated error message can be found in the farthest right most column of your federation** (you may need to scroll to the right to see it). + **In the event the status remains disabled it is likely there was an error in the creation of your federation, + the associated error message can be found in the farthest right most column of your federation** + (you may need to scroll to the right to see it). ![](https://lh4.googleusercontent.com/FvjUytbqpAGGaVmquJAKW1-OwEmCYqXXwTRpwoyUm_sxDb8MJDoiC18OKN3qDkmJROWOx22GlA-ZxS1yIoiUYl6xeUW6p47dJyMRWM53QgV2F_9MKHMZQ5duISQgQrFBWPxHZ3ZitAlLiHm47JSc) -- **Editing:** When selecting the desired server, a new button labeled "editing" will appear next to "delete" (bottom right of panel). Pressing this will enter the information of the selected server in the otherwise blank fields. Information can now be edited to desired values. +- **Editing:** When selecting the desired server, a new button labeled "editing" will appear next to "delete" (bottom right of panel). + Pressing this will enter the information of the selected server in the otherwise blank fields. + Information can now be edited to desired values. - **Delete:** This can be done by selecting the undesired federation and then clicking on "delete" (bottom right) @@ -335,17 +341,22 @@ Allows the user to add or delete System Users and edit user group permissions. ## 5.1 System users -This panel shows all of the registered users of the UI and allows the user to add and delete users. A System User, other than an anonymous one is associated with a group, a Token for API, a password that can be used to login into the ui and finally certificates allowing to securely connect to FTS +This panel shows all the registered users of the UI and allows the user to add and delete users. +A System User, other than an anonymous one is associated with a group, a Token for API, +a password that can be used to log in into the ui and finally certificates allowing to securely connect to FTS ![](https://lh3.googleusercontent.com/8Kc5YIl0k_F72yhnFNtS5WNa9j-z_sWqWGewUKoR6yRhNKqN1MqsqGDS8qcgZwrJpgoR-q4JXq8r6iZm7Whjdwmrd5R_4hxQLmDqb_FLhYTS9ihEKHIB3cPqmQwiJYq2gSrMEEJePbTebxeMO9VP) -- **Add:** This can be done by clicking on the "add" button (bottom right of panel). An extension will appear, with empty fields for the new user’s name, group, token and password. +- **Add:** This can be done by clicking on the "add" button (bottom right of panel). + An extension will appear, with empty fields for the new user’s name, group, token and password. - **Name**: name of the created user. For the certs deployment to work must be the same as a connected user (see below) - **Group**: group of individuals this user belong to (team a, team b, team c) - - **Token**: gives a unique combination that this user can leverage for the FTS REST API. NOTICE: the field token is for any alphanumeric string. the prefix 'bearer' is NOT part of the token. The name "_Bearer authentication_" can be understood as "give access to the bearer of this token." + - **Token**: gives a unique combination that this user can leverage for the FTS REST API. + NOTICE: the field token is for any alphanumeric string. the prefix 'bearer' is NOT part of the token. + The name "_Bearer authentication_" can be understood as "give access to the bearer of this token." - **Password**: unique password that can be used for interact with the FTS @@ -355,7 +366,7 @@ This panel shows all of the registered users of the UI and allows the user to ad - `ATAK` - `iTAK` - - TAK Tracker + - `TAK Tracker` in alternative selecting desktop will generate and push a certificate for `WinTAK` Once the fields have been filled, simply press submit to add a new user. @@ -432,7 +443,7 @@ fill out the fields with the desired values. - **Name:** geoObject name that will display on map - **Longitude/Latitude:** Determines where the object will appear -- **Attitude:** Sets the colour and external shape (and thus faction) of the geoObject based on MilSTD 2525D +- **Attitude:** Sets the colour and external shape (and thus faction) of the geoObject based on MIL-STD-2525D - **GeoObject:** Changes the shape and type of the object (ex: sniper, grenadier) - **Timeout:** The length of time the object appears, measured in seconds @@ -486,8 +497,8 @@ sudo python3 -m FreeTAKServer.controllers.services.FTS -DataPackageIP 204.48.30. FTS supports following services: -- **TCP COT**: used when a client connects with regular TCP -- **SSL COT**: used when a client connects with an encrypted channel +- **TCP CoT**: used when a client connects with regular TCP +- **SSL CoT**: used when a client connects with an encrypted channel - **HTTP DP**: Data package function over HTTP - **SSL DP**: Data package function over an encrypted channel - **API:** the Public REST API. Allows to send data over REST for integration with other systems. If deactivated some function of the WebUI will not work diff --git a/docs/docs/administration/usingConsole.md b/docs/docs/administration/usingConsole.md index 577ac57df..6532fe6d0 100644 --- a/docs/docs/administration/usingConsole.md +++ b/docs/docs/administration/usingConsole.md @@ -3,16 +3,17 @@ status: ood --- # Unix Console -## hot to edit the Config Files -the suggested way to edit Configuration files is by using [WinSCP](../Installation/Tools.md), -however if you need to edit files in the console you need to use `vim`. +## how to edit the Config Files +The suggested way to edit Configuration files is by using [WinSCP](../Installation/Tools.md). +However, if you need to edit files in the console you need to use `vim`. * Open a console * go to ```cd /usr/local/lib/python3.8/dist-packages/FreeTAKServer-UI/app``` * type ```ls``` to see the list of files * type ```vim __init__.py``` - * To go into write mode type 'i'. - * do your edits - * to exit from insert mode by pressing the Esc key. - * To write a command first type semicolon ( : ) and then type the command wq! or x! (both do the same thing) - * hit ENTER. + * To go into write mode type 'i'. + * do your edits + * to exit from insert mode by pressing the Esc key. + * To write a command type semicolon + and then type the command `:wq!` or `:x!` (both do the same thing) + * hit ENTER (to save and exit). diff --git a/docs/docs/index.md b/docs/docs/index.md index a4b44404a..abc8b533f 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -15,7 +15,7 @@ provides Situational Awareness and other capabilities such as: - Federation Service (Connecting two or more FTS instances) - Data Package upload and retrieval - Image transfer and storage -- COT recording in a database +- CoT recording in a database - Data Sync / Mission Planning - Execution of common task lists (using the `ExCheck` plugin for `WinTAK`; `ATAK` plugin only available to users with tak.gov access) - SSL Encryption diff --git a/docs/docs/tools/FreeTAKMumla.md b/docs/docs/tools/FreeTAKMumla.md index 70688ed3e..b86f44c70 100644 --- a/docs/docs/tools/FreeTAKMumla.md +++ b/docs/docs/tools/FreeTAKMumla.md @@ -4,7 +4,7 @@ status: current # FreeTAKMumla Plugin An `ATAK` plugin that creates a button overlay for PPT. -Requires [Mumla](https://play.google.com/store/apps/details?id=se.lublin.mumla) android app to work. +Requires a [Mumla](https://wiki.mumble.info/wiki/Mumla) android app to work. ## Requirements the FreeTAKMumla Plugin for `ATAK` requires that: @@ -16,15 +16,15 @@ the FreeTAKMumla Plugin for `ATAK` requires that: * Download and install Mumla * Connect to your [murmur](../FreeTAKHub/Voice/VoiceServer.md) server * set the microphone to work with Push-to-Talk -* Download the [Mumla plugin](https://github.com/FreeTAKTeam/FreeTAKMumla_Plugin/releases) on your local windows machine +* Download the [Mumla plugin](https://github.com/FreeTAKTeam/FreeTAKMumla_Plugin/releases) on your local `Windows` machine * start `WinTAK` and use the `ATAK` Manager to create a new device configuration -![image](https://user-images.githubusercontent.com/60719165/159173419-7574310c-71b2-41dd-b33a-5e570eed4e56.png) +![image](images/wintak-atak-mgr-device-profiles-menu.png) * connect your Android device to the PC * as soon the phone is recognized export the configuration to the device -![image](https://user-images.githubusercontent.com/60719165/159173473-c5598f90-168f-4fec-bd6a-f25da345fff0.png) +![image](images/wintak-export-profile-to-atak.png) * `ATAK` will ask if you want to load the plugin, at this point you will see a Microphone diff --git a/docs/docs/tools/images/wintak-atak-mgr-device-profiles-menu.png b/docs/docs/tools/images/wintak-atak-mgr-device-profiles-menu.png new file mode 100644 index 000000000..4073bdbd2 Binary files /dev/null and b/docs/docs/tools/images/wintak-atak-mgr-device-profiles-menu.png differ diff --git a/docs/docs/tools/images/wintak-export-profile-to-atak.png b/docs/docs/tools/images/wintak-export-profile-to-atak.png new file mode 100644 index 000000000..3ea6b92ee Binary files /dev/null and b/docs/docs/tools/images/wintak-export-profile-to-atak.png differ diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index f20aae4b0..3bcedcbba 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -7,6 +7,7 @@ theme: # https://squidfunk.github.io/mkdocs-material/ # https://github.com/squidfunk/mkdocs-material/README.md name: 'material' + custom_dir: 'overrides' favicon: 'assets/FTS_Circle.png' logo: 'assets/FTS_Circle.png' features: diff --git a/docs/overrides/main.html b/docs/overrides/main.html new file mode 100644 index 000000000..b9ce2ab02 --- /dev/null +++ b/docs/overrides/main.html @@ -0,0 +1,7 @@ +{% extends "base.html" %} + +{% block htmltitle %} + FTS Documentation +{% endblock %} + +