When I set the pin as output and thereby low the relais switches on (the current only 4mA) can not be harmfull. Setting the pin as input exposes (maybe) the pin to 5V (of the relais unit) but the current will be low because the internal resistance of the input pin of the relais unit will be high. (because it is designed as input)
that doesn't matter, if 5V reaches the GPIO pin, even with little or no current flow (actually no current will flow, as there are no protection diodes it can flow into) the GPIO will be damaged!
In the past I did not believe that either, because I thought the current would flow through the "protection diodes" into the 3V3 supply, and with low enough currents the GPIO voltage would not lift above 3.3V plus the forward voltage of the diode.
However this is NOT the case, (the protection diodes do not exist!) and 5V will end up over the GPIO transistors, which cannot handle it !
I understand that you dislike using other components, but I don't see a safe way in which you could!
The IN pin must
be lifted to almost 5V, or the PNP transistor in this driver won't block.
Face it, the relay module is designed for an Arduino, (or other 5V logic) and without an extra component is simply incompatible
with a PI!
don't believe me, and Control the IN pin by either driving it low as an output, or let it float to 5V bij switching the GPIO off (switch it to input) . This may work for a short while but WILL eventually blow up the GPIO!
You bought the wrong relay module!
You MUST add either an NPN transistor (plus base resistor) or better an opto-isolator.
p.s. my comments are based on the fact that your relay module uses a PNP transistor, like the below schematic diagram:
as you can see it already sports a pullup to 5V , so the transistor is blocked when the I pin isn't driven low.
Adding another pullup therefore won't do any good.