个人笔记分享 https://lcl101.cn/ zh-CN 写写代码,做做设计,看看产品 Wed, 22 May 2024 14:26:00 +0800 Wed, 22 May 2024 14:26:00 +0800 树莓派不同玩法 https://lcl101.cn/archives/28/ https://lcl101.cn/archives/28/ Thu, 14 Oct 2021 17:05:00 +0800 lcl101 前言

这里主要整理的自己最近玩树莓派不同方向的各种教程,从基础搭建到当服务器,NAS或者智能家居中控的使用,不管你是小白级别,还是高级​玩家都可以找到适合你的一部分。​

介绍

基础部分NAS智能家具
这部分主要介绍如何搭建系统,配置ssh,wifi等基础功能这部分主要介绍使用树莓派搭建个人nas,文件存储,个人音影系统等这部分主要介绍,树莓派怎么使用homeassistant, homekit等搭建一套智能家具

基础部分

这里会介绍,如何搭建系统,配置wifi,切换镜像源等

企业微信20220329-130909@2x.png

NAS部分

这部分,会讲怎么把你的树莓派配置成一台nas,例如安装omv,安装docker,一些好玩的docker镜像
企业微信20220329-131003@2x.png

智能家具

这里会讲解,怎么配置homeassistant,接入不同的设备,做一些自定义的操作等等
企业微信20220329-131240@2x.png
企业微信20220329-131255@2x.png
mmexport1648530894346.jpg

详细文档地址:

文档地址

后记

希望和我一样有着对技术热爱的同学们,一起学习,共同进步

qq群

欢迎进群讨论:397706381

WechatIMG132.jpeg

]]>
5 https://lcl101.cn/archives/28/#comments https://lcl101.cn/feed/
使用acme.sh自动生成证书,告别三个月证书限制 https://lcl101.cn/archives/185/ https://lcl101.cn/archives/185/ Wed, 22 May 2024 14:26:00 +0800 lcl101 背景

在使用腾讯云或阿里云申请免费证书时,你可能已经注意到,有效期从原来的1年缩短到了3个月。这意味着你需要频繁更换证书,这无疑增加了维护工作量。幸运的是,我们可以使用acme.sh自动生成和更新证书,从此告别手动搬运证书的烦恼。

安装acme.sh

首先,在你的主机系统上安装acme.sh。执行以下命令进行安装:

curl https://get.acme.sh | sh -s email=你的邮箱

并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

获取腾讯云 SecretId 和 SecretKey

新建权限策略

1.进入到访问管理,点击策略

2024-05-22T06:31:17.png

2.点击新建自定义策略,选择按策略语法创建

2024-05-22T06:31:54.png

3.创建空模板,点击下一步

2024-05-22T06:33:31.png

4.将策略语法修改为以下内筒

{
    "statement": [
        {
            "action": [
                "dnspod:DescribeRecordFilterList",
                "dnspod:DescribeRecordList",
                "dnspod:CreateRecord",
                "dnspod:DeleteRecord"
            ],
            "effect": "allow",
            "resource": [
                "*"
            ]
        }
    ],
    "version": "2.0"
}

新建子账号并关联权限策略

1.进入访问管理,进入用户列表页面,点击新建用户,选择快速创建。

2024-05-22T06:33:59.png

2.修改访问方式为编程访问,选择用户权限,仅选择我们刚刚创建的权限,如下图展示。

2024-05-22T06:34:18.png

2024-05-22T06:34:37.png

3.保存SecretId和SecretKey

2024-05-22T06:34:58.png

申请证书

1.将获取到的 SecretId 和 SecretKey 导入环境变量中,以便 acme.sh 调用。

export Tencent_SecretId="<Your SecretId>"
export Tencent_SecretKey="<Your SecretKey>"

2.使用 acme.sh 申请证书,例如:

acme.sh --issue --dns dns_tencent -d 你的域名

运行后,acme.sh 将自动为您的域名申请证书,并将证书文件保存在 ~/.acme.sh/example.com/ 目录下。同时,acme.sh 会为您的域名配置证书的自动续期任务,无需您手动操作。这样一来,您可以省去频繁更新证书的烦恼,享受更加便捷的管理体验。

安装证书

完成申请后请将证书配置到您的网站中,以 Nginx 为例,示例如下:

server {
    listen 443 ssl http2;

    server_name example.com;

    # 请替换为证书实际路径
    ssl_certificate ~/.acme.sh/example.com//key.pem;
    ssl_certificate_key ~/.acme.sh/example.com//cert.pem;

    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
    ssl_prefer_server_ciphers off;
    ssl_prefer_server_ciphers on;
}

问题

在生成证书中可能会遇到timeout情况,重新执行命令就行。

2024-05-22T06:35:32.png

]]>
2 https://lcl101.cn/archives/185/#comments https://lcl101.cn/feed/
第三期 DeviceScript,Nuxt3.5,10 Ways https://lcl101.cn/archives/182/ https://lcl101.cn/archives/182/ Fri, 26 May 2023 11:40:00 +0800 lcl101 DeviceScript

DeviceScript是一款专为低功耗微控制器(Microcontrollers)基础设施提供的型式检测工具,它将编译成特定环境下的独立字节码(Custom Bytecode,CBB),可以在非常有限的环境中运行。

DeviceScript的特性包括:

  1. 可配置性:DeviceScript可以根据用户需求自动调整代码、资源利用率和可靠性;
  2. 可移植性:DeviceScript可以轻松地从Windows到Linux等多种操作系统上移植;
  3. 安全性:DeviceScript采用了严格的权限管理机制,保证了程序的安全性;
  4. 可扩展性:DeviceScript支持多种类型的处理器,如ARM、MIPS、PowerPC等,并且可以通过添加新的处理器类型来增强功能;
  5. 可维护性:DeviceScript提供了丰富的API,可以让开发者更方便地进行二次开发。

更多详情请查看:https://microsoft.github.io/devicescript/

hero-6841bcefb7272a3b78c2650090ff2181.png

Nuxt3.5

2023-05-26T06:04:08.png

这次主要更新的特性如下:

  1. Vue3.3、
  2. Nitropack v2.4
  3. 丰富的 JSON payloads,各种丰富的 JS 类型都支持开箱即用
  4. 交互式服务器组件
  5. 支持环境配置
  6. 全类型化的路由
  7. Bundler 模块解析,支持 subpath 导出的类型
  8. server 类型分离

https://nuxt.com/blog/v3-5

10 Ways I Stay Consistent and Motivated

最近发现篇不错的文章,讲了作者如何在谷歌、高通、一家初创公司找到工作并创办自己的公司的一些心得体会,并总结的10分方法。感兴趣的可以点击下边链接查看。
点击查看详情
2023-05-26T07:25:32.png

]]>
4 https://lcl101.cn/archives/182/#comments https://lcl101.cn/feed/
前端周刊上线拉!!! https://lcl101.cn/archives/179/ https://lcl101.cn/archives/179/ Mon, 22 May 2023 14:31:00 +0800 lcl101 介绍

webweek主要发以个人技术文章和技术周刊为主题的一个网站。支持不同的用户注册发表文章。技术文章主要以原创为主,支持注册用户发布,技术周刊主要搜集前端比较前沿的技术和文章来发表,个人用户也可以发表分了选择周刊即可,不过需要博主来审核。所有文章的发布最终都需要审核的。
技术栈主要由 Nuxt3 + tailwindcss + TypeScript 构成

首页展示:文章部分主要分三块,分类,文章和登录部分

2023-05-22T06:26:02.png

周刊列表:

2023-05-22T06:27:21.png

详情页:可以查看文章内容,还可以进行评论,所有评论也需要进行审核后才会展示。

2023-05-22T06:28:12.png

结尾

这里就是一期的所有功能了,二期首页会加入跟多的分类和文章,顶部导航会加入前端面经,leetcode算法方面的一些展示,欢迎大家来使用。

地址

https://webweek.cn/

]]>
9 https://lcl101.cn/archives/179/#comments https://lcl101.cn/feed/
第二期 Vue3.3,Rollup中文文档,滑动进入动画 https://lcl101.cn/archives/172/ https://lcl101.cn/archives/172/ Fri, 19 May 2023 16:41:00 +0800 lcl101 Vue3.3

此次发布的版本代号为 “Rurouni Kenshin”,此版本专注于改进开发人员体验 - 特别是 SFC 与 TypeScript 的结合使用。与 Vue 语言工具(以前称为 Volar)的 1.6 版本一起,我们解决了将 Vue 与 TypeScript 一起使用时许多长期存在的痛点。

  • 列表项目
  • 泛型组件
  • 在 SFC(单文件组件)中导入外部 TS 类型
  • defineSlots 来定义插槽的类型
  • defineEmits 更便捷的语法
  • defineOptions 定义组件选项
  • (试验性) 响应式的 props 解构
  • (试验性) defineModel 语法糖
  • 废弃 Reactivity Transform

2023-05-19T08:19:04.png

更多详情请查看:https://blog.vuejs.org/posts/vue-3-3

Rollup中文文档

最近发现Rollup突然出中文文档了,这下学习成本又低了,中文地址https://cn.rollupjs.org/
2023-05-19T08:21:00.png

滑动进入动画

最近发现一个博客,进入之后页面进入的动画特别丝滑,这个效果来自 paco.me - Paco Coursey 的作品集。而且这些效果都是css实现的,通过查看paco.me的源码就可以找到。antfu.me这个网站介绍的详细的使用过程,并且他的网站已经全部开发这种效果,喜欢的可以点击查看 https://antfu.me/posts/sliding-enter-animation
效果展示:
ddddd.gif

]]>
3 https://lcl101.cn/archives/172/#comments https://lcl101.cn/feed/
记录一次磁盘IO满负荷性能分析 https://lcl101.cn/archives/167/ https://lcl101.cn/archives/167/ Fri, 12 May 2023 17:07:00 +0800 lcl101 背景

最近自己购买的服务经常死机,ssh都登录不上去,无奈只能重启解决,但是服务器运行一段时间又会出现这样的情况。自己购买的是阿里的服务器,配置低,只有1G的内存。一开是只能登录阿里云后台,看到磁盘io满负载了,只是任务是不是哪个进出了问题,排查了半天也没有找到,后台通过atop查看任务,慢慢的找到的最终的原因。接下来我简单把解决问题的过程描述一下。

atop

我主要通过atop查找到主要原因的。简单介绍一下Atop。Atop是一个开源的跨平台桌面环境,它可以在Windows、macOS和Linux等操作系统上运行。它是由俄罗斯的开发者Igor Sysoev开发的,最初作为一个fork of Qt Creator for Windows。

Atop的主要特点包括:

1.轻量级:Atop使用轻量级的Xlib库,相对于Qt,减小了大量的安装和启动时间。
2.跨平台:Atop可以在Windows、macOS和Linux等操作系统上运行,支持Windows 10应用商店中的所有应用程序,以及部分Linux发行版。
3.直观的界面设计:Atop采用Qt Designer设计界面,提供了直观的用户界面设计工具,可以帮助开发者快速构建出美观的用户界面。
4.高度可定制:Atop提供了高度可定制的主题和布局选项,开发者可以根据自己的喜好自定义界面。
5.代码可维护性:Atop的开发者社区非常活跃,有大量的贡献,这使得Atop的代码非常容易维护。

Kswapd0

Pasted Graphic.png

这张图是自己服务器磁io满载的时候记录的,可以看到kswapd0这个进程占用尽然达到了97%,然后我就去查了kswapd0相关的资料,整了一下。

Kswapd0 是 Linux 内核中的一个高性能、轻量级的工作进程,主要负责将缓存中的页面刷新到磁盘中。它是由 Linux 内核的工作队列 (Work Queue) 系统调用线程创建的。

Kswapd0 通过调用 swap_page_cache() 系统调用来刷新缓存。swap_page_cache() 系统调用会将指定页面的内容写入到磁盘中,并将该页面从缓存中删除。这个过程可以加快页面的访问速度,因为磁盘访问比内存访问速度更快。

Kswapd0 还会定期地检查交换分区中的空闲页面,并将这些空闲页面加入到页面刷新队列中,以便在需要时进行刷新。

总的来说,Kswapd0 是 Linux 内核中非常重要的一个进程,它负责管理内存和磁盘之间的数据交换,以提高系统的性能和响应速度。如果您想了解更多关于 Kswapd0 的信息,可以查看 Linux 内核源代码中的相关文档。

解决这个方案:

  1. 升级配置,添加内存,升级cpu等
  2. 优化服务

如果想省事,升级配置当然可以解决这些问题,但是这不能解决本质问题,我采取的第二种方案,优化我的服务

优化docker项目

当我再次重启服务器的时候,经过观察发现,在doker项目,mysql这个服务,占用的内存在逐渐升高,达到的400多M,并且不会释放空闲的内存,查找了相关的资料显示,可以修改配置来限制mysql容器的占用大小

进入mysql容器后,进入/etc/mysql/conf.d目录后,编辑docker.cnf文件,添加以下内容

performance_schema_max_table_instances=400  
table_definition_cache=400    #缓存
performance_schema=off    #用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源东西
table_open_cache=64    #打开表的缓存
innodb_buffer_pool_chunk_size=64M    #InnoDB缓冲池大小调整操作的块大小
innodb_buffer_pool_size=64M    #InnoDB 存储引擎的表数据和索引数据的最大内存缓冲区大小

重启doker容器
经过两天的观察,mysql容器的占用稳定60M左右

Pasted Graphic.png

磁盘和cpu占用的对比

Screenshot_20230428_102405.jpg

可以很明显看到,已经都降下来,并且这几天都稳定运行。

]]>
9 https://lcl101.cn/archives/167/#comments https://lcl101.cn/feed/
第一期 Qwik Reaches v1.0 https://lcl101.cn/archives/161/ https://lcl101.cn/archives/161/ Fri, 12 May 2023 15:11:00 +0800 lcl101 Qwik

Qwik是一种新型的web框架,它能够以任何规模或复杂度提供即时加载网页应用程序。无论应用程序复杂度如何,您的站点和应用程序都可以启动使用大约1KB的JavaScript(无论其复杂性),并且在规模上实现稳定的性能。

介绍

随着 Web 应用程序变得越来越大,它们的启动性能会下降,因为当前的框架向客户端发送了太多的 JavaScript。保持初始捆绑包的大小在一个小体积范围内,是一场永无止境且的斗争。

Qwik 向用户提供即时应用程序。这是通过保持初始 JavaScript 成本恒定来实现的,即使你的应用程序变得更加复杂,但 Qwik 仅为特定用户交互提供 JavaScript。这确保了无论应用程序有多大,JavaScript 都不会使浏览器过载。最后,预取代码可确保即使在缓慢和间歇性网络上也能实现即时交互。

assets_YJIGb4i01jvw0SRdL5Bt_04e1a9cbc609428fa97f2d46abffaa7d (2).png

主要特性

Qwik 的理念是:确保易于使用的路径也是高性能的路径。这就是为什么,从一开始,Qwik 就解决了以下问题:

开箱即用的用户体验

  • 通过 JavaScript 流实现即时加载:即使应用程序的复杂程度随着时间的推移而增加,也能保持这种状态。
  • 推测性代码获取:在用户需要时准确地提供你需要的代码,以确保即时的用户交互性,即使是在网络不可靠的缓慢移动设备上。
  • 惰性执行:Qwik 的可恢复技术尽可能地推迟浏览器中代码的执行,以保持浏览器主线程的自由和对用户交互的响应。
  • 优化渲染时间:Qwik 是响应式的,也就是说,在默认情况下,它只更新绝对需要的东西。
  • 数据获取:从服务器开始获取数据,以防止 “瀑布” 式延迟。

开发者体验

  • 类似于 JSX
  • 基于目录的路由:用基于目录的路由创建网站,这是一种行业首选的声明路由的方式。
  • 一流的数据访问:Qwik 数据加载器和表单操作让你轻松访问服务器数据,并具有 100% 的端到端类型安全和用户输入验证功能。
  • 中间件:以可移植方式声明中间件逻辑,能够部署到所有主要的托管提供商。
  • 统一的执行模型:有了 Qwik,编写前端和后端代码时就会自然而然地在一个应用程序代码库和类型安全中结合起来。默认情况下,Qwik 应用程序在服务器和浏览器中执行,但很容易将函数固定为始终是服务器( server$() )(或始终是浏览器)。

更多详情请查看:https://www.builder.io/blog/qwik-v1

]]>
2 https://lcl101.cn/archives/161/#comments https://lcl101.cn/feed/
睡后收入(无人直播) https://lcl101.cn/archives/157/ https://lcl101.cn/archives/157/ Wed, 29 Mar 2023 18:57:00 +0800 lcl101

你刷到过播放电影的这种频道么?

你知不知道很多做直播带货的主播,其实在睡觉,直播的人是他的分身么?

你好奇过这种直播是怎么赚钱,他们的盈利方式是什么样么?

什么是无人直播:

无人直播是一种自动化、智能化的直播方式,其运作过程不需要人工干预或仅仅需要非常少量的人工干预。相对于传统的人工直播模式,无人直播更加智能、高效、稳定和节省人力成本。具体来说,无人直播通过将摄像头、麦克风、主机、人工智能等技术设备集成在一起,实现了直播内容的自动生成、发布以及分发等功能,不需要直播员现场控制,而是通过算法和预设的规则智能化地进行直播,从而实现了自动化直播。同时,无人直播还有着更高的直播覆盖率和更好的直播质量。无人直播被广泛应用于各种应用场景,如电商直播、房地产直播、景区直播、体育赛事直播等。

为什么要做无人直播:

做无人直播主要是因为随着科技的发展,人工智能技术、自动化技术等先进技术逐渐成熟,让我们可以更加智能地管理业务,提高工作效率。此外,无人直播可以为企业、机构、个人提供更加便捷、高效、安全的直播服务,让他们更好地宣传品牌、增加销售额、吸引更多客户。同时,无人直播还可以提高直播的稳定性和可靠性,减少人工干预导致的差错和错误,从而更好地满足用户的需求,实现商业价值。总之,无人直播是一种符合科技发展趋势、提高工作效率和商业价值的好方式。

如何实现无人直播

我这里以推流b站为例来做简单介绍,其他平台原理都是一样的。

准备工具,服务器一台或者笔记本一台。

环境搭建

ffmpeg安装,我这里用的是centos搭建的,其他平台可以自己百度。

yum -y install wget

wget --no-check-certificate https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.0.3-64bit-static.tar.xz

tar -xJf ffmpeg-4.0.3-64bit-static.tar.xz

cd ffmpeg-4.0.3-64bit-static

mv ffmpeg /usr/bin && mv ffprobe /usr/bin && mv qt-faststart /usr/bin && mv ffmpeg-10bit /usr/bin

b站开启直播

进入直播,点击开播设置,设置分类,房间名称,开启直播

2023-03-29T10:55:35.png

生成rtmp推流地址和串流密匙。这两个会在推流中使用。

ffmpeg推流

我这里在当前目录中放置了一个demo.mp4的视屏文件。

通过命令推流的示例:

ffmpeg -re -stream_loop -1 -i "test.mp4" -c copy -f flv "${rtmp}"

只需要将rtmp替换为你的推流地址就行。

如果没什么问题,打开b站直播地址就可以看到你的推流视屏。

企业微信20230329-150632.png

这里是我的直播间测试地址:http://live.bilibili.com/26701920

]]>
2 https://lcl101.cn/archives/157/#comments https://lcl101.cn/feed/
如何优雅的使用ipv6穿透内网 https://lcl101.cn/archives/154/ https://lcl101.cn/archives/154/ Mon, 27 Feb 2023 18:24:00 +0800 lcl101 背景

随着ipv6的普及,家庭宽带已经全面支持ipv6,通过简单的设置就可以让自己的内网设备获取到ipv6地址。不过这里的ipv6地址也不是固定,会定期的变化,不过通过DDNS可以解决这个问题。但是这样会暴露一个问题,就是处理你自己,其他人也可以通过你的ip地址来访问到你的设备,这样及其的不安全,那么如何做到只让自己访问,别人看不到的了?接下来,我会慢慢介绍。

ufw

这里加单引入一个防火墙管理工具ufw。为后边做准备

ufw简介

ufw( 简单防火墙(Uncomplicated FireWall) )真正地简化了 iptables,它从出现的这几年,已经成为 Ubuntu 和 Debian 等系统上的默认防火墙。而且 ufw 出乎意料的简单,这对新管理员来说是一个福音,否则他们可能需要投入大量时间来学习防火墙管理。

安装

Ubuntu & Debian

apt-get install ufw -y

常用命令

# 启用
sudo ufw enable
# 开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)
sudo ufw default deny
# 关闭
sudo ufw disable
# 查看防火墙状态
sudo ufw status
#开启/禁用相应端口或服务举例
sudo ufw allow 80 允许外部访问80端口
sudo ufw delete allow 80 禁止外部访问80 端口
sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口
sudo ufw deny smtp 禁止外部访问smtp服务
sudo ufw delete allow smtp 删除上面建立的某条规则
接下来介绍如何安全的访问自己的内网环境

ufw设置

首先开启ufw,并且关闭所有外部对本机的访问,然后只开启一个UDP端口。设置命令:

sudo ufw enable
sudo ufw default deny
sudo ufw delete allow 9000
# 关闭ipv4的9000端口
sudo ufw deny from 0.0.0.0/0 to any port 9000

这样我们就只放了一个udp为9000的端口。

使用wireguard来访问自己的内网环境

关于如何使用wireguard,可以参考我的另一个文章, wireguard组建一个内网环境!

由于wireguard时使用upd端口开组网的,所以我们上边只开放了一个9000的UDP端口。接下来,我们只需要将每一个设备,通过wireguard组网后,就可以直接访问到我们的内网环境。如果需要和在内网环境一样访问,需要在将访问的ip地址加入到AllowedIPs中即可

]]>
0 https://lcl101.cn/archives/154/#comments https://lcl101.cn/feed/
Seafile开启WebDAV服务,用于Joplin笔记同步 https://lcl101.cn/archives/146/ https://lcl101.cn/archives/146/ Mon, 11 Jul 2022 13:29:00 +0800 lcl101 前言

最近发现一款开源的笔记本软件Joplin,自己用了几天发现真的挺方便的,还可以配合浏览器插件一起使用,真的是一件记笔记的神器。最早自己是使用熊掌记来记笔记的,但想使用他的同步服务,每月需要交$1.49,不是很划算。后来自己开始玩服务器,搭建了自己的NAS,自己搭建了seafile文件服务器,本地使用Typora来记笔记,文件直接挂载在seafile同步文件夹下边,也算实现各个设备之间的同步使用,不过感觉不是很完美。现在开始使用了Joplin,在真正实现完美的笔记同步。
这篇文章主要记录下,自己如何实现Seafile实现joplin笔记同步和joplin配合浏览器插件的使用方法。

seafile开发webdav服务

1.修改SeafDAV配置文件

文件位置/seafile/seafile-data/seafile/conf,这里是我的存放位置,修改seafdav.conf文件

[WEBDAV]
enabled = true
port = 8080
share_name = /seafdav

2.修改nginx配置,如果没有配置nginx可以不用管这里,正常保持默认就行

 fastcgi_pass    127.0.0.1:8080;
 fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
 fastcgi_param   PATH_INFO           $fastcgi_script_name;

 fastcgi_param   SERVER_PROTOCOL     $server_protocol;
 fastcgi_param   QUERY_STRING        $query_string;
 fastcgi_param   REQUEST_METHOD      $request_method;
 fastcgi_param   CONTENT_TYPE        $content_type;
 fastcgi_param   CONTENT_LENGTH      $content_length;
 fastcgi_param   SERVER_ADDR         $server_addr;
 fastcgi_param   SERVER_PORT         $server_port;
 fastcgi_param   SERVER_NAME         $server_name;

 client_max_body_size 0;

3.添加docker映射端口

2022-07-11T04:56:53.png
重新构建你的docker服务,我这里是通过docker-compose构建的,执行docker-compose up -d即可。

4.测试webdav服务是否开成功

在浏览器打开你的服务地址,http:[ip]:8810/seafdav,我docker将8080映射为8810,这里填写你自己的映射端口就行
如果没有什么问题,这里会出现登录界面,填入你seafile的用户名和密码就能正常登录的,到这里webdav测试完毕
2022-07-11T05:00:47.png

Joplin添加webdav服务

关于app下载和安装太过简单,这里就不介绍了
安装完成后,打开设置,找到同步选项,填入你的地址,用户名,密码,然后检测通过,保存就可以了。
2022-07-11T05:03:33.png

手机端Joplin添加webdav服务

手机端,在配置中,填入服务器地址,用户名密码,就可以了
2022-07-11T05:05:06.png

开启网页剪辑器插件

在谷歌浏览器中添加Joplin Web Clipper插件
2022-07-11T05:06:09.png
在Joplin客户端启用网页剪辑器服务,
2022-07-11T05:07:02.png
启用完成后,在浏览器插件中会出现下面提示
2022-07-11T05:08:53.png
需要回到Joplin客户,添加授权
2022-07-11T05:09:18.png
批准授权即可

网页剪辑器使用

比如你在找到一篇不错的文章想保存下载,并且同步到服务器,通过Joplin可以一键实现改功能,
打开Joplin插件,点击clip simplified page之后再点击confirm
2022-07-11T05:11:57.png
回到Joplin客户端,你会发现文章已经自动下载你的,客户端本地了
2022-07-11T05:15:28.png

小结

关于seafile开发webdav,和Joplin的使用就介绍到这里,如果你有发现跟有趣的玩法,欢迎来我的这里留言

]]>
0 https://lcl101.cn/archives/146/#comments https://lcl101.cn/feed/
Docker搭建Typecho博客 https://lcl101.cn/archives/133/ https://lcl101.cn/archives/133/ Mon, 13 Jun 2022 12:34:00 +0800 lcl101 前言

主要讲解如何通过docker来搭建Typecho,希望能帮助到一部分人,快速的搭建自己的博客。

安装Docker

# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装docker
yum install -y docker-ce

# 设置开机启动
systemctl enable docker

# 启动 Docker
systemctl start docker

# 查看版本
docker version

安装docker-compose

要下载并安装Compose standalone,并且运行
curl -SL https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
添加软连
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

构建Typecho镜像

创建docker-compose.yml文件

version: "3"

services:
  nginx:
    image: nginx
    ports:
      - "80:80"
      - "443:443"
    restart: always
    volumes:
      - ./typecho:/var/www/html
      - ./ssl:/var/www/ssl
      - ./nginx:/etc/nginx/conf.d
    depends_on:
      - php
    networks:
      - web
    extra_hosts:
      - ray.docker:172.17.0.1

  php:
    image: tsund/php:7.2.3-fpm
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - ./typecho:/var/www/html
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - mysql
    networks:
      - web

  mysql:
    image: mysql:5.7
    container_name: mysql
    restart: always
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/logs:/var/log/mysql
      - ./mysql/conf:/etc/mysql/conf.d
    env_file:
      - mysql.env
    networks:
      - web

networks:
  web:

映射的路径改成自己服务器的路径
执行docker-compose up -d 拉取和构建镜像

配置nginx

server {
    listen       80;
    server_name  lcl101.cn;
    rewrite ^(.*) https://lcl101.cn$1 permanent;
}

server {
    listen 443 ssl;
    server_name  lcl101.cn;

    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/typecho_access.log main;

    ssl_certificate /var/www/ssl/7439521_lcl101.cn.pem;
    ssl_certificate_key /var/www/ssl/7439521_lcl101.cn.key;
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
    }

    location ~ .*\.php(\/.*)*$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
}

初始化设置

2022-06-13T03:56:18.png

进入首页

2022-08-02T08:18:07.png

通过phpmyadmin来访问数据库

由于我们使用的是docker搭建的可以,所以phpmyadmin搭建需要使用docker内部网路。
使用docker network ls查看我们博客的网络名称
2022-08-02T08:19:55.png
搭建命令

docker run --name phpmyadmin -d --link mysql -e PMA_HOST="mysql" --net blog_typecho_web -p 6061:80 phpmyadmin/phpmyadmin

访问phpmyadmin

访问地址:http:[ip]:6061
2022-08-02T08:22:54.png
登录完成既可以看到你的数据库了
2022-08-02T08:24:05.png

]]>
2 https://lcl101.cn/archives/133/#comments https://lcl101.cn/feed/