Can't connect to Zallet’s JSON-RPC interface

Hey guys,
I am setting up a shielded-newsletter system using the Z3 stack on a server (Zebra + Zaino + Zallet). Everything is running: the Zebra node is fully synced, Zallet is connected, scanning, and healthy inside Docker.

My blocker is the following:

I can’t authenticate to Zallet’s JSON-RPC interface.

  • The RPC port 28232 is open but returns 401 Unauthorized for all requests

  • The shared cookie volume (z3_shared_cookie_volume) is empty

  • Zallet’s data dir (z3_zallet_data) also has no .cookie file

  • Inside the container, zallet rpc help fails with:
    “No JSON-RPC port is available.”

  • I cannot find documentation describing where the Zallet Docker image stores the RPC credentials, or how RPC authentication is designed to work.

Why this matters

To send automated shielded memos for the newsletter, the server must:

  1. Authenticate to Zallet

  2. Create a Zallet receiving UA

  3. Send funds to that UA

  4. Use RPC commands to broadcast many shielded memos

Right now I am stuck at step 1, I can’t log in to Zallet’s RPC.

My questions

  1. Where does the Zallet Docker image store its RPC auth (cookie, credentials, or token)?

  2. Is there an environment variable or config option needed to enable RPC auth in the container?

  3. What is the correct way to call Zallet RPC from the host (curl or zallet rpc), and with what authentication?

  4. Should a .cookie file be created automatically, or does it require manual configuration?

Everything else in the stack is working. I just need RPC access so the server can create an account, generate a UA, and programmatically send transactions.

Any pointers, docs, or examples would be very helpful.
Happy to provide logs or open an issue if needed.

Thanks!

Hi with the latest pull from the zallet repo you should be able to access zallet rpc help.

For a simple dev setup,

  • local zebrad 3.0 synced
  • zebrad rpc turned on
  • zebrad cookies turned on
  • git cloned zallet repo

Configure a datadir and zallet.toml in the default location: ~/.zallet. Here is an example zebrad.toml that works for me:

  • You will need to setup an encryption id, an replace with your local username of your box.
  • Can choose different ports as needed, but notice the difference between validator_address and rpc bind ports

Then start zallet:

./target/release/zallet -d /home/<username>/.zallet/datadir/ -c /home/<username>/.zallet/datadir/zallet.toml start

On another screen/tmux/terminal now run

./target/release/zallet -d /home/<username>/.zallet/datadir -c /home/<username>/.zallet/datadir/zallet.toml rpc help

On a seperate note, I would not run this setup in production until its out of alpha/beta :+1:

3 Likes