Meshtastic.local without internet access?

Will meshtastic.local work without access to the internet? as I see it load but get only a blank screen. If I ‘view page source’ I find everything comes from a remote internet site. The map I could understand but…
Or am I oblivious to something obvious?
My project kinda depends on accessing the mesh in a remote dirt biking area. No Net, no cell, no cares…except running out of gas, broke a chain, have a flat…
My setup is a local laptop CAT5’ed to a basic router set at 192.168.10.1 and NOT set as an AP.
My Heltec LoRa 32 connects fine is assigned 192.168.10.115 and pings just fine.
meshtastic.local is accessed as I see load progress indication and no timeout; it is happy but blank(I know the feeling).
What have I missed?

1 Like

I had some trouble getting everything setup and accessing the web server myself. The project is moving fast and the devs have done an awesome job with a locally hosted web server with lots of functionality, things are just moving fast.

I couldn’t get meshtastic.local working when connecting to my t-beams over their SoftAP mode. I would get a favicon but a blank page. Tried everything and every possible address/browser.

What ended up working much better was connecting the device to my local WLAN. Then both the hosted (client.meshtastic.org) and local versions worked perfectly. There is a lot unfinished with the web app I believe but the direction it is going in seems wonderful.

I suggest using wifi connected to your WLAN at your home basestation and use BLE to communicate with the device in the field. Unfortunately the iOS app is still under TestFlight alpha but the functionality will hopefully reach the android version soon.

My one issue is the file browser I was seeing in all the documentation isn’t available at meshtastic.local/static . I was able to download rangetest.csv from the new section on the web app but that file browser does not support deleting files.

That is exactly what I am doing. AP is the wrong type of networking. Just using Android in the field.
Microsoft edge loads the tab with the icon. Titles it with: Meshtastic Web and still a blank page…

What version of meshtastic are you running?

I think the BLE android app is best suited for the use in the field. (more power efficient)

I remember reading on some of the web support documentation (Web interface overview | Meshtastic) regarding common issues and my first attack was just updating using the flashing utility instead of the install script. (maybe were using update instead which I don’t think touches the flash you want to overwrite with the webpages).

I was able to get client.meshtastic.org to work only with the meshtastic device on my home WLAN (client mode) or through the serial/BLE options. SoftAP just wasn’t playing with whatever my network settings were. I am sure this will all be straightened out in time.

@mc-hamster might have an idea why the page is loading favicon but otherwise blank page.

What I get is:


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link
      rel="alternate icon"
      href="/safari-tab.svg"
      type="image/png"
      sizes="16x16"
    />
    <link rel="icon" type="image/svg+xml" href="/icon.svg" />

    <link rel="manifest" href="/site.webmanifest" />
    <link rel="mask-icon" href="/safari-tab.svg" color="#67ea94" />
    <link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/@xz/fonts@1/serve/cascadia-code.min.css"
    />
    <meta name="theme-color" content="#67ea94" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0"
    />
    <meta name="description" content="Meshtastic Web App" />
    <title>Meshtastic Web</title>
<script src="https://cdn.jsdelivr.net/npm/mapbox-gl@2.8.0/dist/mapbox-gl.js"></script>
    <script type="module" crossorigin src="/index.61bf857c.js"></script>
    <link rel="stylesheet" href="/index.bedff635.css">
  <link rel="manifest" href="/manifest.webmanifest"></head>
  <body>
    <div id="root"></div>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    
  </body>
</html>

It seems to be looking to cdn.jsdelivr.net for cascadia-code not being a html’er I’m probably barking up the wrong tree. I can actually access the icon.svg and safari-tab.svg so there is a connection…just blank stares…mine mostly.

You can self host the web application on your Ubuntu Desktop or Raspberry Pi

It only requires at minimum a locally signed key.pem and cert.pem

Check out
Shortest way. Tested on MacOS, but may work similarly on other OS.

Generate pem

> openssl req -x509 -newkey rsa:2048 -keyout keytmp.pem -out cert.pem -days 365

> openssl rsa -in keytmp.pem -out key.pem

Then

Steps (Ubuntu Linux)

git clone https://github.com/meshtastic/meshtastic-web.git
cd meshtastic-web/

curl -fsSL https://get.pnpm.io/install.sh | sh -
export PNPM_HOME="/home/user/.local/share/pnpm"
export PATH="$PNPM_HOME:$PATH"

pnpm i

Create a .env file:

cp ./.env.example ./.env

And define the device IP address in the .env file.

VITE_PUBLIC_DEVICE_IP=xxx.xxx.xxx.xxx

Modify vite.config.ts

To point to your locally signed SSL certificates key.pem and cert.pem

Add these changes just before plugins: [

import fs from 'fs';

export default defineConfig({
  server: {
    https: {
      key: fs.readFileSync('/home/pi/.cert/key.pem'),
      cert: fs.readFileSync('/home/pi/.cert/cert.pem'),
    },
  },
  plugins: [

My vite.config.ts (section)

import { execSync } from 'child_process';
import { resolve } from 'path';
import { visualizer } from 'rollup-plugin-visualizer';
import { defineConfig } from 'vite';
import importToCDN from 'vite-plugin-cdn-import';
import EnvironmentPlugin from 'vite-plugin-environment';
import { VitePWA } from 'vite-plugin-pwa';
import fs from 'fs';

import react from '@vitejs/plugin-react';

let hash = '';

try {
  hash = execSync('git rev-parse --short HEAD').toString().trim();
} catch (error) {
  hash = 'DEVELOPMENT';
}

export default defineConfig({
  server: {
    https: {
      key: fs.readFileSync('/home/user/.cert/key.pem'),
      cert: fs.readFileSync('/home/user/.cert/cert.pem'),
    },
  },
  plugins: [
    react(),
    EnvironmentPlugin({
      COMMIT_HASH: hash,
    }),
    importToCDN({
      modules: [
        {
          name: 'mapbox-gl',
          var: 'mapboxgl',
          path: `dist/mapbox-gl.js`,
        },
      ],

Run the Web App

npm run dev -- --https

Open Chrome point to your https://localhost:3000 or actual ip address

I use to connect to serial to my RAK6431 (hosted older version on Pi)

2 Likes

Ummmm…I’m sorry but…what?
Not real sure what is being done. I’m guessing redirecting to a local file? Not sure what the certificate is about. Truly sorry.
I only really speak windows and I’ve given up trying to be able to edit code. At my age trying to learn another platform(just got Eclipse kinda figured out) is proving to be too much. I have edits I would like to do (Heltec’s GPS pin/Analog conflict) but at this point can’t.

@sachaw ?? Any hints on @kalestew ’s question?

I’m sorry I did not see this post. The version is the latest as of earlier this week and I use the Meshtastic flasher, full burn not just an update. It all works just fine on the house network as it has net access. The Android Meshtastic app seems to work OK also.

1 Like

Thanks for this, I am not an expert in the networking and such but I tried for fun right now and this was working okay. I also like how new chromium versions allow basically the same thing installing as a .app on macOS.

I don’t think this helps with OP’s issue though. I tried again with the latest stable and alphas tonight and was unable to get anything going with the SoftAP modality. Edit: just the same behavior as OP with favicon etc loading but none of the fancy js.

Awesome!

The client modality fits my use cases much better but I can see the importance of SoftAP for many.

I think the progressive web app is really the king of all clients outside BLE connecting. It can be so powerful and I think IOS even has an option even though its not available in safari.

I don’t think the WebUI has ever been entirely hosted on device, it has definitely been worked on but there are size issues to contend with. I know the mapbox scripts are too big and are always internet hosted, and at various times icons / fonts too I think.

And all here…I am sorry, somehow I think the we have deviated so far from my original problem/question that I am TOTALLY lost. I just want a web page to come up when I type meshtastic.local and have no internet access. What has gone on in this thread has just left my hair blown all awry. Or has the subject just taken a squirrel moment and I missed it. That wouldn’t be too hard.

I think that’s certainly the best way forward. Keep whatever the micro is serving down to a minimum. That is what client.meshtastic.org is for. Chromium has lots of these cashing options for PWAs that I want to learn more about. I think other browsers and platforms will have to catch up eventually.

When you are completely offline you have the ability to self host those assets or just use BLE.

I don’t think the web ui currently works for your use case. I have not tested the most recent versions but it sounds the same as before, works if you have internet, has some resources that don’t load without it because they are in the cloud. If completely off grid NRF52 devices with 10-20x less battery draw than a tbeam without wifi on is the better choice. Having wifi on is going to draw 4x more power.

2 Likes

There’s some major reworking to support the upcoming 1.3.x features, I’ll aim to ensure that these builds work offline, the limitations will always be fonts and maps (simply too large for the device).

3 Likes

Beautiful, Thank you. I’m using the Heltec units and wifi base power usage isn’t as much concern as base has 200watt solar and marine battery for a source. A local file on the laptop or an associated application would be an attractive solution. The map on the other hand… I saw somewhere else the problems of offline-ing the mapping. I have been using SW Maps with a bluetooth GPS and once it loads a tile for the area it only seems to need net to get an extended tile. But it is easy to stand over here and say…gee what we need is…
Thank you sirs.

2 Likes

Thank you so much for your work. I will be diving deeper into the source in the coming weeks and I hope to have a better mechanistic understanding of the project by next weekend.

Working around esp32 limitations is smart and keeping everything lightweight is definitely the highest priority.

I’m very interested in future applications where larger storage databases can allow BBS and better store and forward apps. The base client dev is honestly extremely exciting.

Do Tbeams have any controllers to support additional flash storage?

1 Like