是,大体仍按最先的流程安装,但把其中的 Python / uv / Node / Go / Rust 安装部分改成 mise 管理

也就是:

系统层照旧
开发工具层改用 mise
Python 项目依赖仍用 uv
长期 AI 服务仍用 Docker

你现在应该采用的最终流程

1. 重装 Ubuntu 26.04

照之前流程做:

制作启动盘
BIOS 设置
手动分区
安装 Ubuntu Desktop
首次启动更新系统

分区仍然建议:

挂载点大小文件系统
/boot/efi1GBFAT32
/150GBext4
swap64GBswap
/home120GBext4
/srv/ai剩余全部ext4

这个不用变。


2. 宿主机基础包仍然要装

安装完系统后:

sudo apt update
sudo apt full-upgrade -y
sudo reboot

然后装基础工具:

sudo apt install -y \
  build-essential git curl wget unzip jq \
  ca-certificates gnupg lsb-release \
  htop btop nvtop tmux tree ripgrep fd-find \
  python3 python3-venv python3-pip pipx direnv \
  openssh-client rsync

这里的 python3python3-venvpython3-pip 可以保留。

原因:

系统工具可能需要 Python
pipx / direnv / 一些脚本可能需要 Python
mise 自己不等于系统 Python

但注意:不要用宿主机 Python 全局装项目依赖


3. NVIDIA 驱动照旧

ubuntu-drivers devices
sudo ubuntu-drivers install
sudo reboot

检查:

nvidia-smi

看到 RTX 5060 就继续。


4. 创建 ai 用户照旧

sudo adduser ai
sudo usermod -aG video,render ai
sudo chown -R ai:ai /srv/ai

创建目录:

sudo -u ai mkdir -p /srv/ai/{projects,models,datasets,compose,secrets}
sudo -u ai mkdir -p /srv/ai/cache/{huggingface,torch,uv,pip,npm,ollama}

5. Docker + NVIDIA Container Toolkit 照旧

Docker 仍然按之前流程安装。

重点仍然是:

sudo mkdir -p /srv/docker

配置:

sudo tee /etc/docker/daemon.json > /dev/null <<'JSON'
{
  "data-root": "/srv/docker",
  "log-driver": "local",
  "log-opts": {
    "max-size": "20m",
    "max-file": "5"
  },
  "features": {
    "buildkit": true
  }
}
JSON

然后:

sudo systemctl restart docker
sudo usermod -aG docker ai

再装 NVIDIA Container Toolkit:

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

测试:

docker run --rm --gpus all ubuntu nvidia-smi

6. 这里开始改:用 mise 管开发工具

切换到 ai 用户:

su - ai

安装 mise:

curl https://mise.run | sh

启用:

echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
source ~/.bashrc

检查:

mise doctor

7. 用 mise 安装开发工具

ai 用户下:

mise use --global python@3.12
mise use --global node@22
mise use --global uv@latest
mise use --global go@latest
mise use --global rust@latest

检查:

python --version
node --version
uv --version
go version
rustc --version

这里的区别是:

以前:pipx install uv
现在:mise use --global uv@latest

也就是说,uv 交给 mise 管


8. 配置 ai 用户环境变量

ai 用户下:

cat >> ~/.bashrc <<'EOF'
 
# AI workstation paths
export HF_HOME=/srv/ai/cache/huggingface
export TRANSFORMERS_CACHE=/srv/ai/cache/huggingface
export TORCH_HOME=/srv/ai/cache/torch
export UV_CACHE_DIR=/srv/ai/cache/uv
export PIP_CACHE_DIR=/srv/ai/cache/pip
export NPM_CONFIG_CACHE=/srv/ai/cache/npm
 
# Ollama
export OLLAMA_HOST=127.0.0.1:11434
EOF
 
source ~/.bashrc

9. Python 项目仍然用 uv

创建项目:

cd /srv/ai/projects
mkdir torch-test
cd torch-test

初始化:

uv init .
uv venv --python 3.12

安装 PyTorch:

uv add torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

测试:

uv run python - <<'PY'
import torch
print(torch.__version__)
print(torch.cuda.is_available())
if torch.cuda.is_available():
    print(torch.cuda.get_device_name(0))
PY

10. 每个项目加一个 mise.toml

例如:

cd /srv/ai/projects/torch-test
nano mise.toml

内容:

[tools]
python = "3.12"
uv = "latest"
node = "22"
 
[env]
HF_HOME = "/srv/ai/cache/huggingface"
TRANSFORMERS_CACHE = "/srv/ai/cache/huggingface"
TORCH_HOME = "/srv/ai/cache/torch"
UV_CACHE_DIR = "/srv/ai/cache/uv"
PIP_CACHE_DIR = "/srv/ai/cache/pip"
 
[tasks.install]
run = "uv sync"
 
[tasks.test]
run = "uv run pytest"
 
[tasks.run]
run = "uv run python main.py"

进入项目后:

mise trust
mise install
mise run install

11. Ollama / Qdrant / Postgres 仍然用 Docker

这部分不变。

cd /srv/ai/compose
nano compose.yml
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    gpus: all
    ports:
      - "11434:11434"
    volumes:
      - /srv/ai/models/ollama:/root/.ollama
 
  qdrant:
    image: qdrant/qdrant:latest
    container_name: qdrant
    restart: unless-stopped
    ports:
      - "6333:6333"
    volumes:
      - /srv/ai/datasets/qdrant:/qdrant/storage
 
  postgres:
    image: pgvector/pgvector:pg17
    container_name: pgvector
    restart: unless-stopped
    environment:
      POSTGRES_USER: ai
      POSTGRES_PASSWORD: change_this_password
      POSTGRES_DB: ai
    ports:
      - "5432:5432"
    volumes:
      - /srv/ai/datasets/postgres:/var/lib/postgresql/data

启动:

docker compose up -d

最终修正版安装顺序

你现在按这个版本执行:

1. 重装 Ubuntu 26.04
2. 手动分区:
   /boot/efi 1GB
   / 150GB
   swap 64GB
   /home 120GB
   /srv/ai 剩余全部
3. 首次系统更新
4. 安装基础包,包括 python3、pipx、direnv
5. 安装 NVIDIA 驱动
6. 创建 ai 用户
7. 安装 Docker Engine
8. Docker data-root 指到 /srv/docker
9. 安装 NVIDIA Container Toolkit
10. 测试 docker --gpus all
11. 切到 ai 用户
12. 安装 mise
13. mise 安装 python/node/uv/go/rust
14. Python 项目用 uv
15. AI 服务用 Docker Compose
16. Agent 只挂载单项目目录

简单判断

之前流程:正确
现在调整:把开发语言和 uv 交给 mise 管
不变部分:分区、驱动、Docker、NVIDIA Container Toolkit、/srv/ai 结构

所以你可以继续按最先的流程走,只是在安装 uv、Python 项目环境、Node/Go/Rust 那一段改成 mise 方案