I2P base32 addresses aren't particularly memorable,
http://gdncgijky3xvocpkq6xqk5uda4vsnvzuk7ke7jrvxnvyjwkq35iq.b32.i2p/ doesn't exactly roll off the tongue.
Although you can register a shortname, the availability of your site via that name will depend on whether the shortname appears in the user's addressbook.
Some I2P operators, therefore prefer to generate a vanity address.
This documentation details how to generate a vanity I2P address for use with an eepsite.
Generating the vanity name
The process works by generating lots and lots of keys and seeing whether they match the pattern you've provided - the longer the string you're trying to include, the more computationally expensive this is (you can see approximate times to generate in the i2pd-tools readme.
The following tells the tooling to use 4 threads to try and find
docker run --rm \ -v $PWD:/op \ bentasker12/id2pd-tools vain btask -t 4
It gave the following output
Initializing vanity generator (4 threads)
Starting attempt #1: [+] thread 3 bound [+] thread 2 bound [+] thread 0 bound [+] thread 1 bound Found address: btaskxu6k3mdxcq73zky6ocinv7xbcj5owqzgmagg56fr2wryckq Hashes calculated: 4003375
The key is written into a file called
private.dat in the local directory
docker run --rm \ -v $PWD:/op \ bentasker12/id2pd-tools keyinfo private.dat btaskxu6k3mdxcq73zky6ocinv7xbcj5owqzgmagg56fr2wryckq.b32.i2p
Pattern based generation
The tool will accept a regex to search for, so I might perhaps want to run
docker run --rm \ -v $PWD:/op \ bentasker12/id2pd-tools vain '(btask|ben)' -r -t 4
To find names which match either of those.
Using the name
In order to use the name, you need to copy the
.dat file to wherever your eepsite is hosted and reference it in
[my-eepsite] type = http host = 127.0.0.1 port = 80 keys = keys/private.dat inbound.length = 1 outbound.length = 1
Restart I2P and you should be good to go