Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
451113c
fix name escaping issue in map javascript
agessaman Apr 9, 2025
8de0b1e
fixed two map long_name escaping issues
agessaman Apr 9, 2025
fc8a44a
added caching to pages to reduce load on near-static pages
agessaman Apr 10, 2025
984d4cc
fixed get_neighbors sql query logic
agessaman Apr 10, 2025
aaf7e21
profile image changes: fixed emojis in profile images, added config.i…
agessaman Apr 13, 2025
884cb4f
Moved new chat to chat.html, completed work on tooltips.
agessaman Apr 13, 2025
c6a296c
switched caching to disk instead of memory cache
agessaman Apr 13, 2025
54598d0
message_map now uses the sender and reciever's nearest position updat…
agessaman Apr 13, 2025
64f8844
added a robots.txt file
agessaman Apr 14, 2025
08d6d8b
custom config for mariadb; routes and mqtt processing use one instanc…
agessaman Apr 14, 2025
6140bfa
added zero hop and merged graph options; added two other graph option…
agessaman Apr 17, 2025
3e157bb
more revisions to possible graph updates
agessaman Apr 17, 2025
6d9dd6b
added time of most adjacent position update to the message propagatio…
agessaman Apr 19, 2025
1cb01be
fixed heard chat notification wrapping
agessaman Apr 19, 2025
f4bccf9
alpha metrics feature added
agessaman Apr 19, 2025
dee870d
mesh metrics updates
agessaman Apr 20, 2025
0ef41b7
Enhance metrics and telemetry features with channel support. Updated …
agessaman Apr 22, 2025
1cae59c
added arrow to the traceroute_map
agessaman Apr 22, 2025
6194267
fixed snr scaling issue, display issues in traceroutes
agessaman Apr 23, 2025
8ae24b1
upgraded traceroute UI to use chat2 badges
agessaman Apr 23, 2025
f5ef194
fixed escaping of node names in json
agessaman Apr 23, 2025
be8d40e
options to hide position and telemetry in nodes table
agessaman Apr 23, 2025
82df55d
metrics now use a moving average for smoothing
agessaman Apr 27, 2025
db851e1
metrics data cleanup
agessaman Apr 27, 2025
f2c4fb3
column filter state persistence works now
agessaman Apr 27, 2025
fcf222f
adjustments to edge effects in graph calculations; glow effect and pl…
agessaman Apr 30, 2025
3abbc89
updated nodes and neighbors display to show node channels
agessaman Apr 30, 2025
3b33f3a
major update to maps to provide filters, show mqtt status, and displa…
agessaman May 2, 2025
ddf48b0
added checks for nodes with invalid hardware ids
agessaman May 2, 2025
b012705
added checks for out of range telemetry values, added channel to node…
agessaman May 12, 2025
1d8aeea
fixed escaping in chat2, reformatted mynodes page
agessaman May 15, 2025
15596c0
fix for transposed gps coordinates
agessaman May 18, 2025
3ee0f11
add channel filtering to reduce logging of errors on private channels
agessaman May 22, 2025
3cf02f2
updated get_nodes() query to be more responsive
agessaman May 24, 2025
74156eb
Add traceroute improvements and update mesh data handling
agessaman May 27, 2025
b68b483
Enhance traceroute map display with improved node information and pos…
agessaman May 30, 2025
a8764b5
Add position freshness check for nodes in traceroute display. Enhance…
agessaman May 30, 2025
1166231
Merge pull request #3 from agessaman/feature/traceroute-improvements
agessaman May 30, 2025
22593ed
removed some extra debugging outputs
agessaman May 31, 2025
20ee42c
Ensure pagination starts at 1 in get_traceroutes method to prevent in…
agessaman May 31, 2025
9dff5ca
Refactor traceroute map logic to improve handling of source node posi…
agessaman May 31, 2025
8cd7f48
Update node display in map template to include clickable links for no…
agessaman May 31, 2025
88f675d
Refactor map templates to utilize OpenLayers 10.5.0, enhancing modula…
agessaman Jun 1, 2025
0949ff2
added settings option for local map javascript or cdn, added updated …
agessaman Jun 1, 2025
9b9c7df
moved telemetry graph to chart.js
agessaman Jun 1, 2025
46c411e
Merge pull request #4 from agessaman/feature/traceroute-improvements
agessaman Jun 1, 2025
310f696
updated to ignore venv
agessaman Jun 8, 2025
dfc4ad2
reduced cache threshold and added memory monitoring
agessaman Jun 9, 2025
a9d6d5b
added additional memory profiling; updated image library and Hardware…
agessaman Jun 14, 2025
8da1f03
Fix memory leak in position and telemetry.
agessaman Jun 15, 2025
10330c5
message map optimizations; memory footprint reductions
agessaman Jun 15, 2025
9bf92c4
added convex hull calculation and display to message_map
agessaman Jun 15, 2025
4136828
fix get_nodes to show most recent channel used
agessaman Jun 15, 2025
05de90f
updated caching for variables instead of pages; added router late role
agessaman Jun 19, 2025
3061fa0
Refactor node data handling and memory management; introduced detaile…
agessaman Jun 20, 2025
409a44a
change mqtt server url
agessaman Jun 22, 2025
167dfee
updates to node data handling from mapreport and nodeinfo packets, be…
agessaman Jun 26, 2025
643ec9d
implement geolocation api to fix CORS issue
agessaman Jun 26, 2025
d4c108f
fix maps to ensure all nodes display (no more UNK)
agessaman Jun 26, 2025
5380fd3
fixed location plots for nodes with no location
agessaman Jun 26, 2025
b979716
Enhance chat data handling and distance calculations. Optimized chat …
agessaman Jun 27, 2025
dde5f36
Refactor distance calculation logic in chat template. Updated loadDis…
agessaman Jun 27, 2025
d166e28
display time differential between message sent and message reception …
agessaman Jun 27, 2025
890b0ec
Add relay node processing and update reception storage logic. Enhance…
agessaman Jun 27, 2025
dc3b75e
Update MQTT server address in index template from mqtt.pugetmesh.org …
agessaman Jun 27, 2025
8e480a9
Add nodes data injection to message map template for enhanced map ren…
agessaman Jun 27, 2025
3da3c52
Enhance node data structure and tooltip information in meshdata and m…
agessaman Jun 28, 2025
b124f34
Refactor relay node matching logic and enhance message map template. …
agessaman Jun 28, 2025
a457ede
Fix distance calculation in find_relay_node_by_suffix function to use…
agessaman Jun 28, 2025
93b54d9
Update message map template to conditionally display relay informatio…
agessaman Jun 28, 2025
265b793
Remove hint for relay information in message map template. This chang…
agessaman Jun 28, 2025
0bd90ff
Implement configurable log retention and enhance log filtering in tem…
agessaman Jun 28, 2025
edc5e0d
Add hardware model statistics API and update templates for filtering …
agessaman Jun 28, 2025
e9c9215
Refactor memory management and optimize hardware model data handling.…
agessaman Jun 28, 2025
c84aabe
update build process to include amd64 and arm64
agessaman Jun 29, 2025
7817b1b
add gdal and geos dependencies
agessaman Jun 29, 2025
5d47a7e
optimize pip install
agessaman Jun 29, 2025
69a6c65
Add architecture-specific optimizations for rasterio in Dockerfile. I…
agessaman Jun 29, 2025
2af96ec
Enhance Dockerfile for ARM64 support by adding conditional rasterio i…
agessaman Jun 29, 2025
494e74c
Update Dockerfile to include conditional installation of curl for ARM…
agessaman Jun 29, 2025
c693730
Refactor GitHub Actions workflow to create a multi-architecture Docke…
agessaman Jun 29, 2025
1818bf5
Add MEDIUM_SLOW channel to Channel and ShortChannel enums, and update…
agessaman Jun 29, 2025
8e7a308
Update GitHub Actions workflow to include repository checkout step wi…
agessaman Jun 29, 2025
e27f4b8
Add caching for Docker layers in GitHub Actions workflow to improve b…
agessaman Jun 29, 2025
1f4010a
Update GitHub Actions workflow to disable provenance for Docker image…
agessaman Jun 29, 2025
f005035
Update GitHub Actions workflow to disable provenance for Docker image…
agessaman Jun 29, 2025
1d5ccbc
Update configuration and templates for customizable mesh settings, in…
agessaman Jun 29, 2025
86b6f8c
Add conditional rendering for #MeshtasticMonday link in layout templa…
agessaman Jun 29, 2025
9648d34
Update configuration and layout template to include page background c…
agessaman Jun 29, 2025
f7246ff
Enhance templates and logic by adding datetime to Jinja globals, impr…
agessaman Jun 29, 2025
0f52917
Fix datetime reference in layout template to ensure correct weekday e…
agessaman Jun 29, 2025
2dbb62c
Refactor datetime reference in Jinja globals to use datetime.datetime…
agessaman Jun 29, 2025
e693c3d
Enhance configuration and templates by adding new theme color options…
agessaman Jun 30, 2025
21d86a0
Update templates and configuration to replace logo image format, enha…
agessaman Jun 30, 2025
890c624
Add chat box styling options to configuration and templates
agessaman Jun 30, 2025
9a96ac5
Update configuration and templates to enhance UI with new background …
agessaman Jun 30, 2025
c63a765
Enhance GitHub Actions workflow for multi-architecture Docker image b…
agessaman Jun 30, 2025
b36bd9f
Add channel color and update templates for dynamic channel options
agessaman Jun 30, 2025
9603458
Add themed Bootstrap popover styles and update badge colors in CSS te…
agessaman Jun 30, 2025
941717c
Implement environmental telemetry feature and optimize telemetry clea…
agessaman Jun 30, 2025
14a0516
Update telemetry validation and enhance environmental telemetry display
agessaman Jun 30, 2025
8d643a8
restored and improved elsewhere links, now configurable in config.ini
agessaman Jun 30, 2025
937791f
Update CSS styles for link hover effects to improve UI consistency
agessaman Jun 30, 2025
9b0fa73
Add mapreport fields and enhance node information display
agessaman Jun 30, 2025
c9c0165
Refactor node and details tables for improved styling and structure
agessaman Jun 30, 2025
e6f1536
Enhance channel display in metrics and node templates
agessaman Jun 30, 2025
7169b45
fix typo
agessaman Jul 1, 2025
44f2c54
Update graph templates and map functionality for improved node intera…
agessaman Jul 1, 2025
590b81a
added custom themed favicon generation
agessaman Jul 1, 2025
9a7028b
Enhance telemetry data handling by adding packet_id extraction and va…
agessaman Jul 1, 2025
6a79722
minor UI beautification updates
agessaman Jul 1, 2025
d596410
modifications to message_map.html to display more message information
agessaman Jul 1, 2025
d83f7a8
revised message map link to show as long as the sender had location
agessaman Jul 2, 2025
a9ae566
Refactor database caching and configuration settings for improved per…
agessaman Jul 4, 2025
68a2de8
improved docker start-up process and provided an option to grant all …
agessaman Jul 4, 2025
0ce80a3
fixed channel filter
agessaman Jul 4, 2025
ec99f5b
adjusted custom.cnf sample to be less memory intensive
agessaman Jul 5, 2025
de2f5d9
Enhance routing message processing and logging
agessaman Jul 8, 2025
bfd7878
first draft of a channel utilization heatmap
agessaman Jul 11, 2025
2c14c0a
add menu option to expose experimental features
agessaman Jul 11, 2025
d6e6f83
Fixed experimental features menu display logic
agessaman Jul 12, 2025
a1cb30b
added icons to the header and mobile menus, added very alpha hexbin v…
agessaman Jul 16, 2025
d139aed
refactor meshinfo_web to separate api endpoints into separate bluepri…
agessaman Jul 19, 2025
3c6bd81
rebuilt map to use dynamic generation, including node movement, node …
agessaman Jul 21, 2025
d87bf57
updated #meshtasticmonday page to better match updated style
agessaman Jul 21, 2025
74f0ee1
Add routing messages feature
agessaman Jul 23, 2025
04f2d51
fix routing table css
agessaman Jul 23, 2025
c9fc892
fix header layout
agessaman Jul 23, 2025
afc6c9f
fix import log_memory_usage function
agessaman Jul 23, 2025
8dafb8c
added opengraph headers to pages, maps pages have generated static im…
agessaman Jul 23, 2025
3e10628
fix opengraph descriptions and image links
agessaman Jul 23, 2025
51180d1
added og:logo
agessaman Jul 23, 2025
140be5b
fix og image generation for message-map where sender's position isn't…
agessaman Jul 23, 2025
3af5d56
clarified error messages for routing error page, fixed formatting
agessaman Jul 24, 2025
10d1544
Refactor meshtastic_support imports to avoid circular references
agessaman Jul 24, 2025
8434dbd
Refactor channel information migration logic in add_channel_info.py
agessaman Jul 24, 2025
e2f783e
- Added logging for processing tables in add_channel_info.py to impro…
agessaman Jul 24, 2025
681b607
added debugging to add_channel_info.py
agessaman Jul 24, 2025
9525282
fix add_message_map_indexes.py and add_message_reception.py to handle…
agessaman Jul 24, 2025
2561508
one more fix
agessaman Jul 24, 2025
8a7129b
Enhance index creation logic in add_message_map_indexes.py with impro…
agessaman Jul 24, 2025
0935169
Add function to clear unread results from cursor in add_message_map_i…
agessaman Jul 24, 2025
122b6cb
Add function to clear unread results from cursor in add_message_recep…
agessaman Jul 24, 2025
1e65448
Add relay_node column to message_reception table and enhance migratio…
agessaman Jul 24, 2025
a3393c1
Enhance relay_node migration in add_relay_node_to_reception.py with i…
agessaman Jul 24, 2025
7d496e9
Add migration scripts for various database schema improvements
agessaman Jul 24, 2025
3ef1666
Add new columns to the traceroute and positionlog tables, and create …
agessaman Jul 24, 2025
af4fd06
Update SVG generation in generate_favicon.py to dynamically set strok…
agessaman Jul 24, 2025
018e6e3
Enhance chat functionality by adding channel filtering options. Updat…
agessaman Jul 25, 2025
dd451e3
Add caching for Docker layers in deploy workflow. Implemented actions…
agessaman Jul 25, 2025
16911e9
fix chat2 by restoring previous logic for popovers and position lookup
agessaman Jul 25, 2025
e8622e6
update message-paths to handle nodes with mqtt as edge targets
agessaman Jul 25, 2025
190e807
Enhance meshdata and message-paths to support placeholder nodes for m…
agessaman Jul 26, 2025
3cd20d2
Update message-paths to standardize is_placeholder values as strings.…
agessaman Jul 26, 2025
207d7cc
Enhance message-paths template to display edge information tooltips w…
agessaman Jul 26, 2025
1d923a5
Fix for unknown hardware models on node detail page
gnomeadrift Oct 14, 2025
db89b53
Add API endpoints for user account management: change password and un…
agessaman Dec 3, 2025
d6b49a9
Merge pull request #5 from maplemesh/nate/hwmodel-crash-fix
agessaman Dec 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
mariadb/
mariadb/
docker-compose.yml
50 changes: 50 additions & 0 deletions .github/workflows/deploy-amd64.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Build and Push AMD64
on:
workflow_dispatch: # Only triggered manually
jobs:
build-and-push-amd64:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch all history for proper versioning

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Calculate version
id: version
run: |
# Get the latest git tag
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
echo "Latest tag: $LATEST_TAG"

# Get current commit hash
COMMIT_HASH=$(git rev-parse --short HEAD)
echo "Commit hash: $COMMIT_HASH"

# Create version string
VERSION="${LATEST_TAG}-${COMMIT_HASH}"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "latest_tag=${LATEST_TAG}" >> $GITHUB_OUTPUT
echo "commit_hash=${COMMIT_HASH}" >> $GITHUB_OUTPUT

- name: Log in to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push AMD64 Docker image
uses: docker/build-push-action@v4
with:
context: .
platforms: linux/amd64
push: true
provenance: false
tags: |
ghcr.io/agessaman/meshinfo-lite:latest-amd64
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.version }}-amd64
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.latest_tag }}-amd64
60 changes: 60 additions & 0 deletions .github/workflows/deploy-arm64.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Build and Push ARM64
on:
workflow_dispatch: # Only triggered manually
jobs:
build-and-push-arm64:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0 # Fetch all history for proper versioning

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-arm64-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-arm64-

- name: Calculate version
id: version
run: |
# Get the latest git tag
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
echo "Latest tag: $LATEST_TAG"

# Get current commit hash
COMMIT_HASH=$(git rev-parse --short HEAD)
echo "Commit hash: $COMMIT_HASH"

# Create version string
VERSION="${LATEST_TAG}-${COMMIT_HASH}"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "latest_tag=${LATEST_TAG}" >> $GITHUB_OUTPUT
echo "commit_hash=${COMMIT_HASH}" >> $GITHUB_OUTPUT

- name: Log in to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push ARM64 Docker image
uses: docker/build-push-action@v4
with:
context: .
platforms: linux/arm64
push: true
provenance: false
tags: |
ghcr.io/agessaman/meshinfo-lite:latest-arm64
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.version }}-arm64
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.latest_tag }}-arm64
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache,mode=max
129 changes: 120 additions & 9 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
@@ -1,28 +1,139 @@
name: Manual Build and Push
name: Build, Push, and Publish Multi-Arch Manifest

on:
workflow_dispatch: # Only triggered manually
workflow_dispatch:

jobs:
build-and-push:
build-and-push-amd64:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3

with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-amd64-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-amd64-
- name: Calculate version
id: version
run: |
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
echo "Latest tag: $LATEST_TAG"
COMMIT_HASH=$(git rev-parse --short HEAD)
echo "Commit hash: $COMMIT_HASH"
VERSION="${LATEST_TAG}-${COMMIT_HASH}"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "latest_tag=${LATEST_TAG}" >> $GITHUB_OUTPUT
echo "commit_hash=${COMMIT_HASH}" >> $GITHUB_OUTPUT
- name: Log in to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push AMD64 Docker image
uses: docker/build-push-action@v4
with:
context: .
platforms: linux/amd64
push: true
provenance: false
tags: |
ghcr.io/agessaman/meshinfo-lite:latest-amd64
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.version }}-amd64
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.latest_tag }}-amd64
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache,mode=max

build-and-push-arm64:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-arm64-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-arm64-
- name: Calculate version
id: version
run: |
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
echo "Latest tag: $LATEST_TAG"
COMMIT_HASH=$(git rev-parse --short HEAD)
echo "Commit hash: $COMMIT_HASH"
VERSION="${LATEST_TAG}-${COMMIT_HASH}"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "latest_tag=${LATEST_TAG}" >> $GITHUB_OUTPUT
echo "commit_hash=${COMMIT_HASH}" >> $GITHUB_OUTPUT
- name: Log in to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Docker image
- name: Build and push ARM64 Docker image
uses: docker/build-push-action@v4
with:
context: .
platforms: linux/arm64
push: true
provenance: false
tags: |
ghcr.io/agessaman/meshinfo-lite:latest
ghcr.io/agessaman/meshinfo-lite:${{ github.sha }}
ghcr.io/agessaman/meshinfo-lite:latest-arm64
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.version }}-arm64
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.latest_tag }}-arm64
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache,mode=max

create-manifest:
runs-on: ubuntu-latest
needs: [build-and-push-amd64, build-and-push-arm64]
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Calculate version
id: version
run: |
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
echo "Latest tag: $LATEST_TAG"
COMMIT_HASH=$(git rev-parse --short HEAD)
echo "Commit hash: $COMMIT_HASH"
VERSION="${LATEST_TAG}-${COMMIT_HASH}"
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "latest_tag=${LATEST_TAG}" >> $GITHUB_OUTPUT
echo "commit_hash=${COMMIT_HASH}" >> $GITHUB_OUTPUT
- name: Log in to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create and push multi-arch manifest
run: |
docker manifest create ghcr.io/agessaman/meshinfo-lite:latest \
ghcr.io/agessaman/meshinfo-lite:latest-amd64 \
ghcr.io/agessaman/meshinfo-lite:latest-arm64
docker manifest create ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.version }} \
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.version }}-amd64 \
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.version }}-arm64
docker manifest create ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.latest_tag }} \
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.latest_tag }}-amd64 \
ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.latest_tag }}-arm64
docker manifest push ghcr.io/agessaman/meshinfo-lite:latest
docker manifest push ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.version }}
docker manifest push ghcr.io/agessaman/meshinfo-lite:${{ steps.version.outputs.latest_tag }}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ node_modules/
.github_pat
.env
.venv
.cursorrules
.cursor/

backups/*
caddy
Expand All @@ -19,6 +21,7 @@ postgres/data/*
config.json
docker-compose.yml
spa
venv/

.pnp.*
.yarn/*
Expand Down
87 changes: 72 additions & 15 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,32 +1,89 @@
# trunk-ignore-all(checkov/CKV_DOCKER_3)
FROM python:3.13-slim
FROM python:3.13.3-slim-bookworm

LABEL org.opencontainers.image.source=https://github.com/dadecoza/meshinfo-lite
LABEL org.opencontainers.image.source=https://github.com/agessaman/meshinfo-lite
LABEL org.opencontainers.image.description="Realtime web UI to run against a Meshtastic regional or private mesh network."

ENV MQTT_TLS=false
ENV PYTHONUNBUFFERED=1
ENV PYTHONUNBUFFERED=1 \
# Set standard locations
PATH="/app/.local/bin:${PATH}" \
# Consistent port for the app
APP_PORT=8000 \
# Optimize pip for faster builds
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1

RUN groupadd --system app && \
useradd --system --gid app --home-dir /app --create-home app

# Set the working directory in the container
RUN mkdir /app
WORKDIR /app

RUN apt-get update && apt-get -y install \
libexpat1 libexpat1-dev
# Install system dependencies
ARG TARGETPLATFORM
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libexpat1 \
libcairo2 \
pkg-config \
fonts-symbola \
fontconfig \
freetype2-demos \
libgdal-dev \
gdal-bin \
libgeos-dev \
libproj-dev \
proj-bin \
default-mysql-client \
$([ "$TARGETPLATFORM" = "linux/arm64" ] && echo "curl") \
&& apt-get clean && \
rm -rf /var/lib/apt/lists/*

RUN fc-cache -fv

# Architecture-specific rasterio installation
ENV GDAL_CONFIG=/usr/bin/gdal-config

# For ARM64: Install conda/mamba and use conda-forge for rasterio
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh && \
bash Miniforge3-Linux-aarch64.sh -b -p /opt/conda && \
rm Miniforge3-Linux-aarch64.sh && \
/opt/conda/bin/mamba install -c conda-forge rasterio -y; \
fi

# Update PATH to include conda if installed
ENV PATH="/opt/conda/bin:${PATH}"

COPY requirements.txt banner run.sh ./
COPY *.py ./
COPY www ./www
COPY templates ./templates
COPY migrations ./migrations

RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
# Upgrade pip and install packages
RUN pip install --upgrade pip setuptools wheel

HEALTHCHECK NONE
# Install requirements, excluding rasterio for ARM64 (already installed via conda)
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
grep -v "^rasterio" requirements.txt > requirements_filtered.txt || echo "" > requirements_filtered.txt; \
else \
cp requirements.txt requirements_filtered.txt; \
fi

EXPOSE 8080
RUN su app -c "pip install --no-cache-dir --user -r requirements_filtered.txt"

COPY --chown=app:app banner run.sh ./
COPY --chown=app:app *.py ./
COPY --chown=app:app *.sh ./
COPY --chown=app:app www ./www
COPY --chown=app:app templates ./templates
COPY --chown=app:app migrations ./migrations

HEALTHCHECK NONE

RUN chmod +x run.sh
RUN chmod +x *.sh

USER app

EXPOSE ${APP_PORT}

CMD ["./run.sh"]
CMD ["./run.sh"]
Loading