ERC1155 with {id} doesn't require a centralized metadata server. See this discussion about baseURI in ERC721:
If you still want to have a separate URL for each token, you would need to extend our ERC1155 implementation and override the uri(uint256 id) function to make it return your custom URL. Potentially you can read from a mapping indexed by id. Something similar to what ERC721URIStorage does.