diff --git a/Generated/.gitignore b/Generated/.gitignore index 2fb9890..77c2d3c 100644 --- a/Generated/.gitignore +++ b/Generated/.gitignore @@ -1,4 +1,4 @@ *.yml -*.tmpl +nginx.tmpl *.toml *.json \ No newline at end of file diff --git a/Generated/torrc.tmpl b/Generated/torrc.tmpl new file mode 100644 index 0000000..80fb004 --- /dev/null +++ b/Generated/torrc.tmpl @@ -0,0 +1,26 @@ +{{ $CurrentContainer := where $ "ID" .Docker.CurrentContainerID | first }} + +{{ range $name, $containers := groupByMulti $ "Env.HIDDENSERVICE_NAME" "," }} +# For the hidden service {{ $name }} +HiddenServiceDir /var/lib/tor/hidden_services/{{ $name }} +{{ range $container := $containers }} + {{ range $knownNetwork := $CurrentContainer.Networks }} + {{ range $containerNetwork := $container.Networks }} + {{ if eq $knownNetwork.Name $containerNetwork.Name }} + {{ $containerOrReverseProxyName := coalesce $container.Env.HIDDENSERVICE_REVERSEPROXY $container.Name }} + + {{ range $reverseProxyContainer := where $ "Name" $containerOrReverseProxyName }} + {{ range $containerNetwork := where $reverseProxyContainer.Networks "Name" $knownNetwork.Name }} + {{ $port := coalesce $container.Env.HIDDENSERVICE_PORT "80" }} + {{ $virtualPort := coalesce $container.Env.HIDDENSERVICE_VIRTUAL_PORT $port }} + {{ if ne $containerNetwork.IP "" }} +# Redirecting to {{ $containerOrReverseProxyName }} +HiddenServicePort {{ $virtualPort }} {{ $containerNetwork.IP }}:{{ $port }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} +{{ end }} +{{ end }} \ No newline at end of file diff --git a/Production/nginx.tmpl b/Production/nginx.tmpl index 7b7d88a..e676a9a 100644 --- a/Production/nginx.tmpl +++ b/Production/nginx.tmpl @@ -216,8 +216,27 @@ upstream {{ $upstream_name }} { {{ end }} {{ end }} } + +{{ $hiddenReverseProxy := trim (or (first (groupByKeys $containers "Env.HIDDENSERVICE_REVERSEPROXY")) "") }} +{{ if (eq $hiddenReverseProxy "nginx")}} + {{ $hiddenHostName := trim (or (first (groupByKeys $containers "Env.HIDDENSERVICE_NAME")) "") }} + {{ $onionHost := read (printf "/var/lib/tor/hidden_services/%s/hostname" $hiddenHostName) }} + {{ if ne $onionHost "" }} +server { + server_name {{ trim $onionHost }}; + listen nginx:80 ; + access_log /var/log/nginx/access.log vhost; + location / { + proxy_pass http://{{ trim $upstream_name }}; + } + {{ template "redirects" (dict "HostName" $host_name "Containers" $) }} +} + {{ end }} +{{ end }} + {{ range $host, $containers := groupByMulti $containers "Env.VIRTUAL_HOST" "," }} {{ $host := trim $host }} +{{ if ne $host "" }} {{ $default_host := or ($.Env.DEFAULT_HOST) "" }} {{ $default_server := index (dict $host "" $default_host "default_server") $host }} @@ -424,7 +443,7 @@ server { ssl_certificate_key /etc/nginx/certs/default.key; } {{ end }} - +{{ end }} {{ end }} {{ end }} {{ end }} \ No newline at end of file diff --git a/docker-compose-generator/docker-fragments/opt-add-tor.yml b/docker-compose-generator/docker-fragments/opt-add-tor.yml new file mode 100644 index 0000000..77279a2 --- /dev/null +++ b/docker-compose-generator/docker-fragments/opt-add-tor.yml @@ -0,0 +1,119 @@ +version: "3" + +services: + + btcpayserver: + environment: + HIDDENSERVICE_NAME: BTCPayServer + HIDDENSERVICE_REVERSEPROXY: nginx + BTCPAY_TORRCFILE: /usr/local/etc/tor/torrc-2 + BTCPAY_SOCKSENDPOINT: tor:9050 + volumes: + - "tor_servicesdir:/var/lib/tor/hidden_services" + - "tor_torrcdir:/usr/local/etc/tor/" + + woocommerce: + environment: + HIDDENSERVICE_NAME: WooCommerce + WOOCOMMERCE_HIDDENSERVICE_HOSTNAME_FILE: /var/lib/tor/hidden_services/WooCommerce/hostname + volumes: + - "tor_servicesdir:/var/lib/tor/hidden_services" + + bitcoind: + environment: + BITCOIN_EXTRA_ARGS: | + onion=tor:9050 + volumes: + - "tor_datadir:/home/tor/.tor" + links: + - tor + + nginx: + volumes: + - "tor_servicesdir:/var/lib/tor/hidden_services" + nginx-gen: + volumes: + - "tor_servicesdir:/var/lib/tor/hidden_services" + + tor: + restart: unless-stopped + image: btcpayserver/tor:0.3.5.8 + container_name: tor + environment: + TOR_PASSWORD: btcpayserver + TOR_ADDITIONAL_CONFIG: /usr/local/etc/tor/torrc-2 + TOR_EXTRA_ARGS: | + CookieAuthentication 1 + expose: + - "9050" # SOCKS + - "9051" # Tor Control + volumes: + - "tor_datadir:/home/tor/.tor" + - "tor_torrcdir:/usr/local/etc/tor" + - "tor_servicesdir:/var/lib/tor/hidden_services" + + clightning_bitcoin: + environment: + HIDDENSERVICE_NAME: c-lightning + HIDDENSERVICE_PORT: 9735 + LIGHTNINGD_HIDDENSERVICE_HOSTNAME_FILE: /var/lib/tor/hidden_services/c-lightning/hostname + LIGHTNINGD_OPT: | + proxy=tor:9050 + volumes: + - "tor_servicesdir:/var/lib/tor/hidden_services" + links: + - tor + clightning_litecoin: + environment: + HIDDENSERVICE_NAME: c-lightning-ltc + HIDDENSERVICE_PORT: 9736 + LIGHTNINGD_HIDDENSERVICE_HOSTNAME_FILE: /var/lib/tor/hidden_services/c-lightning-ltc/hostname + LIGHTNINGD_OPT: | + proxy=tor:9050 + volumes: + - "tor_servicesdir:/var/lib/tor/hidden_services" + links: + - tor + + tor-gen: + restart: unless-stopped + image: btcpayserver/docker-gen:0.7.5 + container_name: tor-gen + volumes: + - "/var/run/docker.sock:/tmp/docker.sock:ro" + - "./torrc.tmpl:/etc/docker-gen/templates/torrc.tmpl:ro" + - "tor_torrcdir:/usr/local/etc/tor" + entrypoint: /usr/local/bin/docker-gen -notify-sighup tor -watch -wait 5s:30s /etc/docker-gen/templates/torrc.tmpl /usr/local/etc/tor/torrc-2 + links: + - tor + + lnd_bitcoin: + environment: + HIDDENSERVICE_NAME: lnd + HIDDENSERVICE_PORT: 9735 + LND_HIDDENSERVICE_HOSTNAME_FILE: /var/lib/tor/hidden_services/lnd/hostname + LND_EXTRA_ARGS: | + tor.socks=tor:9050 + links: + - tor + volumes: + - "tor_datadir:/home/tor/.tor" + - "tor_servicesdir:/var/lib/tor/hidden_services" + + lnd_litecoin: + environment: + HIDDENSERVICE_NAME: lnd-ltc + HIDDENSERVICE_PORT: 9736 + LND_HIDDENSERVICE_HOSTNAME_FILE: /var/lib/tor/hidden_services/lnd-ltc/hostname + LND_EXTRA_ARGS: | + tor.socks=tor:9050 + links: + - tor + volumes: + - "tor_datadir:/home/tor/.tor" + - "tor_servicesdir:/var/lib/tor/hidden_services" + +volumes: + tor_datadir: + tor_torrcdir: + tor_servicesdir: diff --git a/docker-compose-generator/docker-fragments/opt-add-woocommerce.yml b/docker-compose-generator/docker-fragments/opt-add-woocommerce.yml index a86b688..0ab4a67 100644 --- a/docker-compose-generator/docker-fragments/opt-add-woocommerce.yml +++ b/docker-compose-generator/docker-fragments/opt-add-woocommerce.yml @@ -2,7 +2,7 @@ version: '3' services: woocommerce: - image: btcpayserver/docker-woocommerce:3.0.5 + image: btcpayserver/docker-woocommerce:3.0.6-2 environment: WOOCOMMERCE_HOST: ${WOOCOMMERCE_HOST} WORDPRESS_DB_HOST: mariadb