当前位置: 首页 > news >正文

Linux:Ubuntu server 24.02 上搭建 ollama + dify

一、安装Ubuntu

具体的安装过程可以参见此链接:链接:Ubuntu Server 20.04详细安装教程,这里主要记录一下过程中遇到的问题。

  1. 安装时subnet如何填写
    网络配置
    在Ubuntu中subnet填写255.255.255.0是错误的,其格式为 xx.xx.xx.xx/yy ,需要自己转化为 YAML格式。以下来自AI的换算

​理解子网掩码与CIDR的转换
子网掩码255.255.255.0对应的二进制形式为11111111.11111111.11111111.00000000,其中连续“1”的个数为24位,因此CIDR表示为/24。
​在YAML配置中,子网掩码需与IP地址结合使用,例如192.168.1.10/24,其中/24即为255.255.255.0的CIDR形式。

  1. 在安装系统后,查看到空间并没有使用完。
root@cikkodai:/# df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              3.2G  1.4M  3.2G   1% /run
efivarfs                           304K  235K   65K  79% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv   98G   11G   83G  12% /
tmpfs                               16G     0   16G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G   99M  1.7G   6% /boot
/dev/sda1                          1.1G  6.2M  1.1G   1% /boot/efi
tmpfs                              3.2G   12K  3.2G   1% /run/user/1000
root@cikkodai:/# fdisk -l
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: TOSHIBA DT01ACA1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: AFF48690-0B2E-4235-91E1-9FF035B5A186Device       Start        End    Sectors   Size Type
/dev/sda1     2048    2203647    2201600     1G EFI System
/dev/sda2  2203648    6397951    4194304     2G Linux filesystem
/dev/sda3  6397952 1953521663 1947123712 928.5G Linux filesystemDisk /dev/mapper/ubuntu--vg-ubuntu--lv: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
root@cikkodai:/# lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0 931.5G  0 disk
├─sda1                      8:1    0     1G  0 part /boot/efi
├─sda2                      8:2    0     2G  0 part /boot
└─sda3                      8:3    0 928.5G  0 part└─ubuntu--vg-ubuntu--lv 252:0    0   100G  0 lvm  /
sr0                        11:0    1  1024M  0 rom
root@cikkodai:/# df -lhT
Filesystem                        Type      Size  Used Avail Use% Mounted on
tmpfs                             tmpfs     3.2G  1.4M  3.2G   1% /run
efivarfs                          efivarfs  304K  235K   65K  79% /sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv ext4       98G   11G   83G  12% /
tmpfs                             tmpfs      16G     0   16G   0% /dev/shm
tmpfs                             tmpfs     5.0M     0  5.0M   0% /run/lock
/dev/sda2                         ext4      2.0G   99M  1.7G   6% /boot
/dev/sda1                         vfat      1.1G  6.2M  1.1G   1% /boot/efi
tmpfs                             tmpfs     3.2G   12K  3.2G   1% /run/user/1000
root@cikkodai:/# lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0 931.5G  0 disk
├─sda1                      8:1    0     1G  0 part /boot/efi
├─sda2                      8:2    0     2G  0 part /boot
└─sda3                      8:3    0 928.5G  0 part└─ubuntu--vg-ubuntu--lv 252:0    0   100G  0 lvm  /
sr0                        11:0    1  1024M  0 rom
root@cikkodai:/# vgdisplay--- Volume group ---VG Name               ubuntu-vgSystem IDFormat                lvm2Metadata Areas        1Metadata Sequence No  2VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                1Open LV               1Max PV                0Cur PV                1Act PV                1VG Size               <928.46 GiBPE Size               4.00 MiBTotal PE              237685Alloc PE / Size       25600 / 100.00 GiBFree  PE / Size       212085 / <828.46 GiBVG UUID               rJHPa1-vjcK-2hm4-O2DV-0VtA-gVtS-6bXJSDroot@cikkodai:/# vgdisplay -v--- Volume group ---VG Name               ubuntu-vgSystem IDFormat                lvm2Metadata Areas        1Metadata Sequence No  2VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                1Open LV               1Max PV                0Cur PV                1Act PV                1VG Size               <928.46 GiBPE Size               4.00 MiBTotal PE              237685Alloc PE / Size       25600 / 100.00 GiBFree  PE / Size       212085 / <828.46 GiBVG UUID               rJHPa1-vjcK-2hm4-O2DV-0VtA-gVtS-6bXJSD--- Logical volume ---LV Path                /dev/ubuntu-vg/ubuntu-lvLV Name                ubuntu-lvVG Name                ubuntu-vgLV UUID                CSRJ1I-rwE0-sIHl-p4HH-yzxL-GqLX-qukS9tLV Write Access        read/writeLV Creation host, time ubuntu-server, 2025-03-06 10:31:39 +0000LV Status              available# open                 1LV Size                100.00 GiBCurrent LE             25600Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     256Block device           252:0--- Physical volumes ---PV Name               /dev/sda3PV UUID               QtprZ3-uT6s-7Pkg-Sl5g-TfNL-FoLK-fvbdBgPV Status             allocatableTotal PE / Free PE    237685 / 212085root@cikkodai:/# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.2 LTS
Release:        24.04
Codename:       noble
root@cikkodai:/#

以下磁盘的分配来至AI(链接:Ubuntu 24.04.2 服务器存储分配方案(针对 Ollama 和 AnythingLLM)),其问法为:“以下服务器,如果分配存储,能合理 Ollama , AnythingLLM:”

Ubuntu 24.04.2 服务器存储分配方案(针对 Ollama 和 AnythingLLM)​
根据你的磁盘信息(sda 总容量 931.5GB,当前仅分配 100GB 给根目录),建议按以下方案分配存储:

1、存储现状分析

  1. ​可用空间分布
    • ​LVM 剩余空间:卷组 ubuntu-vg 中未分配的物理扩展区(PE)约 ​828.46GB,可通过 LVM 扩展逻辑卷。
    • ​根目录占用:当前根目录 / 使用 12%(11GB),剩余 83GB,适合部署核心系统组件。
    • ​磁盘分区:sda3 已全部加入 LVM,无需额外格式化。
  2. 关键限制
    • ​Ollama 需求:模型文件通常较大(7B 模型约 4GB,70B 模型可达 100GB+),需预留充足空间 。
    • ​AnythingLLM 需求:工作区数据、文档索引和本地模型存储需独立分区 。

2、存储分配建议 ​

  1. 扩展 LVM 逻辑卷
    利用 ubuntu-vg 的剩余空间创建两个专用逻辑卷:
# 创建 Ollama 模型存储卷(500GB)
sudo lvcreate -L 500G -n ollama-data ubuntu-vg# 创建 AnythingLLM 数据存储卷(300GB)
sudo lvcreate -L 300G -n anythingllm-data ubuntu-vg
  1. 格式化并挂载
# 格式化逻辑卷为 ext4(推荐兼容性)
sudo mkfs.ext4 /dev/ubuntu-vg/ollama-data
sudo mkfs.ext4 /dev/ubuntu-vg/anythingllm-data# 创建挂载点
sudo mkdir /mnt/ollama_models /mnt/anythingllm_storage# 写入 /etc/fstab 实现持久化
echo "/dev/ubuntu-vg/ollama-data /mnt/ollama_models ext4 defaults 0 2" | sudo tee -a /etc/fstab
echo "/dev/ubuntu-vg/anythingllm-data /mnt/anythingllm_storage ext4 defaults 0 2" | sudo tee -a /etc/fstab# 立即挂载
sudo mount -a

3、验证与维护

  1. 验证挂载
df -hT | grep -E 'ollama|anythingllm'
# 应显示 /mnt/ollama_models 和 /mnt/anythingllm_storage 的容量

二、 安装 ollama

检查系统版本,下载对应ollama压缩包,输出为 “amd64”,当下载 链接:ollama-linux-amd64.tgz 版本。

dpkg --print-architecture

输出:


root@cikkodai:/mnt/ollama_models# dpkg --print-architecture
amd64
  1. 将压缩包拷贝至服务器端并解压,解压至 /usr目录。拷贝可以通过搭建局域网服务器,远程工具,命令等。
sudo tar -C /usr -xzf ollama-linux-amd64.tgz

3.快速定位 ollama 可执行文件及其相关文件的存储路径

whereis ollama

输出:

root@cikkodai:/mnt# whereis ollama
ollama: /usr/bin/ollama /usr/lib/ollama

需要记住 /usr/lib/ollama 路径,此路径在配置文件中会使用。

  1. 修改ollama配置文件,如果没有可以自行新建。
vim /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target[Service]
ExecStart=/usr/bin/ollama serve
User=root
Group=root
Restart=always
RestartSec=3
Environment="OLLAMA_MODELS=/mnt/ollama_models"
Environment="OLLAMA_ORIGINS=*"
Environment="OLLAMA_HOST=0.0.0.0"[Install]
WantedBy=default.target

5.重载配,启动ollama并设置自启和查看状态

sudo systemctl daemon-reload
sudo systemctl start ollama
sudo systemctl enable ollama
sudo systemctl status ollama

输出:

root@cikkodai:/etc/systemd/system# sudo systemctl status ollama
● ollama.service - Ollama ServiceLoaded: loaded (/etc/systemd/system/ollama.service; enabled; preset: enabled)Active: active (running) since Mon 2025-03-10 20:14:38 CST; 18s agoMain PID: 777696 (ollama)Tasks: 9 (limit: 38027)Memory: 9.6M (peak: 10.3M)CPU: 15msCGroup: /system.slice/ollama.service└─777696 /usr/bin/ollama serveMar 10 20:14:38 cikkodai ollama[777696]: Couldn't find '/root/.ollama/id_ed25519'. Generating new private key.
Mar 10 20:14:38 cikkodai ollama[777696]: Your new public key is:
Mar 10 20:14:38 cikkodai ollama[777696]: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTnlbSex1dGPSUm7nDxoyZAeGDFNLDgWM2AybCBN4e7
Mar 10 20:14:38 cikkodai ollama[777696]: 2025/03/10 20:14:38 routes.go:1215: INFO server config env="map[CUDA_VISIBLE_DEVICES: GPU_DEVICE_ORDINAL: HIP_VISIBLE>
Mar 10 20:14:38 cikkodai ollama[777696]: time=2025-03-10T20:14:38.679+08:00 level=INFO source=images.go:432 msg="total blobs: 0"`在这里插入代码片`
Mar 10 20:14:38 cikkodai ollama[777696]: time=2025-03-10T20:14:38.679+08:00 level=INFO source=images.go:439 msg="total unused blobs removed: 0"
Mar 10 20:14:38 cikkodai ollama[777696]: time=2025-03-10T20:14:38.679+08:00 level=INFO source=routes.go:1277 msg="Listening on 0.0.0.0:11434 (version 0.5.13)"
Mar 10 20:14:38 cikkodai ollama[777696]: time=2025-03-10T20:14:38.679+08:00 level=INFO source=gpu.go:217 msg="looking for compatible GPUs"
Mar 10 20:14:38 cikkodai ollama[777696]: time=2025-03-10T20:14:38.681+08:00 level=INFO source=gpu.go:377 msg="no compatible GPUs were discovered"
Mar 10 20:14:38 cikkodai ollama[777696]: time=2025-03-10T20:14:38.681+08:00 level=INFO source=types.go:130 msg="inference compute" id=0 library=cpu variant="">

6.启用大模型,主要就是查看浏览器地址

ollama serve

输出:

root@cikkodai:/etc/systemd/system# ollama serve
Error: listen tcp 127.0.0.1:11434: bind: address already in use

在浏览器输入 IP:11434,如显示 ‘‘Ollama is running’’ 表述部署成功。

三、DeepSeek模型安装

不用魔法上网,也能快速通过ollama下载模型(链接:deepseek-r1:7b)。在末尾 出现Send 部分就可以开始输入信息,使用对话功能。

root@cikkodai:/etc/systemd/system# ollama run deepseek-r1:7b
pulling manifest
pulling 96c415656d37... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏ 4.7 GB
pulling 369ca498f347... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏  387 B
pulling 6e4c38e1172f... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏  148 B
pulling 40fb844194b2... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏  487 B
verifying sha256 digest
writing manifest
success
>>> Send a message (/? for help)

通过在对话框输入 /bye 或则 采用快捷键 ctrl +D 退出对话框

>>> /bye
root@cikkodai:/etc/systemd/system#

想要进入模型,先查看有哪些模型,然后运行对应模型即可

root@cikkodai:/etc/systemd/system# ollama list
NAME              ID              SIZE      MODIFIED
deepseek-r1:7b    0a8c26691023    4.7 GB    16 minutes ago
root@cikkodai:/etc/systemd/system# ollama run deepseek-r1:7b
>>> Send a message (/? for help)

这里推荐将 nomic-embed-text 向量模型(链接:nomic-embed-text)一起部署一下,理论值可以提供更好的知识库管理。

ollama pull nomic-embed-text:latest

输出:

root@cikkodai:/opt/frp# ollama pull nomic-embed-text:latest
pulling manifest
pulling 970aa74c0a90... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏ 274 MB
pulling c71d239df917... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏  11 KB
pulling ce4a164fc046... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏   17 B
pulling 31df23ea7daa... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████▏  420 B
verifying sha256 digest
writing manifest
success
root@cikkodai:/opt/frp#

查看安装了那些模型

root@cikkodai:/opt/frp# ollama ls
NAME                       ID              SIZE      MODIFIED
nomic-embed-text:latest    0a109f422b47    274 MB    15 seconds ago
deepseek-r1:7b             0a8c26691023    4.7 GB    8 hours ago
root@cikkodai:/opt/frp#

四、安装docker

安装此主要用于跑 dify,安装操作可查看此 链接 :Ollama + DeepSeek + Dify 打造企业级知识库的“超级大脑”。注意:1.Ubuntu在安装系统时本身提供勾选页面,是否安装docker等工具,如果之前安装了需要先卸载干净,2. docker部分下载需要魔法上网,可以用 链接:毫秒镜像 作为镜像。

检查Docker服务状态

sudo systemctl status docker  # 显示服务状态,包括是否激活、运行日志等

查看Docker版本信息

docker --version    # 显示客户端版本
docker info         # 显示详细运行时信息(包括镜像数、容器数、存储驱动等)

​查看运行中的容器

docker ps        # 仅显示活动容器

查看所有容器(包括已停止的)​

docker ps -a     # 显示完整容器列表及状态(如Exited状态)

查看镜像列表

docker images    # 显示本地已下载的镜像

Docker 下载文件的默认存储位置及空间使用查看

Linux 系统

  • 核心数据目录:/var/lib/docker,包含镜像(images)、容器(containers)、卷(volumes)、日志(logs)等数据 。
  • 日志文件路径:/var/lib/docker/containers/<容器ID>/<容器ID>-json.log

已用空间 → sudo du -sh /var
​剩余空间 → df -h /var
子目录分析 → sudo du -h /var --max-depth=1 | sort -h

root@cikkodai:/etc/systemd/system# sudo du -sh /var
1.1G    /var
root@cikkodai:/etc/systemd/system# df -h /var
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv   98G   15G   79G  16% /
root@cikkodai:/etc/systemd/system# sudo du -h /var --max-depth=1 | sort -h
4.0K    /var/crash
4.0K    /var/local
4.0K    /var/mail
4.0K    /var/opt
4.0K    /var/snap
16K     /var/spool
60K     /var/tmp
1.2M    /var/backups
67M     /var/log
253M    /var/cache
755M    /var/lib
1.1G    /var
root@cikkodai:/etc/systemd/system#

以下为安装 Portainer 图像化面板工具

  1. 修改Docker镜像源
sudo tee /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://docker.1ms.run"]
}
EOF
systemctl daemon-reload
systemctl restart docker
  1. 手动拉取镜像
docker pull portainer/portainer:latest
  1. 重新运行Portainer容器
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
  1. 浏览器输入 IP:9000 即可进入Portainer管理界面。注意防火墙是否打开。

五、安装dify

具体的安装步骤可以参考官方文档

  1. 链接:Docker Compose 部署
  2. 链接:接入 Ollama 部署的本地模型

可能比较关心dify相关文件保存在什么位置,会不会把磁盘撑爆,例如:此处单独创建一个 anythingllm_storage 文件夹。不用担心,这些默认存在在dify的相对路径目录中,也可以自己重新配置,以下是配置文件中的关键存储路径。来自于AI 链接:dify的知识默认存放在什么位置。

volumes:- ./volumes/app/storage:/app/api/storage  # 宿主机路径:容器内路径- 
# Weaviate 示例
volumes:- ./volumes/weaviate:/var/lib/weaviate  # 向量数据存储路径volumes:- ./volumes/db/data:/var/lib/postgresql/data  # 数据库文件volumes:- ./volumes/redis/data:/data  # 缓存数据

注意:dify添加ollama模型完成后,刷新页面才会显示。 进一步配置模型时,deepseek模型添加时选择LLM,nomic-embed-text模型添加时选择TxT embedding。

在模型设置完成后,就可以创建知识,创建机器人了,具体操作可见此(链接:最新AI落地指南,Dify+DeepSeek搭建本地知识库实现智能客服,直接嵌入官网太香了,降本利器,老板狂赞)

本次遇到一个问题,在创建LLM大模型时,一直不能保存成功,虽然最后莫名其妙就又能保存了。但记录一下了解到的新知识,在docker容器中存在不能直接访问到宿主机网络,特别是宿主机为裸金属,可验证可达性。来至AI(链接:dify创建ollama 模型时,保存不生效。其模型明确为正确名称,ollama地址可通过其他设备浏览器访问)。

  1. 验证 Ollama 服务可达性,若输出包含 0.0.0.0:11434 则正常;若为 127.0.0.1:11434,需设置环境变量:
root@cikkodai:/mnt/anythingllm_storage/dify/docker# netstat -tuln | grep :11434
tcp        0      0 0.0.0.0:11434           0.0.0.0:*               LISTEN
  1. 进入目标容器
docker exec -it docker-api-1 /bin/bash
  1. 在 Dify 容器内执行连通性检查:
ping -c 4 host.docker.internal
  1. 正常退出(容器停止)​输入exit 或者 ctrl+D,更多参见AI(链接:Ubuntu 退出 Docker 容器的具体方法)
exit

六、frp网络穿透Linux客户端安装

具体安装查看此(链接:内网穿透工具frp安装使用),这里记录以下Linux系统上部署frpc客户端。

  1. 下载相应版本 frpc文件包,并解压。
  2. 修改frpc.toml,注意修改为自己frps服务端相应数据
root@cikkodai:/opt/frp# cat frpc.toml
#token需要与服务端的token一致---无需改动
auth.method = "xxx"
auth.token = "xxx"
#服务端的公网ip---不用改动
serverAddr = "xx.xx.xx.xx"
serverPort = 8001#http端口配置
[[proxies]]
#名称 需要唯一
name = "ai-xx-tcp"
#类型tcp
type = "tcp"
#本地服务http:ip和端口。此处修改为本地对应的ip和端口
localIP = "127.0.0.1"
localPort = 80
#比如此处是8100,那外网访问服务端公网ip:8003则会被转发访问本配置10.131.19.2:8080端口
remotePort = 8412
root@cikkodai:/opt/frp#

修改后验证配置是否正确

root@cikkodai:/opt/frp# ./frpc verify -c  ./frpc.toml
frpc: the configuration file ./frpc.toml syntax is ok
root@cikkodai:/opt/frp# 

如果未能执行成功,提示权限不足,则先修改权限

root@cikkodai:/opt/frp# ./frpc verify -c  ./frpc.toml
-bash: ./frpc: Permission denied
root@cikkodai:/opt/frp# chmod +x frpc
root@cikkodai:/opt/frp# 
  1. 在/etc/systemd/system/创建配置frpc.service配置文件
sudo nano /etc/systemd/system/frpc.service

创建成功后,写入以下内容,注意修改为自己的路径

[Unit]
Description=Frp Server Service
After=network.target[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.toml
User=root
WorkingDirectory=/opt/frp[Install]
WantedBy=multi-user.target
  1. 设置权限并启用服务
sudo chmod 644 /etc/systemd/system/frpc.service
sudo systemctl daemon-reload        # 重载服务配置
sudo systemctl enable frpc          # 开机自启
sudo systemctl start frpc           # 立即启动
root@cikkodai:/opt/frp# sudo systemctl daemon-reload
root@cikkodai:/opt/frp# sudo systemctl enable frpc
Created symlink /etc/systemd/system/multi-user.target.wants/frpc.service → /etc/systemd/system/frpc.service.
root@cikkodai:/opt/frp# sudo systemctl start frpc
root@cikkodai:/opt/frp# sudo systemctl status frpc
● frpc.service - Frp Server ServiceLoaded: loaded (/etc/systemd/system/frpc.service; enabled; preset: enabled)Active: active (running) since Tue 2025-03-11 17:35:35 CST; 9s agoMain PID: 1573710 (frpc)Tasks: 6 (limit: 38027)Memory: 2.2M (peak: 2.6M)CPU: 4msCGroup: /system.slice/frpc.service└─1573710 /opt/frp/frpc -c /opt/frp/frpc.tomlMar 11 17:35:35 cikkodai systemd[1]: Started frpc.service - Frp Server Service.
Mar 11 17:35:35 cikkodai frpc[1573710]: 2025-03-11 17:35:35.099 [I] [sub/root.go:142] start frpc service for config file [/opt/frp/frpc.toml]
Mar 11 17:35:35 cikkodai frpc[1573710]: 2025-03-11 17:35:35.099 [I] [client/service.go:294] try to connect to server...
Mar 11 17:35:35 cikkodai frpc[1573710]: 2025-03-11 17:35:35.145 [I] [client/service.go:286] [31bb2ffcbaac1489] login to server success, get run id [31bb2ffcba>
Mar 11 17:35:35 cikkodai frpc[1573710]: 2025-03-11 17:35:35.145 [I] [proxy/proxy_manager.go:173] [31bb2ffcbaac1489] proxy added: [ai-cikkod-tcp]
Mar 11 17:35:35 cikkodai frpc[1573710]: 2025-03-11 17:35:35.160 [I] [client/control.go:168] [31bb2ffcbaac1489] [ai-cikkod-tcp] start proxy successroot@cikkodai:/opt/frp# 

相关文章:

Linux:Ubuntu server 24.02 上搭建 ollama + dify

一、安装Ubuntu 具体的安装过程可以参见此链接&#xff1a;链接&#xff1a;Ubuntu Server 20.04详细安装教程&#xff0c;这里主要记录一下过程中遇到的问题。 安装时subnet如何填写 在Ubuntu中subnet填写255.255.255.0是错误的&#xff0c;其格式为 xx.xx.xx.xx/yy &#…...

【生日蛋糕——DFS剪枝优化】

题目 分析 代码 #include <bits/stdc.h> using namespace std;const int N 24; const int inf 0x3f3f3f3f;int mins[N], minv[N]; int R[N], H[N]; int n, m, ans inf;void dfs(int u, int v, int s) {if(v minv[u] > n) return;if(s mins[u] > ans) return;…...

RabbitMq C++客户端的使用

1.RabbitMq介绍 RabbitMQ 是一款开源的消息队列中间件&#xff0c;基于 AMQP&#xff08;高级消息队列协议&#xff09;实现&#xff0c;支持多种编程语言和平台。以下是其核心特点和介绍&#xff1a; 核心特点 多语言支持 提供 Java、Python、C#、Go、JavaScript 等语言的客…...

入门基础项目-前端Vue_02

文章目录 1. 用户信息1.1 整体设计1.2 完整代码 User.vue1.2.1 数据加载1.2.2 表格 el-table1.2.2.1 多选1.2.2.2 自定义列的内容 Slot1.2.2.3 图片 el-image1.2.2.4 分页 el-pagination 1.2.3 编辑1.2.3.1 弹出框 el-dialog1.2.3.2 上传 el-upload 1.2.4 新增1.2.5 删除1.2.6 …...

C#中SerialPort 的使用

最近在学习C#的SerialPort &#xff0c;关于SerialPort 的使用&#xff0c;做如下总结&#xff1a; 1.可以通过函数System.IO.Ports.SerialPort.GetPortNames() 将获得系统所有的串口名称。C#代码如下&#xff1a; string[] sPorts SerialPort.GetPortNames(); foreach(stri…...

使用py-ffmpeg批量合成视频的脚本

我有一个小米摄像头&#xff0c;用它录出来的视频全部都是3s一段3s一段的。其中有几个小时的视频我需要保存&#xff0c;当初直接把摄像头的卡文件导出来重命名掉了&#xff0c;那时候没有注意&#xff0c;之后想剪辑/发送给别人的时候发现疯了&#xff1a; 1.剪辑的话&#x…...

mac安装navicat及使用

0.删除旧的 sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.NavicatPremium.playlist sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexF…...

织梦dedecmsV5.7提示信息提示框美化(带安装教程和效果展示)

一、效果展示 1、安装前效果 2、安装后效果 二、安装说明 1、安装测试版本&#xff1a;DedeCMS-V5.7.117-UTF8&#xff1b; 2、必须在修改代码之前请做好文件备份&#xff0c;以免误操无法恢复&#xff1b; 3、为了兼容其他版本&#xff0c;请在安装时&#xff0c;最好将替…...

【知识迁移的底层逻辑:从符号到语义的升维】

大语言模型&#xff08;LLMs&#xff09;能够通过有限语料库实现广泛知识迁移并回答多样化问题&#xff0c;其核心机制在于抽象模式学习、上下文推理能力及知识组合泛化&#xff0c;而非简单的数据记忆。以下是具体实现路径与技术原理&#xff1a; 一、知识迁移的底层逻辑&…...

Windows根据文件名批量在文件夹里查找文件并复制出来,用WPF实现的详细步骤

项目前言 在日常工作和生活中&#xff0c;我们常常会遇到需要从大量文件中根据文件名批量查找特定文件并复制到指定位置的情况。手动一个个查找和复制文件不仅效率低下&#xff0c;还容易出错。使用 Windows Presentation Foundation (WPF) 可以创建一个用户友好的图形界面应用…...

Certbot实现SSL免费证书自动续签(CentOS 7版 + Docker部署的nginx)

前置安装&#xff0c;可参考Certbot实现SSL免费证书自动续签&#xff08;CentOS 7 nginx/apache&#xff09; 如果是通过 Docker 运行 Nginx&#xff0c; certbot 无法直接检测到本地的 Nginx 配置。解决方案是 使用 standalone 模式 或 挂载 Webroot 方式获取 SSL 证书&…...

一周学会Flask3 Python Web开发-SQLAlchemy查询所有数据操作-班级模块

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们来新建一个的蓝图模块-班级模块&#xff0c;后面可以和学生模块&#xff0c;实现一对多的数据库操作。 blueprint下新建g…...

工程实践:如何使用SU17无人机来实现室内巡检任务

阿木实验室最近发布了科研开发者版本的无人机SU17&#xff0c;该无人机上集成了四目视觉&#xff0c;三维激光雷达&#xff0c;云台吊舱&#xff0c;高算力的机载计算机&#xff0c;是一个非常合适的平台用于室内外巡检场景。同时阿木实验室维护了多个和无人机相关的开源项目。…...

14.使用各种读写包操作 Excel 文件:辅助模块

一 各种读写包 这些是 pandas 在底层使用的各种读写包。无须安装 pandas&#xff0c;直接使用这些读写包就能够读写 Excel 工作簿。可以尽可能地使用 pandas 来解决这类问题&#xff0c;只在 pandas 没有提供你所需要的功能时才用到读写包。 表中没有 xlwings &#xff0c;因为…...

深入理解 Maven BOM 及其继承特性

深入理解 Maven BOM 及其继承特性 一、什么是 Maven BOM&#xff1f; Maven BOM&#xff08;Bill Of Materials&#xff0c;物料清单&#xff09;是一种特殊的 Maven 项目&#xff0c;用于集中管理依赖项的版本信息。BOM 项目本身并不包含实际的代码或资源&#xff0c;而仅仅…...

责任链模式如何减少模块之间的耦合

责任链模式如何减少模块之间的耦合 在复杂的软件系统中&#xff0c;模块之间的耦合是一个常见的问题。高耦合的代码不仅增加了维护成本&#xff0c;还会导致系统的扩展性和灵活性受限。当我们需要为不同的请求设计灵活的处理逻辑时&#xff0c;传统的硬编码方式会将请求的发送…...

Java面试:集合框架体系

一、ArrayList 1.数组&#xff08;Array&#xff09; 是一种用连续的内存空间存储相同数据类型数据的线性数据结构 数组如何获取其他元素的地址值&#xff1f; 寻址公式&#xff1a;a[i] baseAddress i * dataTypeSize baseAddress&#xff1a;数组的首地址dataTypeSize&am…...

【八股文】ArrayList和LinkedList的区别

先讲讲两者是如何实现的 ArrayList public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {transient Object[] elementData; private int size; } 通过源码可以看出&#xff0c;ArrayLis…...

sentinel限流算法

限流算法&#xff1a;固定窗口算法、滑动时间窗口、令牌桶和漏桶这四种常见限流算法的原理&#xff1a; 限流算法原理 固定窗口&#xff1a; 固定窗口算法将时间划分为固定大小的窗口&#xff0c;并在每个窗口内限制请求的数量。在每个窗口开始时&#xff0c;计数器重置&#…...

Spring生态下的中台架构设计:如何构建可扩展业务系统?

一、中台战略的架构觉醒 在数字化转型的浪潮中,企业面临的核心矛盾日益凸显:前端业务的快速迭代需求与后端系统刚性架构之间的矛盾。中台架构的提出,本质上是对传统单体架构和过度微服务化的辩证扬弃。Spring生态以其模块化设计理念,恰好为中台建设提供了绝佳的技术土壤。…...

Project回调函数qsort②进阶应用

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h>//库函数strcmp头文件 //使用qsort排序结构体 struct Stu { char name[20]; int age; }; //按照年龄排序 int cmp_stu_by_age(const void* e1,const void* e2) { return ((struc…...

【推荐项目】052-用水监控管理系统

052-用水监控管理系统 介绍 用水监控管理系统 springboot java vuejs jdk1.8 当然&#xff0c;以下是一个简洁的用水监控管理系统的功能模块划分&#xff0c;基于Spring Boot&#xff08;JDK 1.8&#xff09;后端和Vue.js前端&#xff1a; 用水监控管理系统功能模块 后端&…...

Hive SQL 精进系列:PERCENTILE_APPROX 搞定分位数

目录 一、引言二、percentile_approx 函数基础2.1 基本语法参数解释返回值简单示例 三、应用场景3.1 数据分析与报告3.2 数据清洗与异常值检测3.3 性能监控与优化 四、使用注意事项4.1 数据类型要求4.2 精度与性能平衡4.3 空值处理 五、总结 一、引言 百分位数作为一种常用的统…...

使用Hbuilder发布小程序显示发布失败?

接受了一个新uniapp项目 但是在Hbuilder中发行报错 小程序发行失败 试了几次还是不行 写代码的人也走了&#xff0c;头疼。 不用Hbuilder小程序的主包体积又太大哎 开发工具无法上传~ 后来想看一下 这个发布失败到底有没有生成打包好的文件 如果生成了可以试一下 直接导入到微信…...

甲骨文找回二次验证的方法(超简单)

因为更换手机丢失了二次验证。 然后给客服沟通&#xff0c;获得了找到二次验证的办法&#xff0c;希望对你有用。 1、登录到账号登陆界面&#xff0c;查看地址栏当中自己的IDCE地址&#xff08;yourIDCS_Stripe_here&#xff09;部分&#xff0c;并复制。 https://idcs-yourID…...

Tcp网络通信的基本流程梳理

先来一张经典的流程图 接下介绍一下大概流程&#xff0c;各个函数的参数大家自己去了解加深一下印象 服务端流程 1.创建套接字&#xff1a;使用 socket 函数创建一个套接字&#xff0c;这个套接字后续会被用于监听客户端的连接请求。 需要注意的是&#xff0c;服务端一般有俩…...

C++相关基础概念之入门讲解(上)

1. 命名空间 C中的命名空间&#xff08;namespace&#xff09;是用来避免命名冲突问题的一种机制。通过将类、函数、变量等封装在命名空间中&#xff0c;可以避免不同部分的代码中出现相同名称的冲突。在C中&#xff0c;可以使用namespace关键字来定义命名空间。 然后我们在调…...

Redis能否替代MySQL作为主数据库?深入解析两者的持久化差异与适用边界——基于AOF持久化与关系型数据库的对比

一、Redis的持久化机制与可靠性分析 ​AOF持久化原理与策略 Redis的AOF&#xff08;Append Only File&#xff09;通过记录所有写操作命令实现持久化&#xff0c;支持三种策略&#xff1a; ​**always模式**&#xff1a;每条命令执行后立即同步到磁盘&#xff0c;理论上数据丢失…...

Hive函数大全:从核心内置函数到自定义UDF实战指南(附详细案例与总结)

目录 背景‌一、Hive函数分类与核心函数表‌1. 内置函数分类‌2. 用户自定义函数(UDF)分类二、常用函数详解与实战案例‌1. 数学函数‌2. 字符串函数‌3. 窗口函数‌4. 自定义UDF实战‌三、总结与优化建议‌1. 核心总结2. 性能优化建议‌3. 常问问题背景‌ Hive作为Hadoop生…...

如何修改 Ubuntu 软件源(镜像源)

如何修改 Ubuntu 软件源&#xff08;镜像源&#xff09; 前言 在使用 Ubuntu 时&#xff0c;默认的软件源可能速度较慢&#xff0c;影响软件安装和系统更新的效率。我们可以通过修改 sources.list 文件或使用图形界面更换更快的镜像源&#xff0c;提升软件包管理的速度。 本…...

在Spring Boot项目中接入DeepSeek深度求索,感觉笨笨的呢

文章目录 引言1. 什么是DeepSeek&#xff1f;2. 准备工作2.1 注册DeepSeek账号 3.实战演示3.1 application增加DS配置3.2 编写service3.3 编写controller3.4 编写前端界面chat.html3.5 测试 总结 引言 在当今快速发展的数据驱动时代&#xff0c;企业越来越重视数据的价值。为了…...

AP AR

混淆矩阵 真实值正例真实值负例预测值正例TPFP预测值负例FNTN &#xff08;根据阈值预测&#xff09; P精确度计算&#xff1a;TP/(TPFP) R召回率计算&#xff1a;TP/(TPFN) AP 综合考虑P R 根据不同的阈值计算出不同的PR组合&#xff0c; 画出PR曲线&#xff0c;计算曲线…...

Vue 中的 MVVM、MVC 和 MVP 模式深度解析

文章目录 1. 模式概览与核心概念1.1 模式定义1.2 架构对比图 2. MVC 模式详解2.1 MVC 流程图2.2 Vue 中的 MVC 实现 3. MVP 模式详解3.1 MVP 流程图3.2 Vue 中的 MVP 实现 4. MVVM 模式详解4.1 MVVM 流程图4.2 Vue 中的 MVVM 实现 5. 模式对比分析5.1 职责对比5.2 通信方式对比…...

WVP前后端部署

使用默认的构建&#xff0c;能够直接访问18080&#xff0c;我以为二者是一起的。实际上这不影响前后端分离。 前端服务器 构建war之后&#xff0c;部署到另外一台机器上&#xff0c;比如使用apache2。 后端服务器 修改src/main/resources/static/static/js/config.js&#…...

VSTO(C#)Excel开发9:处理格式和字体

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

蓝耘MaaS平台:阿里QWQ应用拓展与调参实践

摘要&#xff1a;本文深入探讨了蓝耘MaaS平台与阿里QWQ模型的结合&#xff0c;从平台架构、模型特点到应用拓展和调参实践进行了全面分析。蓝耘平台凭借其强大的算力支持、弹性资源调度和全栈服务&#xff0c;为QWQ模型的高效部署提供了理想环境。通过细化语义描述、调整推理参…...

【统计学相关笔记】2. 多元正态的Cochran定理

fisher 引理 如何说明一个线性变换和二次型独立&#xff1a; 二次型矩阵和线性变换阵乘积0即可。...

Vuex 基础概念与环境搭建

Vuex 是实现数据集中式状态管理的插件。所有组件共享 Vuex 中的数据&#xff0c;当任意组件修改数据时&#xff0c;其他组件会同步更新。与全局事件总线的区别在于&#xff1a; 全局事件总线&#xff1a;数据传递但未真正共享Vuex&#xff1a;数据存储在中央仓库&#xff0c;实…...

使用 BookMarkHub 插件进行书签同步

前言: 通过 BookMarkHub 插件&#xff0c;你可以方便地将书签同步到 GitHub Gist&#xff0c;实现跨设备管理书签。以下是详细的步骤&#xff1a; 使用 BookMarkHub 插件进行书签同步 1. 安装 BookMarkHub 插件2. 获取 GitHub Token3. 获取 Gist ID4. 配置 BookMarkHub 插件5.完…...

用Lua脚本实现Redis原子操作

1. 环境准备 依赖&#xff1a;在pom.xml中添加Spring Data Redis&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>配置RedisTemplate&#…...

【算法】位运算

文章目录 1. 常见位运算总结&#xff08;图片包含五道算法题&#xff09;2. leetcode 面试题 01.01 判断字符是否唯一2.1 题目2.2 思路2.3 代码 3.leetcode 268. 丢失的数字3.1 题目3.2 思路3.3 代码 4. leetcode 371.两整数之和4.1 题目4.2 思路4.3 代码 5.leetcode 137.只出现…...

HTML块级元素和内联元素(简单易懂)

在HTML中&#xff0c;元素可以分为块级元素&#xff08;Block-level elements&#xff09;和内联元素&#xff08;Inline elements&#xff09;。这两类元素在页面布局和样式应用上有不同的特点和用途。 一、块级元素&#xff08;Block-level elements&#xff09; 1. 定义 …...

【论文精读】DifFace: Blind Face Restoration with Diffused Error Contraction

文章目录 0.前言1.当前问题2.怎么解决问题3.具体做法(Method)3.1 受什么的启发&#xff1f;(Motivation)3.2具体的模型设计(Design)3.3 整体算法 4.实验效果4.1 Synthetic(CelebA-Test)4.2 Real World &#xff08;LFW, WebPhoto, and WIDER&#xff09; 0.前言 这篇文章是被 …...

[新能源]新能源汽车快充与慢充说明

接口示意图 慢充接口为交流充电口&#xff08;七孔&#xff09;&#xff0c;快充接口为直流充电口&#xff08;九孔&#xff09;。 引脚说明 上图给的是充电口的引脚图&#xff0c;充电枪的为镜像的。 慢充接口引脚说明 快充接口引脚说明 充电流程 慢充示意图 慢充&…...

AI智能分析网关V4将HTTP消息推送至安防监控视频汇聚EasyCVR平台的操作步骤

TSINGSEE青犀视频智能分析网关V4内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。硬件管理平台支持RTSP、GB28181协议、以及厂家私有协议接入&#xff0c;可兼容市面上常…...

程序代码篇---STM32串口通信

文章目录 前言1. 头文件和全局变量2. 串口1初始化函数3. 串口1发送字节函数4. 串口1发送字符串函数5. 串口1发送数字函数6. 重定义fputc函数7. 串口数据解析函数8. 串口2中断服务程序总结 前言 本次将介绍一个基于STM32微控制器的串口通信实现&#xff0c;包含了串口的初始化、…...

PECL(Positive Emitter-Coupled Logic)电平详解

一、PECL电平的定义与核心特性 PECL&#xff08;正射极耦合逻辑&#xff09;是一种基于 射极耦合逻辑&#xff08;ECL&#xff09;技术 的高速差分信号标准&#xff0c;采用 正电源供电&#xff08;如5V或3.3V&#xff09;。其核心特性包括 高速传输、低噪声、强抗干扰能力&am…...

1、操作系统引论

一、操作系统 会使用linux系统 建议大家先学会linux的基础指令&#xff0c;可以看菜鸟教程网站进行学习。 1、各种定义 操作系统定义 管理计算机的 硬件 和软件资源&#xff0c; 能对各类作业进行调度&#xff0c;方便用户使用计算机的程序集合。操作系统运行在内核态&#xf…...

L1-7 统一命名规范(java)

你所在的公司刚刚招收了几位程序员&#xff0c;然而这些程序员之前在不同的公司工作&#xff0c;所以他们习惯的变量命名规范可能存在差异&#xff0c;需要让他们都习惯公司要求的命名规范&#xff0c;然而这样可能会降低他们的工作效率。 你的上司找到了你&#xff0c;希望你…...

LVS + Keepalived 高可用集群

一、LVSKeepalived 原理 1.1.LVS 负载均衡原理 LVS&#xff08;Linux Virtual Server&#xff09;是一种基于 Linux 内核的负载均衡技术&#xff0c;它通过 IPVS&#xff08;IP Virtual Server&#xff09;模块来实现。LVS 可以将客户端的请求分发到多个后端服务器上&#xf…...