Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
daca53c
Update Docker workflow to support new branch naming and improve image…
breyr Mar 2, 2025
0a66c41
Refactor Docker workflow to use correct pull request number syntax fo…
breyr Mar 2, 2025
3926313
Update action (#54)
breyr Mar 2, 2025
d7f5fb4
Red 76 UI changes (#55)
Tylermui Mar 3, 2025
2d2d9ab
refactored react code (#56)
breyr Mar 4, 2025
b4d6da1
Red 72 topology send create and delete link requests (#57)
breyr Mar 4, 2025
4220c89
Auth and onboarding fixes (#58)
breyr Mar 7, 2025
7f754ec
Bug fixes (#59)
breyr Mar 20, 2025
a2b4030
DONE (#60)
Tylermui Mar 20, 2025
3366342
table (#61)
Tylermui Mar 20, 2025
6a7f60e
Implement table structure and layout adjustments (#62)
breyr Mar 21, 2025
acf79af
Connections table again (#63)
breyr Mar 21, 2025
a27088e
Refactor table layout for improved responsiveness (#64)
breyr Mar 21, 2025
e0adcac
Stretch features (#65)
breyr Mar 21, 2025
f9fea0f
Stretch features (#66)
breyr Mar 22, 2025
acad8f8
Stretch features (#67)
breyr Mar 22, 2025
8241fb7
Stretch features (#68)
breyr Mar 24, 2025
d790a3c
Stretch features (#69)
breyr Mar 25, 2025
361993b
Stretch features (#70)
breyr Mar 25, 2025
3a0fe9e
Stretch features (#71)
breyr Mar 25, 2025
b3f11b8
Stretch features (#72)
breyr Mar 25, 2025
067b917
Stretch features (#73)
breyr Mar 28, 2025
dc97442
Stretch features (#74)
breyr Mar 28, 2025
181ff1d
Merge branch 'main' into dev
breyr Mar 31, 2025
fcdfdd5
Enhance port calculation logic to adjust for device number in VLAN ma…
breyr Mar 31, 2025
cd5c521
Bug fixes (#77)
breyr Mar 31, 2025
8482cc3
Refactor link operations and enhance substring extraction for port fo…
breyr Mar 31, 2025
117654d
Bump vite version (#79)
breyr Mar 31, 2025
2c18564
Topology card updates (#81)
breyr Mar 31, 2025
96090a0
Enhance context menu and link creation modal to display available por…
breyr Mar 31, 2025
7cf332a
More fixes (#83)
breyr Apr 1, 2025
8fce0e7
Update README.md (#85)
AdamSpera Apr 4, 2025
97a7ad8
bump image version
breyr Apr 4, 2025
828c2b0
Merge branch 'main' into release/1.0.2
breyr Apr 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 126 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,129 @@
# T.O.P. (Topology Orchestration Platform)
# TOPHAT

## Installation

### STEP 1 - Interconnects

### Supported Platforms
Interconnect devices must meet the following requirements to ensure compatibility with TOPHAT:

**Operating System (OS)**

- Cisco IOSv
- Cisco IOS
- Cisco IOS-XE

**Port Density**

TOPHAT can support up to 2 Interconnect devices, each with varying port densities:

- **1x Interconnects**
- Must be 48 ports
- **2x Interconnects**
- Interconnect 1: 48 ports
- Interconnect 2: 24-48 ports

---

#### Initial Configuration

Interconnect devices must be **remotely accessible** via **SSH** from the **out-of-band (OOB) management interface** to the TOPHAT application host.

It is recommended to use spanning-tree mode MST, and static assign OOB IP addresses for the Interconnects.

---

##### Authentication

- **SSH Access**: Required for secure remote administration.
- **User Authentication**: Devices must support **username/password authentication**.
- **Privilege Escalation**: An **enable secret password** must be configured for administrative access.

An example basic configuration is provided below:

```
hostname Interconnect
ip domain-name interconnect.lab
username admin privilege 15 secret 0 cisco
enable secret cisco
line vty 0 15
login local
transport input ssh
crypto key generate rsa modulus 2048
ip ssh version 2
```

---

##### Lab Device Ports

All device interfaces (**excluding the last four ports**) must be configured for **dot1q tunneling (QinQ)** to encapsulate Layer 2 protocol frames. These ports serve as direct connections to lab devices.

```
interface range GigabitEthernet1/0/1-44
shutdown
no switchport access vlan
switchport mode dot1q-tunnel
negotiation auto
mtu 9000
mtu 8978
l2protocol-tunnel cdp
l2protocol-tunnel lldp
l2protocol-tunnel stp
l2protocol-tunnel vtp
l2protocol-tunnel point-to-point pagp
l2protocol-tunnel point-to-point lacp
l2protocol-tunnel point-to-point udld
no cdp enable
```

---

##### Transport Ports

The last four interfaces (**45-48** or **21-24**, depending on the platform) are dedicated to **transporting traffic between Interconnects**.

*If you are only using one Interconnect, shut these ports.*

```
port-channel load-balance src-dst-mac
!
interface GigabitEthernet1/0/45-48
channel-protocol lacp
channel-group 1 mode active
no shutdown
!
interface Port-channel1
switchport mode trunk
switchport trunk allowed vlan all
switchport nonegotiate
mtu 9000
mtu 8978
no cdp enable
no shutdown
```

### STEP 2 - Application

#### Environment Setup

Once the Interconnects are configured, proceed with the installation of the TOPHAT application.

Navigate to the [TOPHAT GitHub](https://github.com/breyr/TOPHAT/blob/main/compose.prod.yaml) repository, and make a copy of the `compose.prod.yaml` file.

Save the file as `docker-compose.yml` in your desired directory.

#### Running the Application

Run the following command to start the application:

```sh
docker-compose -f docker-compose.yml up -d
```

TOPHAT will now be running at [0.0.0.0:80](0.0.0.0:80).

To expose TOPHAT outside of your LAN, we recommend using [Cloudflare Tunnels](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) to securely expose the UI externally with ZeroTrust.

## Developing

Expand Down
6 changes: 3 additions & 3 deletions compose.prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ services:
- postgres_data:/var/lib/postgresql/data

backend:
image: breyr/top-backend:1.0.1
image: breyr/top-backend:1.0.2
container_name: backend
environment:
DATABASE_URL: postgres://demo:demo@postgres:5432/demo
Expand All @@ -25,15 +25,15 @@ services:
- postgres

frontend:
image: breyr/top-frontend:1.0.1
image: breyr/top-frontend:1.0.2
container_name: frontend
ports:
- "80:80"
depends_on:
- backend

interconnect-api:
image: breyr/top-interconnectapi:1.0.1
image: breyr/top-interconnectapi:1.0.2
container_name: interconnect-api
environment:
SECRET_KEY: your_secret
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/pages/Index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@ export default function IndexPage() {
</p>

<div className="flex flex-col sm:flex-row items-start gap-4">
<a href="https://docs.tophat.sh" target="_blank" rel="noopener noreferrer">
<a href="https://github.com/breyr/TOPHAT/blob/main/README.md" target="_blank">
<button className="r-btn primary flex flex-row items-center gap-2">
Read the Docs
<ArrowRight size={20} />
</button>
</a>

<a href="https://github.com/breyr/TOPHAT" target="_blank" rel="noopener noreferrer">
<a href="https://github.com/breyr/TOPHAT" target="_blank">
<button className="r-btn secondary flex flex-row items-center">
View on GitHub
</button>
Expand Down