Small problem during step:
docker compose --profile migrate run --rm db-migrate
Problem because folder data is created as root:root there are some errors at the end of installation (see result).
With some inspiration by previous similar issue the solution to solve this is:
sudo chmod -R 770 .
sudo chown -R <user>:root .
And rerun this step.
However next step:
docker compose --profile seed run --rm seed
is now returning: service "seed" depends on undefined service "db-migrate": invalid compose project
Not able to solve this one yet but it looks it can also be ignored and after the following two steps I am collecting data:
docker compose --profile core up -d
docker compose --profile receiver up -d
Thanks, wish that more can deliver such a solid docker setup.
Other observations:
System now collecting msg (public and #test), but with -1 hour time difference, potentially standard I am myself on CET. Still need to check which channels are available on companion. From field info in Messages is always Public despite this should be also #test?
System does not collect adverts or clients at the moment. tiny bit clueless. Solved with flash erase companion.
Locations not visible on map: none have coordinates, but coordinates can be found in DB and MQTT-topic
RESULT:
Traceback (most recent call last):
File "/opt/venv/bin/meshcore-hub", line 7, in <module>
sys.exit(main())
~~~~^^
File "/opt/venv/lib/python3.13/site-packages/meshcore_hub/__main__.py", line 269, in main
cli()
~~~^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1485, in __call__
return self.main(*args, **kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1406, in main
rv = self.invoke(ctx)
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1873, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1873, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1269, in invoke
return ctx.invoke(self.callback, **ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 824, in invoke
return callback(*args, **kwargs)
File "/opt/venv/lib/python3.13/site-packages/meshcore_hub/__main__.py", line 86, in db_upgrade
command.upgrade(alembic_cfg, revision)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/alembic/command.py", line 483, in upgrade
script.run_env()
~~~~~~~~~~~~~~^^
File "/opt/venv/lib/python3.13/site-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
File "/opt/venv/lib/python3.13/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 1023, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/app/alembic/env.py", line 97, in <module>
run_migrations_online()
~~~~~~~~~~~~~~~~~~~~~^^
File "/app/alembic/env.py", line 75, in run_migrations_online
configuration["sqlalchemy.url"] = get_database_url()
~~~~~~~~~~~~~~~~^^
File "/app/alembic/env.py", line 38, in get_database_url
db_path.parent.mkdir(parents=True, exist_ok=True)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/pathlib/_local.py", line 722, in mkdir
os.mkdir(self, mode)
~~~~~~~~^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/data/collector'
Small problem during step:
docker compose --profile migrate run --rm db-migrate
Problem because folder `data` is created as root:root there are some errors at the end of installation (see result).
With some inspiration by previous similar issue the solution to solve this is:
```
sudo chmod -R 770 .
sudo chown -R <user>:root .
```
And rerun this step.
However next step:
docker compose --profile seed run --rm seed
is now returning:
`service "seed" depends on undefined service "db-migrate": invalid compose project`
Not able to solve this one yet but it looks it can also be ignored and after the following two steps I am collecting data:
```
docker compose --profile core up -d
docker compose --profile receiver up -d
```
Thanks, wish that more can deliver such a solid docker setup.
Other observations:
- System now collecting msg (public and #test), but with -1 hour time difference, potentially standard I am myself on CET. Still need to check which channels are available on companion. From field info in Messages is always `Public` despite this should be also `#test`?
- ~~System does not collect adverts or clients at the moment. tiny bit clueless.~~ Solved with flash erase companion.
- Locations not visible on map: none have coordinates, but coordinates can be found in DB and MQTT-topic
RESULT:
```
Traceback (most recent call last):
File "/opt/venv/bin/meshcore-hub", line 7, in <module>
sys.exit(main())
~~~~^^
File "/opt/venv/lib/python3.13/site-packages/meshcore_hub/__main__.py", line 269, in main
cli()
~~~^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1485, in __call__
return self.main(*args, **kwargs)
~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1406, in main
rv = self.invoke(ctx)
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1873, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1873, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 1269, in invoke
return ctx.invoke(self.callback, **ctx.params)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/click/core.py", line 824, in invoke
return callback(*args, **kwargs)
File "/opt/venv/lib/python3.13/site-packages/meshcore_hub/__main__.py", line 86, in db_upgrade
command.upgrade(alembic_cfg, revision)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/alembic/command.py", line 483, in upgrade
script.run_env()
~~~~~~~~~~~~~~^^
File "/opt/venv/lib/python3.13/site-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.13/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
File "/opt/venv/lib/python3.13/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 1023, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/app/alembic/env.py", line 97, in <module>
run_migrations_online()
~~~~~~~~~~~~~~~~~~~~~^^
File "/app/alembic/env.py", line 75, in run_migrations_online
configuration["sqlalchemy.url"] = get_database_url()
~~~~~~~~~~~~~~~~^^
File "/app/alembic/env.py", line 38, in get_database_url
db_path.parent.mkdir(parents=True, exist_ok=True)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/pathlib/_local.py", line 722, in mkdir
os.mkdir(self, mode)
~~~~~~~~^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/data/collector'
```
<!-- github-sync-id:3833253783 -->
I'll take a look at the Docker Compose service dependency tree. We recently removed the seed service from running by default as it destructive (overwrites all tags).
The node map issue is currently by design but will hopefully be fixed soon. We initially wanted to show our own nodes only and to do that you have to assign lat/lon node tags for them to display.
We recently agreed to use the GPS coordinates we already track to display all nodes but with a filter for "tag only" nodes.
Hopefully will get a chance to look at the issues in the next couple of weeks.
Thanks for reporting the issue.
I'll take a look at the Docker Compose service dependency tree. We recently removed the seed service from running by default as it destructive (overwrites all tags).
The node map issue is currently by design but will hopefully be fixed soon. We initially wanted to show our own nodes only and to do that you have to assign lat/lon node tags for them to display.
We recently agreed to use the GPS coordinates we already track to display all nodes but with a filter for "tag only" nodes.
Hopefully will get a chance to look at the issues in the next couple of weeks.
<!-- github-comment-id:3797139608 -->
I've just merged #71 which addresses a few Docker Compose issues. I've fixed the seed services unnecessary dependency on the db-migrate service.
However, a bigger change is that I've switched the main storage for the hub database to be a Docker managed volume instead of a bind-mount.
You can copy an existing data directory (data/collector/meshcore.db) into the new Docker volume with a command like this:
docker run --rm -v "$(pwd)/data:/src:ro" -v meshcore_hub_data:/dest alpine cp -a /src/. /dest/
There isn't really a cleaner solution that doesn't involve passing in local UID/GIDs into the Docker setup.
The changes are currently on main branch and :main container tags. I'll leave this issue open for a couple of weeks for any feedback.
I've just merged #71 which addresses a few Docker Compose issues. I've fixed the `seed` services unnecessary dependency on the `db-migrate` service.
However, a bigger change is that I've switched the main storage for the hub database to be a Docker managed volume instead of a bind-mount.
You can copy an existing `data` directory (`data/collector/meshcore.db`) into the new Docker volume with a command like this:
```bash
docker run --rm -v "$(pwd)/data:/src:ro" -v meshcore_hub_data:/dest alpine cp -a /src/. /dest/
```
There isn't really a cleaner solution that doesn't involve passing in local UID/GIDs into the Docker setup.
The changes are currently on `main` branch and `:main` container tags. I'll leave this issue open for a couple of weeks for any feedback.
<!-- github-comment-id:3814162127 -->
May I play the role as ignorant user, a role that suits me best?
I wonder why the standard (non-developer) user needs to start with:
git clone https://github.com/ipnet-mesh/meshcore-hub.git
cd meshcore-hub
Where the docker file is picking up from github? image: ghcr.io/ipnet-mesh/meshcore-hub:${IMAGE_VERSION:-latest}
In this respect the user only needs the latest docker and .env.local files and tweak it with specific settings like USB-poort.
Following the instructions of Updating an Existing Installation the first step git pull is creating errors:
wj4nuc@nuc5i5ryh:/opt/meshcore-hub$ git pull
remote: Enumerating objects: 97, done.
remote: Counting objects: 100% (97/97), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 97 (delta 56), reused 82 (delta 44), pack-reused 0 (from 0)
Unpacking objects: 100% (97/97), 19.76 KiB | 652.00 KiB/s, done.
From https://github.com/ipnet-mesh/meshcore-hub
3c7a898..3132d29 main -> origin/main
* [new tag] v0.5.4 -> v0.5.4
Updating 3c7a898..3132d29
error: Your local changes to the following files would be overwritten by merge:
.github/workflows/ci.yml
src/meshcore_hub/api/routes/nodes.py
src/meshcore_hub/web/app.py
src/meshcore_hub/web/routes/nodes.py
tests/test_api/test_nodes.py
tests/test_web/conftest.py
tests/test_web/test_nodes.py
Please commit your changes or stash them before you merge.
Aborting
My assumption is to deleted these files and redo this step, I will continue with this assumption.
Doing so, step now works.
in between step docker run --rm -v "$(pwd)/data:/src:ro" -v meshcore_hub_data:/dest alpine cp -a /src/. /dest/ Ok (maybe to early?)
step docker compose --profile all pull gives:
! db-migrate Warning Head "https://ghcr.io/v2/ipnet-mesh/meshcore-hub/manifests/latest": unauthorize... 0.4s
WARNING: Some service image(s) must be built from source by running:
docker compose build db-migrate
1 error occurred:
* Error response from daemon: Head "https://ghcr.io/v2/ipnet-mesh/meshcore-hub/manifests/latest": unauthorized
The extra advised step docker compose build db-migrate goes into error
=> ERROR [db-migrate builder 9/9] RUN sed -i "s|__version__ = "dev"|__version__ = "dev"|" src/meshcore_hub/_version.py && pip install --upgrade pip && pip install . 0.2s
------
> [db-migrate builder 9/9] RUN sed -i "s|__version__ = "dev"|__version__ = "dev"|" src/meshcore_hub/_version.py && pip install --upgrade pip && pip install .:
0.187 sed: can't read src/meshcore_hub/_version.py: No such file or directory
------
failed to solve: process "/bin/sh -c sed -i \"s|__version__ = \\\"dev\\\"|__version__ = \\\"${BUILD_VERSION}\\\"|\" src/meshcore_hub/_version.py && pip install --upgrade pip && pip install ." did not complete successfully: exit code: 2
Ignored, correct?
Step docker compose --profile core up -d --force-recreate gives this warning: WARN[0000] volume "meshcore_hub_data" already exists but was not created by Docker Compose. Use external: true to use an existing volume
Ignore or ....?
In it still working? Yes, still see new adverts/messages and hope for upcoming changes like split channels and a filled map. And need to check SQlite how access the the DB.
Additional info:
Docker version: 27.3.1
Ubuntu 24.04.3 LTS
normally I use compose.yml and not docker compose.yml; both were active in step docker compose --profile all pull giving a different warning WARNING: Some service image(s) must be built from source by running: docker compose build collector. Did a redo of this step with the correct compose active.
May I play the role as ignorant user, a role that suits me best?
I wonder why the standard (non-developer) user needs to start with:
```
git clone https://github.com/ipnet-mesh/meshcore-hub.git
cd meshcore-hub
```
Where the docker file is picking up from github?
` image: ghcr.io/ipnet-mesh/meshcore-hub:${IMAGE_VERSION:-latest}`
In this respect the user only needs the latest docker and .env.local files and tweak it with specific settings like USB-poort.
--------------------------------------------------------------------------------------------------------------------------------
Following the instructions of `Updating an Existing Installation` the first step `git pull` is creating errors:
```
wj4nuc@nuc5i5ryh:/opt/meshcore-hub$ git pull
remote: Enumerating objects: 97, done.
remote: Counting objects: 100% (97/97), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 97 (delta 56), reused 82 (delta 44), pack-reused 0 (from 0)
Unpacking objects: 100% (97/97), 19.76 KiB | 652.00 KiB/s, done.
From https://github.com/ipnet-mesh/meshcore-hub
3c7a898..3132d29 main -> origin/main
* [new tag] v0.5.4 -> v0.5.4
Updating 3c7a898..3132d29
error: Your local changes to the following files would be overwritten by merge:
.github/workflows/ci.yml
src/meshcore_hub/api/routes/nodes.py
src/meshcore_hub/web/app.py
src/meshcore_hub/web/routes/nodes.py
tests/test_api/test_nodes.py
tests/test_web/conftest.py
tests/test_web/test_nodes.py
Please commit your changes or stash them before you merge.
Aborting
```
My assumption is to deleted these files and redo this step, I will continue with this assumption.
Doing so, step now works.
--------------------------------------------------------------------------------------------------------------------------------
in between step `docker run --rm -v "$(pwd)/data:/src:ro" -v meshcore_hub_data:/dest alpine cp -a /src/. /dest/` Ok (maybe to early?)
--------------------------------------------------------------------------------------------------------------------------------
step `docker compose --profile all pull` gives:
```
! db-migrate Warning Head "https://ghcr.io/v2/ipnet-mesh/meshcore-hub/manifests/latest": unauthorize... 0.4s
WARNING: Some service image(s) must be built from source by running:
docker compose build db-migrate
1 error occurred:
* Error response from daemon: Head "https://ghcr.io/v2/ipnet-mesh/meshcore-hub/manifests/latest": unauthorized
```
--------------------------------------------------------------------------------------------------------------------------------
The extra advised step `docker compose build db-migrate` goes into error
```txt
=> ERROR [db-migrate builder 9/9] RUN sed -i "s|__version__ = "dev"|__version__ = "dev"|" src/meshcore_hub/_version.py && pip install --upgrade pip && pip install . 0.2s
------
> [db-migrate builder 9/9] RUN sed -i "s|__version__ = "dev"|__version__ = "dev"|" src/meshcore_hub/_version.py && pip install --upgrade pip && pip install .:
0.187 sed: can't read src/meshcore_hub/_version.py: No such file or directory
------
failed to solve: process "/bin/sh -c sed -i \"s|__version__ = \\\"dev\\\"|__version__ = \\\"${BUILD_VERSION}\\\"|\" src/meshcore_hub/_version.py && pip install --upgrade pip && pip install ." did not complete successfully: exit code: 2
```
Ignored, correct?
--------------------------------------------------------------------------------------------------------------------------------
Step `docker compose --profile core up -d --force-recreate` gives this warning:
`WARN[0000] volume "meshcore_hub_data" already exists but was not created by Docker Compose. Use `external: true` to use an existing volume`
Ignore or ....?
--------------------------------------------------------------------------------------------------------------------------------
In it still working? Yes, still see new adverts/messages and hope for upcoming changes like split channels and a filled map. And need to check SQlite how access the the DB.
Additional info:
Docker version: 27.3.1
Ubuntu 24.04.3 LTS
normally I use `compose.yml` and not `docker compose.yml`; both were active in step `docker compose --profile all pull` giving a different warning `WARNING: Some service image(s) must be built from source by running:
docker compose build collector`. Did a redo of this step with the correct compose active.
<!-- github-comment-id:3816959595 -->
Technically as an end user, you should only need the compose file and to create the .env file.
However the Compose file is dual purpose, if you "pull" and then "up -d", you'll pull the images from GHCR but it also can build locally (for development and testing).
The Git Pull error you saw appears to show that you had made modifications to the actual source code. You can "stash" these but ultimately you shouldn't need to modify the source code.
I will attempt a fresh install on a clean environment and investigate the compose process thoroughly.
Technically as an end user, you should only need the compose file and to create the .env file.
However the Compose file is dual purpose, if you "pull" and then "up -d", you'll pull the images from GHCR but it also can build locally (for development and testing).
The Git Pull error you saw appears to show that you had made modifications to the actual source code. You can "stash" these but ultimately you shouldn't need to modify the source code.
I will attempt a fresh install on a clean environment and investigate the compose process thoroughly.
<!-- github-comment-id:3819413612 -->
I did the same and was successful after I solved two minor problems but perhaps you want to add them.
Because DB already exist as a volume but created differently it is suggesting to add " external: true" on this volume.
Because I do an automated maintenance on my system, occasionally this includes a reboot. However if multi attached USB-ports are attached they tend to swap ports. This causes a failure. The solution is not to use the USB-port but the name of the device.
Run commando: ls -la /dev/serial/by-id
Result (for me):
Thanks for the update, it works like a charm again. When can we expect the split of channel and showing on the map?
(can be closed)
I did the same and was successful after I solved two minor problems but perhaps you want to add them.
1. Because DB already exist as a volume but created differently it is suggesting to add " external: true" on this volume.
2. Because I do an automated maintenance on my system, occasionally this includes a reboot. However if multi attached USB-ports are attached they tend to swap ports. This causes a failure. The solution is not to use the USB-port but the name of the device.
Run commando: ls -la /dev/serial/by-id
Result (for me):
```
lrwxrwxrwx 1 root root 13 Feb 5 10:18 usb-Heltec_HT-n5262_3D3B4D4A4D776001-if00 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 Feb 5 10:18 usb-RAKwireless_WisCore_RAK4631_Board_F58BA22A157F29A0-if00 -> ../../ttyACM1
lrwxrwxrwx 1 root root 13 Feb 5 10:18 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -> ../../ttyUSB0
```
Line in .env:
`SERIAL_PORT=/dev/serial/by-id/usb-Heltec_HT-n5262_3D3B4D4A4D776001-if00`
Action not really required if you have 2 USB-ports occupied but only 1 ACM and 1 USB.
Actions I did for renaming docker volume.
```
docker volume create backup
docker run --rm -v meshcore_hub_data:/from -v backup:/to alpine ash -c "cd /from ; cp -a . /to"
docker volume rm meshcore_hub_data
```
Thanks for the update, it works like a charm again. When can we expect the split of channel and showing on the map?
(can be closed)
<!-- github-comment-id:3853243555 -->
Thanks for the reply. Glad its working a bit better for you now. I will update the docs with the /dev/serial/by-id pattern, and will add the external: true label to the data volume.
I'll leave this issue open until I've resolved those.
Showing nodes on the map will be coming soon, its a sizeable change, so will need some planning and testing.
Thanks for the reply. Glad its working a bit better for you now. I will update the docs with the `/dev/serial/by-id` pattern, and will add the `external: true` label to the data volume.
I'll leave this issue open until I've resolved those.
Showing nodes on the map will be coming soon, its a sizeable change, so will need some planning and testing.
<!-- github-comment-id:3860151865 -->
external: true label looks only required when the docker com.docker.compose.project <> meshcore-hub
I not a star with docker but I did not changed this in your present docker-compose.
My second test was BTW a clean test with only your compose and my details in .env in my folder, worked perfectly.
Your extra collector level puzzled in combination with a volume when I wanted to get access with SQlite, but again educational.:D
external: true label looks only required when the docker `com.docker.compose.project <> meshcore-hub`
I not a star with docker but I did not changed this in your present docker-compose.
My second test was BTW a clean test with only your compose and my details in .env in my folder, worked perfectly.
Your extra collector level puzzled in combination with a volume when I wanted to get access with SQlite, but again educational.:D
<!-- github-comment-id:3860249600 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Small problem during step:
docker compose --profile migrate run --rm db-migrate
Problem because folder
datais created as root:root there are some errors at the end of installation (see result).With some inspiration by previous similar issue the solution to solve this is:
And rerun this step.
However next step:
docker compose --profile seed run --rm seed
is now returning:
service "seed" depends on undefined service "db-migrate": invalid compose projectNot able to solve this one yet but it looks it can also be ignored and after the following two steps I am collecting data:
Thanks, wish that more can deliver such a solid docker setup.
Other observations:
Publicdespite this should be also#test?System does not collect adverts or clients at the moment. tiny bit clueless.Solved with flash erase companion.RESULT:
Thanks for reporting the issue.
I'll take a look at the Docker Compose service dependency tree. We recently removed the seed service from running by default as it destructive (overwrites all tags).
The node map issue is currently by design but will hopefully be fixed soon. We initially wanted to show our own nodes only and to do that you have to assign lat/lon node tags for them to display.
We recently agreed to use the GPS coordinates we already track to display all nodes but with a filter for "tag only" nodes.
Hopefully will get a chance to look at the issues in the next couple of weeks.
I've just merged #71 which addresses a few Docker Compose issues. I've fixed the
seedservices unnecessary dependency on thedb-migrateservice.However, a bigger change is that I've switched the main storage for the hub database to be a Docker managed volume instead of a bind-mount.
You can copy an existing
datadirectory (data/collector/meshcore.db) into the new Docker volume with a command like this:There isn't really a cleaner solution that doesn't involve passing in local UID/GIDs into the Docker setup.
The changes are currently on
mainbranch and:maincontainer tags. I'll leave this issue open for a couple of weeks for any feedback.May I play the role as ignorant user, a role that suits me best?
I wonder why the standard (non-developer) user needs to start with:
Where the docker file is picking up from github?
image: ghcr.io/ipnet-mesh/meshcore-hub:${IMAGE_VERSION:-latest}In this respect the user only needs the latest docker and .env.local files and tweak it with specific settings like USB-poort.
Following the instructions of
Updating an Existing Installationthe first stepgit pullis creating errors:My assumption is to deleted these files and redo this step, I will continue with this assumption.
Doing so, step now works.
in between step
docker run --rm -v "$(pwd)/data:/src:ro" -v meshcore_hub_data:/dest alpine cp -a /src/. /dest/Ok (maybe to early?)step
docker compose --profile all pullgives:The extra advised step
docker compose build db-migrategoes into errorIgnored, correct?
Step
docker compose --profile core up -d --force-recreategives this warning:WARN[0000] volume "meshcore_hub_data" already exists but was not created by Docker Compose. Useexternal: trueto use an existing volumeIgnore or ....?
In it still working? Yes, still see new adverts/messages and hope for upcoming changes like split channels and a filled map. And need to check SQlite how access the the DB.
Additional info:
Docker version: 27.3.1
Ubuntu 24.04.3 LTS
normally I use
compose.ymland notdocker compose.yml; both were active in stepdocker compose --profile all pullgiving a different warningWARNING: Some service image(s) must be built from source by running: docker compose build collector. Did a redo of this step with the correct compose active.Technically as an end user, you should only need the compose file and to create the .env file.
However the Compose file is dual purpose, if you "pull" and then "up -d", you'll pull the images from GHCR but it also can build locally (for development and testing).
The Git Pull error you saw appears to show that you had made modifications to the actual source code. You can "stash" these but ultimately you shouldn't need to modify the source code.
I will attempt a fresh install on a clean environment and investigate the compose process thoroughly.
I did the same and was successful after I solved two minor problems but perhaps you want to add them.
Run commando: ls -la /dev/serial/by-id
Result (for me):
Line in .env:
SERIAL_PORT=/dev/serial/by-id/usb-Heltec_HT-n5262_3D3B4D4A4D776001-if00Action not really required if you have 2 USB-ports occupied but only 1 ACM and 1 USB.
Actions I did for renaming docker volume.
Thanks for the update, it works like a charm again. When can we expect the split of channel and showing on the map?
(can be closed)
Thanks for the reply. Glad its working a bit better for you now. I will update the docs with the
/dev/serial/by-idpattern, and will add theexternal: truelabel to the data volume.I'll leave this issue open until I've resolved those.
Showing nodes on the map will be coming soon, its a sizeable change, so will need some planning and testing.
external: true label looks only required when the docker
com.docker.compose.project <> meshcore-hubI not a star with docker but I did not changed this in your present docker-compose.
My second test was BTW a clean test with only your compose and my details in .env in my folder, worked perfectly.
Your extra collector level puzzled in combination with a volume when I wanted to get access with SQlite, but again educational.:D
I've updated the README with the
/dev/serial/by-idtip. Closing this issue then. Thanks for the feedback.