It's really tempting to increase the gain on the sound interface when the volume isn't loud enough. It's a very hard question to answer not knowing exactly what gear you are using, interface etc...
I use an Apollo which means I can monitor latency free and create headphone mixes.
Here's the step by step of what works really well for me:
FANCY WAY
1) I run my bass into my MXR bass preamp pedal
- output goes into my HiZ input on the interface.
- the pedal direct out goes into a second preamp on my interface via XLR (this is the straight unaffected DI)
2) I now have my bass going into two channel strips. One is my live monitoring sound and the other just a straight DI.
The levels here are really important. You basically need your bass to peak between -21db and -15db. I usually aim around -18db.
Set both of your preamps on your sound interface to this input level. This is the ideal input for 24bit recording. If you are recording 16bits you can go a little hotter to lower the noise floor.
It's really tempting at this point to increase the gain on the interface because it's hard to monitor at these levels...it sounds wait too quiet compared to mastered music or even working mixes. If you increase the gain on the preamp to get the volume loud enough to monitor you will clip your peaks...so DO NOT DO THAT

3) My input levels are now ideal. Everything that happens now will be in the floating point digital domain. My DI channel is set so I can just forget about that. I know that whatever I tamper with now with my live monitor sound, I have a clean d.i. take as a backup. Now for my live sound:
I can use my MXR preamp to tweak the sound to something I like. Maybe boost the bass a little to get more power. Adjust my mids etc... a little goes a long way. Whatever helps me monitor my sound so it's comfortable for me to play.
The next step for my live sound is compression. I go into an LA-2a with about 2-3db's of peak reduction to add a little evenness and fatness. I adjust the gain coming out here so it's around -9db, which is a totally adequate level for monitoring. My live sound is now getting a really good level and I can hear it loud in my headphones or monitors!
The last and final step is a limiter. I add an 1176 set to 20-1 with the fastest attack and release I can use without causing distortion. Make sure your output coming out of that is still around -9db for proper gain staging. You want to set the gain reduction on the compressor so the needle doesn't move at all when you play but if you pop or slap a string pretty hard...the need wiggles and the compressor catches that crazy transient. Basically the compressor doesn't do anything unless you get a loud peak then it tames it.
And that's about it...I sing better in the shower, so having a good monitoring sound makes a huge difference in my performance... When I record vocals, I always give the performer a little reverb in their headphone mix...same concept here.
EASIER WAY
1) Go straight into the HiZ on your interface. Set the levels as described in the previous method. Keep lots of headroom.
2) Your D.I. is now totally good to go. For monitoring:
Use something like Cerberus Bass amp, or whatever standalone, low latency plug you have. That's your monitor, and it will be loud coming out of that.
Your buddy will record the clean D.I. you like to the daw and your set.
As far as setting up headphone mixes and gear. Seems like people have already tipped in with suggestions.
A cheap solution is a Presonus hp4 or something like that. HD280's are good if you want isolation.
Good luck, play music!