I built an ERC721 smart contract and deployed it to Polygon mainnet. The contract mints 10 unique NFTs with metadata hosted on my personal server instead of IPFS. I successfully deployed everything through Remix and completed the minting process.
However, the NFT images don’t appear anywhere. They show as placeholder images in MetaMask wallet, PolygonScan explorer, and OpenSea marketplace. The tokens exist but no artwork is visible.
check if your server’s actually running first. that ip might be down or blocked by a firewall. try curl’ing the metadata url from command line to see if it responds. also, browsers block mixed content - if you’re on opensea over https but your metadata’s on http, it won’t load. opensea caches metadata hard too, so even after fixing the server, you’ll probably need to manually refresh the metadata on opensea.
This is definitely a server config issue. Had the same problem when I first deployed my collection on a VPS. Your contract looks good, but hosting on a raw IP creates tons of problems. Most wallets and marketplaces expect HTTPS with proper SSL - they’ll refuse to load content from unverified sources. That IP (15.42.81.109) probably doesn’t have SSL set up right. Your server also needs to handle CORS requests and serve the right content-type headers for JSON files. Without proper headers, OpenSea won’t even fetch your metadata. I’d either set up a proper domain with SSL or just switch to IPFS. If you’re sticking with your server, configure nginx or apache with SSL certificates and make sure it serves JSON with ‘application/json’ headers. Quick test: open your metadata URLs in an incognito window - if they don’t load properly there, they won’t work for NFT platforms either.
hmm, this is interesting - i’ve seen this issue before and it usually comes down to a few potential culprits.
first thing that jumps out to me is you’re hosting metadata on your personal server (that IP address). have you double-checked that the metadata files are actually accessible? like, can you manually visit https://15.42.81.109/metadata/1.json in your browser and see the proper JSON structure?
what does your metadata JSON actually look like? marketplaces and wallets are pretty picky about the format - they expect specific fields like “name”, “description”, “image”, etc. and the image field needs to point to a publicly accessible image URL.
another thing - is your server configured to serve JSON files with the right CORS headers? some platforms might be getting blocked when trying to fetch the metadata.
oh and just curious - any particular reason you went with hosting on your own server instead of ipfs? not judging, just wondering if there’s a specific use case there.
have you tried checking the browser console when viewing your NFTs on opensea or other platforms? sometimes there are helpful error messages that show what’s going wrong with the metadata fetching.
would love to help troubleshoot this further - can you share what one of your metadata files looks like?