A preamp is not your problem, your computer sound card no doubt has a preamp (of dubious quality, I'm sure). You're running a line level signal into a mic (low level) input and overdriving it. You end up trying to compensate by reducing the channel gain till it's almost unusable.
With what you have now, you should try reducing the DI level, while increasing the channel gain in Audacity. You want enough bass signal to drive the DAW, but not enough to clip. This is THE most important part of recording (other than the performance, that is) ... you have to start off with a proper level to allow the other gain stages (input, EQ, FX) to work without distortion. The goal is to get a clean signal to track at -12db to -6db. I've had pretty lousy results trying to record using the computer's mic input. An interface is much better.
Most consumer interfaces would include mic preamps as part of the package (some are pretty decent), and some include one (or more) hi-Z instrument inputs as well. You'd get best results by putting your bass into a hi-Z input and then USB/Firewire into your DAW.