I think it is worth building the images on the host as the one on dockerhub is not automatically updated when packages update etc.
But no, you don’t need a registry, it will simply build to the local docker images. build and buildx both work.
the build.sh in addons is what I use.
Also, there’s some errors in the combination with the repo name, my build are all tagged knegge/.... so librespace/satnogs-client:lsf-addons will not be found as it is not in librespace/.... repo.
You can tag images with multiple names as well.
You are completely right, in view of the dependencies, this seems more suitable for me.
I just saw the build.sh, I hadn’t seen it…
I installed two stations at the same time with Docker and it works great…it’s very stable. I should go up to 4 soon.
So I look at the code a little more closely on all Satnogs software, in order to be able to experiment with certain things and familiarize myself.
The demodulation part with .grc and flowgraph seems nice to study.
I saw that for StratoSat TK-1, there were decoders available and I am looking at the possibility of integrating other decoders (already done) initially via python. And I also look at how the sending of decodings works…The Kaitai structure seems barbaric to me for the moment
Moreover, in this regard, I saw that in the Dockerfile of the addons, there were lines commented at the LeanHRPT level. Now, I was looking at how I could integrate HRPT decoding into Satnogs. In fact I can’t find much on this subject and I would like to be able to try to receive some things in L band.
There must certainly be a good reason for deactivating this component…
Yes, it states that in the comment, requiring qt5 and some other big libs. I’d recommend looking into the satdump cli instead but it’s a bunch to grasp.
Use the SatDump ui first, try it live or on baseband recordings, then figure out the appropriate output confguration of what to produce, then move/rename it to satnogs data/obs files for upload.
I wanted to put the directives in sat.cfg for bluebird
61046 --disable_dc_block
61049 --disable_dc_block
61045 --disable_dc_block
61048 --disable_dc_block
61047 --disable_dc_block
So I added to the sat.cfg file in the addons part. and build it via build.sh
But when I go to the container and look at the contents of /var/lib/satnogs-client/.gr_satellites I can’t find sat.cfg file.
I first thought of a variable problem because SATNOGS_CLIENT_VARSTATEDIR=/var/lib/satnogs-client
and therefore /target/$SATNOGS_CLIENT_VARSTATEDIR/.gr_satellites/sat.cfg makes /target**//**var/lib/satnogs-client/.gr_satellites/sat.cfg with a double /
But that doesn’t change anything.
I did a find command on the entire container looking for sat.cfg and found nothing…
If i change, satgnos-pre for example, it’s ok in my container.
In addition to the double / in the path, the copy does not seem to be done because of access to the directory /var/lib/satnogs-client which has a chown to satnogs-client: satnogs-client
If I move the lines to the end of the dockerfile, the COPY --chown directive works and copy files it’s ok now.
and you need to use the tag shown like knegge/satnogs-client:lsf-addons of what ever you have chosen in the build.sh else you will just use another old image.
For testing, just run docker run --rm -it knegge/satnogs-client:lsf-addons bash and poke around.
I use the knegge/satnogs-client:lsf-addons tag which was generated by the build.sh as root
If I make a change elsewhere in the code, it appears in the image.
I have to redo the installation on a mini PC… I will review this point on this occasion. It’s not a big deal, the files arrive at their destination in the end…lol
PS: I will edit the message again later to list some commands that I use just in case… and some info, from the radio pc
One important detail, if you’re running it from the stack, the persistant volume can play tricks on you when files are both in the image and stored in the volume. That’s why I do the poking around with a simple --run
--8<--
volumes:
- type: 'volume'
source: 'satnogs-client'
target: '/var/lib/satnogs-client'
--8<--
volumes:
satnogs-client: # persistent named volume for the station
This is some info from my rpi running station 1864:
$ docker compose version
Docker Compose version v2.24.0-birthday.10
$ docker version
Client:
Version: 20.10.5+dfsg1
API version: 1.41
Go version: go1.15.15
Git commit: 55c4c88
Built: Mon May 30 18:34:49 2022
OS/Arch: linux/arm64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.5+dfsg1
API version: 1.41 (minimum version 1.12)
Go version: go1.15.15
Git commit: 363e9a8
Built: Mon May 30 18:34:49 2022
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.4.13~ds1
GitCommit: 1.4.13~ds1-1~deb11u4
runc:
Version: 1.0.0~rc93+ds1
GitCommit: 1.0.0~rc93+ds1-5+deb11u3
docker-init:
Version: 0.19.0
GitCommit:
That’s right, I wasn’t looking in the right place.
The directory is declared as a persistent volume so the data is on the root disk, not in the container…
Thank you Dani… I had seen that there was a volume, but I didn’t make the link.
So I do a docker volume ls to have the list of volumes, then a docker inspect volume_name to know the exact path on the root disk and it’s ok, there are the files.
Cool and excuse me for my ignorance, because until now, I had never built a docker image…
So now I should be able to manage to do a lot of things.
Well now, I’ll have to improve my decoding, but I’m going to make another post so as not to mix everything up.
In addition, I had fun building satnogs-client-docker as much as possible without any dependency with the docker hub… it allows me to be as up to date as possible.
This gives something like this which apparently works well (I did not make the changes to the repositories and registry tags in this example), but I think I’ll script it:
------------- Construction from the different git sources of the satnogs-client-docker image ----------------------
git clone https://gitlab.com/knegge/docker-gnuradio
cd docker-gnuradio
docker build -t registry/gnuradio:3.8.2.0-satnogs .
cd ..
git clone https://gitlab.com/librespacefoundation/satnogs/satnogs-client.git
cd satnogs-client
docker build -t registry/satnogs-client:latest .
cd satnogs-client/addons
cd addons
Add apt install jq in Dockerfile to avoid errors when constructing the image
docker build -t registry/satnogs-client:addons .
cd ..
cd ..
git clone https://github.com/kng/satnogs-client-docker.git
cd satnogs-client-docker
cd addons
export DOCKER_BUILDKIT=1
docker build -t registry/satnogs-client-docker:addons .
Modifiy Docker compose yaml file for station with
satnogs_client: image: registry/satnogs-client-docker:addons
---------------------------------------------------------------------------------------------------------------------------
In the end le docker image ls gives me
REPOSITORY TAG IMAGE ID CREATED SIZE
registry/satnogs-client-docker addons 3960f0a47f07 23 minutes ago 2.49GB
registry/satnogs-client addons 0dc45c85a6c0 55 minutes ago 2.4GB
registry/satnogs-client latest 23d75f607e9e About an hour ago 2.39GB
registry/gnuradio 3.8.2.0-satnogs 2dd60c009748 About an hour ago 2.18GB
librespace/hamlib latest 01f8619574c9 7 months ago 136MB
registry 2 75ef5b734af4 12 months ago 25.4MB
PS: the JQ dependency for the Dockerfile of the satnogs-client addons is missing for me
Regarding the volume, the fastest way to manage sat.cfg and other specific configs that is in the homedir is to just edit them in the volume instead of rebuilding. Just pop in to a shell in the stack and cat > sat.cfg , paste the contents and Ctrl-D to save.
I need to have a look at the build when the sun is up… I do note that there’s a bunch of building that doesn’t need to be done and some repos that aren’t maintained.
satdump settings in json the specifies the wanted composites for each of the satellites used, limited to say VHF.
we can use ~/.config/satdump/settings.json to select what to generate, "autogen": false, for those we don’t need. else it produces a lot of images for each observation.
image renaming to satnogs format for the -client to upload.
the usual images looks like data_10316867_2024-09-28T10-00-36.png but I’m pretty sure a _name can be added before the extension.
basically this example.