route txes through tor and i2p proxies (#29)

* route txes through tor and i2p proxies

* include entry script

* update docker-files with dependency order and use new monerod command

* Update dockerfiles/i2p

Co-authored-by: nahuhh <50635951+nahuhh@users.noreply.github.com>

* Update dockerfiles/i2p

Co-authored-by: nahuhh <50635951+nahuhh@users.noreply.github.com>

* Update dockerfiles/i2p-entrypoint.sh

Co-authored-by: nahuhh <50635951+nahuhh@users.noreply.github.com>

* Update dockerfiles/monero-entrypoint.sh

Co-authored-by: nahuhh <50635951+nahuhh@users.noreply.github.com>

* Update dockerfiles/monero-entrypoint.sh

Co-authored-by: nahuhh <50635951+nahuhh@users.noreply.github.com>

* remove q install and dns, specify private ip for tor/i2p

* fix ips

* use ubuntu 22.04 for tor build

* fix i2pd configs

* adjust i2p config, no depends on monerod

* use gunicorn for flask app, faster restart time

---------

Co-authored-by: nahuhh <50635951+nahuhh@users.noreply.github.com>
This commit is contained in:
lalanza808
2024-12-29 11:34:56 -08:00
committed by GitHub
parent 183d85942d
commit cdcca37ce0
9 changed files with 247 additions and 39 deletions

View File

@@ -1,5 +1,3 @@
version: "3.7"
volumes:
grafana:
prometheus:
@@ -11,7 +9,14 @@ x-log-config: &log-config
max-size: "50m"
max-file: "20"
services:
networks:
tor_net:
ipam:
driver: default
config:
- subnet: "172.31.255.0/24"
services:
prometheus:
image: prom/prometheus:${PROM_TAG:-v2.36.0}
command:
@@ -20,11 +25,16 @@ services:
- --storage.tsdb.retention.time=${PROM_RETENTION:-360d}
container_name: monerod_prometheus
restart: unless-stopped
ports:
- 127.0.0.1:9090:9090
depends_on:
exporter:
condition: service_started
# ports:
# - 127.0.0.1:9090:9090
volumes:
- prometheus:/prometheus
- ./files/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
networks:
- tor_net
<<: *log-config
grafana:
user: "1000"
@@ -34,7 +44,7 @@ services:
restart: unless-stopped
image: grafana/grafana:${GRAFANA_TAG:-10.1.4}
ports:
- 127.0.0.1:3000:3000
- 127.0.0.1:${GRAF_PORT:-3000}:3000
volumes:
- grafana:/var/lib/grafana
- ./files/grafana/grafana.ini:/etc/grafana/grafana.ini:ro
@@ -53,6 +63,8 @@ services:
GF_AUTH_DISABLE_LOGIN_FORM: "${GF_AUTH_DISABLE_LOGIN_FORM:-true}"
GF_SECURITY_ADMIN_PASSWORD: "${GF_SECURITY_ADMIN_PASSWORD}"
GF_SECURITY_ADMIN_USER: "${GF_SECURITY_ADMIN_USER}"
networks:
- tor_net
<<: *log-config
exporter:
container_name: monerod_exporter
@@ -60,10 +72,15 @@ services:
context: .
dockerfile: dockerfiles/exporter
restart: unless-stopped
ports:
- 127.0.0.1:9000:9000
depends_on:
monerod:
condition: service_started
# ports:
# - 127.0.0.1:9000:9000
command:
- --monero-addr=http://monerod:${UNRESTRICTED_PORT:-18083}
networks:
- tor_net
<<: *log-config
nodemapper:
container_name: monerod_nodemapper
@@ -71,18 +88,54 @@ services:
build:
context: .
dockerfile: dockerfiles/nodemapper
depends_on:
monerod:
condition: service_started
environment:
NODE_HOST: monerod
NODE_PORT: 18083
ports:
- 127.0.0.1:${MAPPER_PORT:-5000}:5000
# ports:
# - 127.0.0.1:${MAPPER_PORT:-5000}:5000
networks:
- tor_net
<<: *log-config
tor:
container_name: monerod_tor
build:
context: .
dockerfile: dockerfiles/tor
restart: unless-stopped
# ports:
# - 127.0.0.1:9050:9050
networks:
tor_net:
ipv4_address: 172.31.255.250
<<: *log-config
i2p:
container_name: monerod_i2p
build:
context: .
dockerfile: dockerfiles/i2p
restart: unless-stopped
# ports:
# - 127.0.0.1:4444:4444
networks:
tor_net:
ipv4_address: 172.31.255.251
<<: *log-config
monerod:
container_name: monerod
build:
context: dockerfiles
dockerfile: monero_compile
context: .
dockerfile: dockerfiles/monero_compile
args:
THREADS: ${THREADS:-2}
restart: unless-stopped
depends_on:
tor:
condition: service_started
i2p:
condition: service_started
volumes:
- ${DATA_DIR:-./data}:/data
ports:
@@ -91,5 +144,24 @@ services:
- 127.0.0.1:${ZMQ_PORT:-18082}:18082 # zmq
- 127.0.0.1:${UNRESTRICTED_PORT:-18083}:18083 # unrestricted rpc
command:
monerod --data-dir=/data --p2p-bind-ip=0.0.0.0 --p2p-bind-port=18080 --rpc-restricted-bind-ip=0.0.0.0 --rpc-restricted-bind-port=18081 --zmq-rpc-bind-ip=0.0.0.0 --zmq-rpc-bind-port=18082 --rpc-bind-ip=0.0.0.0 --rpc-bind-port=18083 --non-interactive --confirm-external-bind --public-node --log-level=0 --enable-dns-blocklist --rpc-ssl=disabled --ban-list=/ban_list.txt
- monerod
- --data-dir=/data
- --p2p-bind-ip=0.0.0.0
- --p2p-bind-port=18080
- --rpc-restricted-bind-ip=0.0.0.0
- --rpc-restricted-bind-port=18081
- --zmq-rpc-bind-ip=0.0.0.0
- --zmq-rpc-bind-port=18082
- --rpc-bind-ip=0.0.0.0
- --rpc-bind-port=18083
- --non-interactive
- --confirm-external-bind
- --public-node
- --log-level=0
- --rpc-ssl=disabled
- --ban-list=/ban_list.txt
- --tx-proxy=tor,172.31.255.250:9050,disable_noise,24
- --tx-proxy=i2p,172.31.255.251:4447,disable_noise,24
networks:
- tor_net
<<: *log-config