[WebIDE] Support Web IDE on GitLab Self-Managed instances in air-gapped environments
## Problem to solve
We've heard feedback about errors loading the Web IDE in tightly-controlled network environments or air-gapped instances (those that allow no external internet traffic).
The Web IDE has limited functionality in GitLab Self-Managed instances running on air-gapped / offline environments. The Web IDE uses an external assets host server `.cdn.web-ide.gitlab-static.net` to isolate VSCode and third-party extensions from the GitLab instance and protect user data. The downside of this architecture is that environments that can't connect to the `.cdn.web-ide.gitlab-static.net` can't use the entire feature set provided by the Web IDE.
## Proposed solution
Help administrators of GitLab Self-Managed instances on air-gapped / offline environments to set up their own external assets host server.
## Plan
* :white_check_mark: - Done
* :construction: - In Progress
* :issue-blocked: - Blocked
* :white_circle: - Not Started
| | Description | Sub epic / issues | Weight | Status | Technical Lead |
|--|-------------|-------------------|--------|--------|----------------|
| Feature | Allow GitLab self-managed admins to provide custom Web IDE extensions host domain. | https://gitlab.com/gitlab-org/gitlab/-/issues/560310+ | 2 | :white_check_mark: | @ealcantara |
| Tooling | Remove same_origin_security.patch from @gitlab-org/web-ide npm package | https://gitlab.com/gitlab-org/gitlab-web-ide/-/issues/528+ | 1 | :white_check_mark: | @ealcantara |
| Feature | Use GitLab instance to serve Web IDE's extension host assets | https://gitlab.com/gitlab-org/gitlab/-/issues/576648+ | 2 | :white_check_mark: | @ealcantara |
| Documentation | Document how to set up the Web IDE on air-gapped environments in the [GitLab Administration docs](https://docs.gitlab.com/administration/get_started/). | https://gitlab.com/gitlab-org/gitlab/-/issues/514748+ | 1 | :white_check_mark: | @ealcantara |
| Documentation | Create a Web IDE runtime architecture sequence diagram that describes how the different origins used by the Web IDE communicate with each other. | https://gitlab.com/gitlab-org/gitlab-web-ide/-/issues/530+ | 1 | :white_check_mark: | @ealcantara |
epic