I've been using for a while BitBucket as a repo. Now I'd like to set up my own repository and I'd like it to have similar functionalities (in particular I'd like to push, have some kind of web interface, etc...).

I started using mercurial via bitbucket also, it's a really great service. We do the following:

For browsing, in the repository directory, the hg serve command will serve you up the repo on port 8000 by default. That gives you the web interface/search/code highlighting, On my Windows PC I can then do hg clone and I've got a backup of the repo. That's for free all built in to mercurial, you can enable an unauthenticated push but that's not on by default and I've not used it (see URL). The other nice thing is that it's only serving when you have the serve command running. Repo is on linux so the push is handled by ssh which we have integrated with Active Directory at work.