{{ $CurrentContainer := where $ "ID" .Docker.CurrentContainerID | first }} {{ range $name, $containers := groupByMulti $ "Env.HIDDENSERVICE_NAME" "," }} {{ $firstServicePort := true }} {{ 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 := coalesceempty (index $container.Env (print $name "_HIDDENSERVICE_PORT")) $container.Env.HIDDENSERVICE_PORT "80" }} {{ $virtualPort := coalesceempty (index $container.Env (print $name "_HIDDENSERVICE_VIRTUAL_PORT")) $container.Env.HIDDENSERVICE_VIRTUAL_PORT $port }} {{ if ne $containerNetwork.IP "" }} {{ if $firstServicePort }} # For the hidden service {{ $name }} HiddenServiceDir /var/lib/tor/hidden_services/{{ $name }} {{ $firstServicePort := false }} {{ end }} # Redirecting to {{ $containerOrReverseProxyName }} HiddenServicePort {{ $virtualPort }} {{ $containerNetwork.IP }}:{{ $port }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ end }} {{ if $.Env.ADDITIONAL_TORRC_CONFIG }} {{ $.Env.ADDITIONAL_TORRC_CONFIG}} {{ end }}