马卫青的博客

爱思思爱猫爱技术

欢迎使用 {小书匠}(xiaoshujiang)笔记软件,您可以通过 小书匠主按钮>模板 里的模板管理来改变新建文章的内容。


简介

上一篇介绍的 deepseek-free-api ,主要是提供接口服务,允许用户通过网络访问 DeepSeek 模型的能力。这意味着,尽管用户可以在本地容器中运行该 API,但实际的模型推理和处理仍依赖于远程服务器或云服务,用户在使用时需要考虑网络连接的稳定性和访问权限。

文章传送门:深度思考大模型API服务deepseek-free-api

今天我们来研究通过 ollama 完全本地化部署 DeepSeek-R1

什么是 DeepSeek-R1 ?

DeepSeek-R1 是 DeepSeek 的第一代推理模型,在数学、代码和推理任务中,其性能与 OpenAI-o1 相当,包括基于 Llama 和 Qwen 的六个从 DeepSeek-R1 蒸馏出的密集模型。

什么是蒸馏 ?

蒸馏技术(Distillation)是一种模型压缩和优化的方法,主要用于将一个大型、复杂的模型的知识转移到一个较小的模型中。这个过程通常被称为“知识蒸馏”(Knowledge Distillation

其中 671b 是教师模型Teacher Model), 另外的 6 个蒸馏模型为学生模型Student Model

  • 1.5b:全称是 DeepSeek-R1-Distill-Qwen-1.5B,蒸馏模型源自 Qwen-2.5 系列;
  • 7b:是 DeepSeek-R1-Distill-Qwen-7B,蒸馏模型源自 Qwen-2.5 系列;
  • 8b:是 DeepSeek-R1-Distill-Llama-8B,蒸馏模型源自 Llama3.1-8B-Base
  • 14b:是 DeepSeek-R1-Distill-Qwen-14B,蒸馏模型源自 Qwen-2.5 系列;
  • 32b:是 DeepSeek-R1-Distill-Qwen-32B,蒸馏模型源自 Qwen-2.5 系列;
  • 70b:是 DeepSeek-R1-Distill-Llama-70B,蒸馏模型源自 Llama3.3-70B-Instruct

安装

ollama

  1. 首先要安装本地大模型运行框架 ollama ;
  2. 再根据机器的性能,下载对应参数的 DeepSeek-R1 模型;
模型版本 适用场景 内存占用 推理速度
1.5b 轻量级任务 3GB 15 token/s
7b 常规对话 10GB 8 token/s
70b 复杂推理 48GB 2 token/s

需要说明的是,ollama 除了 docker 方式部署外,也支持主流操作系统(WindowsmacOS 或 Linux)的二进制安装包

当然老苏还是更喜欢在 NAS 上用 docker 方式部署

文章传送门:本地大模型运行框架Ollama

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
# 新建文件夹 ollama 和 子目录
mkdir -p /volume1/docker/ollama/data

# 进入 ollama 目录
cd /volume1/docker/ollama

# 运行容器(仅 CPU)
docker run -d \
--restart unless-stopped \
--name ollama \
-p 11434:11434 \
-v $(pwd)/data:/root/.ollama \
ollama/ollama

# 进入容器
docker exec --user root -it ollama /bin/bash

# 下载模型
ollama pull deepseek-r1:1.5b

# 运行模型
ollama run deepseek-r1:1.5b

# 联网会用到的文本嵌入式模型
ollama pull nomic-embed-text

enter description here

WebUI

命令行方式用起来毕竟还是不太方便,虽然支持 ollama 的 WebUI 很多,而且也可以接入 One API 进行统一管理 ,但老苏觉得最佳的交互体验组合应该还是 Open WebUI

文章传送门:适配Ollama的前端界面Open WebUI

不过今天老苏不打算使用 Open WebUI,而是给大家推荐一款浏览器插件 Page Assist

它通过插件形式直接集成到侧边栏,无需复杂配置即可一键调用本地部署的 AI 模型,让您可以从任何网页与您的模型进行交互。

相比传统 WebUIPage Assist 具备一定的技术优势

特性 传统 WebUI Page Assist
部署复杂度 需独立服务部署 浏览器插件即装即用
资源占用 200MB+ 内存 <50MB 内存
上下文感知能力 手动复制粘贴 自动捕获网页选区
多模型切换 需重新加载页面 实时无缝切换

目前支持的浏览器

浏览器 侧边栏 与网页聊天 网页界面
Chrome
Brave
Firefox
Vivaldi
Edge
LibreWolf
Zen Browser
Opera
Arc

运行

设置

在浏览器中打开插件,会看到错误信息 Unable to connect to Ollama
enter description here

这是因为我们并没有在本机安装 ollama,而是安装在 NAS 上,因此不能通过 127.0.0.1 或者 localhost 进行访问。

  1. 单击右上角的 Settings 图标

  1. 单击选项卡 Ollama Settings

  1. 修改 Ollama URL 并点 save 保存

  1. 展开Advance Ollama URL Configuration选项,并启用 Enable or Disable Custom Origin URL
    enter description here

  2. 回到主界面,如果 Ollama URL 地址没问题,应该会看到 `Ollama is running ߦ頊

中文

这一步不是必须的,只是大部分人,也包括老苏,更习惯中文的使用环境

在设置界面 –> General Settings

设置为 简体中文

聊天

现在可以开始聊天了。因为机器性能的缘故,老苏用的是 1.5b 的模型

联网会需要用到文本嵌入模型

老苏使用了推荐的 nomic-embed-text

侧边栏

在任意一个网页,选中 Page Assist 插件点右键菜单,启动 侧边栏

勾选 与当前页面聊天

让模型总结一下页面的内容

参考文档

DeepSeek - 探索未至之境
地址:https://chat.deepseek.com/

deepseek-r1
地址:https://ollama.com/library/deepseek-r1

n4ze3m/page-assist: Use your locally running AI models to assist you in your web browsing
地址:https://github.com/n4ze3m/page-assist

page-assist/docs/connection-issue.md at main · n4ze3m/page-assist
地址:https://github.com/n4ze3m/page-assist/blob/main/docs/connection-issue.md

前言

本文主要介绍如何在群晖NAS安装MySQL与数据库管理软件phpMyAdmin,并结合cpolar内网穿透工具配置公网地址,实现异地远程访问本地部署的phpMyAdmin详细流程。

群晖安装MySQL具有高效、安全、可靠、灵活等优势,可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性,可以保障MySQL数据库的高效运行和数据安全.

而phpMyAdmin是用 PHP 脚本写的 MySQL 数据库的管理软件,可以使用 Web 图形模式直接管理 MySQL 数据库。可以用来创建、修改、删除数据库和数据表;导入和导出整个数据库;还可以完成许多其他的 MySQL 系统管理任务。

1. 安装MySQL

在群晖套件中心,我们搜索mariadb,出来搜索结果后点击安装
enter description here
安装过程中,会提示设置密码,需设置密码
enter description here
设置完成后,点击完成,开始安装
enter description here

安装完成后,我们打开配置界面,开启TCP/IP连接,勾选后点击应用
enter description here

2. 安装phpMyAdmin**

上面我们安装了数据库后,需要修改数据表中的root用户的访问方式,使我们可以远程访问,所以我们需要安装phpMyAdmin来修改相关参数.

运行它我们需要安装PHP7.4版本环境,所以我们在套件中心搜索php 7.4 然后安装.
enter description here
安装完成后,再次在套件中心中搜索phpMyAdmin,然后点击安装
enter description here
安装完成后我们在”已安装”的套件列表中找到phpMyAdmin,打开
enter description here
输入数据库用户名root 和我们上面安装数据库的时候设置的密码,登录
enter description here

3. 修改User表

登录后点击mysql数据库
enter description here
找到user表
enter description here
双击修改表中Host字段下面的localhost值
enter description here
改为%,表示不限制ip访问,这样修改后就可以远程mysql了
enter description here
然后在群晖套件中心中找到安装的mariadb,停止,然后重新启动,让我们修改的配置生效
enter description here

4. 本地测试连接MySQL

打开数据库连接工具,输入群晖的局域网ip地址,输入数据库用户名和密码,点击测试连接,出现successful!表示成功!
enter description here
5. 安装cpolar内网穿透
cpolar群晖套件下载地址:https://www.cpolar.com/synology-cpolar-suite,下载相应版本的套件
enter description here
打开套件中心,点击右上角的手动安装按钮。
enter description here
选择我们本地下载好的cpolar安装包。
enter description here
点击下一步按钮
enter description here
点击同意按钮
enter description here
之后,一路点击下一步按钮安装完成即可。
enter description here
在外部浏览器,我们通过群晖的局域网ip地址9200端口,cpolar的Web管理界面,默认端口为9200,输入cpolar邮箱账号与密码进行登录
enter description here
6. 配置MySQL公网访问地址
登录成功后,点击左侧仪表盘的隧道管理——创建隧道:

隧道名称:可自定义,注意不要与已有的隧道名称重复
协议:tcp
本地地址:3306
端口类型:临时随机TCP端口
地区:选择China VIP
点击创建
enter description here
然后打开在线隧道列表,查看tcp协议的mysql公网连接地址.
enter description here
接下来我们使用公网地址连接,打开mysql连接工具,输入公网地址和对应的公网端口,同时输入用户名和密码,点击测试连接,出现连接成功表示ok.
enter description here

7. 配置MySQL固定公网地址

要注意的是,以上步骤使用的是随机临时tcp端口地址,所生成的公网地址为随机临时地址,该公网地址24小时内会随机变化。我们接下来为其配置固定的TCP端口地址,该地址不会变化,设置后将无需每天重复修改地址。

cpolar官网: https://www.cpolar.com

登录cpolar官网,点击左侧的预留,找到保留的tcp地址,我们来为MySQL保留一个固定tcp地址:

地区:选择China 描述:即备注,可自定义 点击保留
enter description here
地址保留成功后,系统会生成相应的固定公网地址,将其复制下来
enter description here
进入cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的tcp隧道,点击右侧的编辑
enter description here
修改隧道信息,将保留成功的固定tcp地址配置到隧道中

端口类型:修改为固定tcp端口
预留的tcp地址:填写官网保留成功的地址,
点击更新
enter description here
隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了固定tcp地址。
enter description here
上面我们固定了mysql连接地址,现在我们使用固定的公网地址连接测试,打开mysql连接工具,输入公网地址和对应的公网端口,同时输入用户名和密码,点击测试连接,出现 successful! 表示ok,这样一个在群晖NAS的远程固定的mysql连接地址就设置好了.
enter description here

8. 配置phpMyAdmin公网地址

同理,如果我们要实现远程访问phpMyAdmin的web页面对本地数据库进行管理,也可以为它配置公网地址:

首先,回到cpolar的Web管理界面(群晖的局域网ip地址加9200端口)

点击左侧仪表盘的隧道管理——创建隧道:

隧道名称:可自定义,注意不要与已有的隧道名称重复(本例使用的是 phpmad)
协议:http
本地地址:80
域名类型:随机域名
地区:选择China VIP
点击创建
enter description here
隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网地址,然后复制地址
enter description here
打开浏览器,使用上面任意一个 公网地址/phpmyadmin 如: https://476b7e33.r21.vip.cpolar.cn/phpmyadmin

然后访问,即可看到登录界面:
enter description here
使用cpolar内网穿透生成的公网地址,成功实现了远程访问phpmyadmin的web页面对本地数据库进行管理。

9. 配置phpmyadmin固定公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称:(本例使用的是 myphpmad 大家可以自定义)
enter description here
保留成功后复制保留的二级子域名地址 myphpmad

回到cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的phpmad隧道,点击右侧的编辑:
enter description here
修改隧道信息,将保留成功的二级子域名配置到隧道中

域名类型:选择二级子域名
Sub Domain:填写保留成功的二级子域名 myphpmad
点击更新
enter description here
更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了保留过的二级子域名名称,将其复制下来:
enter description here

然后使用固定https地址+/phpmyadmin打开浏览器访问,同样访问成功,且域名不会发生变化:

https://myphpmad.vip.cpolar.cn/phpmyadmin/
enter description here
enter description here

以上就是如何在群晖NAS安装MySQL与数据库管理工具phpMyAdmin,并使用cpolar内网穿透工具为其分别配置固定公网TCP地址与http地址,实现随时随地远程连接本地局域网内MySQL与使用phpMyAdmin管理数据库的全部流程。感谢您的观看,有任何问题欢迎留言交流。

前言

enter description here
说到远程控制,自己经常使用的是向日葵、Todesk、TeamViewer还有无界趣连。

但是最近因为个人某些原因的需求,需要用到电脑控制手机!但是之前我用的远控软件服务好像都不行,向日葵的话好像需要付费还是什么大致忘记了!

所以在网上找到一个开源的项目:RustDesk

比起其它的远程控制软件,RustDesk是完全开源的且可以自行搭建个人的服务器。通过个人搭建的服务地址,可以远程控制自己的电脑/手机/电视等等…

所以今天就来搭建一下试试效果!

介绍

enter description here

RustDesk 是一个功能齐全的开源远程控制替代方案,以最少的配置实现自托管和安全。

RustDesk 可以作为向日葵、TeamViewer 等远程桌面服务的替代品,让您完全掌控数据,避免了安全隐患。相较于由第三方公司运营的远程桌面软件,如向日葵和 TeamViewer,RustDesk 提供了更为安全和自主的选择。对于普通用户而言,使用这些第三方服务如果不付费,很难享受到高质量的服务。而且,一旦这些公司遭遇倒闭、黑客攻击,或内部员工滥用职权,我们的桌面数据安全将面临威胁。使用 RustDesk 可以避免这些问题。

此外,厂商共享公共服务器的另一个缺点是网络波动大,承诺的网速往往难以实现,无论是付费还是免费版本。然而,自建服务器则没有这种问题,您可以独享带宽,确保网络速度稳定和迅速。

特征

RustDesk 是一款功能齐全的远程桌面应用程序。

适用于 Windows、macOS、Linux、iOS、Android 和 Web。

支持 VP8 / VP9 / AV1 软件编解码器和 H264 / H265 硬件编解码器。

拥有自己的数据,轻松在您的基础设施上设置自托管解决方案。

基于 NaCl 的端到端加密的 P2P 连接。

Windows 无需管理权限或安装,可以根据需要在本地或远程提升权限。

官方首页:https://rustdesk.com/

官方文档:https://rustdesk.com/docs/zh-cn/

GitHub原项目地址(感谢作者的付出):https://github.com/rustdesk/rustdesk

搭建部署

进入群晖NAS后台,打开 File station 文件管理器,新建文件夹 RustDesk 。
enter description here
之后再在 RustDesk 文件夹下新建 data 文件夹用于存储项目文件。
enter description here
之后打开 Container Manager 点击项目,新建项目 rustdesk-server。

复制以下代码使用 docker-compose.yml 部署

注意:下面命令的 192.168.31.4 是本地NAS的IP,构建完成之后可以把他修改成你的外网访问域名,这样在外面可以随时控制设备。

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
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:1.1.10-3 # please change this to rustdesk/rustdesk-server-pro:latest if you want to install Pro.
command: hbbs -r 192.168.31.4:21117 -k _
# 192.168.31.4 修改成你的NAS.IP 或者 NAS外网域名。
volumes:
- ./data:/root
network_mode: host
depends_on:
- hbbr
restart: always

hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:1.1.10-3 # please change this to rustdesk/rustdesk-server-pro:latest if you want to install Pro.
command: hbbr -k _
volumes:
- ./data:/root
network_mode: host
restart: always

# Because using docker host mode
# Just in case you forgot the ports:
# 21114 TCP for web console, only available in Pro version
# 21115 TCP for NAT type test
# 21116 TCP TCP hole punching
# 21116 UDP heartbeat/ID server
# 21117 TCP relay
# 21118/21119 TCP for web socket if you want to run web client

enter description here
设置好之后直接下一步,Web Station 不需要设置 直接下一步创建。

等待镜像拉取完成,项目构建完成就可以了!
enter description here
回到项目查看,项目已经成功运行了!
enter description here
最后,我是需要再外网链接家里设备的。

所以我会把之前构建时候填写的内网IP修改成我的外网域名。

(你们也可以构建的时候直接使用域名,我是怕出错所以直接使用的NAS的IP)

停止项目 - YAML配置 - 修改IP成域名 - 保存 - 构建并启动 - 确定

enter description here
遇到的问题
这里说一下遇到的问题,第一次拉取镜像部署的时候出现项目启动不起来。

日志显示以下信息,提示邮件注册什么的一直启动不起来。

1
Registered email required (-m option).derr Please pay and register on https://rustdesk.com/server.

enter description here
最后查到到原因,解决办法就是拉取镜像的时候版本问题,官方文档显示使用 rustdesk-server:latest 拉取最新文档,但是结果拉去的并不是最新的,所以要解决这个问题,就是手动吧版本号修改为 rustdesk-server:1.1.10-3 重新拉取部署一下就OK了!

现在最新版本是 rustdesk-server:1.1.11-1 修改成这个版本也行!

提取秘钥

回到群晖后台,打开 File station 进入 RustDesk 下的 data 目录。

找到 【id_ed25519.pub】文件,并且下载到本地。
enter description here
下载完成后我们使用记事本打开文件,查看里面内容。
这一串字符串就是我们需要用到的密钥!
enter description here

客户端

下载客户端

我们打开 RustDesk 官方网站 下载客户端。

官网:https://rustdesk.com/zh/

大家自行选择自己对应版本下载即可。
enter description here
我这就以macOS版本做演示。

下载完后直接拖拽安装一下。
enter description here

系统配置权限

安装后打开 RustDesk 这可以看到这界面大家都很熟悉吧,和大部分的远控软件界面都是大同小异。
enter description here
开始我们给rusrdesk配置一下权限。
enter description here
按照提示我们给予配置录屏、声音、控制、开机启动权限。
enter description here
enter description here
enter description here
录屏、声音、控制权限都配置好之后,之后提示你需要重启打开RustDesk。

客户端设置

点击 RustDesk 的ID旁边的三个点…进入设置界面。
enter description here
点击【网络】之后点击解锁网络设置,输入一下密码解锁就可以了!
enter description here
然后添加你的服务器地址(域名:端口号)和密钥Key,完成后点击应用。
enter description here
设置好之后返回主页,查看最下面如果显示【就绪】就表示已经连接成功了,如果出现错误就表示之前步骤没设置好。
enter description here

端口映射

需要映射的端口:

TCP:21115, 21116, 21117

UDP:21116(关键:这个一定要别漏了否则外网访问不了)

21118和21119是网页客户端的,如果不需要用网页端就可以不映射
enter description here

连接测试

我直接在我另一台Windows笔记本上安装了RustDesk,远控成功!
enter description here
远控安卓手机(外网5G网络访问成功)
enter description here

结束

Rustdesk 确实非常实用,特别是它可以兼容各种手机客户端。无论是外出时需要用手机控制电脑,还是出差时不想带笔记本可以用平板进行简单操作,甚至是父母的手机出现问题时可以远程控制解决,都能轻松实现。

此外,Rustdesk 还支持无限设备连接,服务器可以部署在本地,并且完全免费,不用担心费用或带宽问题。

希望本次教程对大家有所帮助!创作不易希望大家能多多转发收藏本站!感谢感谢~~!

我是阿狸鹿丫,一个业余爱瞎折腾的数码软件爱好者,技术小白。

这是一个强大的本地托管的基于 Web 的 PDF 操作工具,使用 docker,允许您对 PDF 文件执行各种操作,例如拆分、合并、转换、重组、添加图像、旋转、压缩等。这个本地托管的 Web 应用程序最初是 100% ChatGPT 制作的应用程序,现已发展到包含广泛的功能来满足您的所有 PDF 需求。

Stirling PDF 不会为任何记录保存或跟踪进行呼出。

所有文件和 PDF 要么仅存在于客户端,要么仅在任务执行期间驻留在服务器内存中,要么临时驻留在仅用于执行任务的文件中。届时,用户下载的任何文件都将从服务器中删除。
1、镜像 frooodle/s-pdf:latest
2、安装 2.1、基础设置
enter description here
重启策略:容器退出时总是重启容器。
2.2、网络
enter description here
网络选择桥接即可。

enter description here
装载路径/usr/share/tessdata:数据文件夹;
装载路径/logs:日志文件夹;
装载路径/configs:配置文件夹。
2.4、端口设置
enter description here

  • 容器端口8080固定,本地端口任意。
  • 2.5、环境变量
变量名称 变量值 变量描述 说明
TZ Asia/Shanghai 设置时区 建议设置
SYSTEM_ROOTURIPATH /pdf-app 设置URI子目录,设置后访问路径变为:localhost:8080/pdf-app 如需运行在子目录下则可设置
SYSTEM_CONNECTIONTIMEOUTMINUTES 60 系统连接超时时间,单位:分钟 可以设置较长超时时间避免下载超时
DOCKER_ENABLE_SECURITY true/false docker下载安全jar(auth登录需要true 默认false即可,如需安全或启用登录能力则必须设置为true
SECURITY_ENABLE_LOGIN true/false 启用登录 设置为true则启用登录默认账号:admin默认密码:stirling
SECURITY_INITIALLOGIN_USERNAME admin 登录用户名 若不想使用默认账户,则可设置此变量自定义
SECURITY_INITIALLOGIN_PASSWORD stirling 登录密码 若不想使用默认密码,则可设置此变量自定义

引言

最近刷抖音老刷到男人一旦过了25就只能聊聊天了,然后对于我们这种玩NAS的理工男评价更是不好!!!拜托,那只是你们不懂理工男的浪漫罢了,所以熊猫决定为咱们玩NAS的正名,刚好马上3.8妇女节了,推荐一款拿去讨好老婆的项目—like-girl-v520。
enter description here
这是一款用于记录情侣故事的工具,或者你可以理解为它是一款情侣博客,类似于QQ的情侣空间一样的东西。通过它你可以记录文章,记录你和他(她)之间的日常点滴,也可以一起上传生活相册,将定格的瞬间上传到站点展示,还可以一起来一个情侣计划,一起去约定你们的共同目标与完成它,甚至还开放了留言板能让你们收获到来自朋友们的祝福。(项目介绍:https://blog.kikiw.cn/index.php/archives/52/) like-girl-v520有开源版和,实际上开源版本就非常不错了,足够使用。付费版在开源版的基础上提供了小程序、程序源码、技术支持以及自动更新等服务,售价298.88。你花298买不到一个像样的礼物,但能获得一个你们共同经营的小站,这不比送花有心意?(当然,购买还是要酌情购买)

部署机

这次要用到的为绿联的DXP6800 Pro,主要是绿联现在提供的Docker管理方式我个人非常喜欢,项目能直接创建docker-compose堆栈项目,容器也支持一键更新部署,再加上全功能的手机端Docker管理和每周好几篇的官方教程更新,不得不说绿联现在的服务做的非常不错,毕竟作为NAS持续运营是根本。
enter description here
除了更方便的Docker管理,DXP6800 Pro目前的两个雷电口也能通讯了,通过它其实也能为NAS扩展出更多有趣的玩法,例如不拆机使用它自带的Pcle,通过雷电扩展坞直插显卡、网卡、扩展网口以及USB和SATA口等等,如此一来DXP6800 Pro的上限会变得非常高。
enter description here

项目部署

like-girl-v520作者自己制作好了Docker镜像,你可以直接通过网站https://pan.quark.cn/s/6abd997c3a04去下载已经打包好的镜像,其中提供了Docker-compose代码文件、有数据的数据库文件以及无数据的数据库文件,甚至还打包好了镜像直接导入NAS即可。
enter description here
将网盘文件全部下载并保存到我们的绿联NAS中,打开Docker界面点击镜像-本地镜像,选择左上角的添加镜像,选择从NAS导入,选择我们刚刚下载的打包好的镜像,如果提示格式不支持可以直接修改压缩文件的后缀名,例如tar。
enter description here
导入之后我们来到项目界面,创建新项目中导入我们下载的堆栈文件,给项目命好名,这里需要检查代码的映射路径以及端口,确保端口和路径无误,这需要根据你自身的NAS环境来检查。
enter description here
如果没什么问题,点击立即部署之后能看到likegirl-app和likegirl-db两个容器成功运行,不过这时候我们还不能直接通过端口打开项目,因为这时候数据库还没有完成初始化。
enter description here
我们切到容器这一栏,找到likegirl-db容器并打开控制台,在这里点击终端,命令默认的/bin/bash即可。
enter description here
连接之后我们输入命令mysql -u likegirl -p likegirl先进入数据库,这里是默认的数据库和用户名,输入后会要求你输入密码,默认无修改的情况下为likegirl。
enter description here
随后再输入source /var/all.sql/AllData.sql; 导入数据库,等待执行结束之后输入quit;即可退出。(熊猫这里用的是有测试数据的数据库AllData.sql)
enter description here
一切设置完之后这时候通过绿联IP:端口号就能访问项目的主页了。

enter description here
项目使用 通过输入http://<nas-ip>:1314/admin/login.php我们可以打开项目的后台登录界面,默认的用户名密码为admin/loveww
enter description here
后台首页会显示当前站点的一些情况,例如留言祝福数量、点点滴滴记录数、恋爱清单。通过基本设置界面,我们可以设置我们的站点标题、LOGO、展示文案以及男女主的名字、QQ以及恋爱时间等等。
enter description here
项目的其他选项提供了更多页面的设置功能,如文章故事、情侣相册、留言功能,这里相册会需要用到图床,个人比较推荐兰空图床,至于每一项的具体功能设置和展示就不一一介绍了,大家可以部署之后自行摸索体验。

写在最后

不得不说,很多时候理工男并不是不懂浪漫,而是会通过自己独有的方式去表达爱意,而通常这些方式会更用心。遇到理工男就嫁了吧,毕竟他们的浪漫其他人可做不出来!

最后目前绿联全系都有参加活动,DXP4800活动价2199,叠加1500-220元优惠卷、88vip-60优惠卷以及国补10%,到手价1727.1元,算是除开双十一到现在最低价了,有需求的可以入手哦!

以上便是本期的全部内容了,如果你觉得还算有趣或者对你有所帮助,不妨点赞收藏,最后也希望能得到你的关注,咱们下期见!

欢迎使用 {小书匠}(xiaoshujiang)笔记软件,您可以通过 小书匠主按钮>模板 里的模板管理来改变新建文章的内容。


什么是 Ollama ?

Ollama 是一个简明易用的本地大模型运行框架。能在本地启动并运行 Llama 2MistralGemma 及其他大语言模型。

和老苏之前介绍的 LocalAI 比较类似,但是加载模型更容易,感觉上比较像 docker,也采用了 tags 来区分模型的不同版本,尤其是 CLI 也采用了 pullrmrun 等等;

因为老苏的小机器不支持 Nvidia GPU,所以下面ߑ秚䥮騣姤ꤾ뤻妔歷ႠCPU

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 ollama ,选择第一个 ollama/ollama,版本选择 latest

本文写作时, latest 版本对应为 0.1.27

enter description here

在 docker 文件夹中,创建一个新文件夹 ollama,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/ollama/data /root/.ollama 存放模型数据

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
11434 11434

容器名称

因为后面有进入容器的操作,所以这里规范下命名,就叫 ollama 吧

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 ollama 和 子目录
mkdir -p /volume1/docker/ollama/data

# 进入 ollama 目录
cd /volume1/docker/ollama

# 运行容器(仅 CPU)
docker run -d \
--restart unless-stopped \
--name ollama \
-p 11434:11434 \
-v $(pwd)/data:/root/.ollama \
ollama/ollama

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
version: '3'

services:
ollama:
image: ollama/ollama
container_name: ollama
restart: unless-stopped
ports:
- 11434:11434
volumes:
- ./data:/root/.ollama

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 ollama 和 子目录
mkdir -p /volume1/docker/ollama/data

# 进入 ollama 目录
cd /volume1/docker/ollama

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:11434 ,如果看到 Ollama is running,表示服务启动正常

下载模型

官方提供了一个模型库,地址:https://ollama.com/library

你可以根据需要进行搜索,例如搜索 llama2

选中 llama2 ,你会看到关于这个模型的简介

进入 tags 查看需要的版本

关于不同参数模型文件所需要的内存,之前提过,这里简单再说一下

  • 7b:至少需要 8GB 内存;
  • 13b:至少需要 16GB 内存;
  • 33b:至少需要 32GB 内存;

老苏接下来尝试了 llama2:7b 和 llama2-chinese:7b,从介绍看,后者采用了中文指令集来进行微调,使其具备较强的中文对话能力。目前这个中文微调参数模型总共发布了 7B13B 两种参数大小。

模型下载需进入容器内,不熟悉命令行的,可以进入 终端机 操作

执行下面的命令

1
2
3
4
5
# 下载模型
ollama pull llama2:7b

#下载模型(中文微调参数模型)
ollama pull llama2-chinese:7b

enter description here
老苏个人更喜欢用 SSH 客户端的命令行,多一步进入容器的命令,下载是一样的

1
2
3
4
5
6
7
8
# 进入容器
docker exec --user root -it ollama /bin/bash

# 下载模型
ollama pull llama2:7b

#下载模型(中文微调参数模型)
ollama pull llama2-chinese:7b

开始下载

下载完成

开始提问

接下里就可以提问了,比如: 为什么天空是蓝色的

命令行

假设已经进入容器或者尚未退出容器,可以直接运行下面的命令

1
2
3
4
# 运行模型
ollama run llama2-chinese:7b

# 填写问题

因网络中断,答案并没有生成完全,就这几个字已经花了近 2 小时

curl

用 SSH 客户端登录到群晖后,执行下面的命令

1
2
3
4
curl -X POST http://192.168.0.197:11434/api/generate -d '{
"model": "llama2-chinese:7b",
"prompt": "你好吗"
}'

其中:

  • IP 需要改为你自己的主机 IP
  • model 后面是我们要使用的模型文件;
  • prompt 后面就是我们提的问题;

当然你还可以用 API 工具,不过可能还是 Web UI 的界面用起来更好,暂时找到了 Open WebUI ,有时间再找找

小结

跑大模型,需要的硬件资源是越高越好的。老苏的小机器既不支持 GPU,内存也仅仅够了最低要求的 8GB,所以每个问题回答的时间,都慢到让你怀疑人生。

但是,这并不能阻止我们追求知识和进行探索的热情。

参考文档

ollama/ollama: Get up and running with Llama 2, Mistral, Gemma, and other large language models.
地址:https://github.com/ollama/ollama

Ollama
地址:https://ollama.com/

ollama/ollama - Docker Image | Docker Hub
地址:https://hub.docker.com/r/ollama/ollama

library
地址:https://ollama.com/library

open-webui/open-webui: User-friendly WebUI for LLMs (Formerly Ollama WebUI)
地址:https://github.com/open-webui/open-webui

外网访问家庭局域网方案

随着NAS、软路由的普及,越来越多的人产生了外网访问家庭网络的需求。当前访问家庭网络的方案主要分为三类:

1.公网ip

这一类当然是最方便的,也是花费较少的方案。可以通过ip地址直接访问家庭网络,即使是变动的公网ip,也只需购买域名配置DDNS即可。但随着政策的加严,获取ipv4公网ip的渠道越来越少,之前寄托了很多希望的ipv6现在看来也存在诸多问题。

2.隧道穿透

这一类是通过一台具有公网ip的机器(通常是一台云服务器)作为中转,在这台机器与家庭局域网内的机器建立隧道,借由公网下的服务器作为跳板访问家庭网络。这一类服务有自建的,如Frp、NPS等,也有商家提供服务的,如SakuraFrp、DDNSTO等。

3.虚拟局域网

这一类更适合私人或小团体使用,其原理是建立一个虚拟的广域网,并为加入这个虚拟网络的设备分配一个虚拟的ip,并在这个广域网内通过虚拟ip互访。最知名的代表就是Zerotier,也是我今天所要介绍的 。

zerotier的优缺点

通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 。 Zerotier的优点在于其部署十分简便,只需在zerotier官网注册登陆并创建网络,在自己的设备安装客户端加入网络后,zerotier就会自动分配虚拟ip,无需了解ip、端口等配置。 但很可惜,zerotier的根服务器都在国外,我们到zerotier服务器需要经过层层的NAT中转,这导致我们通过zerotier网络互访时不仅存在较大的延迟,而且在网络高峰段非常容易断连。 在之前,对于这种情况,我们的解决方案是在国内的服务器上搭建一个zerotier的moon中转节点,作为zerotier根服务器的代理加速,但加速效果有好有坏(有的人说速度很快,但我的中转就很慢),而且这种方式的一个问题就是,安卓端的手机无法加入moon节点。这个问题很快就被解决了,kaaass大佬做了一个ZerotierFix的app,相比于官方增加了可以加入moon节点的功能。

Zerotier-planet

虽然大佬的app解决了安卓客户端不能加入moon节点的问题,但moon节点的搭建以及客户端的配置仍然不是一个比较简单的过程,又要配置服务器端又要配置客户端,zerotier便捷性的优点就体现不出来了。 前段时间,小众软件推荐的一分钟自建 zerotier-planet 行星服务器吸引了我,简单浏览了一下,发现过程是真的很简单。jonnyan404大佬的这个项目是基于另一个项目ztncui优化而来,简单而言就是用docker部署一个独立的zerotier虚拟网络。部署这个项目的全部准备只有在你的公网服务器上安装好docker和docker-compose。
jonnyan404大佬已经写好了zerotier-planet的docker配置脚本,我们只需登陆服务器执行以下几个命令
1、从gitee仓库下载docker配置文件
git clone https://gitee.com/Jonnyan404/zerotier-planet
2、 进入下载的项目文件夹 cd zerotier-planet
3、 docker安装zerotier-planet,如果服务器是Ubuntu系统,记得命令前加上 sudo docker-compose up -d
4、 然后就可以访问 http://ip:4000 访问web界面了(记得防火墙开放4000端口)
默认用户名:admin 默认密码:mrdoc.fun
建议登陆后立即创建新用户,并切换到新用户登陆,删除默认的admin账户,以保证安全 接下来的操作与官方版的zerotier没有太大区别了,这里新建一个虚拟网络test,ID是 119c41e47a8a0433。
zerotier-planet
enter description here
Private: 设置对设备的访问控制权,默认勾选上
Private
enter description here
Easy setup: 设置虚拟广域网段,可以自己设置
Easy setup
enter description here
Routes: 设置路由,一般就只有一个默认的路由(也就是刚刚设置的网段),稍后介绍它的扩展用法
Routes
enter description here
Assignment Pools: ip地址分配,你可以指定该网段下虚拟ip可供分配的范围
Assignment Pools
enter description here
接下来,只要在自己的设备上安装zerotier的客户端,然后通过ID加入网络,就可以在该页面刷新出设备列表了,为新设备勾选Authorized即可分配虚拟的ip地址了。
ip分配
enter description here
基于zerotier网络可以实现许多功能,例如windows端的远程桌面连接,ssh连接linux服务器,访问个人服务器上的博客

应用扩展-允许openwrt客户端自动NAT

尽管zerotier已经支持相当多的平台了,但仍有一些设备不受支持,比如我升级到DSM 7.0的小猫盘。为了让这些无法安装zerotier客户端的设备也加入到这个虚拟网络中,我们需要一个支持zerotier的openwrt路由器。以我的R2S为例

zerotier设置

1、 首先将R2S也加入虚拟网络,在openwrt后台管理中填入虚拟网络ID,并允许客户端NAT。
R2S-Openwrt

enter description here

2、设置虚拟网络路由

R2S-虚拟ip
enter description here

我的R2S分到的虚拟ip为10.81.33.114,在Routes我们再新建一个路由

新建路由
enter description here
我这里已经设置过了,Target应根据路由器的网段来决定,比如我的R2S局域网访问地址为192.168.2.1,则Target则应填192.168.2.0/24,Gateway则填R2S分配到的虚拟ip,这里是10.81.33.114。

openwrt设置

除了zerotier上的设置,还要对openwrt进行设置,使得流量可以通过虚拟广域网传播
新建zerotier接口
enter description here
我们在openwrt 网络>接口 里新增一个zerotier接口,系统会为其分配一个zt开头的物理接口,我的是zt6xtbbu66。对该接口进行设置,传输协议选择静态地址,ipv4地址填分配的虚拟ip,ipv4子网掩码是默认的225.225.225.0,在防火墙设置中创建/分配防火墙区域选择lan
接着在 网络>防火墙 里自定义防火墙规则,增加以下规则
ptables -I FORWARD -i zt6xtbbu66 -j ACCEPT
iptables -I FORWARD -o zt6xtbbu66 -j ACCEPT
iptables -t nat -I POSTROUTING -o zt6xtbbu66 -j MASQUERADE
记得将zt6xtbbu66换成你自己对应的物理接口,重启防火墙
测试
这个时候,R2S下的设备应当已经加入zerotier广域网了,以我的小猫盘为例,在局域网下它的访问地址为192.168.2.147:5000,在安卓手机上通过ZerotierOne连接zerotier广域网,并断开WiFi,在浏览器中访问192.168.2.147:5000
小猫盘
enter description here
访问成功,表明小猫盘已经通过R2S接入到局域网了

一分钟自建zerotier-plant

私有部署zeroteir-planet服务
基于 ztncui 整理成 docker-compose.yml 文件.

特别感谢 https://github.com/Jonnyan404/zerotier-planet/issues/11#issuecomment-1059961262 这个issue中各位用户的贡献,基于此issue中 @jqtmviyu 的步骤和kaaass的 mkmoonworld 制作成目前的patch(集成planet和moon)。

必要条件

  • 具有公网ip的服务器
  • 安装 docker
  • 安装 docker-compose
  • 防火墙开放TCP端口 4000/9993/3180 和UDP端口 9993

用法

1
2
3
4
5
6
7
8
9
10
11
git clone https://github.com/Jonnyan404/zerotier-planet
OR
git clone https://gitee.com/Jonnyan404/zerotier-planet

cd zerotier-planet
docker-compose up -d
# 以下步骤为创建planet和moon
docker cp mkmoonworld-x86_64 ztncui:/tmp
docker cp patch.sh ztncui:/tmp
docker exec -it ztncui bash /tmp/patch.sh
docker restart ztncui

然后浏览器访问 http://ip:4000 打开web控制台界面。

浏览器访问 http://ip:3180 打开planet和moon文件下载页面(亦可在项目根目录的./ztncui/etc/myfs/里获取)。

  • 用户名:admin
  • 密码:mrdoc.fun
    note: 如果未指定密码,可执行docker exec -it ztncui cat /var/log/docker-ztncui.log|grep Password获取密码.

客户端主要为 Windows, Mac,Linux, Android

zerotier官网: https://www.zerotier.com/download/

  • Windows 配置

    1. 首先去 zerotier 官网下载一个 zerotier 客户端
    2. 将 planet 文件覆盖粘贴到 C:\ProgramData\ZeroTier\One 中 (这个目录是个隐藏目录,需要运允许查看隐藏目录才行)
    3. Win+S 搜索 服务

enter description here
找到 ZeroTier One,并且重启服务
enter description here

  1. 使用管理员身份打开 PowerShell
    执行如下命令,看到 join ok 字样就成功了

 复制

1
2
3
PS C:\Windows\system32> zerotier-cli.bat join 网络id(就是在网页里面创建的那个网络)
200 join OK
PS C:\Windows\system32>

登录管理后台可以看到有个个新的客户端,勾选 Authorized 就行
enter description here

  • 执行如下命令:

     复制

    1
    2
    3
    4
    5
    6
    PS C:\Windows\system32> zerotier-cli.bat peers
    200 peers
    <ztaddr> <ver> <role> <lat> <link> <lastTX> <lastRX> <path>
    fcbaeb9b6c 1.8.7 PLANET 52 DIRECT 16 8994 1.1.1.1/9993
    fe92971aad 1.8.7 LEAF 14 DIRECT -1 4150 2.2.2.2/9993
    PS C:\Windows\system32>

    可以看到有一个 PLANTET 和 LEAF 角色,连接方式均为 DIRECT(直连)
    到这里就加入网络成功了

  • Linux 客户端

    1. 安装 linux 客户端软件
    2. 进入目录 /var/lib/zerotier-one
    3. 替换目录下的 planet 文件
    4. 重启 zerotier-one 服务 (service zerotier-one restart)
    5. 执行 zerotier-cli join 网络id 加入网络
    6. 管理后台同意加入请求
    7. 执行 zerotier-cli peers 可以看到 planet 角色
  • 安卓客户端配置

  • ZerotierFix
    Zerotier 非官方安卓客户端发布:支持自建 Moon 节点 - V2EX

  • Mac 客户端 (参考 https://github.com/Jonnyan404/zerotier-planet/issues/35)

    1. 官网下载一个 zerotier 客户端
    2. 替换 /Library/Application Support/ZeroTier/One 目录下的 planet 文件
    3. 重启 zerotier-one 服务
    4. 命令行执行 zerotier-cli join 网络id
    5. 管理后台同意加入请求
    6. 执行 zerotier-cli peers 可以看到 planet 角色

私有 zerotier-planet 的优势:

  • 解除官方 25 的设备连接数限制
  • 提升手机客户端连接的稳定性

Reference Link

  • zerotier的planet服务器(根服务器)的搭建踩坑记
  • https://www.mrdoc.fun/doc/443/
  • https://github.com/key-networks/ztncui-aio

前言:

为什么需要内网穿透功能?

从公网中访问自己的私有设备向来是一件难事儿。
自己的主力台式机、NAS等等设备,它们可能处于路由器后,或者运营商因为IP地址短缺不给你分配公网IP地址。如果我们想直接访问到这些设备(远程桌面,远程文件,SSH等等),一般来说要通过一些转发或者P2P组网软件的帮助。
我有一台计算机位于一个很复杂的局域网中,我想要实现远程桌面和文件访问,目前来看其所处的网络环境很难通过简单的端口映射将其暴露在公网之中,我试过这么几种方法:

  1. 远程桌面使用TeamViewer。可用,但需要访问端也拥有TeamViewer软件,不是很方便,希望能使用Windows自带的远程桌面。且TeamViewer不易实现远程文件访问。
  2. 使用蒲公英VPN软件进行组网,可用,但免费版本网络速度极慢,体验不佳,几乎无法正常使用。
  3. 使用花生壳软件进行DDNS解析,可用,但同第二点所述,免费版本有带宽限制,无法实际使用。
  4. 搭建frp服务器进行内网穿透,可用且推荐,可以达到不错的速度,且理论上可以开放任何想要的端口,可以实现的功能远不止远程桌面或者文件共享。

frp是什么?

1.frp是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务, 支持tcp, udp, http,https等协议类型,并且web服务支持根据域名进行路由转发。
2.frp内网穿透主要用于没有公网IP的用户,实现远程桌面、远程控制路由器、
搭建的WEB、FTP、SMB服务器被外网访问、远程查看摄像头、调试一些远程的API(比如微信公众号,企业号的开发)等。
3.为什么要选择frp?市面上提供内网穿透服务的公司对免费的用户是有限制的,
本站免费提供无限流量、无限域名绑定、不限制网速、不限制连接数的内网穿透服务。

准备工作

搭建一个完整的frp服务链,我们需要:

  1. VPS一台(也可以是具有公网IP的实体机)
  2. 访问目标设备(就是你最终要访问的设备)
  3. 简单的Linux基础(会用cp等几个简单命令即可)

VPS相关

因为frp的原理是利用服务端(所准备的VPS)进行转发,因而VPS的速度直接决定了之后连接的质量,请根据自己的需要选择相应主机配置。

我这里测试使用的是腾讯云4核4G的轻量应用服务器,采用的宝塔Linux面板 7.6.0 腾讯云专享版。

下边开始正式的配置:

1.服务端配置

SSH连接到VPS或者通过宝塔面板终端运行如下命令查看处理器架构,根据架构下载不同版本的frp。

1
arch

enter description here
查看结果,如果是“X86_64“即可选择”amd64”,
运行如下命令,根据架构不同,选择相应版本并进行下载。

1
wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz

enter description here
然后解压

1
tar -zxvf frp_0.42.0_linux_amd64.tar.gz

enter description here
文件夹改个名,方便使用

1
cp -r frp_0.42.0_linux_amd64 frp

把解压出来的文件夹复制到你想要的目录下,这里我放在了/root/frp路径下。

1
cd frp

查看一下文件

1
ls -a

我们只需要关注如下几个文件

1
2
3
4
frps
frps.ini
frpc
frpc.ini

enter description here
前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。
因为我们正在配置服务端,可以删除客户端的两个文件

1
2
3
rm frpc
rm frpc.ini
rm frpc_full.ini

然后修改frps.ini文件

1
vim frps.ini
1
2
3
4
5
6
[common]
bind_port = 7000
dashboard_port = 7500
token = 41f1a553fd725468436eeac92425285f9accbd21e31325575ee27ab1ea928931
dashboard_user = root
dashboard_pwd = admin

如果没有必要,端口均可使用默认值,token、user和password项请自行设置。 “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。

“dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。 “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。 “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。 “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用。

之后我们就可以运行frps的服务端了

1
./frps -c frps.ini

如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。
enter description here
注意:VPS服务器和宝塔面板中需要放行7000、7500等你需要映射的端口段,后续调试用。
enter description here
此时访问服务器ip地址:7500并使用自己设置的用户名密码登录,即可看到仪表板界面。
enter description here

服务端后台运行

至此,我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用 nohup命令将其运行在后台。
nohup后台程序管理或关闭相关命令可自行查询资料,上面这个连接中也有所提及。

1
nohup ./frps -c frps.ini &

输出如下内容即表示正常运行:
enter description here
此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序

1
jobs

enter description here
此时访问服务器ip地址:7500依然可以打开仪表板界面,至此,服务端即设置完成。

关闭frp进程

找到frp进程

1
ps -aux|grep frp| grep -v grep

enter description here
进程号是18066
kill该进程

1
2
# 命令格式:kill -9 <pid>
kill -9 18066

配置systemctl来控制frps

1、创建frps.service

1
sudo vim /lib/systemd/system/frps.service

2、在frps.service里添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/root/frp/frps -c /root/frp/frps.ini

[Install]
WantedBy=multi-user.target

注意”ExecStart=”之后的路径要填写你的frps安装路径(本文以安装到/root/frp/为例)
对应的文件地址:
enter description here
3、使用systemctl命令来控制frps

1
sudo systemctl start frps

服务器开机自动启动frps

1
sudo systemctl enable frps

重启frps

1
sudo systemctl restart frps

停止frps

1
sudo systemctl stop frps

查看日志

1
sudo systemctl status frps

如下图所示,已可以通过systemctl来启动并查看frps的状态
enter description here

2.客户端设置

frp的客户端就是我们想要真正进行访问的那台设备,大多数情况下应该会是一台Windows主机,因而本文使用Windows主机做例子。Linux配置方法类似。 同样地,根据客户端设备的情况选择相应的frp程序进行下载,Windows下下载和解压等步骤不再描述。
假定你下载了“frp_0.42.0_windows_amd64.zip”,将其解压在了C盘根目录下,并且将文件夹重命名为“frp”,可以删除其中的frps和frps.ini、frps_full.ini文件。
下载地址:
https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_windows_amd64.zip
用文本编辑器打开frpc.ini,与服务端类似,内容如下:

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
[common]
server_addr = 你的服务器ip
server_port = 7000
token = 41f1a553fd725468436eeac92425285f9accbd21e31325575ee27ab1ea928931

[web]
type = http
local_port = 29980
custom_domains = 你的服务器ip
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002
[web1]
type = tcp
local_port = 29980
local_ip = 127.0.0.1
remote_port = 29980
[web2]
type = tcp
local_port = 12302
local_ip = 127.0.0.1
remote_port = 12302

其中common字段下的三项即为服务端的设置。
“server_addr”为服务端IP地址,填入即可。
“server_port”为服务器端口,填入你设置的端口号即可,如果未改变就是7000
“token”是你在服务器上设置的连接口令,原样填入即可。

自定义规则

frp实际使用时,会按照端口号进行对应的转发,原理如下图所示:
enter description here
上面frpc.ini的rdp、smb字段都是自己定义的规则,自定义端口对应时格式如下。
“[xxx]”表示一个规则名称,自己定义,便于查询即可。
“type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。
“local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。
“remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。 RDP,即Remote Desktop
远程桌面,Windows的RDP默认端口是3389,协议为TCP,建议使用frp远程连接前,在局域网中测试好,能够成功连接后再使用frp穿透连接。
SMB,即Windows文件共享所使用的协议,默认端口号445,协议TCP,本条规则可实现远程文件访问。
配置完成frpc.ini后,就可以运行frpc了。 frpc程序不能直接双击运行!
使用命令提示符或Powershell进入该目录下

1
cd C:\frp

并执行

1
./frpc -c frpc.ini

运行frpc程序,窗口中输出如下内容表示运行正常。
enter description here

不要关闭命令行窗口,此时可以在局域网外使用相应程序访问 x.x.x.x:xxxx (IP为VPS的IP,端口为自定义的remote_port)即可访问到相应服务。
enter description here
enter description here

客户端后台运行及开机自启

rpc运行时始终有一个命令行窗口运行在前台,影响美观,我们可以使用一个批处理文件来将其运行在后台,而且可以双击执行,每次打开frpc不用再自己输命令了。
在任何一个目录下新建一个文本文件并将其重命名为“frpc.bat”,编辑,粘贴如下内容并保存。

1
2
3
4
5
6
7
8
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd C:\frp
frpc -c frpc.ini
exit

将cd后的路径更改为你的frpc实际存放的目录。
之后直接运行这个 .bat 文件即可启动frpc并隐藏窗口(可在任务管理器中退出)。
enter description here
至于开机启动,把这个.bat文件直接扔进Windows的开机启动文件夹就好了。 至此,客户端配置完成,之后就是你自己根据需要在frpc.ini后追加规则即可。
强烈建议你在使用frp直接测试内网穿透前,先在局域网内测试好相关功能的正常使用,并配置好可能会影响的Windows防火墙等内容,在内网调试通过后再使用frp进行内网穿透测试。

自动启动 frp 服务–使用 systemctl

新建 frp.service 文件

1
sudo nano /lib/systemd/system/frp.service

写入以下内容,注意区分 服务端 和 客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=frp service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
# 服务端
ExecStart=/home/ubuntu/frp/frps -c /home/ubuntu/frp/frps.ini
# 客户端
# ExecStart=/root/frp/frpc -c /root/frp/frpc.ini

[Install]
WantedBy=multi-user.target

使用 systemctl 启动服务

1
2
3
4
5
6
7
8
9
10
# 启动frp
sudo systemctl start frp
# 开机自启动
sudo systemctl enable frp
# 重启
sudo systemctl restart frp
# 停止
sudo systemctl stop frp
# 查看日志
sudo systemctl status frp

enter description here
1.图床选择 最近因为家里人有使用图床的需求,又担心第三方图床跑路导致数据丢失,恰好家里有个威联通NAS,还有公网IP和域名,既然如此,那就动手自建一个图床吧,毕竟开源的图床应用还是有很多的。 一上来就在好几个开源图床间纠结,最终在 https://hostloc.com/thread-988538-1-1.html 找到一个网友投票,那就从众吧,选择了兰空图床。
enter description here
2.创建图床容器 首先我们在威联通中使用FileStation创建一个文件夹用于存放图床的文件内容。
enter description here
然后去docker hub社区搜索兰空图床镜像。
enter description here
找到下载和收藏量最高的镜像,这里大家可以直接拷贝镜像名:halcyonazure/lsky-pro-docker,然后打开威联通上的容器工作站,创建一个容器,填写镜像名,然后点击下一步。
enter description here
在“配置容器”选项页中,先配置一个映射端口,用于我们后续通过Ip和端口访问图床后台页面,只要端口不与其他应用冲突就行。 先别点击下一步,点击左下角的“高级设置”,我们设置下映射目录。
enter description here
选择左侧的“存储”,如下图所示选择“绑定装载主机路径”选项。
enter description here
“主机”路径选择我们一开始在威联通主机上创建的存储文件夹,“容器”路径填写为:/var/www/html,这样做的目的是为了避免容器损坏或重建时图片数据丢失。
enter description here
上述配置完成后,我们点击完成,开始容器创建流程。
enter description here
稍等一小下,如下图所示,容器创建完成。
enter description here
3.初始化设置 我们可以使用http://IP:端口的形式访问兰空图床页面,第一次访问会打开安装设置页面。
enter description here
选择数据库为sqllite,设置管理员账号的邮箱和登录密码。信息设置完成后,点击“立即安装”。
enter description here
如下图所示,初始化安装成功。
enter description here
接下来我们再通过IP:端口的方式进行访问,会打开图片上传页面,我们点击右上角的“登录”选项,使用上面填写的邮箱账号和密码登录后台,进行一系列设置。
enter description here
登录成功后,界面如下所示,有很多管理员设置选项。
enter description here
系统设置里可以修改一系列限制、注册、空间大小等,如果是私人使用,那就关闭注册和游客上传吧。
enter description here
4.设置公网访问 试着上传一张图片,可以得到图片链接,在浏览器访问这个链接就可以看到上传的图片啦。不过这里得到的是内网地址,通过公网是无法访问的,接下来我们使用Nginx Proxy Manager(下文简称NPM)进行反向代理,实现公网访问。
enter description here
我们在NPM中新增域名代理,在Details中设置内网地址和端口。
enter description here
设置SSL访问和证书。
enter description here
还要一步也很重要,在Advanced选项中配置自定义规则,缺少这些配置,会导致页面无法正常显示。
enter description here
代码如下所示,记得修改IP和端口。

1
2
3
4
5
6
7
8
9
10
11
location / {
# We set up the reverse proxy
proxy_pass http://内网IP:端口;
proxy_http_version 1.1;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// $scheme://;
proxy_set_header Host $http_host;
}

接下来去DDNS-GO设置DDNS上报,将我们的域名和IP地址的映射关系上报给域名服务器。上报成功后,会在DNS服务器增加一条规则,后面就可以直接使用域名访问了。
enter description here
如果一切顺利的话,就可以通过域名进行访问啦,因为我关闭了游客上传,所以在没有登录的情况下访问会默认进入登录页,页面如下图所示。
enter description here
如果缺少上面说的NPM自定义规则,访问页面会展示异常,缺少样式文件,如下图所示的异常状态。
enter description here
登录成功后,记得去图床中修改访问网址,改为域名访问,这样上传图片后得到的图片链接就是带域名格式的链接,可以直接在公网访问。
enter description here
还有一点,如果你想对上传的图片进行压缩,或者设置图片的转换格式,可以在角色组中进行设置,如下图所示,我将图片格式设置为webp,将图片保存质量设置为75。
enter description here
5.安装快捷传图工具 如果每次都打开网页上传图片还是挺麻烦的,接下来我们安装一个小工具PicGo,实现图片自动上传和链接拷贝。 PicGo的安装请看我之前的文章,有非常详细的介绍。PicGo安装好之后,我们需要获取兰空图床的token,后面在插件中需要用到。这里我使用的是postman来获取V2版本的token,使用POST访问兰空图床token获取地址,格式为:域名/api/v1/tokens,在Body中使用form-data格式设置email和password,最后点击Send发起请求,拷贝结果中的token信息备用。
enter description here
PicGo安装好之后,我们需要安装兰空图床的插件,可以搜索“lsky”,安装如图所示lankong插件。
enter description here
插件安装成功后,在左侧图床设置下选择“lankong”,编辑相关配置。
enter description here
如下图所示选择V2版本,填写你的域名和token,需要在token前添加 Bearer ,填写完成后点“确定”保存配置信息,注意在token字符串“1”前面有个空格。
enter description here
接下来选择插件左侧的“上传区”,选择刚才编辑的“兰空”图床上传图片测试。
enter description here
上传成功后就可以得到图片链接,如下图所示还会有消息提示。
enter description here
PicGo插件支持快捷键传图,可以实现截图或者复制图片到粘贴板后使用快捷键一键传图,不需要再打开这个工具,非常方便!如果你感兴趣的话,可以看看我之前的图床文章,有详细的介绍。 通过上面的步骤我们就在威联通上安装好了自己的图床应用,并实现快捷传图和公网访问,所有数据一手掌握,从此再也不怕第三方图床跑路啦! 本文使用到的NPM和DDNS-GO在我之前的文章中有详细介绍,如果你没有看过的话,强烈推荐一读!

什么是兰空图床?

为个人站长、开发者、写博文爱好者开发的图床程序,同时可用作网络云相册。

构建镜像

之前有读者给我推荐了兰空图床,既然是好东西当然要折腾一下。
enter description here如果你自己构建镜像,建议用Dockerfile 文件地址:https://github.com/Handsomedoggy/lsky-pro/blob/master/Dockerfile

参考文档中还有一个基于 docker ubuntu:18.04 构建的 Dockerfile

1
2
3
4
5
# 构建镜像
docker build -t wbsu2003/lskypro:v1 .

# 运行容器
docker run --name=lskypro -p 4080:80 -v /var/www/html:/var/www/html wbsu2003/lskypro:v1

安装
数据库
通过 phpMyAdmin 在 MariaDB 5 中新建用户 lsky,创建同名的库 lsky 并授予所有权限。
enter description here

安装镜像

在群晖上以 Docker 方式安装。

在注册表中搜索 lskypro ,选择第二个 wbsu2003/lskypro,版本选择 latest。
enter description here

在 docker 文件夹中,创建一个新文件夹,并将其命名为 lskypro

文件夹 装载路径 备注
/docker/lskypro /var/www/html 主目录

enter description here
端口
端口不能冲突

本地端口 容器端口 类型
4080 80 TCP

enter description here
运行
在浏览器中输入 http://群晖IP:4080,就能看到设置界面,首先是环境检测
enter description here
设置数据库
enter description here
设置管理员账号
enter description here
安装成功
enter description here
网站首页
enter description here
登录进入后台
enter description here

图片鉴黄

和 ImgURL 一样,使用 Moderate Content 提供的 API 来进行图片鉴黄

建议直接看 『 一款简单纯粹的图床ImgURL 』的【图片鉴黄】部分,申请的流程步骤是一样的

复制 API key
enter description here
系统设置 –> 图片鉴黄 –> key,开启图片鉴黄 然后保存即可
enter description here

存储策略

ImgURL 虽然也支持第三方存储,但是需要购买专业版,这一点上兰空没有做限制
enter description here
 不过老苏没有兰空支持的第三方存储,所以没测试,只能直接略过了。只使用本地存储的话可以留空,去首页上传一张试试
enter description here

其他

之前有读者问我 ImgURL 能不能当云盘用,老苏还真没注意,但是 LskyPro 肯定是可以的
enter description here

首先在 允许上传的文件后缀 中增加你要上传的文件类型,再 配合修改最大上传大小 和 用户初始配额容量 就可以了。

下图ߑ祰ᦘ露सꂠzip 文件
enter description here

参考文档

wisp-x/lsky-pro: ☁️兰空图床(Lsky Pro) - Your photo album on the cloud.
地址:https://github.com/wisp-x/lsky-pro

Handsomedoggy/lsky-pro: ☁️兰空图床(Lsky Pro) - Your photo album on the cloud.
地址:https://github.com/Handsomedoggy/lsky-pro

Lsky Pro - Your photo album on the cloud.
地址:https://www.lsky.pro/

简要 · Lsky Pro 使用手册 · 看云
地址:https://www.kancloud.cn/wispx/lsky-pro/880042

Docker搭建lskypro兰空图床
地址:https://foxi.buduanwang.vip/linux/docker/323.html/

0%