To host your images, GitHub uses the open-source project Camo. Camo generates an anonymous URL proxy for each image that starts with https://camo.githubusercontent.com/
and hides your browser details and related information from other users.
Anyone who receives your anonymized image URL, directly or indirectly, may view your image. To keep sensitive images private, restrict them to a private network or a server that requires authentication instead of using Camo.
Troubleshooting issues with Camo
In rare circumstances, images that are processed through Camo might not appear on GitHub. Here are some steps you can take to determine where the problem lies.
An image is not showing up
If an image is showing up in your browser but not on GitHub, you can try requesting the image locally.
- Open Terminal .
- Request the image headers using
curl
.$ curl -I https://www.my-server.com/images/some-image.png > HTTP/1.1 200 OK > Date: Fri, 06 Jun 2014 07:27:43 GMT > Expires: Sun, 06 Jul 2014 07:27:43 GMT > Content-Type: image/x-png > Server: Google Frontend > Content-Length: 6507
- Check the value of
Content-Type
. In this case, it'simage/x-png
. - Check that content type against the list of types supported by Camo.
If your content type is not supported by Camo, you can try several actions:
- If you own the server that's hosting the image, modify it so that it returns a correct content type for images.
- If you're using an external service for hosting images, contact support for that service.
- Make a pull request to Camo to add your content type to the list.
An image that changed recently is not updating
If you changed an image recently and it's showing up in your browser but not GitHub, you can try resetting the cache of the image.
- Open Terminal .
- Request the image headers using
curl
.$ curl -I https://www.my-server.com/images/some-image.png > HTTP/1.1 200 OK > Expires: Fri, 01 Jan 1984 00:00:00 GMT > Content-Type: image/png > Content-Length: 2339 > Server: Jetty(8.y.z-SNAPSHOT)
Check the value of Cache-Control
. In this example, there's no Cache-Control
. In that case:
-
If you own the server that's hosting the image, modify it so that it returns a
Cache-Control
ofno-cache
for images. -
If you're using an external service for hosting images, contact support for that service.
If
Cache-Control
is set tono-cache
, contact GitHub Support or GitHub Premium Support or search the GitHub Community forum.
Removing an image from Camo's cache
Purging the cache forces every GitHub user to re-request the image, so you should use it very sparingly and only in the event that the above steps did not work.
- Open Terminal .
- Purge the image using
curl -X PURGE
on the Camo URL.$ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... > {"status": "ok", "id": "216-8675309-1008701"}
Viewing images on private networks
If an image is being served from a private network or from a server that requires authentication, it can't be viewed by GitHub. In fact, it can't be viewed by any user without asking them to log into the server.
To fix this, please move the image to a service that is publicly available.
Further reading
- "Proxying user images" on the GitHub Blog