Repository: ollama
Issue: How to host the Models Registry in a private network instead of registry.ollama.ai?
Labels: feature request,question

# Problem 

* Our private network has an Egress firewall rule not allowing connections to any `.ai` endpoints
  * Just discovered it at 1:30am
* How a user can override the Models Registry server with their own?
  * DO we have instructions to on how to bootstrap a Models Registry server?
  * Is it even intended to be used that way?

I have to go through political and legal "debates" to get this enabled... :( 

```html
    <body><div class="message-container">
    <div class="logo"></div>
    <h1>FortiGuard Intrusion Prevention - Access Blocked</h1>
    <h3>Web Page Blocked</h3>
    <p>You have tried to access a web page that is in violation of your Internet usage policy.</p>
    <table><tbody>
        <tr>
            <td>Category</td>
            <td>Web Hosting</td>
        </tr>
        <tr>
            <td>URL</td>
            <td>https://registry.ollama.ai/u003c/tdu003en</td>
        </tr>
    </tbody></table>
    <p>To have the rating of this web page re-evaluated <a href="https://globalurl.fortinet.net/rate/submit.php?id=1D190B43105B510A6200481D164D6675&cat=38&loc=https://152%2e195%2e19%2e97%2f&ver=9">please click here</a>.</p>
    <p></p>
```

# Egress 

<details><summary>curl -s -i --no-buffer http://localhost:11434/api/pull -d '{"name": "llama2"}'</summary>

```json
{"error":"pull model manifest: 403: u003c!DOCTYPE htmlu003enu003chtml lang="en"u003en u003cheadu003en u003cmeta charset="UTF-8"u003en u003cmeta http-equiv="X-UA-Compatible" content="IE=8; IE=EDGE"u003en u003cmeta name="viewport" content="width=device-width, initial-scale=1"u003en u003cstyle type="text/css"u003en body {n height: 100%;n font-family: Helvetica, Arial, sans-serif;n color: #6a6a6a;n margin: 0;n display: flex;n align-items: center;n justify-content: center;n }n input[type=date], input[type=email], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=text], input[type=time], input[type=url], select, textarea {n color: #262626;n vertical-align: baseline;n margin: .2em;n border-style: solid;n border-width: 1px;n border-color: #a9a9a9;n background-color: #fff;n box-sizing: border-box;n padding: 2px .5em;n appearance: none;n border-radius: 0;n }n input:focus {n border-color: #646464;n box-shadow: 0 0 1px 0 #a2a2a2;n outline: 0;n }n button {n padding: .5em 1em;n border: 1px solid;n border-radius: 3px;n min-width: 6em;n font-weight: 400;n font-size: .8em;n cursor: pointer;n }n button.primary {n color: #fff;n background-color: rgb(47, 113, 178);n border-color: rgb(34, 103, 173);n }n .message-container {n height: 500px;n width: 600px;n padding: 0;n margin: 10px;n }n .logo {n background: url(https://globalurl.fortinet.net:8015/XX/YY/ZZ/CI/MGPGHGPGPFGHDDPFGGHGFHBGCHEGPFBGAHAH) no-repeat left center;n height: 267px;n object-fit: contain;n }n table {n background-color: #fff;n border-spacing: 0;n margin: 1em;n }n table u003e tbody u003e tr u003e td:first-of-type:not([colspan]) {n white-space: nowrap;n color: rgba(0,0,0,.5);n }n table u003e tbody u003e tr u003e td:first-of-type {n vertical-align: top;n }n table u003e tbody u003e tr u003e td {n padding: .3em .3em;n }n .field {n display: table-row;n }n .field u003e :first-child {n display: table-cell;n width: 20%;n }n .field.single u003e :first-child {n display: inline;n }n .field u003e :not(:first-child) {n width: auto;n max-width: 100%;n display: inline-flex;n align-items: baseline;n virtical-align: top;n box-sizing: border-box;n margin: .3em;n }n .field u003e :not(:first-child) u003e input {n width: 230px;n }n .form-footer {n display: inline-flex;n justify-content: flex-start;n }n .form-footer u003e README.md pull-model.sh {n margin: 1em;n }n .text-scrollable {n overflow: auto;n height: 150px;n border: 1px solid rgb(200, 200, 200);n padding: 5px;n font-size: 1em;n }n .text-centered {n text-align: center;n }n .text-container {n margin: 1em 1.5em;n }n .flex-container {n display: flex;n }n .flex-container.column {n flex-direction: column;n }n u003c/styleu003en u003ctitleu003eThe URL you requested has been blockedu003c/titleu003en u003c/headu003en u003cbodyu003eu003cdiv class="message-container"u003en u003cdiv class="logo"u003eu003c/divu003en u003ch1u003eFortiGuard Intrusion Prevention - Access Blockedu003c/h1u003en u003ch3u003eWeb Page Blockedu003c/h3u003en u003cpu003eThe page you have requested has been blocked because the URL is banned.u003c/pu003en u003ctableu003eu003ctbodyu003en u003ctru003en u003ctdu003eURLu003c/tdu003en u003ctdu003ehttps://registry.ollama.ai/u003c/tdu003en u003c/tru003en u003ctru003en u003ctdu003eDescriptionu003c/tdu003en u003ctdu003eu003c/tdu003en u003c/tru003en u003ctru003en u003ctdu003eURL Sourceu003c/tdu003en u003ctdu003eLocal URLfilter Blocku003c/tdu003en u003c/tru003en u003c/tbodyu003eu003c/tableu003en u003cpu003eu003c/pu003enu003c/divu003eu003c/bodyu003enu003c/htmlu003enrn"}
```
</details>