Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

nixos/ollama: add options to bypass sandboxing #305076

Merged
merged 1 commit into from Apr 20, 2024

Conversation

abysssol
Copy link
Contributor

@abysssol abysssol commented Apr 18, 2024

Description of changes

By default, the service has some sandboxing systemd features enabled, which includes making most of the filesystem read-only. This is usually fine, but in some cases may get in the way. This allows two ways to bypass sanboxing: disabling it entirely, or giving write access to specific paths.

Resolves #304531.

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 馃憤 reaction to pull requests you find important.

@@ -87,7 +120,8 @@ in
ExecStart = "${lib.getExe ollamaPackage} serve";
WorkingDirectory = cfg.home;
StateDirectory = [ "ollama" ];
DynamicUser = true;
DynamicUser = cfg.sandbox;
ReadWritePaths = cfg.writablePaths;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This solves the problem with file system, but it seems like systemd also sandboxes away network. So you can't do, for example, ollama pull.

Copy link
Contributor Author

@abysssol abysssol Apr 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have tested the service's network functionality, and haven't had any problems getting it to download new models. Are you sure the problem is with the network? If it is, are you confident that it doesn't have anything to do with your local network configuration?

Could you try downloading a new model (tinydolphin is pretty small) with the default ollama service configuration (i.e. just services.ollama.enable = true;), and get back to me with the results of that?

@abysssol abysssol requested a review from drupol April 20, 2024 07:50
@drupol drupol merged commit 31805d0 into NixOS:master Apr 20, 2024
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ollama fails to run: read only file system
3 participants