| <h1>Hosting for Linux</h1> |
| |
| <p> |
| Extensions hosted on a server outside of the |
| <a href="http://chrome.google.com/webstore">Chrome Web Store</a> |
| can only be installed by Linux users. |
| This page describes how to serve <code>.crx</code> files |
| from a personal server. |
| If distributing an extension or theme solely through the |
| <a href="http://chrome.google.com/webstore">Chrome Web Store</a>, |
| consult the <a href="/webstore">store developer documentation</a>. |
| </p> |
| |
| <p> |
| Extensions and themes are served as <code>.crx</code> files. |
| When uploading through the |
| <a href="https://chrome.google.com/webstore/developer/dashboard">Chrome Developer Dashboard</a>, |
| the dashboard creates the <code>.crx</code> file automatically. |
| If published on a personal server, |
| the <code>.crx</code> file will need to be created locally, |
| as described in <a href="packaging">Packaging</a>. |
| <a href="autoupdate">Autoupdate</a> information can be included |
| to ensure users always have the latest copy. |
| </p> |
| |
| <p> |
| A server that hosts <code>.crx</code> files |
| must use appropriate HTTP headers, |
| so that users can install the file |
| by clicking a link to it. |
| </p> |
| |
| <p> |
| Google Chrome considers a file to be installable |
| if <b>either</b> of the following is true: |
| </p> |
| |
| <ul> |
| <li> |
| The file has the content type |
| <code>application/x-chrome-extension</code> |
| </li> |
| <li> |
| The file suffix is <code>.crx</code> |
| and <b>both</b> of the following are true: |
| <ul> |
| <li> |
| The file <b>is not</b> served with |
| the HTTP header <code>X-Content-Type-Options: nosniff</code> |
| </li> |
| <li> |
| The file <b>is</b> served |
| with one of the following content types: |
| <ul> |
| <li> empty string </li> |
| <li> "text/plain" </li> |
| <li> "application/octet-stream" </li> |
| <li> "unknown/unknown" </li> |
| <li> "application/unknown" </li> |
| <li> "*/*" </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| |
| <p> |
| The most common reason for failing to recognize an installable file |
| is that the server sends the header |
| <code>X-Content-Type-Options: nosniff</code>. |
| 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 <code>.crx</code> file at another server. |
| </p> |