I want to have git repository available via \"smart\" HTTP to which only I can push, but which anybody (or anybody with account) can clone / fetch from.
You have to update your repo .git/config file with the following value:
.git/config
[http] receivepack = true