From c19fbc1e76c5a507fd32f171bfe0f22c613b8329 Mon Sep 17 00:00:00 2001 From: "Igor B. Poretsky" Date: Wed, 26 Nov 2025 17:16:15 +0300 Subject: [PATCH 1/3] More appropriate place for data storing The /usr/share subtree in Linux is used for data that generally are not supposed to change. Conventional places for changeable data are usually located under /var, so /var/lib seems to be a reasonable default here. --- docs/static/install.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/static/install.sh b/docs/static/install.sh index 65aba4f7d1e9..a84457f05845 100755 --- a/docs/static/install.sh +++ b/docs/static/install.sh @@ -20,7 +20,7 @@ # API_KEY - API key for securing LocalAI access (default: none) # PORT - Port to run LocalAI on (default: 8080) # THREADS - Number of CPU threads to use (default: auto-detected) -# MODELS_PATH - Path to store models (default: /usr/share/local-ai/models) +# MODELS_PATH - Path to store models (default: /var/lib/local-ai/models) # CORE_IMAGES - Set to "true" to download core LocalAI images (default: false) # P2P_TOKEN - Token for P2P federation/worker mode (default: none) # WORKER - Set to "true" to run as a worker node (default: false) @@ -138,9 +138,9 @@ uninstall_localai() { done # Remove models directory - if [ -d "/usr/share/local-ai" ]; then + if [ -d "/var/lib/local-ai" ]; then info "Removing LocalAI data directory..." - $SUDO rm -rf /usr/share/local-ai + $SUDO rm -rf /var/lib/local-ai fi # Remove local-ai user if it exists @@ -190,7 +190,7 @@ fi THREADS=${THREADS:-$procs} LATEST_VERSION=$(curl -s "https://api.github.com/repos/mudler/LocalAI/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') LOCALAI_VERSION="${LOCALAI_VERSION:-$LATEST_VERSION}" #changed due to VERSION beign already defined in Fedora 42 Cloud Edition -MODELS_PATH=${MODELS_PATH:-/usr/share/local-ai/models} +MODELS_PATH=${MODELS_PATH:-/var/lib/local-ai/models} check_gpu() { @@ -232,7 +232,7 @@ trap aborted INT configure_systemd() { if ! id local-ai >/dev/null 2>&1; then info "Creating local-ai user..." - $SUDO useradd -r -s /bin/false -U -m -d /usr/share/local-ai local-ai + $SUDO useradd -r -s /bin/false -U -m -d /var/lib/local-ai local-ai fi info "Adding current user to local-ai group..." @@ -251,7 +251,7 @@ Restart=always EnvironmentFile=/etc/localai.env RestartSec=3 Environment="PATH=$PATH" -WorkingDirectory=/usr/share/local-ai +WorkingDirectory=/var/lib/local-ai [Install] WantedBy=default.target From 46014940a59d252d3e5702052c457df76772862a Mon Sep 17 00:00:00 2001 From: "Igor B. Poretsky" Date: Wed, 26 Nov 2025 20:22:22 +0300 Subject: [PATCH 2/3] Data paths consistency fix --- core/cli/backends.go | 2 +- core/cli/run.go | 2 +- core/cli/worker/worker.go | 2 +- docs/content/installation/linux.md | 2 +- docs/content/reference/cli-reference.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/cli/backends.go b/core/cli/backends.go index 0528d76678d8..3e46b8694ce2 100644 --- a/core/cli/backends.go +++ b/core/cli/backends.go @@ -19,7 +19,7 @@ import ( type BackendsCMDFlags struct { BackendGalleries string `env:"LOCALAI_BACKEND_GALLERIES,BACKEND_GALLERIES" help:"JSON list of backend galleries" group:"backends" default:"${backends}"` BackendsPath string `env:"LOCALAI_BACKENDS_PATH,BACKENDS_PATH" type:"path" default:"${basepath}/backends" help:"Path containing backends used for inferencing" group:"storage"` - BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/usr/share/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` + BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` } type BackendsList struct { diff --git a/core/cli/run.go b/core/cli/run.go index efb0ee99b9ec..594b9b64503e 100644 --- a/core/cli/run.go +++ b/core/cli/run.go @@ -24,7 +24,7 @@ type RunCMD struct { ExternalBackends []string `env:"LOCALAI_EXTERNAL_BACKENDS,EXTERNAL_BACKENDS" help:"A list of external backends to load from gallery on boot" group:"backends"` BackendsPath string `env:"LOCALAI_BACKENDS_PATH,BACKENDS_PATH" type:"path" default:"${basepath}/backends" help:"Path containing backends used for inferencing" group:"backends"` - BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/usr/share/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` + BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` ModelsPath string `env:"LOCALAI_MODELS_PATH,MODELS_PATH" type:"path" default:"${basepath}/models" help:"Path containing models used for inferencing" group:"storage"` GeneratedContentPath string `env:"LOCALAI_GENERATED_CONTENT_PATH,GENERATED_CONTENT_PATH" type:"path" default:"/tmp/generated/content" help:"Location for generated content (e.g. images, audio, videos)" group:"storage"` UploadPath string `env:"LOCALAI_UPLOAD_PATH,UPLOAD_PATH" type:"path" default:"/tmp/localai/upload" help:"Path to store uploads from files api" group:"storage"` diff --git a/core/cli/worker/worker.go b/core/cli/worker/worker.go index 2f330d44af61..3151fadffe7a 100644 --- a/core/cli/worker/worker.go +++ b/core/cli/worker/worker.go @@ -3,7 +3,7 @@ package worker type WorkerFlags struct { BackendsPath string `env:"LOCALAI_BACKENDS_PATH,BACKENDS_PATH" type:"path" default:"${basepath}/backends" help:"Path containing backends used for inferencing" group:"backends"` BackendGalleries string `env:"LOCALAI_BACKEND_GALLERIES,BACKEND_GALLERIES" help:"JSON list of backend galleries" group:"backends" default:"${backends}"` - BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/usr/share/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` + BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` ExtraLLamaCPPArgs string `name:"llama-cpp-args" env:"LOCALAI_EXTRA_LLAMA_CPP_ARGS,EXTRA_LLAMA_CPP_ARGS" help:"Extra arguments to pass to llama-cpp-rpc-server"` } diff --git a/docs/content/installation/linux.md b/docs/content/installation/linux.md index cdacac5a981c..75952f142069 100644 --- a/docs/content/installation/linux.md +++ b/docs/content/installation/linux.md @@ -39,7 +39,7 @@ curl https://localai.io/install.sh | VAR=value sh | **PORT** | Specifies the port on which LocalAI will run (default is 8080) | | **THREADS** | Number of processor threads the application should use. Defaults to the number of logical cores minus one | | **VERSION** | Specifies the version of LocalAI to install. Defaults to the latest available version | -| **MODELS_PATH** | Directory path where LocalAI models are stored (default is `/usr/share/local-ai/models`) | +| **MODELS_PATH** | Directory path where LocalAI models are stored (default is `/var/lib/local-ai/models`) | | **P2P_TOKEN** | Token to use for the federation or for starting workers. See [distributed inferencing documentation]({{%relref "features/distributed_inferencing" %}}) | | **WORKER** | Set to `"true"` to make the instance a worker (p2p token is required) | | **FEDERATED** | Set to `"true"` to share the instance with the federation (p2p token is required) | diff --git a/docs/content/reference/cli-reference.md b/docs/content/reference/cli-reference.md index cc0f927cf3c1..b11b67e2d191 100644 --- a/docs/content/reference/cli-reference.md +++ b/docs/content/reference/cli-reference.md @@ -33,7 +33,7 @@ Complete reference for all LocalAI command-line interface (CLI) parameters and e | Parameter | Default | Description | Environment Variable | |-----------|---------|-------------|----------------------| | `--backends-path` | `BASEPATH/backends` | Path containing backends used for inferencing | `$LOCALAI_BACKENDS_PATH`, `$BACKENDS_PATH` | -| `--backends-system-path` | `/usr/share/localai/backends` | Path containing system backends used for inferencing | `$LOCALAI_BACKENDS_SYSTEM_PATH`, `$BACKEND_SYSTEM_PATH` | +| `--backends-system-path` | `/var/lib/localai/backends` | Path containing system backends used for inferencing | `$LOCALAI_BACKENDS_SYSTEM_PATH`, `$BACKEND_SYSTEM_PATH` | | `--external-backends` | | A list of external backends to load from gallery on boot | `$LOCALAI_EXTERNAL_BACKENDS`, `$EXTERNAL_BACKENDS` | | `--external-grpc-backends` | | A list of external gRPC backends (format: `BACKEND_NAME:URI`) | `$LOCALAI_EXTERNAL_GRPC_BACKENDS`, `$EXTERNAL_GRPC_BACKENDS` | | `--backend-galleries` | | JSON list of backend galleries | `$LOCALAI_BACKEND_GALLERIES`, `$BACKEND_GALLERIES` | From dbbc6851df0c36eda8a33ec3e3fac2953b8408c7 Mon Sep 17 00:00:00 2001 From: "Igor B. Poretsky" Date: Wed, 26 Nov 2025 21:19:18 +0300 Subject: [PATCH 3/3] Directory name consistency fix --- core/cli/backends.go | 2 +- core/cli/run.go | 2 +- core/cli/worker/worker.go | 2 +- docs/content/reference/cli-reference.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/cli/backends.go b/core/cli/backends.go index 3e46b8694ce2..6ccc6496aedc 100644 --- a/core/cli/backends.go +++ b/core/cli/backends.go @@ -19,7 +19,7 @@ import ( type BackendsCMDFlags struct { BackendGalleries string `env:"LOCALAI_BACKEND_GALLERIES,BACKEND_GALLERIES" help:"JSON list of backend galleries" group:"backends" default:"${backends}"` BackendsPath string `env:"LOCALAI_BACKENDS_PATH,BACKENDS_PATH" type:"path" default:"${basepath}/backends" help:"Path containing backends used for inferencing" group:"storage"` - BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` + BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/local-ai/backends" help:"Path containing system backends used for inferencing" group:"backends"` } type BackendsList struct { diff --git a/core/cli/run.go b/core/cli/run.go index 594b9b64503e..a1dc0e1c175f 100644 --- a/core/cli/run.go +++ b/core/cli/run.go @@ -24,7 +24,7 @@ type RunCMD struct { ExternalBackends []string `env:"LOCALAI_EXTERNAL_BACKENDS,EXTERNAL_BACKENDS" help:"A list of external backends to load from gallery on boot" group:"backends"` BackendsPath string `env:"LOCALAI_BACKENDS_PATH,BACKENDS_PATH" type:"path" default:"${basepath}/backends" help:"Path containing backends used for inferencing" group:"backends"` - BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` + BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/local-ai/backends" help:"Path containing system backends used for inferencing" group:"backends"` ModelsPath string `env:"LOCALAI_MODELS_PATH,MODELS_PATH" type:"path" default:"${basepath}/models" help:"Path containing models used for inferencing" group:"storage"` GeneratedContentPath string `env:"LOCALAI_GENERATED_CONTENT_PATH,GENERATED_CONTENT_PATH" type:"path" default:"/tmp/generated/content" help:"Location for generated content (e.g. images, audio, videos)" group:"storage"` UploadPath string `env:"LOCALAI_UPLOAD_PATH,UPLOAD_PATH" type:"path" default:"/tmp/localai/upload" help:"Path to store uploads from files api" group:"storage"` diff --git a/core/cli/worker/worker.go b/core/cli/worker/worker.go index 3151fadffe7a..0a636c3bfacb 100644 --- a/core/cli/worker/worker.go +++ b/core/cli/worker/worker.go @@ -3,7 +3,7 @@ package worker type WorkerFlags struct { BackendsPath string `env:"LOCALAI_BACKENDS_PATH,BACKENDS_PATH" type:"path" default:"${basepath}/backends" help:"Path containing backends used for inferencing" group:"backends"` BackendGalleries string `env:"LOCALAI_BACKEND_GALLERIES,BACKEND_GALLERIES" help:"JSON list of backend galleries" group:"backends" default:"${backends}"` - BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/localai/backends" help:"Path containing system backends used for inferencing" group:"backends"` + BackendsSystemPath string `env:"LOCALAI_BACKENDS_SYSTEM_PATH,BACKEND_SYSTEM_PATH" type:"path" default:"/var/lib/local-ai/backends" help:"Path containing system backends used for inferencing" group:"backends"` ExtraLLamaCPPArgs string `name:"llama-cpp-args" env:"LOCALAI_EXTRA_LLAMA_CPP_ARGS,EXTRA_LLAMA_CPP_ARGS" help:"Extra arguments to pass to llama-cpp-rpc-server"` } diff --git a/docs/content/reference/cli-reference.md b/docs/content/reference/cli-reference.md index b11b67e2d191..9a9965045a37 100644 --- a/docs/content/reference/cli-reference.md +++ b/docs/content/reference/cli-reference.md @@ -33,7 +33,7 @@ Complete reference for all LocalAI command-line interface (CLI) parameters and e | Parameter | Default | Description | Environment Variable | |-----------|---------|-------------|----------------------| | `--backends-path` | `BASEPATH/backends` | Path containing backends used for inferencing | `$LOCALAI_BACKENDS_PATH`, `$BACKENDS_PATH` | -| `--backends-system-path` | `/var/lib/localai/backends` | Path containing system backends used for inferencing | `$LOCALAI_BACKENDS_SYSTEM_PATH`, `$BACKEND_SYSTEM_PATH` | +| `--backends-system-path` | `/var/lib/local-ai/backends` | Path containing system backends used for inferencing | `$LOCALAI_BACKENDS_SYSTEM_PATH`, `$BACKEND_SYSTEM_PATH` | | `--external-backends` | | A list of external backends to load from gallery on boot | `$LOCALAI_EXTERNAL_BACKENDS`, `$EXTERNAL_BACKENDS` | | `--external-grpc-backends` | | A list of external gRPC backends (format: `BACKEND_NAME:URI`) | `$LOCALAI_EXTERNAL_GRPC_BACKENDS`, `$EXTERNAL_GRPC_BACKENDS` | | `--backend-galleries` | | JSON list of backend galleries | `$LOCALAI_BACKEND_GALLERIES`, `$BACKEND_GALLERIES` |