Running chirpstack v4 on local system

I am running the chirpstack v4 server on my local system on ubuntu. I have cloned the code from the github repository and followed these steps:

  1. Installed nix, cargo cross, musl-tools etc.
  2. Entered nix using nix-shell
  3. Then make build-ui
  4. Then docker compose up -d
  5. Then make dev-dependencies
  6. Then navigated to ~chirpstack/chirpstack folder, run make debug-amd64
  7. The navigated to ~chirpstack/target/x86_64-unknown-linux-musl/debug
  8. Run ./chirpstack --config “.”

Below is the output of the last command (Removed timestamp for better readability) :
INFO chirpstack::cmd::root: Starting ChirpStack LoRaWAN Network Server version=“4.9.0” docs=“https://www.chirpstack.io/
INFO chirpstack::storage::postgres: Setting up PostgreSQL connection pool
INFO chirpstack::storage: Applying schema migrations
INFO chirpstack::storage: Setting up Redis client
INFO chirpstack::region: Setting up regions
INFO chirpstack::backend::joinserver: Setting up Join Server clients
INFO chirpstack::backend::roaming: Setting up roaming clients
INFO chirpstack::adr: Setting up adr algorithms
INFO chirpstack::integration: Setting up global integrations
INFO chirpstack::integration::redis: Initializing Redis integration
INFO chirpstack::integration::mqtt: Initializing MQTT integration
INFO chirpstack::integration::mqtt: Connecting to MQTT broker server_uri=tcp://localhost:1883/ client_id=f94cd1b91cf547ea clean_session=false
INFO chirpstack::gateway::backend: Setting up gateway backends for the different regions
INFO chirpstack::downlink: Setting up Class-B/C scheduler loop
INFO chirpstack::integration::mqtt: Starting MQTT event loop
INFO chirpstack::downlink: Setting up multicast scheduler loop
INFO chirpstack::api: Setting up API interface bind=0.0.0.0:8080
INFO chirpstack::integration::mqtt: Subscribing to command topic command_topic=application/+/device/+/command/+
INFO chirpstack::api::backend: Backend interfaces API interface is disabled

Whenever I open/refresh this link : localhost:8080/ or localhost:8080/#/login, I get the following on the terminal :
DEBUG gRPC{uri=/}: chirpstack::api: Started processing request
INFO gRPC{uri=/}: chirpstack::api: Finished processing request status=“404” latency=4.092043ms

and the UI does not open on the browser.

What am I doing wrong here ?

Below is the content of the config file (chirpstack.toml) present at ~/chirpstack/target/x86_64-unknown-linux-musl/debug folder (if this helps) :

# Logging.
[logging]

  # Log level.
  #
  # Options are: trace, debug, info, warn error.
  level = "debug"


# PostgreSQL configuration.
[postgresql]

  # PostgreSQL DSN.
  #
  # Format example: postgres://<USERNAME>:<PASSWORD>@<HOSTNAME>/<DATABASE>?sslmode=<SSLMODE>.
  #
  # SSL mode options:
  #  * disable - no SSL
  #  * require - Always SSL (skip verification)
  #  * verify-ca - Always SSL (verify that the certificate presented by the server was signed by a trusted CA)
  #  * verify-full - Always SSL (verify that the certification presented by the server was signed by a trusted CA and the server host name matches the one in the certificate)
  dsn = "postgres://chirpstack:chirpstack@localhost/chirpstack?sslmode=disable"

  # Max open connections.
  #
  # This sets the max. number of open connections that are allowed in the
  # PostgreSQL connection pool.
  max_open_connections = 10

  # Min idle connections.
  #
  # This sets the min. number of idle connections in the PostgreSQL connection
  # pool (0 = equal to max_open_connections).
  min_idle_connections = 0


# Redis configuration.
[redis]

  # Server address or addresses.
  #
  # Set multiple addresses when connecting to a cluster.
  servers = ["redis://localhost/"]

  # Redis Cluster.
  #
  # Set this to true when the provided URLs are pointing to a Redis Cluster
  # instance.
  cluster = false


# Network related configuration.
[network]

  # Network identifier (NetID, 3 bytes) encoded as HEX (e.g. 010203).
  net_id = "000000"

  # Enabled regions.
  #
  # Multiple regions can be enabled simultaneously. Each region must match
  # the 'name' parameter of the region configuration in '[[regions]]'.
  enabled_regions = [
    "as923",
    "as923_2",
    "as923_3",
    "as923_4",
    "au915_0",
    "cn470_10",
    "cn779",
    "eu433",
    "eu868",
    "in865",
    "ism2400",
    "kr920",
    "ru864",
    "us915_0",
    "us915_1",
  ]


# API interface configuration.
[api]

  # interface:port to bind the API interface to.
  bind = "0.0.0.0:8080"

  # Secret.
  #
  # This secret is used for generating login and API tokens, make sure this
  # is never exposed. Changing this secret will invalidate all login and API
  # tokens. The following command can be used to generate a random secret:
  #   openssl rand -base64 32
  secret = "you-must-replace-this"


[integration]
  enabled = ["mqtt"]

  [integration.mqtt]
    server = "tcp://localhost:1883/"
    json = true

@brocaar @Liam_Philipp