> For the complete documentation index, see [llms.txt](https://campus-rover.gitbook.io/lab-notebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://campus-rover.gitbook.io/lab-notebook/fiiva/infrastructure/cloud-desktop.md).

# How to use the Rover Cluster

![novnc](/files/-MEcHyW7uJGHARzCrDkz)

## Introduction

Cloud desktop is a virtual desktop environment which you can access with just your browser. This allows you to run intensive robot simulations without your computer breaking down.

You can access your cloud desktop with one of three ways:

* [Virtual desktop environment via `novnc`](#accessing-virtual-desktop)
* [Browser-based code editor via `vscode`](#accessing-code-editor)
* [SSH](#accessing-via-ssh)

## Accessing virtual desktop

### Requirements

* Browser with javascript blocking turned *off*

For access link and password, please refer to the credentials given to you by the TA.

## Accessing code editor

### Requirements

* Browser with javascript blocking turned *off*

For access link and password, please refer to the credentials given to you by the TA.

## Accessing via SSH

### Enable SSH for remote access

Cloud desktop comes with SSH access disabled.

* To enable ssh, first login using cloud desktop/VScode
* Open up the terminal
* Run `sudo passwd root` to setup a password

### Access

You can now `ssh` in using the cloud desktop link given to you.

Using the terminal

```sh
ssh root@desktop1.ros.campusrover.org -p 2222
```

## Private Networking

All cloud desktops are, by default, connected to a shared private Tailscale network. Using the cloud desktop, you can connect to any robots on the network anywhere in the world.

```

  100.89.2.122 desktop-1 \       / robot-1 100.89.2.122
                          \     /
  100.99.32.12 desktop-2 - - - - - robot-2 100.99.31.234
                           /    \
  100.88.77.234 desktop-3 /      \ robot-3 100.86.232.111

```

Each robot on the network is assigned with a Tailscale IP which looks like this: `100.xx.xxx.xxx`

```bash
ssh root@100.89.2.122 # IP of robot-1
```

For more details and troubleshooting about Private Networking, see [this](/lab-notebook/fiiva/infrastructure/private-networking.md).

## Troubleshooting

### What is my IP address?

Run the following command

```sh
ip addr show dev tailscale0 | grep -Eo '([0-9]{1,3}[\.]){3}[0-9]{1,3}'
```

### What is my hostname?

Run the following command

```sh
cat /etc/hostname
```

### Virtual desktop refused to login

If repeated attempts to login through the browser failed, it is likely that your desktop has crashed. Please notify your TA, he/she will restart your desktop for you.

### White blank screen when visiting the code editor

This is usually an issue with slow internet connection, give it a while to load.

If nothing shows up within 5 minutes, try `right click > inspect > console` to look for any error messages. Please then notify your TA with the error message.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://campus-rover.gitbook.io/lab-notebook/fiiva/infrastructure/cloud-desktop.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
