Hosting for Linux

Extensions hosted on a server outside of the Chrome Web Store can only be installed by Linux users. This page describes how to serve .crx files from a personal server. If distributing an extension or theme solely through the Chrome Web Store, consult the store developer documentation.

Extensions and themes are served as .crx files. When uploading through the Chrome Developer Dashboard, the dashboard creates the .crx file automatically. If published on a personal server, the .crx file will need to be created locally, as described in Packaging. Autoupdate information can be included to ensure users always have the latest copy.

A server that hosts .crx files must use appropriate HTTP headers, so that users can install the file by clicking a link to it.

Google Chrome considers a file to be installable if either of the following is true:

  • The file has the content type application/x-chrome-extension
  • The file suffix is .crx and both of the following are true:
    • The file is not served with the HTTP header X-Content-Type-Options: nosniff
    • The file is served with one of the following content types:
      • empty string
      • "text/plain"
      • "application/octet-stream"
      • "unknown/unknown"
      • "application/unknown"
      • "*/*"

The most common reason for failing to recognize an installable file is that the server sends the header X-Content-Type-Options: nosniff. The second most common reason is that the server sends an unknown content type—one that isn't in the previous list. To fix an HTTP header issue, either change the configuration of the server or try hosting the .crx file at another server.