Avatar
kohanucha
6bd128bf99237f476877420cec54737b1e44d4a25afce35f16296945bb9002f8
Back-end developer

ผมต้องไปหาดูมั่งละแหละ

#siamstr

มีใครเคยดูหนังเรื่องนี้มั้ยครับ ที่พูดถึงเรื่องของ edward snowden คนที่เปิดโปงว่า NSA กำลังส่องพวกเราอยู่และน่าจะเป็นเหตุการณ์ที่ทำให้มีความกังวลว่า ECDSA secp256r1 curve ที่ออกแบบโดย NSA อาจจะมี backdoor

bitcoin จึงใช้ secp256k1 แทนเพราะไม่ไว้ใจ NSA

https://youtu.be/QlSAiI3xMh4

วิธีคร่าว ๆ ถ้าอยาก run bitcoin node docker container โดยให้อยู่หลัง tor ครับ #siamstr

1. Install tor ในเครื่อง server ของเรา ตาม link นี้ https://community.torproject.org/onion-services/setup/install/

2. ถ้าเอาง่ายสามารถรัน docker container ด้วย network mode host ได้เลยแล้วก็ config tor เหมือนเรา run bitcoin node ในเครื่อง server ได้เลย

3. ถ้าต้องการแยก network ให้สร้าง docker network ขึ้นมาแล้ว config ให้ docker container มาใช้ network ที่เราสร้างเพื่อเชื่อมต่อไปหา tor บน host machine

4. config tor ให้รับ request จาก docker และ authen ด้วย cookie ที่ไฟล์ /etc/tor/torrc

ถ้าใช้ docker bridge network

```

SOCKSPort ${DOCKER_HOST_GATEWAY_IP}:9050

ControlPort ${DOCKER_HOST_GATEWAY_IP}:9051

CookieAuthentication 1

CookieAuthFileGroupReadable 1

```

*** ${DOCKER_HOST_GATEWAY_IP} สามารถดูได้จาก docker network inspect

ถ้าใช้ network host

```

SOCKSPort 127.0.0.1:9050

ControlPort 127.0.0.1:9051

CookieAuthentication 1

CookieAuthFileGroupReadable 1

```

5. config bitcoin node ในไฟล์ bitcoin.conf ให้ใช้ tor (config อาจจะต่างกันในแต่ละ version)

ถ้าใช้ docker bridge network

```

debug=tor

onlynet=onion

proxy=${DOCKER_HOST_GATEWAY_IP}:9050 # where to connect tor SOCKS5 for outgoing connections

torcontrol=${DOCKER_HOST_GATEWAY_IP}:9051 # where to connect tor control for hidden bitcoin service

bind=0.0.0.0:8334=onion # where to receive incoming peer connections

```

ถ้าใช้ network host

```

debug=tor

onlynet=onion

proxy=127.0.0.1:9050

torcontrol=127.0.0.1:9051

bind=127.0.0.1:8334=onion

```

6. เขียน docker-compose.yml file ตัวอย่างผมใช้ image ของ https://github.com/lncm/docker-bitcoind

```

services:

bitcoind:

container_name: bitcoind

image: lncm/bitcoind:v28.0

user: "1000:1000" # run process with user 1000 (bitcoind user in container)

group_add:

- "${DEBIAN_TOR_GID}" # add user 1000 to debian-tor group (debian-tor group in host machine) to read tor control.authcookie file

volumes:

- ~/data/bitcoin/:/data/.bitcoin/ # where to store bitcoin data

- /run/tor/control.authcookie:/run/tor/control.authcookie:ro # map tor control.authcookie for authentication

ports:

- "8334:8334" # expose port 8334 to receive incoming peer from tor network

networks:

- ext_bitcoind_bridge # use external network to prevent ip changing after docker compose down and up again

networks:

ext_bitcoind_bridge:

external: true

name: bitcoind_bridge # need to run 'docker network create bitcoind_bridge' before docker compose up

```

7. docker compose up -d

8. ถ้าใช้ firewall ร่วมด้วยก็ต้องไป allow proxy port กับ control port ของ tor ให้เชื่อมต่อจาก docker network ได้ด้วย

เย่ ขอบคุณคร้าบบบ ผมลองใน primal เชื่อมต่อได้แล้วครับ

หรือว่าโดน reject ที่ relay หว่า มันมี log ว่าไปถึง relay มั้ยครับ

ผมลอง wherostr กับ damus ใช้งานได้ปกติครับ

Update การใช้งานครับ ตอนนี้เหมือนเจอว่า client บางตัวที่ไม่ได้ส่ง user-agent ไปด้วยใน header จะไม่สามารถเชื่อมต่อได้ครับ เช่น primal on ios

ผมลองทดสอบด้วย websocat เทียบกับ relay ของคุณอาร์มแล้วเจอว่า

ถ้าไม่ใส่ user-agent ได้ 403 Forbidden

% websocat wss://relay.siamdev.cc

websocat: WebSocketError: WebSocketError: Received unexpected status code (403 Forbidden)

websocat: error running

% websocat wss://relay.notoshi.win

^C

ถ้าใส่ user-agent เชื่อมต่อได้

% websocat wss://relay.siamdev.cc -H 'User-Agent: Websocat'

^C

% websocat wss://relay.notoshi.win -H 'User-Agent: Websocat'

^C

คิดว่าน่าจะเพราะ cloudflare กันไว้นะครับว่าต้องส่ง user-gent มาด้วยถึงจะ allow ให้เข้าไปได้

Thank you so much, but i think it’s just a my internet connection issue.

คิดว่าใช่ครับ 5555

วันที่ 30 มีนา ประมาณบ่ายโมงครึ่งครับ แต่ผมคิดว่าน่าจะเป็นเพราะ alby go ของผมเองนะที่ error