Label interior of polygon boundary
With the Placement options
[x] Using perimeter
[x] Below line
[x] Line orientation dependent position
and a Distance value of 5 mm it looks good for me, but still sometimes fails if there is not enough space on the expected side:
I guess creating a negative buffer and placing the labels on that is not what you want.