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"

相关推荐
米小虾几秒前
告别盲目重复采样:PTTS 用「规划-执行分离」把测试时算力省下一半
人工智能
有毒的教程15 分钟前
AI文生视频转场提示词(直接复制,分类型|适配MiniMax H3 / 可灵 / Runway)
人工智能·音视频
泛联新安18 分钟前
软件定义汽车时代,如何让AI研发“可信”?——泛联新安构建汽车企业级可信AI体系的落地路径
大数据·人工智能·安全·网络安全·汽车·漏洞挖掘·代码安全
杨云龙UP23 分钟前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
吴建旭 智宅焕38 分钟前
AI搜索时代的智能家居交付知识架构:官网作为可信一手信息源与全国交付基础设施
人工智能·架构·智能家居
yuanxi20040 分钟前
001267拟扩产光模块:大客户销售如何用价值力读一条扩产公告
人工智能·职场和发展·创业创新·学习方法
域智盾软件分享1 小时前
电脑文件加密软件实战部署:从试点到全业务落地完整教程
其他·安全
梦帮科技1 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
Long long ago.1 小时前
vastbase数据库运行sql宕机重启解决
数据库·sql
浦信仿真大讲堂1 小时前
告别反复样机试制!重塑机械装备研发
人工智能·达索系统·力学仿真