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:
@@ -1,5 +1,3 @@
|
|||||||
version: "3.7"
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
grafana:
|
grafana:
|
||||||
prometheus:
|
prometheus:
|
||||||
@@ -11,7 +9,14 @@ x-log-config: &log-config
|
|||||||
max-size: "50m"
|
max-size: "50m"
|
||||||
max-file: "20"
|
max-file: "20"
|
||||||
|
|
||||||
services:
|
networks:
|
||||||
|
tor_net:
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: "172.31.255.0/24"
|
||||||
|
|
||||||
|
services:
|
||||||
prometheus:
|
prometheus:
|
||||||
image: prom/prometheus:${PROM_TAG:-v2.36.0}
|
image: prom/prometheus:${PROM_TAG:-v2.36.0}
|
||||||
command:
|
command:
|
||||||
@@ -20,11 +25,16 @@ services:
|
|||||||
- --storage.tsdb.retention.time=${PROM_RETENTION:-360d}
|
- --storage.tsdb.retention.time=${PROM_RETENTION:-360d}
|
||||||
container_name: monerod_prometheus
|
container_name: monerod_prometheus
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
depends_on:
|
||||||
- 127.0.0.1:9090:9090
|
exporter:
|
||||||
|
condition: service_started
|
||||||
|
# ports:
|
||||||
|
# - 127.0.0.1:9090:9090
|
||||||
volumes:
|
volumes:
|
||||||
- prometheus:/prometheus
|
- prometheus:/prometheus
|
||||||
- ./files/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
|
- ./files/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
|
||||||
|
networks:
|
||||||
|
- tor_net
|
||||||
<<: *log-config
|
<<: *log-config
|
||||||
grafana:
|
grafana:
|
||||||
user: "1000"
|
user: "1000"
|
||||||
@@ -34,7 +44,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: grafana/grafana:${GRAFANA_TAG:-10.1.4}
|
image: grafana/grafana:${GRAFANA_TAG:-10.1.4}
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:3000:3000
|
- 127.0.0.1:${GRAF_PORT:-3000}:3000
|
||||||
volumes:
|
volumes:
|
||||||
- grafana:/var/lib/grafana
|
- grafana:/var/lib/grafana
|
||||||
- ./files/grafana/grafana.ini:/etc/grafana/grafana.ini:ro
|
- ./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_AUTH_DISABLE_LOGIN_FORM: "${GF_AUTH_DISABLE_LOGIN_FORM:-true}"
|
||||||
GF_SECURITY_ADMIN_PASSWORD: "${GF_SECURITY_ADMIN_PASSWORD}"
|
GF_SECURITY_ADMIN_PASSWORD: "${GF_SECURITY_ADMIN_PASSWORD}"
|
||||||
GF_SECURITY_ADMIN_USER: "${GF_SECURITY_ADMIN_USER}"
|
GF_SECURITY_ADMIN_USER: "${GF_SECURITY_ADMIN_USER}"
|
||||||
|
networks:
|
||||||
|
- tor_net
|
||||||
<<: *log-config
|
<<: *log-config
|
||||||
exporter:
|
exporter:
|
||||||
container_name: monerod_exporter
|
container_name: monerod_exporter
|
||||||
@@ -60,10 +72,15 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
dockerfile: dockerfiles/exporter
|
dockerfile: dockerfiles/exporter
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
depends_on:
|
||||||
- 127.0.0.1:9000:9000
|
monerod:
|
||||||
|
condition: service_started
|
||||||
|
# ports:
|
||||||
|
# - 127.0.0.1:9000:9000
|
||||||
command:
|
command:
|
||||||
- --monero-addr=http://monerod:${UNRESTRICTED_PORT:-18083}
|
- --monero-addr=http://monerod:${UNRESTRICTED_PORT:-18083}
|
||||||
|
networks:
|
||||||
|
- tor_net
|
||||||
<<: *log-config
|
<<: *log-config
|
||||||
nodemapper:
|
nodemapper:
|
||||||
container_name: monerod_nodemapper
|
container_name: monerod_nodemapper
|
||||||
@@ -71,18 +88,54 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: dockerfiles/nodemapper
|
dockerfile: dockerfiles/nodemapper
|
||||||
|
depends_on:
|
||||||
|
monerod:
|
||||||
|
condition: service_started
|
||||||
environment:
|
environment:
|
||||||
NODE_HOST: monerod
|
NODE_HOST: monerod
|
||||||
NODE_PORT: 18083
|
NODE_PORT: 18083
|
||||||
ports:
|
# ports:
|
||||||
- 127.0.0.1:${MAPPER_PORT:-5000}:5000
|
# - 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
|
<<: *log-config
|
||||||
monerod:
|
monerod:
|
||||||
container_name: monerod
|
container_name: monerod
|
||||||
build:
|
build:
|
||||||
context: dockerfiles
|
context: .
|
||||||
dockerfile: monero_compile
|
dockerfile: dockerfiles/monero_compile
|
||||||
|
args:
|
||||||
|
THREADS: ${THREADS:-2}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
tor:
|
||||||
|
condition: service_started
|
||||||
|
i2p:
|
||||||
|
condition: service_started
|
||||||
volumes:
|
volumes:
|
||||||
- ${DATA_DIR:-./data}:/data
|
- ${DATA_DIR:-./data}:/data
|
||||||
ports:
|
ports:
|
||||||
@@ -91,5 +144,24 @@ services:
|
|||||||
- 127.0.0.1:${ZMQ_PORT:-18082}:18082 # zmq
|
- 127.0.0.1:${ZMQ_PORT:-18082}:18082 # zmq
|
||||||
- 127.0.0.1:${UNRESTRICTED_PORT:-18083}:18083 # unrestricted rpc
|
- 127.0.0.1:${UNRESTRICTED_PORT:-18083}:18083 # unrestricted rpc
|
||||||
command:
|
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
|
<<: *log-config
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
version: "3.7"
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
grafana:
|
grafana:
|
||||||
prometheus:
|
prometheus:
|
||||||
@@ -11,7 +9,14 @@ x-log-config: &log-config
|
|||||||
max-size: "50m"
|
max-size: "50m"
|
||||||
max-file: "20"
|
max-file: "20"
|
||||||
|
|
||||||
services:
|
networks:
|
||||||
|
tor_net:
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: "172.31.255.0/24"
|
||||||
|
|
||||||
|
services:
|
||||||
prometheus:
|
prometheus:
|
||||||
image: prom/prometheus:${PROM_TAG:-v2.36.0}
|
image: prom/prometheus:${PROM_TAG:-v2.36.0}
|
||||||
command:
|
command:
|
||||||
@@ -20,11 +25,16 @@ services:
|
|||||||
- --storage.tsdb.retention.time=${PROM_RETENTION:-360d}
|
- --storage.tsdb.retention.time=${PROM_RETENTION:-360d}
|
||||||
container_name: monerod_prometheus
|
container_name: monerod_prometheus
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
exporter:
|
||||||
|
condition: service_started
|
||||||
# ports:
|
# ports:
|
||||||
# - 127.0.0.1:9090:9090
|
# - 127.0.0.1:9090:9090
|
||||||
volumes:
|
volumes:
|
||||||
- prometheus:/prometheus
|
- prometheus:/prometheus
|
||||||
- ./files/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
|
- ./files/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
|
||||||
|
networks:
|
||||||
|
- tor_net
|
||||||
<<: *log-config
|
<<: *log-config
|
||||||
grafana:
|
grafana:
|
||||||
user: "1000"
|
user: "1000"
|
||||||
@@ -53,6 +63,8 @@ services:
|
|||||||
GF_AUTH_DISABLE_LOGIN_FORM: "${GF_AUTH_DISABLE_LOGIN_FORM:-true}"
|
GF_AUTH_DISABLE_LOGIN_FORM: "${GF_AUTH_DISABLE_LOGIN_FORM:-true}"
|
||||||
GF_SECURITY_ADMIN_PASSWORD: "${GF_SECURITY_ADMIN_PASSWORD}"
|
GF_SECURITY_ADMIN_PASSWORD: "${GF_SECURITY_ADMIN_PASSWORD}"
|
||||||
GF_SECURITY_ADMIN_USER: "${GF_SECURITY_ADMIN_USER}"
|
GF_SECURITY_ADMIN_USER: "${GF_SECURITY_ADMIN_USER}"
|
||||||
|
networks:
|
||||||
|
- tor_net
|
||||||
<<: *log-config
|
<<: *log-config
|
||||||
exporter:
|
exporter:
|
||||||
container_name: monerod_exporter
|
container_name: monerod_exporter
|
||||||
@@ -60,10 +72,15 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
dockerfile: dockerfiles/exporter
|
dockerfile: dockerfiles/exporter
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
monerod:
|
||||||
|
condition: service_started
|
||||||
# ports:
|
# ports:
|
||||||
# - 127.0.0.1:9000:9000
|
# - 127.0.0.1:9000:9000
|
||||||
command:
|
command:
|
||||||
- --monero-addr=http://monerod:${UNRESTRICTED_PORT:-18083}
|
- --monero-addr=http://monerod:${UNRESTRICTED_PORT:-18083}
|
||||||
|
networks:
|
||||||
|
- tor_net
|
||||||
<<: *log-config
|
<<: *log-config
|
||||||
nodemapper:
|
nodemapper:
|
||||||
container_name: monerod_nodemapper
|
container_name: monerod_nodemapper
|
||||||
@@ -71,11 +88,41 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: dockerfiles/nodemapper
|
dockerfile: dockerfiles/nodemapper
|
||||||
|
depends_on:
|
||||||
|
monerod:
|
||||||
|
condition: service_started
|
||||||
environment:
|
environment:
|
||||||
NODE_HOST: monerod
|
NODE_HOST: monerod
|
||||||
NODE_PORT: 18083
|
NODE_PORT: 18083
|
||||||
# ports:
|
# ports:
|
||||||
# - 127.0.0.1:${MAPPER_PORT:-5000}:5000
|
# - 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:4447:4447
|
||||||
|
# - 127.0.0.1:4444:4444
|
||||||
|
networks:
|
||||||
|
tor_net:
|
||||||
|
ipv4_address: 172.31.255.251
|
||||||
<<: *log-config
|
<<: *log-config
|
||||||
monerod:
|
monerod:
|
||||||
container_name: monerod
|
container_name: monerod
|
||||||
@@ -91,5 +138,24 @@ services:
|
|||||||
- 127.0.0.1:${ZMQ_PORT:-18082}:18082 # zmq
|
- 127.0.0.1:${ZMQ_PORT:-18082}:18082 # zmq
|
||||||
- 127.0.0.1:${UNRESTRICTED_PORT:-18083}:18083 # unrestricted rpc
|
- 127.0.0.1:${UNRESTRICTED_PORT:-18083}:18083 # unrestricted rpc
|
||||||
command:
|
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
|
<<: *log-config
|
||||||
|
|||||||
29
dockerfiles/i2p
Normal file
29
dockerfiles/i2p
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install wget sudo -y
|
||||||
|
RUN wget https://github.com/PurpleI2P/i2pd/releases/download/2.54.0/i2pd_2.54.0-1jammy1_amd64.deb -O i2pd.deb -q
|
||||||
|
RUN apt install ./i2pd.deb -y
|
||||||
|
RUN rm -rf i2p.deb && \
|
||||||
|
apt clean all && \
|
||||||
|
apt autoremove -y
|
||||||
|
|
||||||
|
RUN adduser \
|
||||||
|
--system \
|
||||||
|
--shell /bin/bash \
|
||||||
|
--gecos 'i2p' \
|
||||||
|
--group \
|
||||||
|
--disabled-password \
|
||||||
|
--home /home/i2p \
|
||||||
|
--uid 1000 \
|
||||||
|
i2p
|
||||||
|
|
||||||
|
COPY dockerfiles/i2p-config /i2p-config
|
||||||
|
|
||||||
|
USER i2p
|
||||||
|
|
||||||
|
EXPOSE 4447
|
||||||
|
|
||||||
|
ENTRYPOINT ["i2pd", "--conf", "/i2p-config"]
|
||||||
15
dockerfiles/i2p-config
Normal file
15
dockerfiles/i2p-config
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
datadir = /var/lib/i2pd
|
||||||
|
log = false
|
||||||
|
loglevel = none
|
||||||
|
ipv6 = false
|
||||||
|
bandwidth = 2048
|
||||||
|
|
||||||
|
[socksproxy]
|
||||||
|
enabled = true
|
||||||
|
address = 0.0.0.0
|
||||||
|
port = 4447
|
||||||
|
|
||||||
|
[httpproxy]
|
||||||
|
enabled = true
|
||||||
|
address = 0.0.0.0
|
||||||
|
port = 4444
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM ubuntu:22.04 as OG
|
FROM ubuntu:22.04 AS og
|
||||||
|
|
||||||
ENV MONERO_HASH 51ba03928d189c1c11b5379cab17dd9ae8d2230056dc05c872d0f8dba4a87f1d
|
ENV MONERO_HASH 51ba03928d189c1c11b5379cab17dd9ae8d2230056dc05c872d0f8dba4a87f1d
|
||||||
ENV MONERO_DL_URL https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.3.4.tar.bz2
|
ENV MONERO_DL_URL https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.3.4.tar.bz2
|
||||||
@@ -8,18 +8,14 @@ ENV MONERO_SUMS_FILE sha256sums
|
|||||||
WORKDIR /opt/monero
|
WORKDIR /opt/monero
|
||||||
|
|
||||||
# Update system and install dependencies
|
# Update system and install dependencies
|
||||||
# Download ban list
|
|
||||||
# Download Monero binaries from getmonero.org
|
|
||||||
# Confirm hashes match
|
|
||||||
# Install daemon binary
|
|
||||||
# Clean up
|
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get upgrade -y \
|
&& apt-get upgrade -y \
|
||||||
&& apt-get install -y tar wget bzip2
|
&& apt-get install -y tar wget bzip2
|
||||||
|
|
||||||
RUN wget -qO /ban_list.txt "https://raw.githubusercontent.com/Boog900/monero-ban-list/main/ban_list.txt"
|
# Download Monero binaries from getmonero.org
|
||||||
|
# Confirm hashes match
|
||||||
|
# Install daemon binary
|
||||||
|
# Clean up
|
||||||
RUN wget -qO ${MONERO_DL_FILE} ${MONERO_DL_URL} \
|
RUN wget -qO ${MONERO_DL_FILE} ${MONERO_DL_URL} \
|
||||||
&& echo "${MONERO_HASH} ${MONERO_DL_FILE}" > ${MONERO_SUMS_FILE} \
|
&& echo "${MONERO_HASH} ${MONERO_DL_FILE}" > ${MONERO_SUMS_FILE} \
|
||||||
&& sha256sum -c ${MONERO_SUMS_FILE}; \
|
&& sha256sum -c ${MONERO_SUMS_FILE}; \
|
||||||
@@ -35,14 +31,15 @@ RUN wget -qO ${MONERO_DL_FILE} ${MONERO_DL_URL} \
|
|||||||
&& mv ./tmp/* /usr/local/bin/ \
|
&& mv ./tmp/* /usr/local/bin/ \
|
||||||
&& rm -rf ./tmp ${MONERO_SUMS_FILE} ${MONERO_DL_FILE}
|
&& rm -rf ./tmp ${MONERO_SUMS_FILE} ${MONERO_DL_FILE}
|
||||||
|
|
||||||
WORKDIR /data
|
# Download ban list
|
||||||
|
RUN wget -qO /tmp/ban_list.txt "https://raw.githubusercontent.com/Boog900/monero-ban-list/main/ban_list.txt"
|
||||||
|
|
||||||
# Copy to fresh Ubuntu image to reduce size
|
# Copy to fresh Ubuntu image to reduce size
|
||||||
FROM ubuntu:22.04
|
FROM ubuntu:22.04
|
||||||
COPY --from=OG /usr/local/bin/monerod /usr/local/bin/monerod
|
COPY --from=og /usr/local/bin/monerod /usr/local/bin/monerod
|
||||||
COPY --from=OG /usr/local/bin/monero-wallet-cli /usr/local/bin/monero-wallet-cli
|
COPY --from=og /usr/local/bin/monero-wallet-cli /usr/local/bin/monero-wallet-cli
|
||||||
COPY --from=OG /usr/local/bin/monero-wallet-rpc /usr/local/bin/monero-wallet-rpc
|
COPY --from=og /usr/local/bin/monero-wallet-rpc /usr/local/bin/monero-wallet-rpc
|
||||||
COPY --from=OG /ban_list.txt /ban_list.txt
|
COPY --from=og /tmp/ban_list.txt /ban_list.txt
|
||||||
|
|
||||||
EXPOSE 18080
|
EXPOSE 18080
|
||||||
EXPOSE 18081
|
EXPOSE 18081
|
||||||
|
|||||||
@@ -1,21 +1,27 @@
|
|||||||
FROM ubuntu:22.04 as og
|
FROM ubuntu:22.04 AS og
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
ARG threads
|
ENV MONERO_RELEASE v0.18.3.4
|
||||||
|
|
||||||
WORKDIR /opt/monero
|
WORKDIR /opt/monero
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
RUN apt-get update && apt-get install -y \
|
RUN apt-get update && apt-get install -y \
|
||||||
build-essential cmake pkg-config libboost-all-dev \
|
build-essential cmake pkg-config libboost-all-dev \
|
||||||
libssl-dev libzmq3-dev libunbound-dev libsodium-dev libpgm-dev git
|
libssl-dev libzmq3-dev libunbound-dev libsodium-dev libpgm-dev git wget
|
||||||
|
|
||||||
RUN git clone https://github.com/monero-project/monero --branch=v0.18.3.4 --depth=1 .
|
# Clone monero repo
|
||||||
|
RUN git clone https://github.com/monero-project/monero --branch=$MONERO_RELEASE --depth=1 .
|
||||||
|
|
||||||
|
# Clone submodules
|
||||||
RUN git submodule update --init --force
|
RUN git submodule update --init --force
|
||||||
|
|
||||||
RUN make -j$threads
|
# Compile monero
|
||||||
|
ARG THREADS 2
|
||||||
|
RUN make -j$THREADS
|
||||||
|
|
||||||
RUN wget -qO /ban_list.txt "https://raw.githubusercontent.com/Boog900/monero-ban-list/main/ban_list.txt"
|
# Download ban list
|
||||||
|
RUN wget -qO /tmp/ban_list.txt "https://raw.githubusercontent.com/Boog900/monero-ban-list/main/ban_list.txt"
|
||||||
|
|
||||||
FROM ubuntu:22.04
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
@@ -25,7 +31,7 @@ COPY --from=og /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/
|
|||||||
COPY --from=og /opt/monero/build/Linux/_no_branch_/release/bin/monerod /bin/monerod
|
COPY --from=og /opt/monero/build/Linux/_no_branch_/release/bin/monerod /bin/monerod
|
||||||
COPY --from=og /opt/monero/build/Linux/_no_branch_/release/bin/monero-wallet-cli /bin/monero-wallet-cli
|
COPY --from=og /opt/monero/build/Linux/_no_branch_/release/bin/monero-wallet-cli /bin/monero-wallet-cli
|
||||||
COPY --from=og /opt/monero/build/Linux/_no_branch_/release/bin/monero-wallet-rpc /bin/monero-wallet-rpc
|
COPY --from=og /opt/monero/build/Linux/_no_branch_/release/bin/monero-wallet-rpc /bin/monero-wallet-rpc
|
||||||
COPY --from=og /ban_list.txt /ban_list.txt
|
COPY --from=og /tmp/ban_list.txt /ban_list.txt
|
||||||
|
|
||||||
EXPOSE 18080
|
EXPOSE 18080
|
||||||
EXPOSE 18081
|
EXPOSE 18081
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ RUN apt update && apt install wget python3 python3-venv -y
|
|||||||
RUN python3 -m venv .venv
|
RUN python3 -m venv .venv
|
||||||
RUN .venv/bin/pip install flask==3.0.0
|
RUN .venv/bin/pip install flask==3.0.0
|
||||||
RUN .venv/bin/pip install geoip2==4.7.0
|
RUN .venv/bin/pip install geoip2==4.7.0
|
||||||
|
RUN .venv/bin/pip install gunicorn==23.0.0
|
||||||
RUN wget https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb -qO ./geoip.mmdb
|
RUN wget https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-City.mmdb -qO ./geoip.mmdb
|
||||||
|
|
||||||
COPY dockerfiles/nodemapper.py app.py
|
COPY dockerfiles/nodemapper.py app.py
|
||||||
|
|
||||||
ENTRYPOINT [ ".venv/bin/flask", "--app", "app", "run", "--host", "::" ]
|
ENTRYPOINT [ ".venv/bin/gunicorn", "-b", "0.0.0.0:5000", "app:app" ]
|
||||||
|
|||||||
15
dockerfiles/tor
Normal file
15
dockerfiles/tor
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install tor -y
|
||||||
|
|
||||||
|
RUN mkdir -p /run/tor \
|
||||||
|
&& chown -R debian-tor:debian-tor /run/tor \
|
||||||
|
&& chmod 700 -R /run/tor
|
||||||
|
|
||||||
|
COPY dockerfiles/tor-config /etc/tor/torrc
|
||||||
|
|
||||||
|
USER debian-tor
|
||||||
|
|
||||||
|
EXPOSE 9050
|
||||||
|
|
||||||
|
ENTRYPOINT ["tor"]
|
||||||
7
dockerfiles/tor-config
Normal file
7
dockerfiles/tor-config
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
DataDirectory /var/lib/tor
|
||||||
|
ExitPolicy reject6 *:*, reject *:*
|
||||||
|
ExitRelay 0
|
||||||
|
IPv6Exit 0
|
||||||
|
Log notice stdout
|
||||||
|
PublishServerDescriptor 0
|
||||||
|
SOCKSPort 0.0.0.0:9050
|
||||||
Reference in New Issue
Block a user