Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Download

...

the

...

Uplink Gateway package from here.

Table of Contents

Windows Installation

  1. Install Docker Desktop for Windows.

  2. Download and unzip the Gateway package.

  3. Open Powershell and go to your working directory.

  4. If your system has Windows Subsystem for Linux

...

Unzip the package and run ./docker_install.sh script

...

Create the access tokens:

  1. Log in to the web client and go to the Cameras page

  2. Click Add camera > Uplink

  3. Enter the camera name, camera Onvif username, and password and click Apply

  4. Copy and save the access token to the file (see step 3).

...

Code Block
ACCESS_TOKEN_1=eyJjYW1pZCI6IDEyMzQ1NiwgInVwbGluayI6ICJkZXYtYXBpLnByb3h5LmNsb3VkLXZtcy5jb20ifQo=
ACCESS_TOKEN_2=eyJjYW1pZCI6IDEyMzQ1NiwgInVwbGluayI6ICJkZXYtYXBpLnByb3h5LmNsb3VkLXZtcy5jb20ifQo=
...

...

Code Block
CAMERA_IP_ADDRESS_1=192.168.2.14
CAMERA_RTSP_PORT_1=554
CAMERA_HTTP_PORT_1=80
CAMERA_IP_ADDRESS_2=192.168.2.16
CAMERA_RTSP_PORT_2=554
CAMERA_HTTP_PORT_2=80
...

This file contains IP addresses, RTSP and HTTP ports for cameras (up to 16). Each parameter should be on a separate line. RTSP and HTTP ports are optional and if you skip them then the default ports will be used (RTSP: 554, HTTP: 80).

...

Run ./start.sh script - the cameras should start streaming and you should see the live video in the web client.

You can check the status and logs of the container by using the following commands

Code Block
docker ps
docker logs <container-id>

Windows

  1. Install WSL2 on your Windows device: https://learn.microsoft.com/en-us/windows/wsl/install

  2. Install Docker Desktop on Windows device: https://docs.docker.com/desktop/install/windows-install/

  3. Open your WSL terminal in Windows and navigate to the directory where you extracted the gateway package. Continue with the same steps as in the Linux section(WSL) or Git installed you can start the application using the start script.

    Code Block
    ./start.sh

    Otherwise, run the following commands in Windows Powershell from the Gateway package directory.

    Code Block
    .\start.bat
  4. The Gateway should now be accessible from the address localhost:80 or <device-ip>:80

You should see the container running in your Docker Desktop

...

  1. Disable Windows automatic service detection

...

Linux Installation

  1. Download and unzip the Gateway package.

  2. Install Docker Engine and Docker Compose.

  3. Run the Gateway using the start script.

    Code Block
    ./start.sh

    The script should automatically detect your system’s architecture.
    If you have issues with this, the script can be run in the following was to enforce a specific architecture.

    Code Block
    # For x64 arch
    ./start.sh x64
    
    # For arm64 arch
    ./start.sh arm64
  4. The Gateway should now be accessible from the address localhost:80 or <device-ip>:80

Adding Gateway to the Cloud

  1. Navigate to 127.0.0.1 or <device-ip>, login with username: admin, password: admin, then navigate to the settings page and copy the Gateway ID.

    image-20240416-162323.pngImage Added

  2. Navigate to the Gateways tab in the Web Client and add the gateway using the UUID.

...

The status of the gateway can be checked in the Gateways page on Cloud One.

...

Clicking Gateway UI should open a new tab and redirect to the Gateway login page.

If this does not happen, there is an issue with the connection.

Adding Cameras

  1. Navigate to the Gateway tab in Cloud One and select the gateway you would like to add a camera to.

    Screenshot from 2024-03-13 16-09-57.pngImage Added

  2. Select the ‘Add Camera To Gateway’ button and fill out the camera information form.

    Screenshot from 2024-03-13 16-10-08.pngImage Added

    Screenshot from 2024-03-13 16-18-14.pngImage Added

    Screenshot from 2024-03-13 16-18-23.pngImage Added

  3. Camera will now have been added to the gateway and cloud one and the camera can be viewed in Gateway’s camera page as well as the Cameras tab.

How to Stop Gateway

  1. Execute the stop script.
    Linux

    Code Block
    ./stop.sh

    Windows

    Code Block
    .\stop.bat

How to Update Gateway

Local Update

  1. Ensure that the old version of Gateway is running.

  2. Navigate to the extracted folder of the new version of the Gateway.

  3. Execute the script update.sh by providing the old Gateway directory and new Gateway directory.
    Linux

    Code Block
    ./update.sh -orig <path_to_old_version_directory> -dest <path_to_new_version_directory>

    Windows

    Code Block
    .\update.bat -orig <path_to_old_version_directory> -dest <path_to_new_version_directory>

Remote Update

Note that this requires an SSH Server to be installed on the Gateway’s Host system.

  1. Get service information of the gateway’s connection.
    Curl

    Code Block
    curl --location 'https://<UPLINK SERVICE URL>/api/device/<CAMERA_ID FROM GATEWAY ACCESS TOKEN>' --header 'Authorization: Bearer <UPLINK SERVICE PASSWORD>'

    Response

    Code Block
    {"camid": "3045", "proxy_id": "b4d185e7efdfa0f4ce01", "forwards": [{"name": "camera-gateway-http", "protocol": "http", "host": "127.0.0.1", "port": 80, "proxy_port_number": 33984, "proxy_host": "b4d185e7efdfa0f4ce01.proxy.cloud-vms.com", "proxy_url": "http://b4d185e7efdfa0f4ce01.proxy.cloud-vms.com:33984", "proxy_port": 33984}, {"name": "camera-gateway-ssh", "protocol": "tcp", "host": "172.31.2.21", "port": 22, "proxy_port_number": 33985, "proxy_host": "b4d185e7efdfa0f4ce01.proxy.cloud-vms.com", "proxy_port": 33985}]}
  2. Connect to device via the SSH info.

    Code Block
    ssh -i <PATH TO .PEM> <USERNAME>@a4f9efe5b9e887b79001.proxy.cloud-vms.com -p 34917

    Connection method may vary depending on how your SSH Client is configured on the host machine.

  3. Upload or download the Gateway version you want to update to onto the Gateway device.

  4. Navigate to the directory containing the new version of the Gateway.

  5. Execute the update script as a background process. Note that the connection will be broken as the Gateway restarts.
    Linux

    Code Block
    nohup sudo ./update.sh -orig <path_to_old_version_directory> -dest <path_to_new_version_directory> &

    Windows

    Code Block
    Start-Process .\update.bat -orig <path_to_old_version_directory> -dest <path_to_new_version_directory> -NoNewWindow


    If done successfully the Gateway should be accessible from it’s original IP.

API Examples

Request authorization token from Gateway

Retrieve authorization token to send valid API requests.

Code Block
curl -X POST -L 'http://<DEVICE_IP>:8000/api/auth-token/' -H 'Content-Type: application/json' -d '{"username": "user", "password": "pass"}'

Valid response: 200

Code Block
{
    "token": "8656763e69dd6ead1d167b865f8caf08bf907227"
}

Get list of cameras on Gateway

Retrieve list of cameras from Gateway database.

Code Block
curl -H 'Authorization: Token 8656763e69dd6ead1d167b865f8caf08bf907227' -X GET 'http://<DEVICE_IP>:8000/api/cameras/'

Valid response: 200

Code Block
[
    {
        "camera_id": 1,
        "access_token": "",
        "ip": "104.251.103.214",
        "http_port": 7080,
        "rtsp_port": 7554,
        "is_active": true,
        "pid": 151,
        "serial": "FAKECAMERA69",
        "mac": "FAKECAMERA69",
        "rtsp_only": false
    }
]

Add camera to Gateway

When adding a camera, it is suggested to create an Uplink camera on the Cloud VMS without the provisioning server and then copying the created access token to use in the token field when creating a camera on the gateway. Otherwise, you must create an Uplink camera using the provisioning server and use the same serial number and MAC Address values when creating the camera on the gateway.

Code Block
curl -H 'Authorization: Token 8656763e69dd6ead1d167b865f8caf08bf907227' -X POST http://<DEVICE_IP>:8000/api/add-camera/ -H "Content-Type: application/json" -d '{"ip": <CAMERA_IP>, "http_port": <HTTP_PORT>, "rtsp_port": <RTSP_PORT>, "serial": <CAMERA_SERIAL>, "mac": <CAMERA_MAC>, "token": <CLOUD_ACCESS_TOKEN>}'

Valid response: 201

Code Block
{
    "camera_id": 1,
    "access_token": "",
    "ip": "192.168.40.21",
    "http_port": 80,
    "rtsp_port": 554,
    "is_active": false,
    "pid": null,
    "serial": "FAKECAMERA",
    "mac": "FAKECAMERA",
    "rtsp_only": false
}

Delete camera from Gateway

When deleting a camera, the camera ID for the camera on the gateway can be used. If the camera was added using an access token, you can also use the camera’s ID on the Cloud VMS to remove the camera.

Code Block
curl -H 'Authorization: Token 8656763e69dd6ead1d167b865f8caf08bf907227' -X DELETE http://<DEVICE_IP>:8000/api/cameras/<GATEWAY_CAMERA_ID OR CLOUD_CAMERA_ID>/

Valid response: 204 No Content

Restart Gateway service connection

Code Block
curl -H 'Authorization: Token 8656763e69dd6ead1d167b865f8caf08bf907227' -X POST http://<DEVICE_IP>:8000/api/restart/

Valid response: 200

Code Block
{"message":"Server restarted successfully"}

Troubleshooting

Gateway Connectivity Issues

The connection between the gateway and the cloud can be checked by attempting to access the Gateway UI through Cloud One.

...

If the Gateway cannot be accessed in this manner, it is usually a result of two errors:

  1. The gateway’s uplink connection timed out. The connection can be reset in the Gateway’s Settings page.

    image-20240416-165150.pngImage Added

    This will restart the connect and the Gateway will attempt to access the cloud.

  2. The Gateway’s ID was entered incorrectly when adding the Gateway to the cloud. In this case you will need to delete and re-add the Gateway with the correct Gateway ID found in the Gateway’s Settings page.

In any case it is also helpful to contact support and provide Logs from the Gateway which can be downloaded from the Gateway’s Settings page.

Updating Camera’s IP Address

The camera’s IP address is stored on the Gateway, which means if it is entered incorrectly on Cloud One when adding the camera then it needs to be updated on the Gateway.

Navigate to the Gateway’s Cameras page and click edit on the camera you want to change the IP of.

...

From the editing form you can then update the IP and click Update.

...

Remote Connection to Gateway Device

The Uplink Gateway not only creates a connection to the user interface, it also creates a connection to the hosting device on port 22 which can be used to connect to the device using SSH.

  1. Get service information of the gateway’s connection.
    Curl

    Code Block
    curl --location 'https://<UPLINK SERVICE URL>/api/device/<CAMERA_ID FROM GATEWAY ACCESS TOKEN>' --header 'Authorization: Bearer <UPLINK SERVICE PASSWORD>'

    Response

    Code Block
    {"camid": "3045", "proxy_id": "b4d185e7efdfa0f4ce01", "forwards": [{"name": "camera-gateway-http", "protocol": "http", "host": "127.0.0.1", "port": 80, "proxy_port_number": 33984, "proxy_host": "b4d185e7efdfa0f4ce01.proxy.cloud-vms.com", "proxy_url": "http://b4d185e7efdfa0f4ce01.proxy.cloud-vms.com:33984", "proxy_port": 33984}, {"name": "camera-gateway-ssh", "protocol": "tcp", "host": "172.31.2.21", "port": 22, "proxy_port_number": 33985, "proxy_host": "b4d185e7efdfa0f4ce01.proxy.cloud-vms.com", "service_port": 33985}]}
  2. Connect to device via the SSH info.

    Code Block
    ssh -i <PATH TO .PEM> <USERNAME>@a4f9efe5b9e887b79001.service.cloud-vms.com -p 34917

    Connection method may vary depending on how your SSH Client is configured on the host machine.