Jetson Orin NX 16G设备上配置AI服务自动启动的方案,包括Ollama、llama-server和OpenClaw Gateway三个组件

Jetson Orin NX 16G 开机自动启动 来配:

  • Ollama :保留官方安装脚本创建的 ollama.service,只加一个 override.conf。这是 Ollama 官方推荐的 Linux 定制方式。(Ollama Docs1)
  • llama-server :单独做系统级 llama-server.service。llama.cpp 官方文档确认它是轻量 C/C++ HTTP 服务,支持 OpenAI 兼容 API,并且支持 --alias、--host、--port、--ctx-size、--parallel、-ctk/-ctv 这些参数。(GitHub2)
  • OpenClaw :官方默认是 systemd user service ,但官方也明确说在 always-on / multi-user servers 上可以改成 system service ;下面我就给你系统级写法,便于无人值守。openclaw gateway 支持 --bind 和 --port。(OpenClaw3)

先提醒一个要点:

你前面那份 openclaw.json 里,gateway 建议补上这一行,否则 Gateway 可能拒绝启动:

json5 复制代码
gateway: {
  mode: "local",
  bind: "loopback",
  port: 18789,
  auth: { token: "REPLACE_WITH_A_LONG_RANDOM_TOKEN" }
}

因为 OpenClaw CLI 文档写明:默认情况下,Gateway 会拒绝启动,除非 ~/.openclaw/openclaw.json 里设置了 gateway.mode=local;--allow-unconfigured 只是临时/dev 用。(OpenClaw4)


0)先把占位符改成你的实际路径

下面文件里会出现这些占位符,保存前先替换:

  • <JETSON_USER>:你的登录用户名,比如 ubuntu
  • <JETSON_HOME>:比如 /home/ubuntu
  • <LLAMA_MODEL>:比如 /home/ubuntu/models/base/qwen2.5-3b-instruct-q4_k_m.gguf

1)Ollama:override 文件

Ollama 官方建议 Linux 上通过 systemctl edit ollama 或 /etc/systemd/system/ollama.service.d/override.conf 来加环境变量;OLLAMA_HOST、OLLAMA_MODELS、OLLAMA_KEEP_ALIVE 都是官方支持的环境变量,OLLAMA_CONTEXT_LENGTH 也可用来固定上下文长度。官方还说明:如果你改了 OLLAMA_MODELS,要确保 ollama 用户对目录有读写权限。(Ollama Docs1)

ini 复制代码
# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_CONTEXT_LENGTH=4096"
Environment="OLLAMA_KEEP_ALIVE=10m"
Environment="OLLAMA_MODELS=/srv/ollama/models"

准备模型目录:

bash 复制代码
sudo mkdir -p /srv/ollama/models
sudo chown -R ollama:ollama /srv/ollama/models

2)llama-server:系统级服务

这里我按 Jetson 保守参数写好了:

  • 只监听 127.0.0.1:8080
  • ctx-size=4096
  • parallel=1
  • KV cache 用 q8_0
  • 显式 --alias,方便 OpenClaw 用固定 model id 对接
  • 开 GGML_CUDA_ENABLE_UNIFIED_MEMORY=1,这是 llama.cpp 官方 build 文档里写明的 Linux 统一内存开关,显存不够时会回退到系统内存而不是直接崩掉。(GitHub2)
ini 复制代码
# /etc/systemd/system/llama-server.service
[Unit]
Description=llama.cpp server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=<JETSON_USER>
Group=<JETSON_USER>
WorkingDirectory=<JETSON_HOME>
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
Environment="GGML_CUDA_ENABLE_UNIFIED_MEMORY=1"
ExecStart=<JETSON_HOME>/src/llama.cpp/build/bin/llama-server \
  -m <LLAMA_MODEL> \
  --alias qwen2.5-3b-instruct-gguf \
  --host 127.0.0.1 \
  --port 8080 \
  -c 4096 \
  -np 1 \
  -ctk q8_0 \
  -ctv q8_0
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

3)OpenClaw Gateway:系统级服务

OpenClaw 官方 Linux 文档给的是 user service 路线,但 setup 文档也明确说:always-on / multi-user servers 可以改用 system service。openclaw gateway 支持 --bind、--port,gateway status --require-rpc 可用于检查 RPC 是否真的健康。(OpenClaw3)

我这里把它写成:

  • 跑在你的登录用户下
  • HOME 指到你的家目录
  • 只监听 loopback
  • 默认依赖 Ollama 和 llama-server 启动后再起
ini 复制代码
# /etc/systemd/system/openclaw-gateway.service
[Unit]
Description=OpenClaw Gateway
After=network-online.target ollama.service llama-server.service
Wants=network-online.target ollama.service llama-server.service

[Service]
Type=simple
User=<JETSON_USER>
Group=<JETSON_USER>
WorkingDirectory=<JETSON_HOME>
Environment="HOME=<JETSON_HOME>"
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
# 可选:把 token 放到环境文件,而不是写死在 openclaw.json
EnvironmentFile=-/etc/default/openclaw-gateway
ExecStart=/usr/bin/env openclaw gateway --bind loopback --port 18789
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

如果你想把 token 放环境文件,建这个:

bash 复制代码
sudo tee /etc/default/openclaw-gateway >/dev/null <<'EOF'
OPENCLAW_GATEWAY_TOKEN=REPLACE_WITH_A_LONG_RANDOM_TOKEN
EOF
sudo chmod 600 /etc/default/openclaw-gateway

openclaw gateway CLI 文档确认 --token 会设置 OPENCLAW_GATEWAY_TOKEN,而 gateway status 在 Linux systemd 安装下也会读取 unit 里的 Environment= 和 EnvironmentFile= 来检查认证漂移。(OpenClaw4)


4)可选:把三者绑成一个 target

这样你只需要启一个目标:

ini 复制代码
# /etc/systemd/system/jetson-ai-stack.target
[Unit]
Description=Jetson Local AI Stack
Wants=ollama.service llama-server.service openclaw-gateway.service
After=ollama.service llama-server.service openclaw-gateway.service

[Install]
WantedBy=multi-user.target

5)一次性落盘命令

把 <JETSON_USER>、<JETSON_HOME>、<LLAMA_MODEL> 换掉后执行:

bash 复制代码
sudo mkdir -p /etc/systemd/system/ollama.service.d

sudo tee /etc/systemd/system/ollama.service.d/override.conf >/dev/null <<'EOF'
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_CONTEXT_LENGTH=4096"
Environment="OLLAMA_KEEP_ALIVE=10m"
Environment="OLLAMA_MODELS=/srv/ollama/models"
EOF

sudo mkdir -p /srv/ollama/models
sudo chown -R ollama:ollama /srv/ollama/models

sudo tee /etc/systemd/system/llama-server.service >/dev/null <<'EOF'
[Unit]
Description=llama.cpp server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=<JETSON_USER>
Group=<JETSON_USER>
WorkingDirectory=<JETSON_HOME>
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
Environment="GGML_CUDA_ENABLE_UNIFIED_MEMORY=1"
ExecStart=<JETSON_HOME>/src/llama.cpp/build/bin/llama-server \
  -m <LLAMA_MODEL> \
  --alias qwen2.5-3b-instruct-gguf \
  --host 127.0.0.1 \
  --port 8080 \
  -c 4096 \
  -np 1 \
  -ctk q8_0 \
  -ctv q8_0
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

sudo tee /etc/systemd/system/openclaw-gateway.service >/dev/null <<'EOF'
[Unit]
Description=OpenClaw Gateway
After=network-online.target ollama.service llama-server.service
Wants=network-online.target ollama.service llama-server.service

[Service]
Type=simple
User=<JETSON_USER>
Group=<JETSON_USER>
WorkingDirectory=<JETSON_HOME>
Environment="HOME=<JETSON_HOME>"
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
EnvironmentFile=-/etc/default/openclaw-gateway
ExecStart=/usr/bin/env openclaw gateway --bind loopback --port 18789
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

sudo tee /etc/systemd/system/jetson-ai-stack.target >/dev/null <<'EOF'
[Unit]
Description=Jetson Local AI Stack
Wants=ollama.service llama-server.service openclaw-gateway.service
After=ollama.service llama-server.service openclaw-gateway.service

[Install]
WantedBy=multi-user.target
EOF

6)重载并启用

bash 复制代码
sudo systemctl daemon-reload

sudo systemctl enable --now ollama
sudo systemctl enable --now llama-server
sudo systemctl enable --now openclaw-gateway

# 可选:以后用这个 target 一起管
sudo systemctl enable jetson-ai-stack.target

7)健康检查

Ollama 官方文档说明它跑起来后 API 默认在 localhost:11434/api/...;OpenClaw 官方推荐先看 openclaw status、openclaw gateway status、openclaw doctor、openclaw channels status --probe;gateway status --require-rpc 会要求 RPC 真正可用。llama.cpp 官方提供 /v1/models。(Ollama Docs5)

bash 复制代码
# systemd 状态
sudo systemctl status ollama --no-pager
sudo systemctl status llama-server --no-pager
sudo systemctl status openclaw-gateway --no-pager

# Ollama
curl http://127.0.0.1:11434/api/tags

# llama.cpp
curl http://127.0.0.1:8080/v1/models

# OpenClaw
openclaw status
openclaw gateway status --require-rpc
openclaw doctor
openclaw channels status --probe

看日志:

bash 复制代码
journalctl -u ollama -e --no-pager
journalctl -u llama-server -e --no-pager
journalctl -u openclaw-gateway -e --no-pager

Ollama 官方 Linux 文档也明确给了 journalctl -e -u ollama 作为看日志的方法。(Ollama Docs1)


8)远程访问 Dashboard

OpenClaw 官方 Linux 路线和 Gateway CLI 都支持通过 SSH 隧道去连本地 loopback 绑定的 Gateway。(OpenClaw6)

在你的笔记本上:

bash 复制代码
ssh -N -L 18789:127.0.0.1:18789 <JETSON_USER>@<JETSON_IP>

然后打开:

text 复制代码
http://127.0.0.1:18789/

参考链接:

1: https://docs.ollama.com/linux "Linux - Ollama"

2: https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md "llama.cpp/tools/server/README.md at master · ggml-org/llama.cpp · GitHub"

3: https://docs.openclaw.ai/start/setup "Setup - OpenClaw"

4: https://docs.openclaw.ai/cli/gateway "gateway - OpenClaw"

5: https://docs.ollama.com/api/introduction?utm_source=chatgpt.com "Introduction - Ollama"

6: https://docs.openclaw.ai/platforms/linux "Linux App - OpenClaw"

相关推荐
sell-cloud15 分钟前
Prompt Engineering要凉了?Fable 5.5能“猜“意图,但银行正在封杀AI Agent——企业AI的真正护城河是什么
人工智能·prompt
Navicat中国2 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI2 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区2 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
XCDoris4 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy4 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V4 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI5 小时前
AI英语教培智能体的开发
人工智能
物联网软硬件开发-轨物科技5 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
海宇数据5 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化