Monero-lws docker maintained by Vtnerd linked in https://libera.monerologs.net/monero-community/20251025#c601972
docker pull ghcr.io/vtnerd/monero-lws:latest
I recognise this gchr thing, i seen it today when trying to use github workflow caches
It's Git Hubs Container Registry https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry skipping over the details i can assume that the image i pull was created by vtnerd himself
lets just jump in and run the command without reading any docs and see what happens.
# docker pull ghcr.io/vtnerd/monero-lws:latest
latest: Pulling from vtnerd/monero-lws
828c1365039a: Pull complete
364aa094af3e: Pull complete
4f4fb700ef54: Pull complete
7e0b10f88f23: Pull complete
fccaf557b559: Pull complete
Digest: sha256:bb5037c1a68e03d38db1d7e1c205bb398accbc1abce11ab6b21a76a09e974747
Status: Downloaded newer image for ghcr.io/vtnerd/monero-lws:latest
ghcr.io/vtnerd/monero-lws:latest
ok great, now what, i guess i need to read some docs.. right, here we go https://github.com/vtnerd/monero-lws?tab=readme-ov-file#docker
yep, no direct instructions there on how to use the container after pulling it, further research...
a clue at the end of the Dockerfile: https://github.com/vtnerd/monero-lws/blob/master/Dockerfile#L136C1-L140C83
--zmq-rpc-bind-port arg (=18082, 28082 if 'testnet', 38082 if 'stagenet')
Port for ZMQ RPC server to listen on
--zmq-pub arg Address for ZMQ pub - tcp://ip:port or
ipc://path
default for --zmq-rpc-bind-port is 18082
--zmq-pub is set for my node @ zmq-pub=tcp://0.0.0.0:18084
so to run the container and pass the correct ports:
docker run --name monero-lws \
--network host \
ghcr.io/vtnerd/monero-lws:latest \
--daemon=tcp://127.0.0.1:18082 \
--sub=tcp://127.0.0.1:18084
ok first run looks successfull:
2025-10-25 18:20:45.278 I Using monerod ZMQ RPC at tcp://127.0.0.1:18082
2025-10-25 18:20:45.278 I Starting blockchain sync with daemon
2025-10-25 18:20:45.420 I [PARSE URI] regex not matched for uri: ^(([^:]*?)://)?(\[(.*)\](:(\d+))?)(.*)?
2025-10-25 18:20:45.421 I Binding on 0.0.0.0 (IPv4):8443
2025-10-25 18:20:45.422 I Generating SSL certificate
2025-10-25 18:20:47.306 I Run net_service loop( 1 threads)...
2025-10-25 18:20:47.306 I Listening for REST clients at https://0.0.0.0:8443
2025-10-25 18:20:47.306 I Retrieving current active account list
2025-10-25 18:20:47.306 I No active accounts
2025-10-25 18:20:57.306 I Starting blockchain sync with daemon
2025-10-25 18:20:57.308 I Retrieving current active account list
2025-10-25 18:20:57.308 I No active accounts
ok lets ctrl+c then start a screen -S monero-lws and run it after docker rm -f monero-lws.
open the port
ufw allow 8443
if everything is good i can point skylight wallet to node3.monerodevs.org:8843 (i could add a tor service for it too.. testing clearnet first)
i dont have https setup so i had to do:
docker run --name monero-lws --network host ghcr.io/vtnerd/monero-lws:latest --daemon=tcp://127.0.0.1:18082 --sub=tcp://127.0.0.1:18084 --rest-server http://0.0.0.0:8443 --confirm-external-bind
which lets the skylight wallet connect to node3.monerodevs.org:8443 , so.. i assume i have to approve the account? admin?
more research .. i know there is a UI admin interface at https://github.com/CryptoGrampy/monero-lws-admin but ive never used it..
for now lets add --auto-accept-creation
so we have:
docker run --name monero-lws --network host ghcr.io/vtnerd/monero-lws:latest --daemon=tcp://127.0.0.1:18082 --sub=tcp://127.0.0.1:18084 --rest-server http://0.0.0.0:8443 --confirm-external-bind --auto-accept-creation
does the docker image spuport subaddresses yet.. more research because i see 2025-10-25 18:49:01.689 I Max subaddresses exceeded from 81.205.174.188:45064 on /upsert_subaddrs
--max-subaddresses arg (=0) Maximum number of subaddresses per
primary account (defaults to 0)
ok so, add that flag.. (i had to bump it to 20000 to stop some max subaddress warnings
docker run --name monero-lws --network host ghcr.io/vtnerd/monero-lws:latest --daemon=tcp://127.0.0.1:18082 --sub=tcp://127.0.0.1:18084 --rest-server http://0.0.0.0:8443 --confirm-external-bind --auto-accept-creation --max-subaddresses 20000
okay now i can send some piconeros ...
< vtnerd > https://redocly.github.io/redoc/?utm_source=openapi-tools&utm_medium=website&utm_campaign=documentation&url=https://raw.githubusercontent.com/vtnerd/meta/update/yaml_lws_spec/api/lightwallet_rest.yaml