Other than explicitly “ergonomic” apparatus like that, I found it helps to experiment with heights, distances and softness in general. For example, raising your sofa seat a bit with a thick blanket if it’s too low or adding a cushion behind your back if it’s too deep. On the bed, try mixing firm and soft pillows in different configurations (I find my neck doesn’t ache even playing/reading for hours with a particular combination of mid-soft pillow covered with very firm pillow).
Just as correctly adjusting all the different heights on an office desk goes a long way, doing the same for your sofa/bed also does. The difference is to do it I needed to buy a bunch of potential cushioning material and then throw out the ones I found no use for (most of it), while a chosen few become my everyday implements.