Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
7e26a8df
Commit
7e26a8df
authored
Aug 10, 2023
by
Jeffrey Morgan
Browse files
cmd: use environment variables for server options
parent
4ab1da38
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
135 deletions
+35
-135
cmd/cmd.go
cmd/cmd.go
+18
-32
cmd/cmd_test.go
cmd/cmd_test.go
+0
-103
docs/faq.md
docs/faq.md
+17
-0
No files found.
cmd/cmd.go
View file @
7e26a8df
...
@@ -523,36 +523,21 @@ func generateBatch(cmd *cobra.Command, model string) error {
...
@@ -523,36 +523,21 @@ func generateBatch(cmd *cobra.Command, model string) error {
return
nil
return
nil
}
}
// getRunServerParams takes a command and the environment variables and returns the correct params
func
RunServer
(
cmd
*
cobra
.
Command
,
_
[]
string
)
error
{
// given the order of precedence: command line args (highest), environment variables, defaults (lowest)
var
host
,
port
=
"127.0.0.1"
,
"11434"
func
getRunServerParams
(
cmd
*
cobra
.
Command
)
(
host
,
port
string
,
extraOrigins
[]
string
,
err
error
)
{
host
=
os
.
Getenv
(
"OLLAMA_HOST"
)
parts
:=
strings
.
Split
(
os
.
Getenv
(
"OLLAMA_HOST"
),
":"
)
hostFlag
:=
cmd
.
Flags
()
.
Lookup
(
"host"
)
if
ip
:=
net
.
ParseIP
(
parts
[
0
]);
ip
!=
nil
{
if
hostFlag
==
nil
{
host
=
ip
.
String
()
return
""
,
""
,
nil
,
errors
.
New
(
"host unset"
)
}
if
hostFlag
.
Changed
||
host
==
""
{
host
=
hostFlag
.
Value
.
String
()
}
port
=
os
.
Getenv
(
"OLLAMA_PORT"
)
portFlag
:=
cmd
.
Flags
()
.
Lookup
(
"port"
)
if
portFlag
==
nil
{
return
""
,
""
,
nil
,
errors
.
New
(
"port unset"
)
}
if
portFlag
.
Changed
||
port
==
""
{
port
=
portFlag
.
Value
.
String
()
}
extraOrigins
,
err
=
cmd
.
Flags
()
.
GetStringSlice
(
"origins"
)
if
err
!=
nil
{
return
""
,
""
,
nil
,
err
}
}
return
host
,
port
,
extraOrigins
,
nil
}
func
RunServer
(
cmd
*
cobra
.
Command
,
_
[]
string
)
error
{
if
len
(
parts
)
>
1
{
host
,
port
,
origins
,
err
:=
getRunServerParams
(
cmd
)
port
=
parts
[
1
]
if
err
!=
nil
{
}
return
err
// deprecated: include port in OLLAMA_HOST
if
p
:=
os
.
Getenv
(
"OLLAMA_PORT"
);
p
!=
""
{
port
=
p
}
}
ln
,
err
:=
net
.
Listen
(
"tcp"
,
fmt
.
Sprintf
(
"%s:%s"
,
host
,
port
))
ln
,
err
:=
net
.
Listen
(
"tcp"
,
fmt
.
Sprintf
(
"%s:%s"
,
host
,
port
))
...
@@ -560,6 +545,11 @@ func RunServer(cmd *cobra.Command, _ []string) error {
...
@@ -560,6 +545,11 @@ func RunServer(cmd *cobra.Command, _ []string) error {
return
err
return
err
}
}
var
origins
[]
string
if
o
:=
os
.
Getenv
(
"OLLAMA_ORIGINS"
);
o
!=
""
{
origins
=
strings
.
Split
(
o
,
","
)
}
return
server
.
Serve
(
ln
,
origins
)
return
server
.
Serve
(
ln
,
origins
)
}
}
...
@@ -652,10 +642,6 @@ func NewCLI() *cobra.Command {
...
@@ -652,10 +642,6 @@ func NewCLI() *cobra.Command {
RunE
:
RunServer
,
RunE
:
RunServer
,
}
}
serveCmd
.
Flags
()
.
String
(
"port"
,
"11434"
,
"Port to listen on"
)
serveCmd
.
Flags
()
.
String
(
"host"
,
"127.0.0.1"
,
"Host to listen on"
)
serveCmd
.
Flags
()
.
StringSlice
(
"origins"
,
nil
,
"Additional allowed CORS origins as comma-separated list (e.g. http://192.168.1.24:3000)"
)
pullCmd
:=
&
cobra
.
Command
{
pullCmd
:=
&
cobra
.
Command
{
Use
:
"pull MODEL"
,
Use
:
"pull MODEL"
,
Short
:
"Pull a model from a registry"
,
Short
:
"Pull a model from a registry"
,
...
...
cmd/cmd_test.go
deleted
100644 → 0
View file @
4ab1da38
package
cmd
import
(
"os"
"testing"
)
func
TestGetRunServerParams
(
t
*
testing
.
T
)
{
t
.
Run
(
"default values"
,
func
(
t
*
testing
.
T
)
{
cmd
:=
NewCLI
()
serveCmd
,
_
,
err
:=
cmd
.
Find
([]
string
{
"serve"
})
if
err
!=
nil
{
t
.
Errorf
(
"expected serve command, got %s"
,
err
)
}
host
,
port
,
extraOrigins
,
err
:=
getRunServerParams
(
serveCmd
)
// assertions
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error, got %s"
,
err
)
}
if
host
!=
"127.0.0.1"
{
t
.
Errorf
(
"unexpected host, got %s"
,
host
)
}
if
port
!=
"11434"
{
t
.
Errorf
(
"unexpected port, got %s"
,
port
)
}
if
len
(
extraOrigins
)
!=
0
{
t
.
Errorf
(
"unexpected origins, got %s"
,
extraOrigins
)
}
})
t
.
Run
(
"environment variables take precedence over default"
,
func
(
t
*
testing
.
T
)
{
cmd
:=
NewCLI
()
serveCmd
,
_
,
err
:=
cmd
.
Find
([]
string
{
"serve"
})
if
err
!=
nil
{
t
.
Errorf
(
"expected serve command, got %s"
,
err
)
}
// setup environment variables
err
=
os
.
Setenv
(
"OLLAMA_HOST"
,
"0.0.0.0"
)
if
err
!=
nil
{
t
.
Errorf
(
"could not set env var"
)
}
err
=
os
.
Setenv
(
"OLLAMA_PORT"
,
"9999"
)
if
err
!=
nil
{
t
.
Errorf
(
"could not set env var"
)
}
defer
func
()
{
os
.
Unsetenv
(
"OLLAMA_HOST"
)
os
.
Unsetenv
(
"OLLAMA_PORT"
)
}()
host
,
port
,
extraOrigins
,
err
:=
getRunServerParams
(
serveCmd
)
// assertions
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error, got %s"
,
err
)
}
if
host
!=
"0.0.0.0"
{
t
.
Errorf
(
"unexpected host, got %s"
,
host
)
}
if
port
!=
"9999"
{
t
.
Errorf
(
"unexpected port, got %s"
,
port
)
}
if
len
(
extraOrigins
)
!=
0
{
t
.
Errorf
(
"unexpected origins, got %s"
,
extraOrigins
)
}
})
t
.
Run
(
"command line args take precedence over env vars"
,
func
(
t
*
testing
.
T
)
{
cmd
:=
NewCLI
()
serveCmd
,
_
,
err
:=
cmd
.
Find
([]
string
{
"serve"
})
if
err
!=
nil
{
t
.
Errorf
(
"expected serve command, got %s"
,
err
)
}
// setup environment variables
err
=
os
.
Setenv
(
"OLLAMA_HOST"
,
"0.0.0.0"
)
if
err
!=
nil
{
t
.
Errorf
(
"could not set env var"
)
}
err
=
os
.
Setenv
(
"OLLAMA_PORT"
,
"9999"
)
if
err
!=
nil
{
t
.
Errorf
(
"could not set env var"
)
}
defer
func
()
{
os
.
Unsetenv
(
"OLLAMA_HOST"
)
os
.
Unsetenv
(
"OLLAMA_PORT"
)
}()
// now set command flags
serveCmd
.
Flags
()
.
Set
(
"host"
,
"localhost"
)
serveCmd
.
Flags
()
.
Set
(
"port"
,
"8888"
)
serveCmd
.
Flags
()
.
Set
(
"origins"
,
"http://foo.example.com,http://192.168.1.1"
)
host
,
port
,
extraOrigins
,
err
:=
getRunServerParams
(
serveCmd
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error, got %s"
,
err
)
}
if
host
!=
"localhost"
{
t
.
Errorf
(
"unexpected host, got %s"
,
host
)
}
if
port
!=
"8888"
{
t
.
Errorf
(
"unexpected port, got %s"
,
port
)
}
if
len
(
extraOrigins
)
!=
2
{
t
.
Errorf
(
"expected two origins, got length %d"
,
len
(
extraOrigins
))
}
})
}
docs/faq.md
0 → 100644
View file @
7e26a8df
# FAQ
## How can I expose the Ollama server?
```
OLLAMA_HOST=0.0.0.0:11435 ollama serve
```
By default, Ollama allows cross origin requests from
`127.0.0.1`
and
`0.0.0.0`
. To support more origins, you can use the
`OLLAMA_ORIGINS`
environment variable:
```
OLLAMA_ORIGINS=http://192.168.1.1:*,https://example.com ollama serve
```
## Where are models stored?
Raw model data is stored under
`~/.ollama/models`
.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment