mirror of
https://github.com/lalanza808/xmr.sh.git
synced 2025-05-10 16:55:01 -04:00
237 lines
8.9 KiB
YAML
237 lines
8.9 KiB
YAML
version: "3.7"
|
|
|
|
x-log-config: &log-config
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "50m"
|
|
max-file: "20"
|
|
|
|
x-traefik-command-le: &traefik-command-le
|
|
command:
|
|
- "--log.level=${TRAEFIK_LOGLEVEL}"
|
|
- "--providers.docker=true"
|
|
- "--providers.docker.exposedbydefault=false"
|
|
- "--entrypoints.web.address=:${TRAEFIK_HTTP_PORT}"
|
|
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
|
|
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
|
|
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
|
|
- "--entrypoints.websecure.address=:${TRAEFIK_TLS_PORT}"
|
|
- "--certificatesresolvers.le.acme.httpchallenge=true"
|
|
- "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
|
|
- "--certificatesresolvers.le.acme.email=${TRAEFIK_ACME_EMAIL}"
|
|
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
|
|
|
|
x-traefik-command-nole: &traefik-command-nole
|
|
command:
|
|
- "--log.level=${TRAEFIK_LOGLEVEL}"
|
|
- "--providers.docker=true"
|
|
- "--providers.docker.exposedbydefault=false"
|
|
- "--entrypoints.web.address=:${TRAEFIK_HTTP_PORT}"
|
|
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
|
|
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
|
|
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
|
|
- "--entrypoints.websecure.address=:${TRAEFIK_TLS_PORT}"
|
|
|
|
x-monerod-command: &monerod-command
|
|
command: >-
|
|
--public-node --no-igd
|
|
--enable-dns-blocklist --rpc-restricted-bind-ip=0.0.0.0
|
|
--rpc-restricted-bind-port=${MONEROD_RESTRICTED_RPC_PORT} --confirm-external-bind
|
|
--zmq-pub tcp://0.0.0.0:${MONEROD_ZMQ_PUB_PORT} --zmq-rpc-bind-port=${MONEROD_ZMQ_RPC_PORT} --zmq-rpc-bind-ip=0.0.0.0
|
|
--rpc-bind-port=${MONEROD_RPC_PORT} --rpc-bind-ip=0.0.0.0
|
|
${MONEROD_EXTRA_PARAMS}
|
|
|
|
x-tor-service: &tor-service
|
|
tor:
|
|
container_name: tor
|
|
image: vdo1138/tor-hidden-service:${TOR_TAG}
|
|
restart: unless-stopped
|
|
links:
|
|
- monerod
|
|
environment:
|
|
MONEROD_TOR_SERVICE_HOSTS: "${TOR_HTTP_PORT}:monerod:${MONEROD_RESTRICTED_RPC_PORT}"
|
|
volumes:
|
|
- ./data/tor:/var/lib/tor/hidden_service/
|
|
<<: *log-config
|
|
|
|
x-explorer-service: &explorer-service
|
|
explorer:
|
|
image: vdo1138/xmrblocks:${EXPLORER_TAG}
|
|
container_name: explorer
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./data/monero:/home/monero/.bitmonero
|
|
ports:
|
|
- ${EXPLORER_PORT}
|
|
depends_on:
|
|
- monerod
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.explorer.rule=(PathPrefix(`/explorer`) )" #!nole
|
|
# - "traefik.http.routers.explorer.rule=(Host(`${DOMAIN}`) && PathPrefix(`/explorer`) )" #!le
|
|
# - "traefik.http.routers.explorer.tls.certresolver=le" #!le
|
|
- "traefik.http.middlewares.stripprefix-explorer.stripprefix.prefixes=/explorer"
|
|
- "traefik.http.routers.explorer.middlewares=stripprefix-explorer"
|
|
- "traefik.http.routers.explorer.entrypoints=websecure"
|
|
- "traefik.http.routers.explorer.tls"
|
|
- "traefik.http.routers.explorer.service=explorer"
|
|
- "traefik.http.services.explorer.loadbalancer.server.port=${EXPLORER_PORT}"
|
|
<<: *log-config
|
|
|
|
x-monero-lws-service: &monero-lws-service
|
|
monero-lws:
|
|
image: vdo1138/monero-lws:${LWS_TAG}
|
|
container_name: monero-lws
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- "no-new-privileges:true"
|
|
command: >-
|
|
--rest-server http://0.0.0.0:8000 --daemon=tcp://monerod:${MONEROD_ZMQ_RPC_PORT}
|
|
--sub=tcp://monerod:${MONEROD_ZMQ_PUB_PORT} --log-level=4
|
|
--confirm-external-bind ${LWS_EXTRA_PARAMS}
|
|
volumes:
|
|
- ./data/monero-lws:/home/monero-lws/.bitmonero/
|
|
depends_on:
|
|
- monerod
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.monero-lws.rule=(PathPrefix(`/lws`) )" #!nole
|
|
# - "traefik.http.routers.monero-lws.rule=(Host(`${DOMAIN}`) && PathPrefix(`/lws`) )" #!le
|
|
# - "traefik.http.routers.monero-lws.tls.certresolver=le" #!le
|
|
- "traefik.http.middlewares.stripprefix-monero-lws.stripprefix.prefixes=/lws"
|
|
- "traefik.http.routers.monero-lws.middlewares=stripprefix-monero-lws"
|
|
- "traefik.http.routers.monero-lws.entrypoints=websecure"
|
|
- "traefik.http.routers.monero-lws.tls"
|
|
- "traefik.http.routers.monero-lws.service=monero-lws"
|
|
- "traefik.http.services.monero-lws.loadbalancer.server.port=${LWS_PORT}"
|
|
<<: *log-config
|
|
|
|
x-monero-exporter-service: &monero-exporter-service
|
|
monero-exporter:
|
|
command:
|
|
- --monero-addr=http://monerod:${MONEROD_RPC_PORT}
|
|
container_name: monero-exporter
|
|
restart: unless-stopped
|
|
image: vdo1138/monero-exporter:0.0.2
|
|
<<: *log-config
|
|
|
|
x-p2pool-service: &p2pool-service
|
|
p2pool:
|
|
image: sethsimmons/p2pool:latest
|
|
restart: unless-stopped
|
|
container_name: p2pool
|
|
#tty: true
|
|
#stdin_open: true
|
|
volumes:
|
|
- ./data/p2pool:/home/p2pool
|
|
# - /dev/hugepages:/dev/hugepages:rw
|
|
ports:
|
|
- ${P2POOL_STRATUM_PORT}:${P2POOL_STRATUM_PORT}
|
|
- ${P2POOL_P2P_PORT}:${P2POOL_P2P_PORT}
|
|
command: >-
|
|
--wallet "${P2POOL_WALLET}"
|
|
--stratum "0.0.0.0:${P2POOL_STRATUM_PORT}" --p2p "0.0.0.0:${P2POOL_P2P_PORT}" --rpc-port "${MONEROD_RPC_PORT}"
|
|
--addpeers "P2POOL_PEERS" --host "monerod" --no-randomx
|
|
|
|
x-grafana-service: &grafana-service
|
|
grafana:
|
|
user: "1000"
|
|
command:
|
|
- -config=/etc/grafana/grafana.ini
|
|
container_name: grafana
|
|
restart: unless-stopped
|
|
image: grafana/grafana:${GRAFANA_TAG}
|
|
ports:
|
|
- 3000
|
|
volumes:
|
|
- ./data/grafana:/var/lib/grafana
|
|
- ./config/grafana/grafana.ini:/etc/grafana/grafana.ini:ro
|
|
- ./config/grafana/provisioning:/etc/grafana/provisioning:ro
|
|
- ./config/grafana/dashboards:/var/lib/grafana/dashboards:ro
|
|
environment:
|
|
GF_SECURITY_ADMIN_PASSWORD: ${GF_SECURITY_ADMIN_PASSWORD}
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.grafana.rule=(PathPrefix(`/grafana`) )" #!nole
|
|
# - "traefik.http.routers.grafana.rule=(Host(`${DOMAIN}`) && PathPrefix(`/grafana`) )" #!le
|
|
# - "traefik.http.routers.grafana.tls.certresolver=le" #!le
|
|
- "traefik.http.middlewares.stripprefix-grafana.stripprefix.prefixes=/grafana"
|
|
- "traefik.http.routers.grafana.middlewares=stripprefix-grafana"
|
|
- "traefik.http.routers.grafana.entrypoints=websecure"
|
|
- "traefik.http.routers.grafana.tls"
|
|
- "traefik.http.routers.grafana.service=grafana"
|
|
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
|
<<: *log-config
|
|
|
|
x-prometheus-service: &prometheus-service
|
|
prometheus:
|
|
user: "1000"
|
|
command:
|
|
- --config.file=/etc/prometheus/config.yaml
|
|
- --storage.tsdb.path=/data
|
|
- --storage.tsdb.retention.time=30d
|
|
container_name: prometheus
|
|
restart: unless-stopped
|
|
image: prom/prometheus:${PROMETHEUS_TAG}
|
|
volumes:
|
|
- ./data/prometheus:/data
|
|
- ./config/prometheus/config.yaml:/etc/prometheus/config.yaml:ro
|
|
<<: *log-config
|
|
|
|
x-watchtower-service: &watchtower-service
|
|
watchtower:
|
|
container_name: watchtower
|
|
restart: unless-stopped
|
|
image: containrrr/watchtower:latest
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
labels:
|
|
- com.centurylinklabs.watchtower.enable="false"
|
|
command: --interval 360 --include-stopped
|
|
<<: *log-config
|
|
|
|
services:
|
|
traefik:
|
|
image: traefik:${TRAEFIK_TAG}
|
|
container_name: traefik
|
|
ports:
|
|
- ${TRAEFIK_HTTP_PORT}:${TRAEFIK_HTTP_PORT}
|
|
- ${TRAEFIK_TLS_PORT}:${TRAEFIK_TLS_PORT}
|
|
volumes:
|
|
- "./data/letsencrypt:/letsencrypt" #!le
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
|
<<: *traefik-command-nole #!traefik-command
|
|
restart: always
|
|
<<: *log-config
|
|
|
|
monerod:
|
|
container_name: monerod
|
|
image: sethsimmons/simple-monerod:${MONEROD_TAG}
|
|
<<: *monerod-command
|
|
ports:
|
|
- "${MONEROD_P2P_PORT}:${MONEROD_P2P_PORT}" # Exposes P2P port
|
|
volumes:
|
|
- "./data/monero:/home/monero/.bitmonero"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
# - "traefik.http.routers.monerod.rule=(Host(`${DOMAIN}`) && PathPrefix(`/`))" #!le
|
|
# - "traefik.http.routers.monerod.tls.certresolver=le" #!le
|
|
- "traefik.http.routers.monerod.rule=(PathPrefix(`/`))" #!nole
|
|
- "traefik.http.routers.monerod.entrypoints=websecure"
|
|
- "traefik.http.routers.monerod.tls"
|
|
- "traefik.http.routers.monerod.service=monerod"
|
|
- "traefik.http.services.monerod.loadbalancer.server.port=${MONEROD_RESTRICTED_RPC_PORT}"
|
|
# - "traefik.http.middlewares.corsheader.headers.accessControlAllowOriginList=${MONEROD_accessControlAllowOriginList}" #!cors
|
|
# - "traefik.http.routers.monerod.middlewares=corsheader" #!cors
|
|
restart: unless-stopped
|
|
<<: *log-config
|
|
|
|
# <<: *tor-service #!tor
|
|
# <<: *explorer-service #!explorer
|
|
# <<: *monero-lws-service #!lws
|
|
# <<: *monero-exporter-service #!monero-exporter
|
|
# <<: *p2pool-service #!p2pool
|
|
# <<: *grafana-service #!grafana
|
|
# <<: *prometheus-service #!prometheus
|
|
# <<: *watchtower-service #!watchtower
|