pull down to refresh

If you want to run your own directory node, here's the basic setup:

Docker Compose Setup

services:
  joinmarket-directory:
    image: ghcr.io/joinmarket-webui/jam-standalone:v0.4.0-clientserver-v0.9.11
    container_name: joinmarket-directory
    volumes:
      - /data/joinmarket-directory/:/joinmarket/
    entrypoint: ""
    command: >
      bash -c "
      service tor start &&
      python3 /joinmarket/start-dn.py --datadir=/joinmarket/ '${MOTD}'
      "
    environment:
      - JOINMARKET_DATADIR=/joinmarket
    deploy:
      resources:
        limits:
          cpus: 2
          memory: 1G
    restart: always
    labels:
      - "traefik.enable=false"
    healthcheck:
      test: ["CMD", "sh", "-c", "timeout 10 curl --socks5-hostname 127.0.0.1:9050 --connect-timeout 10 http://${HIDDEN_SERVICE_HOSTNAME}:5222 2>&1 | grep -q 'Empty reply from server'"]
      interval: 30s
      timeout: 15s
      retries: 3
      start_period: 60s

Environment Variables (.env)

MOTD=Your custom message here
# cat /joinmarket/tor_hidden_service/hostname after the first run
HIDDEN_SERVICE_HOSTNAME=your_onion_address.onion

Configuration (joinmarket.cfg)

Key settings for directory nodes:
[DAEMON]
no_daemon = 1
daemon_port = 27183
daemon_host = localhost
use_ssl = false

[BLOCKCHAIN]
blockchain_source = no-blockchain
network = mainnet

[MESSAGING:onion]
type = onion
socks5_host = tor
socks5_port = 9050
tor_control_host = tor
tor_control_port = 9051
onion_serving_host = 0.0.0.0
onion_serving_port = 5222

# CRITICAL: This enables directory node functionality
hidden_service_dir = /joinmarket/tor_hidden_service
directory_nodes = your_onion_address.onion:5222

[LOGGING]
console_log_level = INFO
color = true

Required Script

Download the directory node script:
wget https://raw.githubusercontent.com/JoinMarket-Org/custom-scripts/master/start-dn.py
Place it in your JoinMarket directory before starting the container.

Finding existing directory nodes

Every additional directory node helps make JoinMarket more robust for everyone.
0 sats \ 1 reply \ @OT 29 Jun
What would be the advantage of doing this?
reply
For you none at first. But having more reliable directory nodes makes JoinMarket work better (faster, less failures) and hopefully that helps increase its usage, which is in everyone's banefit.
Current nodes are pretty unstable and there are only 2-3 that work.
reply
0 sats \ 1 reply \ @anon 30 Jun
Thanks for including the .cfg file. Note: no system-wide (torrc) changes to Tor are needed, beyond those described in tor.md
jmarketxf5wc4aldf3slm5u6726zsky52bqnfv6qyxe5hnafgly6yuyd.onion:5222
reply
jmarketxf5wc4aldf3slm5u6726zsky52bqnfv6qyxe5hnafgly6yuyd.onion:5222
Thanks, it works.
Announced:
Also added it as a source for https://joinmarket.sgn.space/
reply
0 sats \ 1 reply \ @anon 29 Jun
shssats5ucnwdpbticbb4dymjzf2o27tdecpes35ededagjpdmpxm6yd.onion
reply
shssats5ucnwdpbticbb4dymjzf2o27tdecpes35ededagjpdmpxm6yd.onion
Thanks, it works.
Announced:
Also added it as a source for https://joinmarket.sgn.space/
reply
0 sats \ 1 reply \ @anon 29 Jun
Thanks! Please advertise this one: satoshi2vcg5e2ept7tjkzlkpomkobqmgtsjzegg6wipnoajadissead.onion:5222
reply
satoshi2vcg5e2ept7tjkzlkpomkobqmgtsjzegg6wipnoajadissead.onion
That's the spirit! Thanks.
It works:
torify nc -zv satoshi2vcg5e2ept7tjkzlkpomkobqmgtsjzegg6wipnoajadissead.onion 5222
Connection to satoshi2vcg5e2ept7tjkzlkpomkobqmgtsjzegg6wipnoajadissead.onion (127.42.42.0) 5222 port [tcp/xmpp-client] succeeded!
Announced:
Also added it as a source for https://joinmarket.sgn.space/
reply
Running a directory node does not require much resources. I would advertise it anonymously though to not be linked to it.
Directory nodes don't hold funds or user data, so it's not a big deal. But regulators can be very dumb, privacy is always a good idea.
reply