[GH-ISSUE #1072] How to host the Models Registry in a private network instead of registry.ollama.ai? #47041

Open
opened 2026-04-28 02:52:56 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @marcellodesales on GitHub (Nov 10, 2023).
Original GitHub issue: https://github.com/ollama/ollama/issues/1072

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... :(

    <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

curl -s -i --no-buffer http://localhost:11434/api/pull -d '{"name": "llama2"}'
{"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"}
Originally created by @marcellodesales on GitHub (Nov 10, 2023). Original GitHub issue: https://github.com/ollama/ollama/issues/1072 # 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>
GiteaMirror added the questionfeature request labels 2026-04-28 02:53:02 -05:00
Author
Owner

@thawkins commented on GitHub (Jul 24, 2025):

Deeply interested in this capability, preferably using artifactory as backend storage. We are a very large global Fintech, that does not allow direct download of any active content, we need to use local curated mirrors so we can block any artifact that fails our security rules.

We would like to have the ability to specify a local repository, example

ollama run local/smollm2 and have it use a local repo.

<!-- gh-comment-id:3114243103 --> @thawkins commented on GitHub (Jul 24, 2025): Deeply interested in this capability, preferably using artifactory as backend storage. We are a very large global Fintech, that does not allow direct download of any active content, we need to use local curated mirrors so we can block any artifact that fails our security rules. We would like to have the ability to specify a local repository, example ollama run local/smollm2 and have it use a local repo.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/ollama#47041