Installation/Camo
About Camo and why there is support for it in diaspora*
Camo is a small Node.js application to proxy insecure assets. Its main reason is to service HTTP assets over an HTTPS channel to avoid mixed content warnings. Another usage is to reduce the amount of external assets to avoid browser connects to third party hosts. Camo will also add a whitelisting to the images MIME type to add some protection against attacks.
diaspora* supports content formatting using Markdown, which also enables users to embed images from third parties. While this is great for creating larger posts with inline images, it's a huge privacy and security problem since most of the images will get hosted by third parties, forcing the users browser to connect to those servers, thus exposing their identities to others.
Since disabling markdown embeds is not a nice solution, we implemented a special mechanism to rewrite markdown image URLs to get proxied through Camo. In addition, it is also possible to proxy remote profile pictures and remote post photos to create an environment almost entirely without external resources.
Why your pod should enable Camo
- Depending on your configuration, embedded images and/or remote pods content will get proxied through your server, so your user's browsers do not need to connect to external servers. This will increase the users privacy.
- Your pods frontend will get a little bit of extra protection due to the MIME type whitelist.
Why your pod should not enable Camo
- Camo will create a huge amount of traffic depending on your settings since it will proxy all the remote images.
- You will have to maintain a dedicated node.js application, the Camo application is neither shipped nor started with diaspora*.
- Bugs may occur and images with wrong/missing MIME types will not get served.