We have discussed this quite a bit around campfires; other than completely surrounding the fire with tarps (which inevitably get holes from sparks/embers); the best idea that I have had is to try using a chiminea
or a wood stove (I have, and seen) some relatively interesting ones home built, and using a chimney with spark arrester to get the smoke past the edge of the tarp/canopy.
Even with a propane fire pit I normally put the fire well beyond the edge of the tarp/canopy.
because the more beers get consumed; the bigger the fire gets....
Enjoy!

or a wood stove (I have, and seen) some relatively interesting ones home built, and using a chimney with spark arrester to get the smoke past the edge of the tarp/canopy.
Even with a propane fire pit I normally put the fire well beyond the edge of the tarp/canopy.
because the more beers get consumed; the bigger the fire gets....
Enjoy!