继开 | 博客

热爱生活,努力学习,实现自己的价值


  • 短诗的序

  • 迷途自渡

  • 寒星三两

  • 林深见鹿

  • 记昨日书

  • 顾探往昔

Ubuntu安装docker并更换安装目录

发表于 2025-05-05
字数统计: 950 字 | 阅读时长 ≈ 4 min

ubuntu安装docker并更换安装目录

在 Ubuntu 上安装 docker 时,默认情况下,docker 会被安装在系统的默认路径下,通常是 /usr/bin/docker。
docker 的镜像缓存通常位于 /var/lib/docker。
若 根目录配置的空间不足,则很容易满盘

如果想要将 docker 安装到不同的路径,可以通过以下步骤来实现:

1. 下载 docker

需要用到离线包

很多镜像站都能获取到安装包,这里采用阿里云的

新建目录

1
2
mkdir -P /home/docker 
cd /home/docker

下载docker离线包

1
wget https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-24.0.0.tgz

解压

1
tar xzvf docker-24.0.0.tgz

2. docker启动与验证

进入解压目录

1
cd  ./docker

启动

1
nohup dockerd >/dev/null 2>&1 &

验证

1
2
3
docker info # 查看docker 安装信息
docker images # 查看docker 本地镜像
docker ps # 查看docker 已经启动的镜像

3. 安装docker-compose 工具

下载

1
wget  https://github.com/docker/compose/releases/download/v2.36.0/docker-compose-linux-x86_64

重命名

1
mv docker-compose-linux-x86_64 docker-compose

赋予执行权限

1
sudo chmod +x docker-compose

建立软连接到系统程序目录

1
sudo ln -s /home/docker/docker-compose /usr/local/bin/docker-compose

验证

1
docker-compose -v

4.更换docker 镜像数据缓存目录

新建docker的数据缓存目录

1
sudo mkdir - P /home/docker/docker-data

Docker 的配置信息存储在 JSON 格式的文件 /etc/docker/daemon.json 中。要修改镜像存储路径,需要编辑此文件。

如果文件不存在,可以使用以下命令创建:

1
sudo vim /etc/docker/daemon.json

设置 data-root
在 daemon.json 文件中添加或修改 data-root 字段,将其设置为新的镜像存储路径。例如,将镜像存储到 /mnt/docker-data 目录:

1
2
3
{
"data-root": "/home/docker/docker-data"
}

保存文件后,Docker 将会使用新的路径来存储镜像数据。

将旧数据迁移至新路径
如果你之前已经使用默认路径下载了一些 Docker 镜像或创建了容器,并且希望保留这些数据,可以在修改 data-root 配置项之前将它们移动到新的存储路径。

可以使用以下命令将 /var/lib/docker 目录下的所有内容移动到 /home/docker/docker-data:

1
sudo mv /var/lib/docker/* /home/docker/docker-data

查看到以下文件,则迁移过来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@jk-work:/home/docker/docker-data# ll
total 56
drwxr-xr-x 13 root root 4096 May 03 04:48 ./
drwxr-xr-x 4 root root 4096 May 03 04:40 ../
drwx--x--x 3 root root 4096 May 03 04:15 buildkit/
drwx--x--x 3 root root 4096 May 03 04:15 containerd/
drwx--x--- 2 root root 4096 May 03 04:15 containers/
-rw------- 1 root root 36 May 03 04:15 engine-id
drwx------ 3 root root 4096 May 03 04:15 image/
drwxr-x--- 3 root root 4096 May 03 04:15 network/
drwx--x--- 3 root root 4096 May 03 04:38 overlay2/
drwx------ 3 root root 4096 May 03 04:15 plugins/
drwx------ 2 root root 4096 May 03 04:38 runtimes/
drwx------ 2 root root 4096 May 03 04:15 swarm/
drwx------ 2 root root 4096 May 03 04:38 tmp/
drwx-----x 2 root root 4096 May 03 04:38 volumes/

启动docker ,查看信息

1
nohup /home/docker/docker/dockerd >/dev/null 2>&1 &
1
docker info

其他

启动脚本,自用,如有需要可跟进需要修改
start-docker.sh

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

cp /home/docker/daemon.json /etc/docker/daemon.json

nohup /home/docker/docker/dockerd >/dev/null 2>&1 &

# 建立软连接到启动目录
sudo ln -s /home/docker/docker-compose /usr/local/bin/docker-compose

# chmod +x start-docker.sh

# ./start-docker.sh

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Ubuntu安装nginx并更换安装目录

发表于 2025-05-04
字数统计: 1,742 字 | 阅读时长 ≈ 8 min

ubuntu安装nginx并更换安装目录

在 Ubuntu 上安装 nginx 时,默认情况下,nginx 会被安装在系统的默认路径下,通常是 /usr/sbin/nginx。
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf。

如果想要将 nginx 安装到不同的路径,可以通过以下步骤来实现:

1. 下载 nginx

Nginx 官方提供了源码包,可以从官网下载并自定义安装路径。

下载 Nginx 源码:
访问 Nginx 官网,找到最新的稳定版本(Stable version),复制下载链接。例如:

1
wget https://nginx.org/download/nginx-1.25.3.tar.gz

或者使用 curl

1
curl -L https://nginx.org/download/nginx-1.25.3.tar.gz

2. nginx启动

nginx启动需要一些基础环境,可以通过以下方式安装

1
2
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y

3. 解压并安装ngixn

解压下载的文件,并进入该目录下

1
2
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3

配置安装路径:
使用 –prefix 参数指定自定义安装路径。例如,将 Nginx 安装到 /home/nginx:

1
./configure --prefix=/home/nginx

编译并安装:

1
2
3
make

sudo make install

4.验证安装并启动

查看自定义安装路径下的文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  
ls /home/nginx
```
如果看到 sbin/nginx、conf/ 等目录,说明安装成功。

也可以通过nginx -v 查看版本信息
```
sudo /home/nginx/sbin/nginx -v
```


启动 Nginx:
```
sudo /home/nginx/sbin/nginx
```

在浏览器中输入 http://127.0.0.1:80 则可以看到nginx 的界面





## 报错问题解决

### 问题一
```
root@jk-work:/home/nginx/sbin$ sudo /home/nginx/sbin/nginx -v
/home/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.3: cannot open shared object file: No such file or directory
```
原因是缺少nginx 的依赖

解决办法
安装依赖工具:

sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
### 问题二

```
root@jk-work:/home/nginx# sudo /home/nginx/sbin/nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()

```

80端口被占用

建议更换nginx 启动端口
备份nginx.conf配置

cd /home/nginx/conf
cp nginx.conf nginx.conf.202505021246.bak

1
2
3
4
5
6
修改配置文件

```
vim nginx.conf
```
将 server 下的 listen 的监听端口80 修改为 10001。
server {
    listen       10001;
    server_name  localhost;
1
2
3
4
此处10001 可换为其他不敏感端口,建议避开,443,8080,1521,6379,等端口,
以及类似端口加1000,加10000的端口号,例如,1443,18080,10080,等端口,此类端口容易被屏蔽或者攻击

重新启动

sudo /home/nginx/sbin/nginx

1
或者查找端口占用程序,并强制杀进程

root@jk-work:/home/nginx/sbin# sudo lsof -i :10001
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 5691 root 6u IPv4 49172 0t0 TCP *:10001 (LISTEN)
nginx 5692 nobody 6u IPv4 49172 0t0 TCP *:10001 (LISTEN)
或
sudo netstat -tulnp | grep :80

1
杀死该进程

sudo kill -9
sudo kill -9 5691
sudo kill -9 5692

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

## 其他

启动脚本
start-nginx.sh
```
#!/bin/bash

echo "更新依赖"
sudo apt update
echo "下载nginx 启动依赖"
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y

# 启动 Nginx 服务
echo "启动 Nginx..."
sudo /home/nginx/sbin/nginx

# chmod +x start-nginx.sh
# ./start-nginx.sh

停止脚本
stop-nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/bash

#此处换成nginx 的启动端口
PORT=10001
MAX_RETRIES=3
RETRY_DELAY=1

# 端口清理函数
cleanup_port() {
for attempt in $(seq 1 $MAX_RETRIES); do
PID=$(lsof -t -i :$PORT 2>/dev/null)

if [ -z "$PID" ]; then
echo "[成功] 端口 $PORT 未被占用"
return 0
fi

echo "[尝试 $attempt/$MAX_RETRIES] 发现进程 $PID 占用端口 $PORT,正在终止..."

kill $PID
sleep $RETRY_DELAY

if ! lsof -t -i :$PORT &>/dev/null; then
echo "[成功] 进程 $PID 已终止,端口 $PORT 已释放"
return 0
fi

echo "[警告] 普通终止失败,尝试强制终止进程 $PID"
kill -9 $PID
sleep $RETRY_DELAY

if ! lsof -t -i :$PORT &>/dev/null; then
echo "[成功] 强制终止成功,端口 $PORT 已释放"
return 0
else
echo "[失败] 第 $attempt 次尝试失败,进程 $PID 仍存在"
fi
done

echo "[错误] 经过 $MAX_RETRIES 次尝试,端口 $PORT 仍被占用"
return 1
}


# 执行端口清理
cleanup_port
CLEANUP_STATUS=$?

# 根据清理结果执行后续操作
if [ $CLEANUP_STATUS -eq 0 ]; then
echo "======== nginx 端口清理成功,开始执行后续操作 ========"

exit 0
else
echo "======== nginx 端口清理失败,终止后续操作 ========"
exit 1
fi

# chmod +x stop-nginx.sh

# ./stop-nginx.sh

谷歌服务器,自用启动脚本
start-nginx2.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash

echo "更新依赖"

sudo apt update
echo "下载nginx 启动依赖"
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y


PORT=10001
MAX_RETRIES=3
RETRY_DELAY=1

# 端口清理函数
cleanup_port() {
for attempt in $(seq 1 $MAX_RETRIES); do
PID=$(lsof -t -i :$PORT 2>/dev/null)

if [ -z "$PID" ]; then
echo "[成功] 端口 $PORT 未被占用"
return 0
fi

echo "[尝试 $attempt/$MAX_RETRIES] 发现进程 $PID 占用端口 $PORT,正在终止..."

kill $PID
sleep $RETRY_DELAY

if ! lsof -t -i :$PORT &>/dev/null; then
echo "[成功] 进程 $PID 已终止,端口 $PORT 已释放"
return 0
fi

echo "[警告] 普通终止失败,尝试强制终止进程 $PID"
kill -9 $PID
sleep $RETRY_DELAY

if ! lsof -t -i :$PORT &>/dev/null; then
echo "[成功] 强制终止成功,端口 $PORT 已释放"
return 0
else
echo "[失败] 第 $attempt 次尝试失败,进程 $PID 仍存在"
fi
done

echo "[错误] 经过 $MAX_RETRIES 次尝试,端口 $PORT 仍被占用"
return 1
}

# 执行端口清理
cleanup_port
CLEANUP_STATUS=$?

# 根据清理结果执行后续操作
if [ $CLEANUP_STATUS -eq 0 ]; then
echo "======== 端口清理成功,开始执行后续操作 ========"

# 在此处添加需要执行的命令(示例)
# ------------------------------------------
# echo "启动服务..."
# /path/to/your/service/start_command
# ------------------------------------------

# 示例:启动测试服务(需要nc工具)
# echo "启动测试服务..."
# nc -lk $PORT &

# 启动 Nginx 服务
echo "Starting Nginx..."
sudo /home/nginx/sbin/nginx
echo "Nginx 启动成功"
exit 0
else
echo "======== 端口清理失败,终止后续操作 ========"
exit 1
fi

# chmod +x start-nginx2.sh

# ./start-nginx2.sh

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Ubuntu 安装Ollama 更换安装路径

发表于 2025-05-03
字数统计: 729 字 | 阅读时长 ≈ 3 min

ubuntu 安装ollama 更换安装路径

在 Ubuntu 上安装 Ollama 时,默认情况下,Ollama 会被安装在系统的默认路径下,通常是 /usr/local/bin。
如果想要将 Ollama 安装到不同的路径,可以通过以下步骤来实现:

1. 下载 Ollama

首先,你需要从 Ollama 的 GitHub 页面 获取最新版本的 Ollama。你可以使用 wget 或 curl 来下载:

1
wget https://ollama.com/download/ollama-linux-amd64.tgz

或者使用 curl

1
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz

2. 解压并移动到目标路径

解压下载的文件,并将解压后的 ollama 二进制文件移动到你希望的路径。例如,如果你想将其安装在 /home/ollama 目录下:

1
2
3
tar -xzf ollama_0.1.3_linux_amd64.tar.gz
sudo mkdir -p /home/ollama
sudo mv ollama /home/ollama/

3. 创建符号链接

为了方便使用,可以在系统的 PATH 中某个目录下创建一个符号链接,就可以在任意位置通过终端访问 Ollama。
例如,在 /usr/local/bin 下创建一个符号链接:

1
sudo ln -s /opt/ollama/ollama /usr/local/bin/ollama

4.验证安装

通过运行以下命令来验证 Ollama 是否正确安装并可以访问:

1
ollama --version

这应该会显示 Ollama 的版本信息,表明它已正确安装在指定路径。

5.修改模型存储路径,同时将ollama配置成服务

建立服务配置文件

1
vim /home/ollama/ollama.service

配置内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=root
Group=root
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="OLLAMA_MODELS=/home/ollama/models"
[Install]
WantedBy=default.target</font>

创建新的模型存储目录:
首先,创建一个新的目录作为模型存储路径。

1
sudo mkdir -p /home/ollama/models

更改目录权限:
确保新目录的权限设置正确,允许Ollama访问和写入:

1
2
3
sudo chmod -R 775 /home/ollama/models
sudo chown -R root:root /home/ollama/models
sudo chown -R ollama:ollama /home/ollama/models

建立软连接

1
sudo ln -sf /home/ollama/ollama.service /etc/systemd/system/ollama.service

6. 重载配置并重启Ollama服务

重载系统服务配置:

1
sudo systemctl daemon-reload

重启Ollama服务:

1
2
3
4
5
sudo systemctl start ollama # 启动

sudo systemctl restart ollama # 重启

sudo systemctl stop ollama # 停止

注意此处可能重启较慢,稍等一会生效

7. 查看服务状态:

1
sudo systemctl status ollama

检查新路径:
在新的路径/data/ollama/models下,会看到生成了blobs和manifests文件夹,这表明模型路径已经成功更改。

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

ClawCloud搭建FRP内网穿透

发表于 2025-05-02
字数统计: 1,614 字 | 阅读时长 ≈ 6 min

ClawCloud 是什么

ClawCloud 是阿里在新加坡推出的云服务
是一款类似于 Vercel 和 Netlify 的在线开发平台,专为开发者和个人用户设计。
通过 Claw Cloud Run,用户可以快速部署各种流行的应用程序和开源项目,如 Alist、Dify、frp 等,无需复杂的配置或高昂的成本。
目前,平台提供永久免费的 5 刀/月额度,只需绑定一个注册超过 180 天的 GitHub 账号即可享受。

官方网站: https://console.run.claw.cloud/signin?link=WARSAGD22RYP

frp 是什么

frp 是一款高性能的反向代理应用,专注于内网穿透。
它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:
多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
代理组间的负载均衡。
端口复用:多个服务可以通过同一个服务端端口暴露。
P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。

搭建

ClawCloud 端搭建frps 过程

1.登录 ClawCloud

2.在 ClawCloud 首页,打开应用商店 app store

3.在tools的标签下,选择frp

4.设置账号和密码,点击deploy app,可以看到费用是0.02美元每天,按照之前的操作,用github账号登录每月赠送5美元,相当于免费用

5.稍等一会,刷新一下界面,可以在首页上显示frp 的图标

6.在 ClawCloud 首页点击图标后,进入frp的服务监控界面,需要输入刚刚配置的用户密码

7.在 ClawCloud 在首页点击应用启动面板,app launchpad

8.单击刚刚启动的frp服务

9.进入服务总览界面 Overview

10.点击配置 Advanced Configuration ,在配置项中点击 Configmaps 的 Add

11.在跳转界面中下拉找到Configmaps 配置项,配置frps.toml

12.新增链接方式token,和设置的token值

1
2
auth.method = "token"
auth.token = "wangjikai.com"

此处的token值wangjikai.com可根据需要修改

此处完整的frps.toml配置如下

1
2
3
4
5
6
7
8
9
10
11
12
# frps.toml
bindPort = 7000
vhostHTTPPort = 80
# The default value is 127.0.0.1. Change it to 0.0.0.0 when you want to access it from a public network.
webServer.addr = "0.0.0.0"
webServer.port = 7500
# dashboard's username and password are both optional
webServer.user = "admin"
webServer.password = "wangjikai.com"
auth.method ="token"
auth.token ="wangjikai.com"
enablePrometheus = true

修改完成之后点击confirm进行应用

13.上滑界面,点击更新 update,注意此处会重启frp服务,可能因为给的配置较低的原因,重启较慢,多等待一会即可

14.重启之后状态显示running,回到服务总览界面 Overview

15.拉到下面network,记录80和7000端口的外网地址

1
2
https://frp-jusywadl.us-west-1.clawcloudrun.com
tcp://tcp.us-west-1.clawcloudrun.com:38254

此处地址要记录自己的,这是本次搭建用的,并不同通用

至此,ClowCloud 的上的操作完成,接下来是服务端的配置,以海纳斯系统为例

海纳斯系统搭建frps 过程

玩客云刷海纳斯系统参考:
https://www.ecoo.top/docs/tutorial-basics/s805
图片

1.登录,根据自己刷的海纳斯系统ip进入系统,登录

2.登录后点击外网按钮,切换到局域网

3.在局域网中点击终端后台图标

4.登录,默认账号密码:root/ecoo1234,若已经修改,输入修改后的账号密码

6.切换到frp 的配置目录下,备份frpc.toml 配置
具体命令如下

1
2
cd /etc/frp
cp frpc.toml frpc.toml.20250502.bak

7.此时,查看目录结构,使用vim 命令修改frpc.toml 配置文件
vim frpc.toml

8.打开之后,键盘点击“i”键,进入编辑模式,删除此文件内的所有内容

9.复制此段配置,到frpc.toml文件中

1
2
3
4
5
6
7
8
9
10
11
serverAddr = "tcp.us-west-1.clawcloudrun.com"
serverPort = 38254
loginFailExit = false
auth.method = "token"
auth.token = "wangjikai.com"
[[proxies]]
name = "hinas"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["frp-jusywadl.us-west-1.clawcloudrun.com"]

注意将serverAddr,serverPort,auth.token,customDomains 分别修改为自己的

其中auth.token为 上面 ClawCloud 的第12步骤

serverAddr,serverPort,为上面 ClawCloud 的第15步骤记录的7000端口的外网地址,注意serverAddr 为去掉前缀和端口,即去掉“tcp://”和“:38525”

customDomains ,为上面 ClawCloud 的第15步骤记录的80端口的外网地址,注意去掉地址前缀“https://”

之后点击键盘上的“Esc”按键,点击输入”:x” 退出编辑配置文件

10.先停止frpc服务,之后再测试测试frpc.toml是否成功,最后重启frpc服务
具体操作如下

1
2
3
4
5
6
systemctl stop frpc         #先停止frp客户端的服务
frpc -c /etc/frp/frpc.toml #试运行上面修改过的配置
#最后, 如果出现的都是蓝色的并且都显示success的结果, 则ok,
#否则重新修改xxx的名称避免和其他人的设置重复
#按ctrl+c结束命令
systemctl restart frpc #重启服务

11.最后复制ClawCloud 的第15步骤记录的80端口的外网地址到浏览器,即可使用外网打开内网海纳斯系统。

1
https://frp-jusywadl.us-west-1.clawcloudrun.com

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

ClawCloud免费容器4核心 8G内存

发表于 2025-05-01
字数统计: 417 字 | 阅读时长 ≈ 2 min

ClawCloud 是什么

ClawCloud 是阿里在新加坡推出的云服务
是一款类似于 Vercel 和 Netlify 的在线开发平台,专为开发者和个人用户设计。
通过 Claw Cloud Run,用户可以快速部署各种流行的应用程序和开源项目,如 Alist、Dify、frp 等,无需复杂的配置或高昂的成本。
目前,平台提供永久免费的 5 刀/月额度,只需绑定一个注册超过 180 天的 GitHub 账号即可享受。

官方网站: https://console.run.claw.cloud/signin?link=WARSAGD22RYP

使用

建议使用GitHub方式登录

登录后界面,坐上角可以选择地区

右上角用户,账单,可以看到是免费的,最高4 vCPU / 8GiB RAM / 10GiB disk per region

app store 可以安装各种应用

可以一键搭建博客系统,只需要0.06美元一天,一个月只需要1.8美元,提供的5美元每月的额度,完全够用

可以安装一些数据库,不过要注意,这个可能超过免费额度

还有最近很火的ai 应用dify,可以搭建试试,可以搭建之后,试用之后删除掉,不然免费的额度不够用

支持监控工具UptimeKuma

还有一些其他好玩的,可以自己探索。若想长期使用,也可充值,支持visa信用卡,和PayPal

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Ubuntu安装ollama并更换模型的下载目录

发表于 2025-04-26
字数统计: 1,850 字 | 阅读时长 ≈ 9 min

ollama是什么

开源框架
‌Ollama是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计‌。
其主要特点和功能包括简化部署、轻量级与可扩展性、提供简洁的API支持、
包含预构建模型库、支持从多种平台导入模型、跨平台支持以及命令行工具和环境变量配置。‌

Ollama通过极简的命令行操作简化了模型管理流程,
支持离线运行、多模型并行、私有化部署等场景。
它还提供了一系列预先训练好的大型语言模型,
用户可以直接选用这些模型应用于自己的应用程序,
无需从头训练或自行寻找模型源。

此外,Ollama支持多种大型语言模型,如Llama 3、Mistral、Gemma 2等,
并且提供了详细的文档和社区支持,
使得用户能够轻松地在本地环境中高效利用大型语言模型进行自然语言处理任务。

官方网站: https://ollama.com/
官方github: https://github.com/ollama/ollama

注意访问需要科学上网 ,请自行解决

也可尝试使用手机流量开热点链接,此方法不保证完全可行

安装

安装

1
curl -fsSL https://ollama.com/install.sh | sh

验证ollama 是否启动

1
sudo systemctl status ollama
1
2
3
4
5
6
7
root@idx-jk-work-1745566999271:/home/ollama/bin# sudo systemctl status ollama
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled; preset: enabl>
Active: activating (auto-restart) (Result: exit-code) since Mon 2025-04-28>
Process: 3841 ExecStart=/usr/local/bin/ollama serve (code=exited, status=1/>
Main PID: 3841 (code=exited, status=1/FAILURE)
CPU: 26ms

也可通过命令查看ollama 运行的模型查看

1
ollama list
1
2
root@idx-jk-work-1745566999271:/home/ollama/models# ollama list
NAME ID SIZE MODIFIED

更换模型下载目录

更换原因

根目录分配的空间较小,而ollama 默认 下载模型目录在 /usr/share/ollama/.ollama/models下,所生的6G空间,下载不了较大模型。
而home目录又196G空间,空间较为充足,因此更换模型下载目录

1
2
3
4
5
6
7
8
9
10
11
12
root@idx-jk-work-1745566999271:/home/frp/frp_0.62.0_linux_amd64# df -h 
Filesystem Size Used Avail Use% Mounted on
overlay 46G 40G 6.1G 87% /
tmpfs 64M 0 64M 0% /dev
/dev/disk/by-id/google-home 196G 14G 183G 7% /home
/dev/sda1 46G 40G 6.1G 87% /etc/hosts
shm 64M 0 64M 0% /dev/shm
overlay 196G 14G 183G 7% /home/user/Android/Sdk
tmpfs 12G 560K 12G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
efivarfs 56K 24K 27K 48% /sys/firmware/efi/efivars
tmpfs 5.9G 100K 5.9G 1% /run/user/1000

关闭Ollama服务

在更改模型路径之前,需要先停止Ollama服务。
使用systemctl命令:

1
sudo systemctl stop ollama
1
sudo systemctl disable ollama.service

创建新的模型路径

  1. 创建新的模型存储目录:
    首先,创建一个新的目录作为模型存储路径。创建/home/ollama/models目录:

    1
    sudo mkdir -p /home/ollama/models
  2. 更改目录权限:
    确保新目录的权限设置正确,允许Ollama访问和写入:

    1
    sudo chmod -R 775 /home/ollama/models
1
sudo chown -R root:root /home/ollama/models
1
sudo chown -R ollama:ollama  /home/ollama/models

修改Ollama服务配置文件

  1. 编辑服务配置文件:
    使用文本编辑器编辑Ollama服务的配置文件:

    1
    sudo vim /etc/systemd/system/ollama.service
  2. 修改配置内容:
    在[Service]部分的Environment字段后,添加新的Environment字段,指定新的模型路径:

    1
    Environment="OLLAMA_MODELS=/data/ollama/models"

完整的配置示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/google/cmdline-tools/bin:/root/Android/Sdk/tools:/root/Android/Sdk/tools/bin:/root/Android/Sdk/platform-tools:/usr/local/go/bin"
Environment="OLLAMA_MODELS=/home/ollama/models"
[Install]
WantedBy=default.target

重载配置并重启Ollama服务

  1. 重载系统服务配置:

    1
    sudo systemctl daemon-reload
  2. 重启Ollama服务:

    1
    sudo systemctl restart ollama

注意此处可能重启较慢,稍等一会生效

  1. 查看服务状态:

sudo systemctl status ollama

验证更改

  1. 检查默认路径:

进入默认的模型路径/usr/share/ollama/.ollama/models,会发现models文件夹已经消失。

  1. 检查新路径:

在新的路径/home/ollama/models下,会看到生成了blobs和manifests文件夹,这表明模型路径已经成功更改。

模型下载

下载一个较大的模型

1
ollama run deepseek-r1:14b

查看 /home/ollama/models 路径下文件

1
2
3
root@idx-jk-work-1745566999271:/home/ollama/models# du -sh ./*
8.4G ./blobs
20K ./manifests

ollama模型的外部使用

ollama下载的模型可本机使用,也可默认本机通过端口调用,即,本地访问127.0.0.1:11434 进行调用模型
而不支持其他地址调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
root@idx-jk-work-1745566999271:/home/frp/frp_0.62.0_linux_amd64# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1460
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether ce:a2:13:12:82:5f txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460
inet 10.88.0.3 netmask 255.255.0.0 broadcast 10.88.255.255
ether 6e:98:e8:2c:f4:62 txqueuelen 0 (Ethernet)
RX packets 1360350 bytes 12397569358 (12.3 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 693306 bytes 257398354 (257.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 733533 bytes 449518844 (449.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 733533 bytes 449518844 (449.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

root@idx-jk-work-1745566999271:/home/frp/frp_0.62.0_linux_amd64# telnet 10.88.0.3 11434
Trying 10.88.0.3...
telnet: Unable to connect to remote host: Connection refused
root@idx-jk-work-1745566999271:/home/frp/frp_0.62.0_linux_amd64# telnet 127.0.0.1 11434
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

解决办法,修改ollama 配置文件

1
sudo vim /etc/systemd/system/ollama.service

修改配置内容:
在[Service]部分的Environment字段后,添加新的Environment字段,指定新的模型路径:

1
Environment="OLLAMA_HOST=0.0.0.0:11434"

完整配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/google/cmdline-tools/bin:/root/Android/Sdk/tools:/root/Android/Sdk/tools/bin:/root/Android/Sdk/platform-tools:/usr/local/go/bin"
Environment="OLLAMA_MODELS=/home/ollama/models"
Environment="OLLAMA_HOST=0.0.0.0:11434"
[Install]
WantedBy=default.target

系统服务配置:

1
sudo systemctl daemon-reload

Ollama服务:

1
sudo systemctl restart ollama

注意此处可能重启较慢,稍等一会生效

验证

1
2
3
4
5
6
7
8
9
10
11
12
root@idx-jk-work-1745566999271:/home/frp/frp_0.62.0_linux_amd64# telnet 127.17.0.1 11434
Trying 127.17.0.1...
Connected to 127.17.0.1.
Escape character is '^]'.
^C
Connection closed by foreign host.
root@idx-jk-work-1745566999271:/home/frp/frp_0.62.0_linux_amd64# telnet 10.88.0.3 11434
Trying 10.88.0.3...
Connected to 10.88.0.3.
Escape character is '^]'.
^C
Connection closed by foreign host.

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Http-Server Http-Server轻量级的命令行 HTTP 服务器

发表于 2025-04-20
字数统计: 1,109 字 | 阅读时长 ≈ 4 min

http-server是什么

http-server 是一个轻量级的命令行 HTTP 服务器,它简单易用,无需配置。

安装

全局安装

1
npm install --global http-server

项目本地安装

1
npm install http-server --save-dev

基本使用

启动服务器
在需要做服务器根目录的文件夹中打开终端,然后运行:

1
http-server

默认情况下,服务器将在 http://localhost:8080 启动。

常用命令行选项
-p 或 –port: 指定端口号(默认 8080)
-a: 指定地址(默认 0.0.0.0)
-d: 显示目录列表(默认 true)
-i: 显示自动索引(默认 true)
-g 或 –gzip: 启用 gzip 压缩
-c-1: 禁用缓存控制
-o: 启动服务器后打开浏览器
-c: 设置缓存控制 max-age 头的缓存时间(以秒为单位,例如 “-c10” 表示 10 秒)

示例:

1
http-server -p 3000 -c-1 -o

会在 3000 端口启动服务器,禁用缓存,并自动打开浏览器。

高级配置

使用 HTTPS
生成自签名证书:

1
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

启动 HTTPS 服务器:

1
http-server -S -C cert.pem -K key.pem

设置代理
使用 –proxy 选项可以将请求代理到另一个服务器:

1
http-server --proxy http://localhost:8080

自定义 404 页面
创建一个 404.html 文件,然后使用 -e 选项:

1
http-server -e 404.html

实际应用场景

本地开发

在前端开发过程中,http-server 可以快速启动一个本地服务器来测试HTML、CSS 和 JavaScript 文件。

1
http-server ./dist -p 3000 -c-1

静态网站托管

对于简单的静态网站,可以使用 http-server 作为生产环境的服务器。

1
http-server ./public -p 80 --cors

原型展示

当需要向客户或团队成员展示原型时,http-server 可以快速创建一个临时的展示环境。

1
http-server ./prototype -p 8000 -o

API 模拟

结合 JSON 文件,http-server 可以用来模拟简单的 API 响应。

创建一个 api.json 文件:

1
2
3
4
5
6
{
"users": [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
]
}

然后启动服务器:

1
http-server ./ -p 3000

现在你可以通过 http://localhost:3000/api.json 访问模拟的 API 数据。

性能优化技巧

启用 Gzip 压缩
使用 -g 选项启用 Gzip 压缩可以显著减少传输的数据量:

1
http-server -g

利用浏览器缓存
适当设置缓存可以提高重复访问的性能:

1
http-server -c600

这将设置缓存时间为 600 秒。

使用 Content-Type 映射
创建一个 mime.types 文件来自定义 Content-Type 映射:

1
text/x-component .htc

然后使用 -m 选项:

1
http-server -m mime.types

安全性考虑

虽然 http-server 主要用于开发环境,但在某些情况下也可能用于简单的生产环境。以下是一些安全性建议:

使用 HTTPS:在公开环境中始终使用 HTTPS。
限制访问:使用 –cors 选项来控制跨源资源共享。
不要暴露敏感文件:注意不要在服务器根目录放置敏感文件。
定期更新:确保使用最新版本的 http-server 以获得安全修复。

故障排除

端口已被占用:尝试使用不同的端口 -p 3000。
EACCES 错误:在 Linux/Mac 上,使用 sudo 或选择 1024 以上的端口。
缓存问题:使用 -c-1 禁用缓存。
跨域问题:添加 –cors 选项。

与其他工具的集成

NPM Scripts
在 package.json 中添加脚本:

1
2
3
4
5
{
"scripts": {
"start": "http-server ./dist -p 3000 -o"
}
}

Gulp 集成
在 Gulpfile 中使用:

1
2
3
4
5
6
const gulp = require('gulp');
const httpServer = require('http-server');

gulp.task('serve', function() {
httpServer.createServer({ root: './dist' }).listen(8080);
});
  1. 总结
    http-server 是一个强大而灵活的工具,它不仅简化了前端开发过程,还为各种场景提供了解决方案。
    从本地开发到原型展示,从 API 模拟到简单的生产环境部署,http-server 都能胜任。
    虽然 http-server 功能强大,但它主要设计用于开发和测试。
    对于大规模的生产环境,可能需要考虑使用其他服务器解决方案。

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

Dify 解决dify1.0以上配置ollama模型供应商,点击保存,没反应问题

发表于 2025-03-16
字数统计: 947 字 | 阅读时长 ≈ 3 min

dify是什么

Dify
是一个开源的大语言模型(LLM)应用开发平台,旨在简化和加速生成式AI应用的创建和部署。Dify结合了后端即服务(Backend as Service, BaaS)和LLMOps的理念,为开发者提供了一个用户友好的界面和一系列强大的工具,使他们能够快速搭建生产级的AI应用‌。

主要功能和特点
低代码/无代码开发:Dify通过可视化的方式允许开发者轻松定义Prompt、上下文和插件等,无需深入底层技术细节。
模块化设计:Dify采用模块化的设计,每个模块都有清晰的功能和接口,开发者可以根据需求选择性地使用这些模块来构建自己的AI应用。
丰富的功能组件:平台提供了包括AI工作流、RAG管道、Agent、模型管理等丰富功能组件,帮助开发者从原型到生产的全过程。
支持多种大语言模型:Dify已支持主流的模型,如Claude3、OpenAI等,开发者能够根据自己的需求选择最适合的模型来构建AI应用。
应用场景
‌聊天助手:基于LLM的对话助手,能够与用户进行自然语言交互,理解用户的问题、请求或指令,并给出相应的回答或执行相应的操作。
文本生成:专注于各种文本生成任务,如撰写故事、新闻报道、文案、诗歌等创意写作,以及文本分类、翻译等任务‌。
智能代理:具备对话能力和任务分解、推理、工具调用等高级能力,能够理解复杂的指令,将任务分解为多个子任务,并调用相应的工具或API来完成这些子任务。
工作流程:根据用户定义的流程编排,灵活地组织和控制LLM的工作流程。

官方网站: https://cloud.dify.ai/apps
官方文档:https://docs.dify.ai/zh-hans
官方github: https://github.com/langgenius/dify
官方体验:https://cloud.dify.ai/apps

注意访问需要科学上网 ,请自行解决

也可尝试使用手机流量开热点链接,此方法不保证完全可行

问题描述

当前dify最新版本已经是dify1.1.2,之前搭建的0.15.3需要升级。因此,按照网上各种安装升级教程进行操作,升级完成后发现ollama 插件点击配置后没有反应。

问题原因

由于 1.0 版本bug,目前 Ollama 插件可能会安装失败,但是你却可以在 WebUI 中看到它显示为安装成功。但是此时你无法添加模型,表现为添加模型是按钮永远是灰色无法添加。原因是 Python 安装依赖时同时安装多个依赖很容易花很长时间,然而 Dify 的 plugin-daemon 如果检测到 120 秒终端没有输出任何内容就中止安装再重新开始,这就会导致插件安装死循环,但 WebUI 不管插件的安装是不是正确完成,只要插件条目在就认为插件安装成功。

问题解决

在docker-compose.yaml的plugin_daemon下environment配置添加以下代码,然后重新执行docker compose up -d

1
2
3
PYTHON_ENV_INIT_TIMEOUT: ${PYTHON_ENV_INIT_TIMEOUT:-640}
PLUGIN_MAX_EXECUTION_TIMEOUT: 2400
PIP_MIRROR_URL: https://mirrors.aliyun.com/pypi/simple

重新打开dify 界面,配置ollama 界面,点击保存,可以配置成功

一辈子很短,努力的做好两件事就好;
第一件事是热爱生活,好好的去爱身边的人;
第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;

12…38

继开

一辈子很短,努力的做好两件事就好:第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱。

303 日志
171 标签
RSS
gitee E-Mail
0%
鲁ICP备18007712号
© 2025 继开 | 站点字数统计: 262.2k
博客使用 Hexo 搭建
|
主题 — NexT.Mist v5.1.4
人访问 次查看