相关文件下载
搭建资源(亦可到官网下载):Deepseek本地搭建+公网访问资源.zip
Deepseek本地搭建
搭建环境
- Ubuntu 22.04
- Ollama
- Docker
- Open-webui
环境配置
配置网络为静态IP
# 下载vim命令
sudo apt install vim -y
# 备份01-network-manager-all.yaml
sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak
# 编辑network配置文件
sudo vim /etc/netplan/01-network-manager-all.yaml
01-network-manager-all.yaml
文件内容如下
# Let NetworkManager manage all devices on this system
network:
renderer: NetworkManager
ethernets:
ens33:
addresses:
- 10.1.1.200/24
routes:
- to: default
via: 10.1.1.2
nameservers:
addresses:
- 10.1.1.2
- 114.114.114.114
version: 2
注:ens33为自己的网卡名称,根据实际情况配置网关、IP地址、DNS服务器
# 修改文件权限,以免触发警告
sudo chmod 600 /etc/netplan/01-network-manager-all.yaml
#应用Netplan网络配置
sudo netplan apply
Ollama安装
1.下载Ollama 二进制文件
官网:https://github.com/ollama/ollama/releases/download/v0.6.1/ollama-linux-amd64.tgz
# 下载wget命令
sudo apt install wget
# 切换到"/opt/"目录下
cd /opt/
# 下载Ollama二进制文件到指定目录
sudo wget https://github.com/ollama/ollama/releases/download/v0.6.1/ollama-linux-amd64.tgz
# 解压文件
sudo tar -C /usr -xzf ollama-linux-amd64.tgz
2.将Ollama添加为自启动服务
# 为目录添加权限
sudo chmod 755 /usr/bin/ollama
# 为Ollama创建用户
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
# 创建服务配置文件ollama.service
sudo vim /etc/systemd/system/ollama.service
服务配置文件内容如下:
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
# 配置ollama能识别到的显卡显卡数(0,1,2,...)
Environment="CUDA_VISIBLE_DEVICES=0,1"
# 均衡显卡使用
Environment="OLLAMA_SCHED_SPREAD=1"
# 控制模型在内存/显存中驻留时间("-1"为长期驻留)
Environment="OLLAMA_KEEP_ALIVE=-1"
# 配置远程访问
Environment="OLLAMA_HOST=0.0.0.0"
# 配置跨域请求
Environment="OLLAMA_ORIGINS=*"
# 配置OLLAMA的模型存放路径(默认路径为"/usr/share/ollama/.ollama/models/")
Environment="OLLAMA_MODELS=/data/soft/ollama/.ollama/models"
[Install]
WantedBy=default.target
设置Ollama开机自启动
# 重新加载系统配置文件
sudo systemctl daemon-reload
# 将Ollama服务设置为开启自动
sudo systemctl enable ollama
# 启动Ollama服务
sudo systemctl start ollama
Open-WebUI安装
1.下载Docker
# 下载Docker
sudo apt install Docker.io -y
2.拉取Open-WebUI容器
sudo docker run --init -d -p 80:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.nju.edu.cn/open-webui/open-webui:main
"--init":启动容器时启用一个轻量级初始化进程,避免僵尸进程堆积。
"-d":以后台(Detached)模式运行容器。
"-p 80:8080":将宿主机的 80 端口 映射到容器的 8080 端口。
"--add-host=host.docker.internal:host-gateway":在容器的 /etc/hosts 文件中添加一条记录,将 host.docker.internal 解析为宿主机的网关 IP(即 host-gateway)。
"-v open-webui:/app/backend/data":将名为 open-webui的Docker卷挂载到容器内的/app/backend/data 目录。
"--name open-webui":为容器指定名称 open-webui,便于后续管理(如启动、停止、日志查看)。
"--restart always":配置容器在退出时自动重启(无论退出状态码如何)。
访问deepsek服务器地址http://10.1.1.200/
设置管理员第一次登录可能耗费时间较长,会去访问openai,关闭里面的的”OpenAI API”连接,后面访问就会很快。
至此Deepseek本地搭建完成
公网访问
搭建环境
- Ubuntu 22.04(公网服务器)
- frp
- Apache
frp下载
官网:https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
网盘下载:frp_0.61.2_linux_amd64.tar.gz
服务端搭建frp(公网服务器)
我这里用公网IP以内网服务器IP(10.1.1.128)代替
# 切换到"/opt/"目录
cd /opt/
# 下载frp
sudo wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
# 解压包并进入frp目录
sudo tar -C ./ -xzf frp_0.61.2_linux_amd64.tar.gz && cd ./frp_0.61.2_linux_amd64
# 安装vim
sudo apt install vim -y
# 编辑服务端配置文件"frps.toml"
sudo vim frps.toml
# frps.toml
[common]
# 服务端监听地址(0.0.0.0 表示接受所有来源连接)
bind_addr = "0.0.0.0"
# 客户端连接服务端的主端口
bind_port = 7000
# 身份验证 Token(需与客户端一致)
token = "aThgaiwu@2025fj*3a9"
# HTTP 虚拟主机端口(必填,否则无法支持 HTTP 类型代理)
vhost_http_port = 80
# 可选:HTTPS 虚拟主机端口(若需支持 HTTPS 代理)
# vhost_https_port = 443
# Dashboard 监控面板配置
dashboard_addr = "0.0.0.0"
dashboard_port = 7500
dashboard_user = "admin"
dashboard_pwd = "admin@2025"
# 创建frp服务文件
sudo vim /etc/systemd/system/frps.service
文件内容如下:
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
# 指定绝对路径
ExecStart=/opt/frp_0.61.2_linux_amd64/frps -c /opt/frp_0.61.2_linux_amd64/frps.toml
Restart=on-failure
# 以root权限启动
User=root
[Install]
WantedBy=multi-user.target
#重载服务使配置文件生效
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start frps
# 开机自启
sudo systemctl enable frps
# 查看状态
sudo systemctl status frps
# 查看完整日志
journalctl -u frps -f
启动成功后日志中会出现以下提示
3月 19 16:26:55 x-1 frps[5147]:
3月 19 16:26:55 x-1 systemd[1]: frps.service: Deactivated successfully.
3月 19 16:26:55 x-1 systemd[1]: Stopped Frp Server Service.
3月 19 16:26:57 x-1 systemd[1]: Started Frp Server Service.
3月 19 16:26:57 x-1 frps[5218]: WARNING: ini format is deprecated and the support will be removed in the future, please use yaml/json/toml format instead!
3月 19 16:26:57 x-1 frps[5218]: 2025-03-19 16:26:57.581 [I] [frps/root.go:105] frps uses config file: /opt/frp_0.61.2_linux_amd64/frps.toml
3月 19 16:26:57 x-1 frps[5218]: 2025-03-19 16:26:57.669 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
3月 19 16:26:57 x-1 frps[5218]: 2025-03-19 16:26:57.670 [I] [server/service.go:305] http service listen on 0.0.0.0:8080
3月 19 16:26:57 x-1 frps[5218]: 2025-03-19 16:26:57.670 [I] [frps/root.go:114] frps started successfully
3月 19 16:26:57 x-1 frps[5218]: 2025-03-19 16:26:57.670 [I] [server/service.go:351] dashboard listen on 0.0.0.0:7500
客户端搭建frp(本地/内网服务器)
内网服务器IP(10.1.1.200)
# 切换到"/opt/"目录
cd /opt/
# 下载frp
sudo wget https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
# 解压包并进入frp目录
sudo tar -C ./ -xzf frp_0.61.2_linux_amd64.tar.gz && cd ./frp_0.61.2_linux_amd64
# 安装vim
sudo apt install vim -y
# 编辑客户端配置文件"frpc.toml"
sudo vim frpc.toml
注:如果是Windows客户端配置frpc.toml
文件内容相同
# frpc.toml
serverAddr = "10.1.1.128"
serverPort = 7000
auth.token = "aThgaiwu@2025fj*3a9"
[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["10.1.1.128"]
# 创建frp服务文件
sudo vim /etc/systemd/system/frpc.service
文件内容如下:
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
ExecStart=/opt/frp_0.61.2_linux_amd64/frpc -c /opt/frp_0.61.2_linux_amd64/frpc.toml
Restart=on-failure
[Install]
WantedBy=multi-user.target
#重载服务使配置文件生效
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start frpc
# 开机自启
sudo systemctl enable frpc
# 查看状态
sudo systemctl status frpc
# 查看完整日志
journalctl -u frpc -f
启动成功后日志中会出现以下提示
3月 19 16:36:56 x-1 systemd[1]: Started Frp Server Service.
3月 19 16:36:56 x-1 frpc[17446]: 2025-03-19 16:36:56.342 [I] [sub/root.go:142] start frpc service for config file [/opt/frp_0.61.2_linux_amd64/frpc.toml]
3月 19 16:36:56 x-1 frpc[17446]: 2025-03-19 16:36:56.343 [I] [client/service.go:295] try to connect to server...
3月 19 16:36:56 x-1 frpc[17446]: 2025-03-19 16:36:56.350 [I] [client/service.go:287] [d0dae5e473279554] login to server success, get run id [d0dae5e473279554]
3月 19 16:36:56 x-1 frpc[17446]: 2025-03-19 16:36:56.350 [I] [proxy/proxy_manager.go:173] [d0dae5e473279554] proxy added: [web]
3月 19 16:36:56 x-1 frpc[17446]: 2025-03-19 16:36:56.354 [I] [client/control.go:168] [d0dae5e473279554] [web] start proxy success
服务端也会出现连接成功
3月 19 16:36:56 x-1 frps[5218]: 2025-03-19 16:36:56.371 [I] [server/service.go:582] [d0dae5e473279554] client login info: ip [10.1.1.200:57596] version [0.61.2] hostname [] os [linux] arch [amd64]
3月 19 16:36:56 x-1 frps[5218]: 2025-03-19 16:36:56.375 [I] [proxy/http.go:111] [d0dae5e473279554] [web] http proxy listen for host [10.1.1.128] location [] group [], routeByHTTPUser []
3月 19 16:36:56 x-1 frps[5218]: 2025-03-19 16:36:56.375 [I] [server/control.go:399] [d0dae5e473279554] new proxy [web] type [http] success
访问公网IP查看是否可以正常访问本地服务器
至此公网访问本地Deepseek已经搭建完成,以下是反向代理配置(不需要的可以忽略)
配置Apache做反向代理
反向代理作用
安全性增强
- HTTPS加密支持
- 可为FRP映射的HTTP服务自动添加SSL证书,实现HTTPS加密传输,避免明文数据暴露风险
- 访问控制与防护
- 反向代理可通过IP白名单、请求频率限制等功能过滤恶意流量,保护内网服务免受DDoS攻击或非法扫描
- 隐藏后端细节
- FRP暴露的端口(如8080)通过反向代理对外仅显示标准端口(80/443),减少端口暴露风险。
运维管理便捷性
- 统一域名入口
- 反向代理通过域名路由(如
fireworm.cc
)区分不同内网服务,无需为每个服务单独配置公网IP和端口
- 反向代理通过域名路由(如
- 证书自动续签
- 反向代理工具(如Certbot)可自动化管理SSL证书,避免FRP服务因证书过期导致中断
安装Apache
# 关闭frp服务
sudo systemctl stop frps
# 更新软件源
sudo apt update
# 安装Apache
sudo apt install apache2 -y
# 开启Apache
sudo systemctl start apache2
# 查看软件运行状态
sudo systemctl status apache2
# 设置开机自启
sudo systemctl enable apache2
配置Apache
# 禁用默认虚拟主机
sudo a2dissite 000-default.conf
# 重载配置使其生效
sudo systemctl reload apache2
# 删除`/var/www/html`目录内容,避免Apache返回默认页面
sudo rm -rf /var/www/html
# 启用代理、重写模块、WebSocket模块
sudo a2enmod proxy proxy_http rewrite proxy_wstunnel
# 验证模块状态是否加载
apachectl -M | grep 'proxy\|rewrite|proxy_wstunnel'
配置形式1:无需配置SSL证书(以http形式访问)
写入以下内容
# 创建专用代理配置文件
sudo vim /etc/apache2/sites-available/proxy.conf
文件内容如下:
# 开启WebSocket
<Location "/ws/socket.io/">
ProxyPass "ws://localhost:8080/ws/socket.io/"
ProxyPassReverse "ws://localhost:8080/ws/socket.io/"
</Location>
<VirtualHost *:80>
# 配置域名访问如果需要
# ServerName ai.fireworm.cc
# Redirect permanent "/" "http://ai.fireworm.cc/"
# 关闭文档根目录访问
DocumentRoot "/var/www/empty"
<Directory "/var/www/empty">
Require all denied
</Directory>
# 全站转发配置
ProxyPreserveHost On
ProxyPass "/" "http://localhost:8080/"
ProxyPassReverse "/" "http://localhost:8080/"
# 可选:日志配置
ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined
</VirtualHost>
配置形式2:配置SSL证书(以https形式访问)
# 启用SSL模块
sudo a2enmod ssl
# 支持HTTPS强制跳转
sudo a2enmod headers
# 创建SSL证书存放目录
sudo mkdir /etc/apache2/ssl
# 赋予相应权限
sudo chmod 700 /etc/apache2/ssl
# 创建专用代理配置文件
sudo vim /etc/apache2/sites-available/proxy.conf
文件内容如下:
# 开启WebSocket
<Location "/ws/socket.io/">
ProxyPass "ws://localhost:8080/ws/socket.io/"
ProxyPassReverse "ws://localhost:8080/ws/socket.io/"
</Location>
# 转发80端口到443
<VirtualHost *:80>
ServerName ai.fireworm.cc
Redirect permanent "/" "https://ai.fireworm.cc/"
</VirtualHost>
<VirtualHost *:443>
ServerName ai.fireworm.cc
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/ai.fireworm.cc.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/ai.fireworm.cc.key"
SSLCertificateChainFile "/etc/apache2/ssl/ai.fireworm.ccchain.crt"
ProxyPreserveHost On
# 反向代理到内网服务的80端口
ProxyPass "/" "http://localhost:8080/"
ProxyPassReverse "/" "http://localhost:8080/"
# 允许所有客户端访问
<Proxy *>
Require all granted
</Proxy>
# 可选:日志配置
ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined
</VirtualHost>
# 启动配置配置文件
sudo a2ensite proxy.conf
# 重载配置使其生效
sudo systemctl reload apache2
# 修改公网服务器`frps.toml`中的`vhost_http_port`值为`8080`
sudo vim /opt/frp_0.61.2_linux_amd64/frps.toml
# frps.toml
[common]
# 服务端监听地址(0.0.0.0 表示接受所有来源连接)
bind_addr = "0.0.0.0"
# 客户端连接服务端的主端口
bind_port = 7000
# 身份验证 Token(需与客户端一致)
token = "aThgaiwu@2025fj*3a9"
# HTTP 虚拟主机端口(必填,否则无法支持 HTTP 类型代理)
vhost_http_port = 8080
# 可选:HTTPS 虚拟主机端口(若需支持 HTTPS 代理)
# vhost_https_port = 443
# Dashboard 监控面板配置
dashboard_addr = "0.0.0.0"
dashboard_port = 7500
dashboard_user = "admin"
dashboard_pwd = "admin@2025"
#重载服务使配置文件生效
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start frps
# 查看frps状态
sudo systemctl status frps
至此公网访问公网IP(10.1.1.128)Deepseek已经全部搭建完成。
附录
这是我搭建的deepseek(https://ai.fireworm.cc)大家可以玩一下。
如文章有问题或技术深究,欢迎大家畅谈。
我这边免费限时限量提供公网IP&域名访问,可在我的博客官网留言。
注:本文章技术仅供学习和研究使用,请勿使用该项目的技术手段用于非法用途,任何人造成的任何负面影响,与本人无关.