Hey, I've noticed you assign the server seed (Well, hash), and you only let the user choose a nonce.
The nonce can only be number 1 - 99999, what's stopping you assigning server seeds which when applied to a nonce, have a lot higher average roll. You can quickly test all 99,999 instantly, and then only assign ones which have an average roll of lets say 36? That's definitely possible.
To fix this, you should allow the user to choose whether they want to roll high or low.
Just my 2 cents
The output is calculated as follows, the nonce is a 16-bit integer 1-65536 and is generated in Javascript in the browser, the user can also set the nonce themselves, rolling high or low wouldn't make any difference to how fair it is. We can't assign secrets which have an average result, as any input is nonced by the user. The server seed can also be refreshed to a 256 bit number generated from random. Even if we did generate fixed secrets, the user would always nonce it in a way which completely changed the result through using dsha256(secret + nonce).
Here is a json list of the result frequency. bet_frequency_post_nonce is the actual results calculated with the nonce added. bet_frequency_pre_nonce is what the result would have been if the user was allowed to place a bet with a nonce of 0, this is the same as performing mod 64 on the secret_hash.
https://dice64.com/api/bets?prettysecret = random integer 0 - 2256
secret_hash = dsha256(secret)
combined_number = secret + nonce
combined_hash = dsha256(combined_number)
result = combined_hash mod 64