" But the price to pay for this simplicity is the loss of information about the actual source IP address of the incoming requests - in some cases this doesn’t matter, in some cases it is a show stopper.
Why not simply log the users hitting the port forwarding rule on the CHR to fulful the admins need to know what source addresses are being sent to the server and thus keeping the sourcenatting at the CHR?
As for the configs, what kind of CHR cloud based service is that? Most cloud hosted CHRs are fixed public IPs, not pppoe connections…
So perhaps I am wrong.
Should I assume the CHR is on a computer at a completely different site???
In any case I take issue with wireguard settings.
Edit: Okay I see that both need allowed IPs of 0.0.0.0/0 not the usual setup.
The way I recommended the setup, only the wireguard IP of the CHR would be defined on the home router device settings and would allow concurrent admin and any joe user on the same tunnel.
What is the actual need of the server???
However, one does not need persistent keep alive and endpoint information on both sides, or at least I dont see the value in that and using the same listening port even more confusing.
I am assuming you have truncated your actual firewall rules because the router is wide open otherwise…
+++++++++++++++++++++++++++++++++++++++++++
The solution sindy suggested, a bit different maybe.
HOME ROUTER
/ip route
add address=0.0.0.0/0 gateway=homerouterISP_gateway IP table=main
add address=0.0.0.0/0 gateway=wireguard1 table=out-CHR
/ip nat mangle
add chain=forward action=mark-connections connection-mark=no-mark in-interface=wireguard1
destination address=192.168.170.2 dst-port=80 protocol=tcp new-connection-mark=for-server passthrough=yes
add chain=prerouting action=mark-routing connection-mark=for-server
new-routing-mark=out-CHR passthrough=no
+++++++++++++++++++++++++++++++++++++++++++++++++++
Now to fix your 8291 problem… besides being unsafe, delineating tcp for a udp protocol would not get you far… like giving sindy an enema with a toothpick, at least use a straw… 
CHR ROUTER
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
add listen-port=15677 mtu=1420 name=wireguard-Admin
/interface wireguard peers
add allowed-address=0.0.0.0/0 client-address=10.120.10.2/32 client-endpoint=1.2.3.4 client-keepalive=25s client-listen-port=13231 interface=wireguard1 persistent-keepalive=25s
private-key=“ABCDEFGHIJKLMNOPQRSTUVWYZ123456789=” public-key=“ABCDEFGHIJKLMNOPQRSTUVWYZ123456789=”
add allowed-address=10.10.70.2,192.168.170.0/24 interface=wireguard-Admin public-key=“----” comment=“home router”
add allowed-address=10.10.70.3 interface=wireguard-Admin public-key=“^^^” comment=“admin remote laptop”
/ip address
add address=10.120.10.2/30 interface=wireguard1 network=10.120.10.0
add address=10.10.70.1/29 interface=wireguard-Admin network=10.10.70.0
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=1.2.3.4 dst-port=80 protocol=tcp to-addresses=192.168.170.2
add action=masquerade chain=srcnat out-interface=pppoe-out1
/ip firewall
add action=accept chain=input comment=“wg handshake” dst-port=15677 protocol=udp
add action=accept chain=input comment=“admin access” in-interface=wireguard-Admin
add action=accept chain=forward comment=“relay remote admin” in-interface=wireguard-Admin out-interface=wireguard-Admin
/ip route
add dst-address=192.168.170.0/24 gateway=wireguard1 table=main ( allows both incoming users to server but also admin on to access home LAN )
HOME ROUTER
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
add listen-port=12345 mtu=1420 name=wireguard-Trusted
/interface wireguard peers
add allowed-address=10.10.70.0/29 endpoint=chr-public-ip endpoint-port=15677 interface=wireguard-Trusted persistent-keepalive=35s
public-key=“#####”
/ip address
add address=10.120.10.1/30 interface=wireguard1 network=10.120.10.0
add address=10.10.70.2/29 interface=wireguard-Trusted network=10.10.70.0
/ip firewall
add action=accept chain=input comment=“admin access” in-interface=wireguard-Trusted
add action=accept chain=forward comment=“admin access” in-interface=wireguard-Trusted out-interface-list=LAN ( or whatever is appropriate to reach )