普通视图

发现新文章,点击刷新页面。
昨天以前邓先生工作室

网站防扒JS代码合集

2024年9月18日 08:31

禁用右键菜单
1、右键无任何反应

第一种

document.oncontextmenu = new Function("return false;"); 

第二种

 
document.oncontextmenu = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

2.弹窗提示并变成空白页

document.onmousedown = function mdClick(event) {
    var e = event || window.event || arguments.callee.caller.arguments[0];
    if (e.button == 2 || e.button == 3) {
        alert("呵呵");
        //不建议用以下方法,易错率大
        window.location = 'about: blank';
    }
}

禁止F12审查元素
1、按F12无任何反应

document.onkeydown = function(){
  if(window.event && window.event.keyCode == 123) {    
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n请使用Del键进行字符的删除操作!");
    window.event.returnValue=false;
  }
}

2、按F12弹窗提示

document.onkeydown = function(){
  if(window.event && window.event.keyCode == 123) {
    alert("F12被禁用");
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n请使用Del键进行字符的删除操作!");
    window.event.returnValue=false;
  }
}

3、按F12空白页

第一种

function mAlert() {
    var fn = function () {};
    fn.toString = function () {
        window.location = 'about: blank';
        console.log("呵呵");
    }
    console.log("%c", fn);//请不要删除这行
};mAlert();

第二种

document.onkeydown = function(){
  
  if(window.event && window.event.keyCode == 123) {
    window.location="about:blank"; //将当前窗口跳转置空白页
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n请使用Del键进行字符的删除操作!");
    window.event.returnValue=false;
  }
}

4、按F12关闭当前窗口

document.onkeydown = function(){
  
  if(window.event && window.event.keyCode == 123) {
    window.close(); //关闭当前窗口(防抽)
    event.keyCode=0;
    event.returnValue=false;
  }
  if(window.event && window.event.keyCode == 13) {
    window.event.keyCode = 505;
  }
  if(window.event && window.event.keyCode == 8) {
    alert(str+"\n请使用Del键进行字符的删除操作!");
    window.event.returnValue=false;
  }
}

禁止复制
document.oncopy = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if(!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
}catch (e){
return false;
}
}

禁止选中
document.onselectstart = function (event){
if(window.event){
event = window.event;
}try{
var the = event.srcElement;
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")){
return false;
}
return true;
} catch (e) {
return false;
}
}

禁止Ctrl+S网页另存为
 document.onkeydown = function(){
    //禁止ctrl+s
  if (event.ctrlKey && window.event.keyCode==83){
  return false;
  }
  }

本代码不能100%防止网页被扒 

解决蓝奏网盘分享apk等文件需要会员问题

2024年9月10日 09:25

蓝奏云久前就出了新规则,分享apk文件需要会员用户才能访问下载,手机端需要会员访问,也就是说非蓝奏会员用户分享apk文件,用户在手机端打开无法下载文件。

今天教你一招解决!

相信以后,这种软件学习资料下载问题可以解决!或者得到一点其他思路!

方法一
换个(含电脑模式)浏览器,换成电脑模式下打开,例如: X浏览器,via浏览器,kiwi browser浏览器等等。

方法二
链接中 添加/tp/ 不用切换电脑模式,方便下载。

例如:

http://xiaoluo.lanzou.com/xxxxx 打不开

替换成:

http://xiaoluo.lanzou.com/tp/xxxxx 就可以打开

原理:

直接在链接中添加 /tp/ 让链接处于电脑模式打开方式!

方法三
我们知道路由和云端解析服务器是有可以有其他路径可以解析出来的,因此我们还可以通过云端解析接口,直接提取直链接!

解析接口API直链接:

https://api.suxun.site/api/lanzou?url=

+蓝奏云分享链接网址+(&pwd=密码)&type=down

有密码例如:

https://api.suxun.site/api/lanzou?url=https://lanzoui.com/i1Pah29iv6lc&pwd=1111&type=down

蓝色标识是链接,红色标识是密码

无密码:

https://api.suxun.site/api/lanzou?url=https://lanzoui.com/iUqUl29itr6g&type=down

目前国内可用Docker镜像加速器(2024-08)

2024年8月23日 15:27

国内经常使用Docker的朋友,可能都会涉及到配置镜像源的操作,来加速自己的镜像拉取。然而这段时间陆续发现曾经常用的国内镜像站(各种云商和高校镜像站)现在已经不能用了,搜索一番之后,找到可用镜像站或者镜像加速地址,并测试后汇总如下,使用前请自行斟酌。

Docker 镜像加速列表(截止到20240809)

注意有些镜像站仅包含基础镜像或白名单镜像,如果一个加速地址拉不到需要的镜像,可切换其他地址尝试。
镜像加地址
https://docker.registry.cyou
https://docker-cf.registry.cyou
https://dockerpull.com
https://dockerproxy.cn
https://docker.1panel.live
https://hub.rat.dev
https://docker.anyhub.us.kg
https://docker.chenby.cn
https://dockerhub.icu
https://docker.awsl9527.cn
https://dhub.kubesre.xyz
https://docker.hlyun.org
https://docker.m.daocloud.io

配置方式1:临时使用

直接拿镜像域名拼接上官方镜像名,例如要拉去镜像 yidadaa/chatgpt-next-web,可以用下面写法:

docker pull dockerpull.com/yidadaa/chatgpt-next-web

配置方式2:长久有效

Ubuntu 16.04+、Debian 8+、CentOS 7+

修改文件 /etc/docker/daemon.json(如果不存在则需要创建创建,注意不要写入中文),并重启服务。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://dockerpull.com",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.awsl9527.cn"
    ]
}
EOF
sudo systemctl daemon-reload && sudo systemctl restart docker

可直接使用docker pull拉去镜像进行测试,或用以下命令检查是否生效:

docker info

测试

未使用加速地址之前拉镜像:


使用之前


使用之后是这样的:


使用之后


发布于 2024-08-09 18:36・IP 属地浙江


WPS Office 2023 v12.8.2.17838

2024年8月17日 14:14

软件介绍

WPS Office 2023专业版(金山WPS企业版)WPS2023为你打造新一代办公环境,可以轻松快速访问各类办公服务.WPS2023专业版是一款国产免费办公软件,全面涵盖了文字处理,电子表格,演示文稿,PDF文档.提供强大插件平台支持,免费提供海量在线存储空间及文档模板,兼容所有微软Office格式,支持所有平台跨设备云同步.

软件截图

微信截图_20240816235611.jpg

版本特点

WPS2023专业增强版:免激活、去水印、永久授权、完整功能优化增强版

1. 基于官方WPS2023专业版打包,自动调用安装脚本写入终身授权序列号

﹂序列号采用博湖县政府专用版: TJ3GN-9NTGQ-GLF7C-YEN8X-TJWML

2. 集成VBA组件、终身授权序列号、安装完毕即WPS永久激活专业增强版

3. 去广告优化、去我的电脑WPS云盘、保留登陆和云同步

﹂去界面左侧:日历、WPS便签、会议、统计表单 (广告)

﹂去应用中心:分享协作功能网页入口(会议、统计表单)

﹂彻底去升级:无版本更新提示,检查更新永远都是最新版

4. 安装过程自动剔除桌面和我的电脑WPS云盘虚拟盘符入口

5. 安装过程自动删除升级组件并清除检查升级的计划任务项



下载地址:WPS2023

Alist V3 使用中的常见问题

2024年6月18日 15:53

前言

本页面纪录一些Alist中经常看到的一些问题..

常见问题总结

1. 刚搭建好Alist打开进去就这样是怎么回事?



这是刚搭建好还没挂载网盘,你去下面登录然后去后台添加一个账号挂载一个网盘就行

2. 怎么刷新应用?为什么我网盘上传后Alist没更新?

登录管理员账号的前提下,右下角就能刷新了.

如果在首页刷新不行,去你有变动的哪个文件夹里面刷新

3. 怎么打开 Alist 提示 System error: TypeError:n.replaceAll is not a function?



现在安装的应该没了已经默认添加进去了帮你,如果你的还提示这样的那么去后台,自定义头部里面添加如下代码即可

<!--Alist V3建议添加的,已经默认添加了,如果你的没有建议加上-->
<script src="https://polyfill.io/v3/polyfill.min.js?features=String.prototype.replaceAll"></script>

这个 polyfill.min.js 如果觉的加载慢,可以试试这个点击这里查看如何更换

4. 怎么首次打开强制默认白天或者夜间模式

不是很好用现在,不推荐使用,可以尝尝怎么样不建议实装~


把代码放到自定义头部内或者自定义内容里面任意位置都行.



白天    <script>window.onload=function(){localStorage.setItem("hope-ui-color-mode","light")}</script>
夜晚       <script>window.onload=function(){localStorage.setItem("hope-ui-color-mode","dark")}</script>


Alist V3 自定义内容代码

2024年6月18日 15:43

自定义内容内代码

<!--延迟加载-->
<!--如果要写自定义内容建议都加到这个延迟加载的范围内-->
<div id="customize" style="display: none;">
    <div>
		<!--音乐播放器-->
        <meting-js fixed="true" autoplay="false" theme="#409EFF" list-folded="true" auto="QQ音乐或者网易云的链接"></meting-js>
		
		<!--评论模块还有下面的script也是-->
		<center>
			<div class="newValine" id="vcomments"></div>
		</center>
		<script>
			new Valine({
				visitor: true,
				el: '#vcomments',
				avatar: 'wavatar',
				appId: 'Your appId',
				appKey: 'Your appKey',
				placeholder: "有什么问题欢迎评论区留言~么么哒"
			}) 
		</script>

        <br />
        <center class="dibu">
            <div style=" line-height: 20px;font-size: 9pt;font-weight: bold;">
                <span>
                    "
                    <span style="color: rgb(13, 109, 252); font-weight: bold;" id="hitokoto">
                        <a href="#" id="hitokoto_text">
                            "人生最大的遗憾,就是在最无能为力的时候遇到一个想要保护一生的人."
                        </a>
                    </span> "
                </span>
                <p style="margin-left: 10rem;font-size: 8pt;">
                    <small>
                        —— Anwen's Cloud
                    </small>
                </p>
            </div>

            <div style="font-size: 13px; font-weight: bold;">
                <span class="nav-item">
                    <a class="nav-link" href="xxxxxxxxxx"
                        target="_blank">
                        <i class="fab fa-qq" style="color:#409EFF" aria-hidden="true">
                        </i>
                        QQ |
                    </a>
                </span>
                <span class="nav-item">
                    <a class="nav-link" href="mailto:xxxxx@foxmail.com" target="_blank">
                        <i class="fa-duotone fa-envelope-open" style="color:#409EFF" aria-hidden="true">
                        </i>
                        邮箱 |
                    </a>
                </span>
                <span class="nav-item">
                    <a class="nav-link" href="xxxxxx" target="_blank">
                        <i class="fas fa-edit" style="color:#409EFF" aria-hidden="true">
                        </i>
                        博客 |
                    </a>
                </span>
                <span class="nav-item">
                    <a class="nav-link" href="xxxxxxxx" target="_blank">
                        <i class="fas fa-comment-lines" style="color:#409EFF;" aria-hidden="true">
                        </i>
                        留言 |
                    </a>
                </span>
                <span class="nav-item">
                    <a class="nav-link" href="xxxxxxx" target="_blank">
                        <i class="fa fa-cloud-download" style="color:#409EFF;" aria-hidden="true">
                        </i>
                        云盘 |
                    </a>
                </span>
                <!--后台入口-->
                <span class="nav-item">
                    <a class="nav-link" href="/@manage" target="_blank">
                        <i class="fa-solid fa-folder-gear" style="color:#409EFF;" aria-hidden="true">
                        </i>
                        管理 |
                    </a>
                </span>
                <!--版权,请尊重作者-->
                <span class="nav-item">
                    <a class="nav-link" href="https://github.com/Xhofe/alist" target="_blank">
                        <i class="fa-solid fa-copyright" style="color:#409EFF;" aria-hidden="true">
                        </i>
                        Alist
                    </a>
                </span>
				<br />
				<!--添加一个访问量-->
				<span>
                    本"<span style="color: rgb(13, 109, 252); font-weight: bold;"><a href="#">目录</a></span>"访问量 <span id="busuanzi_value_page_pv" style="color: rgb(13, 109, 252); font-weight: bold;"></span> 次 本站总访问量 <span id="busuanzi_value_site_pv" style="color: rgb(13, 109, 252); font-weight: bold;"></span>                次 本站总访客数 <span id="busuanzi_value_site_uv" style="color: rgb(13, 109, 252); font-weight: bold;"></span> 人
                </span>
                <br />
				<!--添加备案信息-->
                <span class="nav-item">
                    <a class="nav-link" href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">
                        <i class="fa-solid fa-shield-check" style="color:#409EFF;" aria-hidden="true">
                        </i>
                        冀 ICP备2222000777号
                    </a>
                </span>
            </div>
        </center>
        <br />
        <br />
    </div>



    <!--一言API-->
    <script src="https://v1.hitokoto.cn/?encode=js&select=%23hitokoto" defer></script>
<!--延迟加载范围到这里结束-->
</div>
<!--延迟加载配套使用JS-->
<script>
    let interval = setInterval(() => {
        if (document.querySelector(".footer")) {
            document.querySelector("#customize").style.display = "";
            clearInterval(interval);
        }
    }, 200);
</script>

<!-- 渐变背景初始化,如果要使用渐变背景把下面的那一行注释去掉即可-->
<!-- 下面的几行都是渐变的一套,自定义头部内还有一个关联的自定义CSS -->
<!--<canvas id="canvas-basic"></canvas> -->
<script src="https://npm.elemecdn.com/granim@2.0.0/dist/granim.min.js"></script>
<script>
var granimInstance = new Granim({
    element: '#canvas-basic',
    direction: 'left-right',
    isPausedWhenNotInView: true,
    states : {
        "default-state": {
            gradients: [
                ['#a18cd1', '#fbc2eb'],
                 ['#fff1eb', '#ace0f9'],
                 ['#d4fc79', '#96e6a1'],
                 ['#a1c4fd', '#c2e9fb'],
                 ['#a8edea', '#fed6e3'],
                 ['#9890e3', '#b1f4cf'],
                 ['#a1c4fd', '#c2e9fb'],
                 ['#fff1eb', '#ace0f9']
           
            ]
        }
    }
});
</script>



网页点击鼠标特效(两个)

<!-- 网页鼠标点击特效 - 核心价值观关键字 -->
<script>
    (function () {
        var a_idx = 0;
        window.onclick = function (event) {
            var a = new Array("❤富强❤", "❤民主❤", "❤文明❤", "❤和谐❤", "❤自由❤", "❤平等❤", "❤公正❤", "❤法治❤", "❤爱国❤",
                "❤敬业❤", "❤诚信❤", "❤友善❤");
            var heart = document.createElement("b"); //创建b元素
            heart.onselectstart = new Function('event.returnValue=false'); //防止拖动

            document.body.appendChild(heart).innerHTML = a[a_idx]; //将b元素添加到页面上
            a_idx = (a_idx + 1) % a.length;
            heart.style.cssText = "position: fixed;left:-100%;"; //给p元素设置样式

            var f = 13, // 字体大小
                x = event.clientX - f / 2 - 30, // 横坐标
                y = event.clientY - f, // 纵坐标
                c = randomColor(), // 随机颜色
                a = 1, // 透明度
                s = 0.8; // 放大缩小

            var timer = setInterval(function () { //添加定时器
                if (a <= 0) {
                    document.body.removeChild(heart);
                    clearInterval(timer);
                } else {
                    heart.style.cssText = "font-size:16px;cursor: default;position: fixed;color:" +
                        c + ";left:" + x + "px;top:" + y + "px;opacity:" + a + ";transform:scale(" +
                        s + ");";

                    y--;
                    a -= 0.016;
                    s += 0.002;
                }
            }, 15)
        }
        // 随机颜色
        function randomColor() {
            return "rgb(" + (~~(Math.random() * 255)) + "," + (~~(Math.random() * 255)) + "," + (~~(Math
                .random() * 255)) + ")";
        }
    }());
</script>
<!-- 网页鼠标点击特效 - 爱心 -->
<script type="text/javascript">
         ! function (e, t, a) {
            function r() {
                for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[
                        e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = "left:" + s[e].x +
                    "px;top:" + s[e].y + "px;opacity:" + s[e].alpha + ";transform:scale(" + s[e].scale + "," + s[e]
                    .scale + ") rotate(45deg);background:" + s[e].color + ";z-index:99999");
                requestAnimationFrame(r)
            }
            function n() {
                var t = "function" == typeof e.onclick && e.onclick;
                e.onclick = function (e) {
                    t && t(), o(e)
                }
            }
 
            function o(e) {
                var a = t.createElement("div");
                a.className = "heart", s.push({
                    el: a,
                    x: e.clientX - 5,
                    y: e.clientY - 5,
                    scale: 1,
                    alpha: 1,
                    color: c()
                }), t.body.appendChild(a)
            }
 
            function i(e) {
                var a = t.createElement("style");
                a.type = "text/css";
                try {
                    a.appendChild(t.createTextNode(e))
                } catch (t) {
                    a.styleSheet.cssText = e
                }
                t.getElementsByTagName("head")[0].appendChild(a)
            }
 
            function c() {
                return "rgb(" + ~~(255 * Math.random()) + "," + ~~(255 * Math.random()) + "," + ~~(255 * Math
                    .random()) + ")"
            }
            var s = [];
            e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e
                .mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || function (e) {
                    setTimeout(e, 1e3 / 60)
                }, i(
                    ".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"
                ), n(), r()
        }(window, document);
    
</script>

音乐播放器添加说明

核心代码(记得引用头部内的喔~)

<meting-js fixed="true" autoplay="false" theme="#409EFF" list-folded="true" auto="https://y.qq.com/n/yqq/playlist/7927599544.html"></meting-js>


腾讯QQ音乐

我使用的是上面这个链接~这个链接怎么获取呢来看图

  1. https://y.qq.com/n/ryqq/profile/create

  2. 点击这个歌单后我们能看到 这个歌单的链接是 :https://y.qq.com/n/ryqq/playlist/7927599544

  3. 然后我们复制最后的那一串数字 7927599544

  4. 然后回到 https://y.qq.com/n/yqq/playlist/7927599544.html 这个链接里面把里面的数字ID替换成你的即可使用。

网易云音乐

音乐播放器要是添加的话需要如下三个参数才行,QQ音乐好像不需要这么多参数哈哈...

<meting-js 
  server="netease" 
  type="playlist" 
  id="60198">
</meting-js>

进入网易云音乐,然后找到你想听的歌单进去,然后看到顶部链接地址栏里面有一串ID,填进代码里面

可以参下除了最下面三个需要加的参数我还添加了跟QQ音乐一样的几个参数


<meting-js 
    fixed="true" 
    autoplay="false" 
    theme="#409EFF" 
    list-folded="true" 
    server="netease" 
    type="playlist" 
    id="2195404116">
  </meting-js>

一键复制拿去用即可.

<meting-js fixed="true" autoplay="false" theme="#409EFF" list-folded="true" server="netease" type="playlist" id="2195404116"></meting-js>

name,artist,这俩是啥不说了自己研究吧

url 肯定是你要添加的音乐链接,cover封面呗~嘿嘿嘿

加上歌词

<meting-js
	name="rainymood"
	artist="rainymood"
	url="https://rainymood.com/audio1110/0.m4a"
	cover="https://rainymood.com/i/badge.jpg"
	fixed="true">
	<pre hidden>
		[00:00.00]This
		[00:04.01]is
		[00:08.02]lyric
	</pre>
</meting-js>

                                                                                                                                                                         


pre hidden里面的格式就是歌词~这样就能看到歌词啦,自己掐好时间点儿就行~

音乐的一些其他参数

option

default

description

id

require

song id / playlist id / album id / search keyword

server

require

music platform: netease, tencent, kugou, xiami, baidu

type

require

song, playlist, album, search, artist

auto

options

music link, support: netease, tencent, xiami

fixed

false

enable fixed mode

mini

false

enable mini mode

autoplay

false

audio autoplay

theme

#2980b9

main color

loop

all

player loop play, values: 'all', 'one', 'none'

order

list

player play order, values: 'list', 'random'

preload

auto

values: 'none', 'metadata', 'auto'

volume

0.7

default volume, notice that player will remember user setting, default volume will not work after user set volume themselves

mutex

true

prevent to play multiple player at the same time, pause other players when this player start play

lrc-type

0

lyric type

list-folded

false

indicate whether list should folded at first

list-max-height

340px

list max height

storage-name

metingjs

localStorage key that store player setting

机翻的(凑合看
选项
默认
描述
ID
要求
歌曲ID/播放列表ID/专辑ID/搜索关键字
服务器
要求
音乐平台:netease,tencent,kugou,xiami,baidu
类型
要求
song,playlist,album,search,artist
汽车
选项
音乐链接,支持netease,,,tencentxiami
固定的
false
启用固定模式
小型的
false
开启迷你模式
自动播放
false
音频自动播放
主题
#2980b9
主色
环形
all
播放器循环播放,值:'all'、'one'、'none'
命令
list
播放器播放顺序,值:'list','random'
预载
auto
值:“无”、“元数据”、“自动”
体积
0.7
默认音量,注意播放器会记住用户设置,用户自己设置音量后默认音量将失效
互斥体
true
防止同时播放多个播放器,当该播放器开始播放时暂停其他播放器
lrc 型
0
抒情类型
列表折叠
false
指示列表是否应首先折叠
列表最大高度
340px
列出最大高度
存储名称
metingjs
存储播放器设置的 localStorage 键

1 人点赞

  • 启程

1



Alist V3 自定义头部代码

2024年6月18日 15:38

代码中每一行的代码都有注释说明,请仔细查看并使用


本文摘自源地址

Alist的使用和编译以及美化教程

自定义头部代码


<!--Alist V3建议添加的,已经默认添加了,如果你的没有建议加上-->
<script src="https://polyfill.io/v3/polyfill.min.js?features=String.prototype.replaceAll"></script>

<!--引入字体,全局字体使用-->
<link rel="stylesheet" href="https://npm.elemecdn.com/lxgw-wenkai-webfont@1.1.0/lxgwwenkai-regular.css" />

<!--评论系统使用的js-->
<script src='https://unpkg.com/valine/dist/Valine.min.js'></script>

<!--不蒜子计数器-->
<script async src="https://busuanzi.icodeq.com/busuanzi.pure.mini.js"></script>

<!-- Font6,自定义底部使用和看板娘使用的图标和字体文件-->
<link type='text/css' rel="stylesheet" href="https://npm.elemecdn.com/font6pro@6.0.1/css/fontawesome.min.css" media='all'>
<link href="https://npm.elemecdn.com/font6pro@6.0.1/css/all.min.css" rel="stylesheet">

<!--音乐播放器所用的文件-->
<!-- require APlayer -->
<link rel="stylesheet" href="https://npm.elemecdn.com/aplayer@1.10.1/dist/APlayer.min.css">
<script src="https://npm.elemecdn.com/aplayer@1.10.1/dist/APlayer.min.js"></script>
<!-- require MetingJS -->
<script src="https://npm.elemecdn.com/meting@2.0.1/dist/Meting.min.js"></script>

<style>
/* 去除通知栏 右上角 X */
.notify-render .hope-close-button {
    display: none;
}
/* 图片API用法点进去都会有食用说明的
  樱花:https://www.dmoe.cc
  夏沫:https://cdn.seovx.com
  搏天:https://api.btstu.cn/doc/sjbz.php
  姬长信:https://github.com/insoxin/API
  小歪:https://api.ixiaowai.cn/
  保罗:https://api.paugram.com
  墨天逸:https://api.mtyqx.cn
  岁月小筑:https://img.xjh.me
  东方Project:https://img.paulzzh.com
  */

/*白天背景图*/
.hope-ui-light {
    background-image: url("https://api.ixiaowai.cn/mcapi/mcapi.php") !important;
    background-repeat:no-repeat;
    background-size:cover;
    background-attachment:fixed;
    background-position-x:center;
}
/*夜间背景图*/
.hope-ui-dark {
    background-image: url(http://pic.rmb.bdstatic.com/bjh/ebe942a9de49856f389c65f25a338335.png) !important;
    background-repeat:no-repeat;
    background-size:cover;
    background-attachment:fixed;
    background-position-x:center;
}
/*主列表白天模式透明*/
.obj-box.hope-stack.hope-c-dhzjXW.hope-c-PJLV.hope-c-PJLV-igScBhH-css {
    background-color: rgba(255, 255, 255, 0.5)!important;
}
/*主列表夜间模式透明*/
 .obj-box.hope-stack.hope-c-dhzjXW.hope-c-PJLV.hope-c-PJLV-iigjoxS-css {
    background-color:rgb(0 0 0 / 50%)!important;
}

/*readme白天模式透明*/
.hope-c-PJLV.hope-c-PJLV-ikSuVsl-css {
    background-color: rgba(255, 255, 255, 0.5)!important;
}
/*readme夜间模式透明*/
.hope-c-PJLV.hope-c-PJLV-iiuDLME-css {
    background-color:rgb(0 0 0 / 50%)!important;
}

/*顶部右上角切换按钮透明*/
.hope-ui-light .hope-c-ivMHWx-hZistB-cv.hope-icon-button {
    background-color: rgba(255, 255, 255, 0.3)!important;
}
.hope-ui-dark .hope-c-ivMHWx-hZistB-cv.hope-icon-button {
    background-color:rgb(0 0 0 / 10%)!important;
	
}

/*右下角侧边栏按钮透明 第一个是白天 第二个是夜间*/
.hope-ui-light .hope-c-PJLV-ijgzmFG-css {
    background-color: rgba(255, 255, 255, 0.5)!important;
}
.hope-ui-dark .hope-c-PJLV-ijgzmFG-css {
    background-color:rgb(0 0 0 / 50%)!important;
}

/*白天模式代码块透明*/
.hope-ui-light pre {
    background-color: rgba(255, 255, 255, 0.1)!important;
}
/*夜间模式代码块透明*/
.hope-ui-dark pre {
    background-color: rgba(255, 255, 255, 0)!important;
}

/*底部CSS,.App .table这三个一起的*/
 dibu {
    border-top: 0px;
    position: absolute;
    bottom: 0;
    width: 100%;
    margin: 0px;
    padding: 0px;
}
.App {
    min-height: 85vh;
}
.table {
    margin: auto;
}

/*去掉底部*/
.footer {
    display: none!important;
}

/*全局字体*/
 * {
    font-family:LXGW WenKai
}
* {
    font-weight:bold
}
body {
    font-family: LXGW WenKai;
}


/*以下为评论系统专用*/
/*适配大小契合度*/
.newValine {
    width: min(96%, 940px);
    flex-direction: column;
    row-gap: var(--hope-space-2);
    border-radius: var(--hope-radii-xl);
    padding: var(--hope-space-2);
    box-shadow: var(--hope-shadows-lg);
}
/*评论区 - 白天模式透明度*/
.hope-ui-light .newValine {
    background-color: rgba(255, 255, 255, 0.8)!important;
}
/*评论区 - 夜间模式透明度*/
.hope-ui-dark .newValine {
    background-color:rgb(0 0 0 / 80%)!important;
}
/*输入栏里面跳舞的小人背景图*/
.vedit {
    background-image:url(https://cdn.jsdelivr.net/gh/anwen-anyi/imgAnwen/images/OuNiJiang.gif);
    background-size:contain;
    background-repeat:no-repeat;
    background-position:right bottom;
    transition:all 0.25s ease-in-out 0s;
}
textarea#comment-textarea:focus {
    background-position-y:120px;
    transition:all 0.25s ease-in-out 0s;
}


/*渐变背景CSS*/
 #canvas-basic {
    position: fixed;
    display: block;
    width: 100%;
    height: 100%;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: -999;
}


/*音乐播放器进一步进行隐藏*/
.aplayer.aplayer-fixed.aplayer-narrow .aplayer-body {
    left: -66px!important;
}
.aplayer.aplayer-fixed.aplayer-narrow .aplayer-body:hover {
    left: 0!important;
}
</style>



看板娘代码

<!--看板娘 -自定义大小,隐藏对话框和对话框高度-->
<style type="text/css">
  #waifu #live2d {
    height: 350px!important;
    width: 350px!important;
  }
  #waifu-tips {
    top: -60px;
    /*display:none !important;隐藏对话框*/
  }
</style>

<!--看板娘加载指定模型-->
<script>
  localStorage.setItem('modelId', '7');
  localStorage.setItem('modelTexturesId', '3');
</script>

<!--以下四个两个主用两个备用的,选一条使用即可-->
<!--自己选左右-->
<script src="https://api.itggg.cn/live2dnew/left/index.js"></script>
<script src="https://api.itggg.cn/live2dnew/right/index.js"></script>

<!--备用的,自己选左右-->
<script src="https://luluossfile.lulufind.com/work/teacher_u20221017ce7b5991_1666420843832_19934968_file.js"></script>
<script src="https://luluossfile.lulufind.com/work/teacher_u20221017bb6d7454_1666420849979_19584065_file.js"></script>



搜索栏美化代码

带毛玻璃效果

<style>
/*白天模式 搜索主体+毛玻璃*/
.hope-ui-light .hope-c-PJLV-iiBaxsN-css{
   background-color: rgba(255,255,255,0.2)!important;
   backdrop-filter: blur(10px)!important;
}

/*白天模式 搜索栏输入框+毛玻璃*/
.hope-ui-light .hope-c-kvTTWD-hYRNAb-variant-filled{
   background-color: rgba(255,255,255,0.2)!important;
   backdrop-filter: blur(10px)!important;
}

/*白天模式 搜索按钮+毛玻璃*/
.hope-ui-light .hope-c-PJLV-ikEIIxw-css{
   background-color: rgba(255,255,255,0.2)!important;
   backdrop-filter: blur(10px)!important;
   padding: var(--hope-space-1)!important;
}

/*夜间模式搜索主体+毛玻璃*/
.hope-ui-dark .hope-c-PJLV-iiBaxsN-css{
    background-color: rgb(0 0 0 / 10%)!important;
    backdrop-filter: blur(10px)!important;
}

/*夜间模式搜索栏+毛玻璃*/
.hope-ui-dark .hope-c-kvTTWD-hYRNAb-variant-filled{
    background-color: rgb(0 0 0 / 10%)!important;
    backdrop-filter: blur(10px)!important;
}

/*夜间模式 搜索按钮+毛玻璃*/
.hope-ui-dark .hope-c-PJLV-ikEIIxw-css{
    background-color: rgb(0 0 0 / 10%)!important;
    backdrop-filter: blur(10px)!important;
    padding: var(--hope-space-1)!important;
}
</style>



不带毛玻璃效果

<style>
/*白天模式 搜索主体*/
.hope-ui-light .hope-c-PJLV-iiBaxsN-css{
   background-color: rgba(255,255,255,0.2)!important;
}

/*白天模式 搜索栏输入框*/
.hope-ui-light .hope-c-kvTTWD-hYRNAb-variant-filled{
   background-color: rgba(255,255,255,0.2)!important;
}

/*白天模式 搜索按钮*/
.hope-ui-light .hope-c-PJLV-ikEIIxw-css{
   background-color: rgba(255,255,255,0.2)!important;
   padding: var(--hope-space-1)!important;
}

/*夜间模式搜索主体*/
.hope-ui-dark .hope-c-PJLV-iiBaxsN-css{
    background-color: rgb(0 0 0 / 10%)!important;
}

/*夜间模式搜索栏*/
.hope-ui-dark .hope-c-kvTTWD-hYRNAb-variant-filled{
    background-color: rgb(0 0 0 / 10%)!important;
}

/*夜间模式 搜索按钮*/
.hope-ui-dark .hope-c-PJLV-ikEIIxw-css{
    background-color: rgb(0 0 0 / 10%)!important;
    padding: var(--hope-space-1)!important;
}
</style>



效果预览

左侧为不带毛玻璃效果,右侧为带毛玻璃效果.推荐右侧带毛玻璃效果的

自行替换鼠标样式说明


因为CDN的 HTTPS证书失效了,无法使用暂时

但是着急的话可以一个一个点击然后把哪个文件下载下来,然后自己上传一个换成自己的链接也可以..


把HTTPS 改成HTTPS 貌似还能用 试试看


<!--较为个性化的鼠标指针样式,可结合个人需要自行修改-->
<style>
  body {
    cursor: url(http://luluossfile.lulufind.com/work/teacher_u20221021b3a89013_1666841028833_10660845_file.cur), default;
  }
  select{
    cursor: url(http://luluossfile.lulufind.com/work/teacher_u2021090299b56677_1666842679271_10490748_file.cur), pointer;
  }
  button,a:hover{
    cursor: url(http://luluossfile.lulufind.com/work/teacher_u20221017ac9f1124_1666842626270_11086578_file.cur), pointer;
  }
  input{
    cursor:url(http://luluossfile.lulufind.com/work/teacher_u2021090299b56677_1666842633386_14976764_file.cur), text;	
  }
  textarea,input:focus{
    cursor:url(http://luluossfile.lulufind.com/work/teacher_u202210176ba36766_1666842640146_15845280_file.cur), text;	
  }
  code{
    cursor: url(http://luluossfile.lulufind.com/work/teacher_u20221021b3a89013_1666842646779_15864973_file.cur), default;	
  }
  pre>code{
    cursor: url(http://luluossfile.lulufind.com/work/teacher_u202210176ba36766_1666842653500_10010236_file.cur), default;	
  }
</style>



仿微信朋友圈的博客,适合简单记录生活-moments

2024年6月14日 08:56
1. 介绍
今天和大家介绍一个类似微信朋友圈的项目,适合记录生活。



主要特色
支持匿名评论/点赞
支持引入网易云音乐,b站视频,插入链接等
支持自定义头图,个人头像,网站标题等
支持上传图片到S3兼容的云存储,支持本地存储
适配手机
支持暗黑模式
数据库采用sqlite,可随时备份
支持引入豆瓣读书/豆瓣电影,样式来源于这里
2. 项目展示
作者的Demo:https://m.mblog.club/

咕咕自己的Demo:https://pyq.gugu.ovh/


默认用户名密码:admin/a123456,登录进去后后台可以自己修改密码.


可以插入链接、上传图片、嵌入网易云音乐、插入B站视频、引入豆瓣读书和豆瓣电影

如何嵌入:https://jerry.mblog.club/simple-moments-import-music-and-video


插入链接展示:




手机上的网易云显示好像有点问题:



个人设置页面:




3. 相关地址
官方GitHub地址:https://github.com/kingwrcy/moments (目前610个star,欢迎大家去给作者点星星!)

4. 搭建环境
服务器:咕咕这边用的腾讯云轻量应用服务器,建议服务器内存1G以上
系统:Debian 11 (DD 脚本 非必需 DD,用原来的系统也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
安装好 Docker、Docker-compose(相关脚本)
【必需】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)
【非必需】提前安装好宝塔面板海外版本 aapanel,并安装好 Nginx(安装地址)
【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程)
5. 搭建视频
5.1 YouTube
视频地址:https://youtu.be/rzIr0keyfIA

5.2 哔哩哔哩
哔哩哔哩:https://www.bilibili.com/video/BV1UH4y1A7ra/

6. 搭建方式
如果你不是用的腾讯云的轻量应用服务器,可以直接跳到 6.1 部分。

安装系统(腾讯云轻量应用服务器)

腾讯云轻量服务器最大的特点就是 “轻量”,相比 CVM,更适合小白上手,这边我们之间选择 Docker 基础镜像,就可以省去后面安装 Docker 的步骤 (如果你非要用国内的服务器,这边装的 Docker 镜像还会帮你配置好国内镜像源,让你加速访问 docker 镜像资源) 不建议用国内的 。

登陆(腾讯云轻量应用服务器)



6.1 安装 Docker 与 Nginx Proxy Manager
可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager/

6.2 创建安装目录
创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/moments

cd /root/data/docker_data/moments
创建并编辑 docker-compose.yml文件

vim docker-compose.yml
填入下面的内容:

services:
  moments:
    image: kingwrcy/moments:latest   
    ports:
      - "8080:3000"  #左边的8080可以随意更改成服务器上没有用过的端口
    volumes:
      - ./moments-data:/app/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

6.3 打开服务器防火墙(非必需)并访问网页
打开防火墙的端口 8080

举例,腾讯云打开方法如下(部分服务商没有自带的面板防火墙,就不用这步操作了):



类似图中的,这边我们填 8080,示例填 moments ,确定即可(如果你在 docker-compose 文件里换了 9009,这边就需要填 9009,以此类推)


查看端口是否被占用(以 8080 为例),输入:

lsof -i:8080  #查看 8080 端口是否被占用,如果被占用,重新自定义一个端口
如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found
运行:

apt install lsof  #安装 lsof
如果端口没有被占用(被占用了就修改一下端口,比如改成 8381,注意 docker 命令行里和防火墙都要改)

6.4 启动 moments
cd /root/data/docker_data/moments

docker compose up -d
等待拉取好镜像,出现 done的字样之后,

理论上我们就可以输入 http://ip:8080 访问了。

但是这边我们推荐先搞一下反向代理!

做反向代理前,你需要一个域名!

namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。(冷知识,namesilo上 6位数字的xyz续费永远都是0.99美元 = =)

如果想要长期使用,还是建议买 com 后缀的域名,更加正规一些,可以输入 laodade 来获得 1 美元的优惠(不知道现在还有没有)

namesilo 自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些丑 古老 = =)

【域名购买】Namesilo 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

7. 反向代理
7.1 利用 Nginx Proxy Manager
在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)


之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager(相关教程))

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80、443 端口,所以本机不能占用(比如原来就有 Nginx)

直接丢几张图:





client_max_body_size 0;


或者

client_max_body_size 5m;
0表示不限制大小,5m表示小于5m的图片可以上传。

不然会报413 Request Entity Too Large错误

注意填写对应的 域名、IP 和 端口,按文章来的话,应该是 8080

IP 填写:

如果 Nginx Proxy Manager 和 moments 在同一台服务器上,可以在终端输入:

ip addr show docker0
查看对应的 Docker 容器内部 IP。


否则直接填 moments 所在的服务器 IP 就行。

7.2 利用宝塔面板
发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。



代码如下:

location / {
      proxy_pass http://127.0.0.1:8080/;       # 注意改成你实际使用的端口
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }
然后在http{}中加入 client_max_body_size 5m; 然后重启nginx(不然会报413 Request Entity Too Large错误)

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

有同学可能会问,为什么不直接用宝塔自带的反向代理功能。


也可以,不过咕咕自己之前遇到过当有多个网站需要反代的时候,在这边设置会报错的情况 = =

所以后来就不用了,直接用上面的方法来操作了。

8. 使用教程
建议参考视频,或者前面展示部分。

8.1 更新 moments
cd /root/data/docker_data/moments

docker-compose pull

docker-compose up -d    # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
输入 y

利用 Docker 搭建的应用,更新非常容易~

8.2 卸载 moments
同样进入安装页面,先停止所有容器。

cd /root/data/docker_data/moments

docker-compose down

cd ..

rm -rf /root/data/docker_data/moments  # 完全删除
可以卸载得很干净。

9. 常见问题及注意点
暂无。

项目还比较初期,大家有意见或者建议欢迎反馈。

10. 结尾
祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

参考资料
官方GitHub:https://github.com/kingwrcy/moments (目前610个star,欢迎大家去给作者点星星!)
1. 介绍
今天和大家介绍一个类似微信朋友圈的项目,适合记录生活。



主要特色
支持匿名评论/点赞
支持引入网易云音乐,b站视频,插入链接等
支持自定义头图,个人头像,网站标题等
支持上传图片到S3兼容的云存储,支持本地存储
适配手机
支持暗黑模式
数据库采用sqlite,可随时备份
支持引入豆瓣读书/豆瓣电影,样式来源于这里
2. 项目展示
作者的Demo:https://m.mblog.club/

咕咕自己的Demo:https://pyq.gugu.ovh/


默认用户名密码:admin/a123456,登录进去后后台可以自己修改密码.


可以插入链接、上传图片、嵌入网易云音乐、插入B站视频、引入豆瓣读书和豆瓣电影

如何嵌入:https://jerry.mblog.club/simple-moments-import-music-and-video


插入链接展示:




手机上的网易云显示好像有点问题:



个人设置页面:




3. 相关地址
官方GitHub地址:https://github.com/kingwrcy/moments (目前610个star,欢迎大家去给作者点星星!)

4. 搭建环境
服务器:咕咕这边用的腾讯云轻量应用服务器,建议服务器内存1G以上
系统:Debian 11 (DD 脚本 非必需 DD,用原来的系统也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
安装好 Docker、Docker-compose(相关脚本)
【必需】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)
【非必需】提前安装好宝塔面板海外版本 aapanel,并安装好 Nginx(安装地址)
【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程)
5. 搭建视频
5.1 YouTube
视频地址:https://youtu.be/rzIr0keyfIA

5.2 哔哩哔哩
哔哩哔哩:https://www.bilibili.com/video/BV1UH4y1A7ra/

6. 搭建方式
如果你不是用的腾讯云的轻量应用服务器,可以直接跳到 6.1 部分。

安装系统(腾讯云轻量应用服务器)

腾讯云轻量服务器最大的特点就是 “轻量”,相比 CVM,更适合小白上手,这边我们之间选择 Docker 基础镜像,就可以省去后面安装 Docker 的步骤 (如果你非要用国内的服务器,这边装的 Docker 镜像还会帮你配置好国内镜像源,让你加速访问 docker 镜像资源) 不建议用国内的 。

登陆(腾讯云轻量应用服务器)



6.1 安装 Docker 与 Nginx Proxy Manager
可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager/

6.2 创建安装目录
创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/moments

cd /root/data/docker_data/moments
创建并编辑 docker-compose.yml文件

vim docker-compose.yml
填入下面的内容:

services:
  moments:
    image: kingwrcy/moments:latest   
    ports:
      - "8080:3000"  #左边的8080可以随意更改成服务器上没有用过的端口
    volumes:
      - ./moments-data:/app/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

6.3 打开服务器防火墙(非必需)并访问网页
打开防火墙的端口 8080

举例,腾讯云打开方法如下(部分服务商没有自带的面板防火墙,就不用这步操作了):



类似图中的,这边我们填 8080,示例填 moments ,确定即可(如果你在 docker-compose 文件里换了 9009,这边就需要填 9009,以此类推)


查看端口是否被占用(以 8080 为例),输入:

lsof -i:8080  #查看 8080 端口是否被占用,如果被占用,重新自定义一个端口
如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found
运行:

apt install lsof  #安装 lsof
如果端口没有被占用(被占用了就修改一下端口,比如改成 8381,注意 docker 命令行里和防火墙都要改)

6.4 启动 moments
cd /root/data/docker_data/moments

docker compose up -d
等待拉取好镜像,出现 done的字样之后,

理论上我们就可以输入 http://ip:8080 访问了。

但是这边我们推荐先搞一下反向代理!

做反向代理前,你需要一个域名!

namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。(冷知识,namesilo上 6位数字的xyz续费永远都是0.99美元 = =)

如果想要长期使用,还是建议买 com 后缀的域名,更加正规一些,可以输入 laodade 来获得 1 美元的优惠(不知道现在还有没有)

namesilo 自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些丑 古老 = =)

【域名购买】Namesilo 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

7. 反向代理
7.1 利用 Nginx Proxy Manager
在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)


之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager(相关教程))

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80、443 端口,所以本机不能占用(比如原来就有 Nginx)

直接丢几张图:





client_max_body_size 0;


或者

client_max_body_size 5m;
0表示不限制大小,5m表示小于5m的图片可以上传。

不然会报413 Request Entity Too Large错误

注意填写对应的 域名、IP 和 端口,按文章来的话,应该是 8080

IP 填写:

如果 Nginx Proxy Manager 和 moments 在同一台服务器上,可以在终端输入:

ip addr show docker0
查看对应的 Docker 容器内部 IP。


否则直接填 moments 所在的服务器 IP 就行。

7.2 利用宝塔面板
发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。



代码如下:

location / {
      proxy_pass http://127.0.0.1:8080/;       # 注意改成你实际使用的端口
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }
然后在http{}中加入 client_max_body_size 5m; 然后重启nginx(不然会报413 Request Entity Too Large错误)

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

有同学可能会问,为什么不直接用宝塔自带的反向代理功能。


也可以,不过咕咕自己之前遇到过当有多个网站需要反代的时候,在这边设置会报错的情况 = =

所以后来就不用了,直接用上面的方法来操作了。

8. 使用教程
建议参考视频,或者前面展示部分。

8.1 更新 moments
cd /root/data/docker_data/moments

docker-compose pull

docker-compose up -d    # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
输入 y

利用 Docker 搭建的应用,更新非常容易~

8.2 卸载 moments
同样进入安装页面,先停止所有容器。

cd /root/data/docker_data/moments

docker-compose down

cd ..

rm -rf /root/data/docker_data/moments  # 完全删除
可以卸载得很干净。

9. 常见问题及注意点
暂无。

项目还比较初期,大家有意见或者建议欢迎反馈。

10. 结尾
祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

参考资料
官方GitHub:https://github.com/kingwrcy/moments (目前610个star,欢迎大家去给作者点星星!)
祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

参考资料
官方GitHub:https://github.com/kingwrcy/moments (目前610个star,欢迎大家去给作者点星星!)
祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

参考资料
官方GitHub:https://github.com/kingwrcy/moments (目前610个star,欢迎大家去给作者点星星!)
es,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目
es,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目
es,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目
es,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目
es,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目
es,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目
1. 介绍
今天和大家介绍一个类似微信朋友圈的项目,适合记录生活。



主要特色
支持匿名评论/点赞
支持引入网易云音乐,b站视频,插入链接等
支持自定义头图,个人头像,网站标题等
支持上传图片到S3兼容的云存储,支持本地存储
适配手机
支持暗黑模式
数据库采用sqlite,可随时备份
支持引入豆瓣读书/豆瓣电影,样式来源于这里
2. 项目展示
作者的Demo:https://m.mblog.club/

咕咕自己的Demo:https://pyq.gugu.ovh/


默认用户名密码:admin/a123456,登录进去后后台可以自己修改密码.


可以插入链接、上传图片、嵌入网易云音乐、插入B站视频、引入豆瓣读书和豆瓣电影

如何嵌入:https://jerry.mblog.club/simple-moments-import-music-and-video


插入链接展示:




手机上的网易云显示好像有点问题:



个人设置页面:




3. 相关地址
官方GitHub地址:https://github.com/kingwrcy/moments (目前610个star,欢迎大家去给作者点星星!)

4. 搭建环境
服务器:咕咕这边用的腾讯云轻量应用服务器,建议服务器内存1G以上
系统:Debian 11 (DD 脚本 非必需 DD,用原来的系统也 OK,之后教程都是用 Debian 或者 Ubuntu 搭建~)
安装好 Docker、Docker-compose(相关脚本)
【必需】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)
【非必需】提前安装好宝塔面板海外版本 aapanel,并安装好 Nginx(安装地址)
【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程)
5. 搭建视频
5.1 YouTube
视频地址:https://youtu.be/rzIr0keyfIA

5.2 哔哩哔哩
哔哩哔哩:https://www.bilibili.com/video/BV1UH4y1A7ra/

6. 搭建方式
如果你不是用的腾讯云的轻量应用服务器,可以直接跳到 6.1 部分。

安装系统(腾讯云轻量应用服务器)

腾讯云轻量服务器最大的特点就是 “轻量”,相比 CVM,更适合小白上手,这边我们之间选择 Docker 基础镜像,就可以省去后面安装 Docker 的步骤 (如果你非要用国内的服务器,这边装的 Docker 镜像还会帮你配置好国内镜像源,让你加速访问 docker 镜像资源) 不建议用国内的 。

登陆(腾讯云轻量应用服务器)



6.1 安装 Docker 与 Nginx Proxy Manager
可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager/

6.2 创建安装目录
创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/moments

cd /root/data/docker_data/moments
创建并编辑 docker-compose.yml文件

vim docker-compose.yml
填入下面的内容:

services:
  moments:
    image: kingwrcy/moments:latest   
    ports:
      - "8080:3000"  #左边的8080可以随意更改成服务器上没有用过的端口
    volumes:
      - ./moments-data:/app/data
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
英文输入法下,按 i 修改,完成之后,按一下 esc,然后 :wq 保存退出。

6.3 打开服务器防火墙(非必需)并访问网页
打开防火墙的端口 8080

举例,腾讯云打开方法如下(部分服务商没有自带的面板防火墙,就不用这步操作了):



类似图中的,这边我们填 8080,示例填 moments ,确定即可(如果你在 docker-compose 文件里换了 9009,这边就需要填 9009,以此类推)


查看端口是否被占用(以 8080 为例),输入:

lsof -i:8080  #查看 8080 端口是否被占用,如果被占用,重新自定义一个端口
如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:

-bash: lsof: command not found
运行:

apt install lsof  #安装 lsof
如果端口没有被占用(被占用了就修改一下端口,比如改成 8381,注意 docker 命令行里和防火墙都要改)

6.4 启动 moments
cd /root/data/docker_data/moments

docker compose up -d
等待拉取好镜像,出现 done的字样之后,

理论上我们就可以输入 http://ip:8080 访问了。

但是这边我们推荐先搞一下反向代理!

做反向代理前,你需要一个域名!

namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。(冷知识,namesilo上 6位数字的xyz续费永远都是0.99美元 = =)

如果想要长期使用,还是建议买 com 后缀的域名,更加正规一些,可以输入 laodade 来获得 1 美元的优惠(不知道现在还有没有)

namesilo 自带隐私保护,咕咕一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!(就是后台界面有些丑 古老 = =)

【域名购买】Namesilo 优惠码和域名解析教程(附带服务器购买推荐和注意事项)

我们接着往下看!

7. 反向代理
7.1 利用 Nginx Proxy Manager
在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)


之后,登陆 Nginx Proxy Manager(不会的看这个:安装 Nginx Proxy Manager(相关教程))

注意:

Nginx Proxy Manager(以下简称 NPM)会用到 80、443 端口,所以本机不能占用(比如原来就有 Nginx)

直接丢几张图:





client_max_body_size 0;


或者

client_max_body_size 5m;
0表示不限制大小,5m表示小于5m的图片可以上传。

不然会报413 Request Entity Too Large错误

注意填写对应的 域名、IP 和 端口,按文章来的话,应该是 8080

IP 填写:

如果 Nginx Proxy Manager 和 moments 在同一台服务器上,可以在终端输入:

ip addr show docker0
查看对应的 Docker 容器内部 IP。


否则直接填 moments 所在的服务器 IP 就行。

7.2 利用宝塔面板
发现还是有不少小伙伴习惯用宝塔面板,这边也贴一个宝塔面板的反代配置:

直接新建一个站点,不要数据库,不要 php,纯静态即可。

然后打开下面的配置,修改 Nginx 的配置。



代码如下:

location / {
      proxy_pass http://127.0.0.1:8080/;       # 注意改成你实际使用的端口
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }
然后在http{}中加入 client_max_body_size 5m; 然后重启nginx(不然会报413 Request Entity Too Large错误)

此方法对 90% 的反向代理都能生效,然后就可以用域名来安装访问了。

有同学可能会问,为什么不直接用宝塔自带的反向代理功能。


也可以,不过咕咕自己之前遇到过当有多个网站需要反代的时候,在这边设置会报错的情况 = =

所以后来就不用了,直接用上面的方法来操作了。

8. 使用教程
建议参考视频,或者前面展示部分。

8.1 更新 moments
cd /root/data/docker_data/moments

docker-compose pull

docker-compose up -d    # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
提示:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
输入 y

利用 Docker 搭建的应用,更新非常容易~

8.2 卸载 moments
同样进入安装页面,先停止所有容器。

cd /root/data/docker_data/moments

docker-compose down

cd ..

rm -rf /root/data/docker_data/moments  # 完全删除
可以卸载得很干净。

9. 常见问题及注意点
暂无。

项目还比较初期,大家有意见或者建议欢迎反馈。

10. 结尾
祝大家用得开心,有问题可以去 GitHub 提 Issues,也可以在评论区互相交流探讨。

同时,项目处于初期,有能力给项目做贡献的同学,也欢迎积极加入到 项目 中来,贡献自己的一份力量!

最后,感谢开发人员们的辛苦付出,让我们能用到这么优秀的项目!

参考资料
官方GitHub:https://github.com/kingwrcy/moments (目前610个star,欢迎大家去给作者点星星!)

使用宝塔 Docker 一分钟安装 Memos 备忘录

2024年6月13日 14:54

最近呢在用 WordPress 做了个记录好词好句的个人博客,于是乎发现很多人使用 Memos 备忘录对接 WordPress 制作说说页面,我一看 Memos 备忘录就已经够我使用的了,所以就安装部署一个试试,同时记录一下,方便小伙伴们参考使用。

推荐使用宝塔 Linux 控制面板

左侧菜单点击 Docker 按钮,进入容器界面,点击创建容器。

选择容器编排,在容器编排模板右侧点击创建。

创建模板名称随便填,备注无所谓,内容复制官方文档。

Memos Docker Compose

懒得点开查看的小伙伴可以直接复制,下面的就是官方提供的内容:

复制
version: "3.0"services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    volumes:
      - ~/.memos/:/var/opt/memos
    ports:
      - 5230:5230

然后右下角点击添加即可。

此时模板明和备注自动显示在上面,直接右下角创建。

服务器带宽够的话,几秒钟就装好了。这里我们记住端口号,直接宝塔IP+端口号即可访问。

首次访问会让你注册管理员账号,如果显示英文,则在下面选择简体中文即可。

界面简洁功能强大,非常适合做自己的备忘录、摘抄、学习笔记。




今天跟大家分享一下基于宝塔 Docker 面板 Memos 备忘录手动镜像以及自动备份数据库。

推荐使用宝塔 Linux 控制面板

手动镜像Memos项目

经过测试,理论上重新拉取最新的镜像即可,如果有修改,那就自己将 Docker 项目 Memos 备忘录手动镜像,用以备份或者转移。

版本号这里我建议使用当前时间年月日时分进行命名,方便区分。

生成镜像之后,就可以在 Docker 本地镜像看到,如上图红框的镜像文件就是缙哥哥制作的镜像文件。

选择对应的镜像文件,在右侧点击导出,路径设置为你的目标文件夹,此处我选择网站备份文件夹,同时需要命名这个 tar 镜像文件,同样以项目名称+时间来命名方便区分。

至此,Memos 项目镜像完毕。

手动备份Memos数据

管理(打开)Memos 项目详情,选择数据存储卷,查看数据卷对应文件路径,如/root/.memos

使用在线文件管理器打开该目录,memos_prod.db就是数据文件(如下图红框所示)。

将该文件复制、压缩、备份一下即可。当然,还可以配合宝塔计划任务自动备份该文件。

这里我将另外两个文件排除掉,只备份重要的数据文件。





三、

Memos 备忘录背景设置和存储设置经验分享

首先,有什么问题先看 Memos 官方文档,基本上每一个功能都已经写的清清楚楚,明明白白。虽然全英文,但是现在全文翻译相信难不倒各位站长。还没有使用 Memos 备忘录的小伙伴可以参见《使用宝塔 Docker 一分钟安装 Memos 备忘录》。

本文只是针对我自己的使用经验、见解做一些补充和记录,方便自己以后查询。同时也讲此分享给大家,供参考配置。

官方帮助文档

管理→系统

官方已提供了背景颜色的 CSS 样式代码,在此基础上,缙哥哥想起了使用必应壁纸 API 接口,也可以通过 CSS 调用。

复制
body{
    background-image: url(http://api.dujin.org/bing/1920.php)!important;}

刷新后即可发现网页背景直接使用了 Bing 壁纸,每天自动更换。后来想想,我并不需要此类“美化”,简洁明了也挺好。

至于自定义脚本官方也提供了一个在等待页面打开的时候有个提醒,但是我都是秒开,懒得加了,小伙伴们有什么更好的脚本,或者说好玩的脚本,可以分享一下。

管理→存储

关于存储是选择默认的数据库还是本地文件系统,Memos 官方博客也对此专门写了文章(参见《为您的资源选择存储:数据库、S3 还是本地存储?》),其总结就是:

  1. 如果主要使用文本且文件较少,请使用默认数据库存储。

  2. 如果您已有 S3 对象云存储,请将 S3 配置到 Memos 中。

  3. 如果您没有 S3 并且使用大量附件,请使用本地存储。

而缙哥哥测试本地文件系统时,就尝试修改附件存储路径,此处与 WordPress 略有不同,该路径与附件链接无关,比如我设置的存储路径参考了 WordPress 多媒体路径保存,方便按年、月查询,同时在附件的名称前加上了日,方便排序快速查看,如:

复制
upload/{year}/{month}/{day}-{filename}

而前端的链接是

复制
http(s)://你的域名/file/resources/数字(第几个附件)/文件名

也就是说管理→存储→本地文件系统→Filepath template设置的规则,只是针对你的附件存在哪里,哪怕你频繁变动,也不影响前端显示。

同时,附件和内容都是存放在数据存储卷的目录当中(参见《Docker 项目 Memos 备忘录手动镜像以及自动备份数据库》)

assets 文件夹为当你选择本地文件系统时的默认文件夹,upload 文件夹是我参考 WordPress 附件制定的存储规则。


一分钟,Doker 镜像无法提取应急办法

2024年6月13日 10:18

❗❗紧急通知:

国内所有 Docker 的镜像服务器必须全部下架。后续包括 Github CDN 镜像,NPM ,Python PIP , OpenWrt OPKG 等未受内容审查的镜像服务器一律下架。

11

像之前那样输入指令是提取不了的。

22

暂时解决办法

目前来说最长久、最舒适的解决办法是通过软路由进行分流。

暂时的部分应急办法:通过他人分享或某些上网途径获取镜像后手动导入再部署,这个老油条应该不必多说;第二者是镜像加速,库的收录并不完整,但应该足够咱们用了。

我们可以通过增加前缀或是修改镜像仓库的前缀提取镜像:

33

实际操作如图所示:

44

docker hub 原提取指令为 docker pull linuxserver/emby
这里我们修改后为 docker pull m.daocloud.io/ghcr.io/linuxserver/emby

可以看到是能够成功提取的,上面图中还有我测试过的jellyfin官方镜像。

输入 docker iamges 查看是否提取成功:

55

可以看到是没有问题的。

包括通过 docker compose 部署也是同样道理:

原代码中的 image: ghcr.io/umami-software/umami:postgresql-latest

同理修改为 image: m.daocloud.io/ghcr.io/umami-software/umami:postgresql-latest 即可。

这是该代码对应的项目教程:

文章
Docker 篇十四:玩转Docker:快速搭建清爽、好用的网站流量监控工具:Umami
羊刀仙
01-26
12

包括像umami这种镜像在ghcr.io的,若我们要将其部署在国内VPS,也建议同样的操作进行加速。

支持前缀替换的 Registry

cr.l5d.io -----→ l5d.m.daocloud.io

docker.elastic.co -----→ elastic.m.daocloud.io

docker.io -----→ docker.m.daocloud.io

gcr.io -----→ gcr.m.daocloud.io

ghcr.io -----→ ghcr.m.daocloud.io

k8s.gcr.io -----→ k8s-gcr.m.daocloud.io

registry.k8s.io -----→ k8s.m.daocloud.io

mcr.microsoft.com -----→ mcr.m.daocloud.io

nvcr.io -----→ nvcr.m.daocloud.io

quay.io -----→ quay.m.daocloud.io

registry.jujucharms.com -----→ jujucharms.m.daocloud.io

rocks.canonical.com -----→ rocks-canonical.m.daocloud.io

参考链接:

https://docs.daocloud.io/community/mirror.html

https://github.com/DaoCloud/public-image-mirror


地球实时画面

2024年6月6日 07:42
  • 向日葵 8 号气象卫星是日本宇宙航空研究开发机构设计制造的向日葵系列卫星之一,重约 3500 公斤,设计寿命 15 年以上。

  • 日本发射这颗卫星后,不仅用它防灾,还将它拍摄的地球照片发布在互联网上,供爱好者下载。每 10 分钟更新,同时有 30 分钟延迟(你 6:00 看到的照片实际上是 5:30 拍的)

  • 官方地址:1.https://himawari8.nict.go.jp 2.https://himawari.asia/

  • 获取接口图片,根据请求例,https://himawari8-dl.nict.go.jp/himawari8/img/D531106/2d/550/2024/01/22/065000_0_0.png

  • 地址中有以下几个重要的参数:

  1. 2d代表图像清晰度,2d 就是将图像分成 2x2 的 550px x 550px 的图片,也就是总分辨率 1100px x 1100px
    该网站最高提供 20d 的清晰度,也就是 11000px x 11000px 的分辨率

  2. 2024/01/22就是日期

  3. 065000是图片对应的 UTC 时间

  4. 0_1是图片对应的坐标,两个参数分别是从 0 开始计数的列数和行数

  • 对应接口代码

<?php
function getHimawariUrl($d = 1,$x = 0, $y = 0){
    date_default_timezone_set('UTC');
    $pictime = time() - time() % 600 - 1800;
    $date = date('Y/m/d/Hi',$pictime);
    return "https://ncthmwrwbtst.cr.chiba-u.ac.jp/img/D531106/".$d."d/550/".$date."00_".$x."_".$y.".png";
}
function writeHimawariTable($d=1){
    echo '<table style="margin:0;padding:0;cell-spacing:0">';
    for($i=0;$i<$d;$i++){
        echo '<tr>';
            for ($j=0;$j<$d;$j++){
                echo '<td><img src="'.getHimawariUrl($d,$j,$i).'" /></td>';
            }
        echo '</tr>';
    }
    echo '</table>';
}

writeHimawariTable(2);
?>


Moments 教程之Docker部署

2024年6月5日 16:27

Moments 为你提供了一个全新的方式来与你关注的博客作者和读者互动,让你的博客体验更加丰富和充实。

我们核心目标是通过整合各种订阅源,如 RSS 和 Atom,将你感兴趣的博客转化为一个个人朋友圈。你可以订阅来自世界各地的博客,并实时获取他们的最新动态。无论是热门博客、专业博主,还是你最喜爱的作者,你都可以通过 Moments 获得他们的最新博文、评论和互动。

GITHUB:GitHub - Drizzle365/Moments


  • 如果你有好的想法希望可以共同参与下一版本的开发

  • 我们接受任何合理的 pr 和 issue

功能概述

  • Feed订阅(支持包括RSS,Atom)

  • 支持友链,文章 API,方便博客对接

  • 简洁的界面风格,仿照微信朋友圈更美观易用

  • 支持订阅商城,化身专属订阅神器

  • 支持友链自助申请

  • 单独查看某个好友的博文

特点和优势

  • 个性化订阅:通过使用 Moments,你可以根据自己的兴趣订阅并关注任何博客,无论是国内外的知名博主还是小众领域的专家。你将不再错过他们的精彩内容,同时也可以发现新的博客和创作者。

  • 实时动态Moments 实时获取订阅的博客的最新动态,包括新博文、更新通知和互动评论。你可以快速了解博客圈内的热门话题,与作者和其他读者进行互动和讨论。

  • 独立博客聚合Moments 提供了将多个独立博客聚合在一个平台的功能。这意味着你可以在一个地方展示你的多个博客内容,让读者更方便地获取你的全部创作。

  • 个性化用户体验Moments 提供了个性化的用户界面和设置选项,让你根据自己的喜好和需求定制博客社交的体验。你可以自由选择显示方式、排序规则和通知设置,以最符合你的个人偏好。

  • 开源项目Moments 是一个开源项目,意味着你可以参与项目的开发和改进。你可以自由定制代码,添加新功能,为社区的发展做出贡献。

快速开始

1.原生部署

下载源代码编译后运行即可,建议使用supervisord进行进程守护,或者使用Systemd启动,这需要一定的Linux经验,后面会补充相关的原生部署文档

2.Docker部署(⭐推荐)

docker run -d \
--name moments \
-p 3000:80 \
drizzle2001/moments

运行后访问 http://IP:3000 即可
建议使用反向代理绑定域名访问

图文教程(临时): https://shiyu.dev/archives/2069/
完善的文档中心正在构建中

3.修正时区

完成以上命令后,此时你已经可以通过http://ip:自定义端口来访问自己的Moments页面了,但现在可能存在一个问题:文章发布的时间不准确。我们可以通过以下命令将他修正:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Bash

4.反向代理

如何绑定域名

程序运行后的默认端口是3000,可以使用 nginx 配置反向代理监听本地3000端口

如何配置

后台地址: http://IP:3000/admin
默认密码:lantin (安装完成后应立即进入后台修改)

WordPress修改后台登录地址

2024年5月31日 15:20

WordPress 博客默认的登陆链接地址为(https://example.com/wp-login.php),为保证安全,可以修改WordPress登陆文件名wp-login.php后缀,防密码被暴力破解。

方法:

一、修改在网站根目录下的wp-login.php文件名为wp-denglu.php(或者其他名字,以下以此为例),并将该文件wp-denglu.php中出现的字符wp-login.php全部改为wp-denglu.php

二、查找根目录下的wp-includes/general-template.php文件,除了代码大概第238行

1
$login_url = site_url('wp-login.php', 'login');

不要修改,该文件其他的字符wp-login.php替换为wp-denglu.php,注意完成修改后覆盖原文件保存,这样就可以避免黑客知道你的登陆地址!


VMware Pro(VM虚拟机) v17.5.2+激活密钥

2024年5月15日 14:22

4444.jpg

VMware Workstation Pro 是将多个操作系统作为虚拟机 (VM) 在单台 Linux 或 Windows PC 上运行的行业标准。为任何设备、平台或云环境构建、测试或演示软件的 IT 专业人员、开发人员和企业都可以信赖 Workstation Pro。


VMware Workstation Pro 17 的新功能特性
新增功能
自动启动虚拟机

现在,您可以将本地虚拟机配置为在主机引导时自动启动。

支持新的客户机操作系统

Microsoft Windows 11

Microsoft Windows Server 2022

RHEL 9

Debian 11.x

Ubuntu 22.04

全新虚拟可信平台模块 2.0

Workstation Pro 现在提供虚拟可信平台模块(版本 2.0)设备,以支持 Windows 11 以及需要 TPM 的其他操作系统。

客户机操作系统要求
Windows 7 或更高版本

具有 Mesa 22.0.0 和 Linux 内核 5.16.0 的 Linux

支持 WDDM 1.2

更新日志
新增功能
新的安全增强功能

此版本引入了新的安全增强功能,即通过采用经过改进的加密方案(XTS 而不是 CBC),来实现最大程度的保护并降低性能开销。请参见 https://kb.vmware.com/s/article/93071,了解详细信息。

本版本解决了 CVE-2023-34044 问题。有关这些漏洞及其对 VMware 产品所造成影响的详细信息,请参见 VMSA-2023-0022。

使用 VMRUN 命令控制虚拟机

现在,您可以在 Workstation Player 中使用 VMRUN 命令行实用程序控制虚拟机。您可以使用此类命令执行各种客户机操作,例如打开或关闭电源、捕获快照以进行数据备份、管理网络适配器、运行可执行程序、管理文件和目录、管理操作系统上运行的进程等等。

导入和导出具有 vTPM 设备的虚拟机

现在,您可以使用 OVF Tool 导入或导出启用了 vTPM 设备的虚拟机。您可以将具有 vTPM 设备的虚拟机导出为 OVF 文件,然后使用该 OVF 文件导入具有 vTPM 的虚拟机。

使用 VMREST API 管理加密虚拟机的电源操作

现在,您可以使用 VMREST API 服务对加密虚拟机执行以下操作:打开电源/关闭电源、挂起、暂停、取消暂停或检索状态。

VMware 硬件版本 21

最多支持 256 个 NVMe 设备:4 个控制器,每个控制器 64 个设备

在以下客户机操作系统中支持 NVMe 1.3:

Microsoft Windows 11

Microsoft Windows Server 2022

已解决的问题
远程控制虚拟机时,VNC 客户端中未显示光标

将虚拟机配置为 VNC 服务器时,VNC 客户端无法正确显示受控虚拟机的鼠标光标。

这个问题已得到解决。

无法使用 VMRUN 启动加密虚拟机

无法使用没有 nogui 的 VMRUN 命令启动加密虚拟机

这个问题已得到解决。

在配置了 DHCP 的 Windows 主机上,无线网桥连接可能无法正常建立

如果在配置了 DHCP 模式的 Windows 主机上使用 Workstation 17.0.1 或更高版本,则可能无法在主机操作系统上正常建立无线网桥连接。

这个问题已得到解决。

启用“记住密码”选项后,无法访问加密虚拟机

使用 Windows 客户机操作系统创建加密虚拟机时,如果选中用于记住密码的选项,虚拟机可能在您尝试登录时提示您再次输入密码。

这个问题已得到解决。

无法降级虚拟机的硬件兼容性

在 Workstation Pro 17.0.1 或更高版本上,如果未安装 VMware Tools,用户无法降级 Windows 95/98 虚拟机的硬件兼容性版本。

这个问题已得到解决。

启用 USB 时,虚拟机显示 BSOD

在 Workstation Pro 中启用 USB 时,虚拟机无法启动,并显示 BSOD 错误。

这个问题已得到解决。

在 Visual Studio 中,鼠标光标从点击事件点偏移

在 Windows 10/11 客户机操作系统上使用 Microsoft Visual Studio 时,鼠标不会在鼠标指针所在的位置点击。

该问题已解决。

基于 Linux 的客户机操作系统使用虚拟机的默认 RAM 和 CPU 引导速度缓慢

在安装以下基于 Linux 的客户机操作系统时,虚拟机可能会引导缓慢或无法引导:

Fedora

AlmaLinux

Debian

SLES15

Oracle Linux

Photon OS

这个问题已得到解决。

更改磁盘拆分值后,无法解密或重新加密虚拟机

更改加密虚拟机的磁盘拆分值后,无法解密或重新加密虚拟机。

这个问题已得到解决。

安全问题
Pixman 已更新到 0.42.2

LibTIFF 已更新到 4.5.1

SQLite3 已更新到 3.42.0

curl 已更新到 8.1

OpenSSL 已更新到 3.0.10

激活方式
17版本
MC60H-DWHD5-H80U9-6V85M-8280D

下载地址:https://www.alipan.com/s/DUiSJ3TbYnH

免费查重网站推荐

2024年5月14日 15:31

1.学信网
网址:https://chsi.wanfangtech.net

应届生每人可以免费查重一次,学信网使用的是万方数据库,覆盖面广
2.百度学术

网址:https://xueshu.baidu.com/
每人免费查重一次,提供多种查重途径,选择范围广
3.超星大雅

网址:https://dsa.dayainfo.com/
其实就是学习通,应届生可以免费查重五次
4.维普通达检测系统

网址:http://vip.writepass.cn/
不需注册就可使用,部分高校,双学位论文及期刊论文都是用这个系统审核检测的,靠谱
5.paperYY

网址:https://www.paperyy.net/
papery每个账号每天可以免费检测1次,11:11-11:22 免费两次。
6.万方免费查重

网址:https://check.wanfangdata.com.cn/
应届生免费一次,重复率较低,不太准确
7.Paperpass

网址:https://www.paperpass.com/f/24fd5f
提供少量的免费使用,比较适合本科论文的检测
8. PaperVip

网址:http://www.papervip.cn/
新用户免费查重一篇,支持在线修改。
9.paperok

网址:https://www.paperok.com/
关住公主号有 10000 字的免费查重
10.paperfree

网址:https://www.paperfree.cn/
关住圈号有 10000 字的免费查重
11.PaperASK

网址:https://paperask.yuebaixx.top/
一天可免费查重一次
12.papertime

网址:https://www.papertime.shop/
关住公固号有10000字的免费查重
13.papered

网址:https://www.paperred.com/
不限次数,不限时间,单篇文章限 20 万字

摆地摊的八大禁忌

2024年5月10日 15:04

摆地摊的八大禁忌,新手出摊千万别做,摆摊这些误区做了就是和钱过不去,

记住摆摊这8大禁忌,这是哟将自己摆摊这些年踩的雷总结出来的教训,

知道这些摆摊想不赚钱都难! 

误区一:别觉得摆摊丢脸,

只有没有钱才丢脸,凭自己的劳动赚钱可不丢脸。 

误区二:摆摊时社恐不敢说话 

适度的讲解是提升成交率的关键,

很多时候摆摊未尝不是克服社恐提升自我的好方法呢~ 

小技巧:对于买家常问的问题,提前整理好,记住回答,等到顾客问的时候自然而然就回答好了。 

误区三:生意状况如实和人说 因为总有一些人,假装和你打听什么东西卖得比较好,

你什么卖得好,他就上什么,也有种人,你说生意好他嫉妒,你说生意不好他冷嘲热讽,

不管生意怎么样都说一般最好‼️ 误区四:常常卖感情价 不卖感情价,你卖多少,

她都觉得你赚她很多很多,做生意别心软,多少就是多少,少一块两块没毛病,

但是要是折本做感情,可能就太幼稚了。 误区五:做生意把情绪挂脸上 

你的情绪会直接影响到你的生意,换位思考,自己买东西是为了得到开心,

没必要花钱看脸色吧!所以做生意也就是带着笑脸,用积极向上的态度去每一次摆摊。 

误区六:看见别人卖什么好就上什么 

这个其实跟自己摊子的风格有很大关系,

考虑整体风格和类目能不能加产品,毕竟摆摊不是开超市,适合自己的产品,

能够卖出去才是更重要的事 

误区七:糊涂账 

很多人觉得自己摆摊,也没有合伙人,

就不算账,殊不知这才是影响你赚钱的关键! 算好每一笔账,明确收支,

才能知道自己的产品利润有多少,该不该进货了,不然的话很大可能会盲目把钱都投到货里。 

误区八:别总是计划 

想去摆摊,那就去思考卖什么品类,什么好卖什么赚钱,赶快行动起来,

千里之行始于足下。 以上这些建议是这几年摆摊的总结,

希望对即将摆摊的你能有一些作用,码字不易还望多多支持与鼓励!


TVbox助手 v2.2.0 接口|接口解密|一键配置 Win+Mac

2024年5月9日 15:24
TVbox助手_v2.2.0_接口|接口解密|一键配置_Win+Mac 图1

之后,在软件和电视机处于同一局域网的情况下,打开电视机,助手工具能自动搜索到电视机并进行连接,然后点击【推送本地包】就可以将接口文件复制到电视机存储。这里你可以选择推送本地包,也可以推送接口链接。

总之,非常方便大家使用接口,不用到处找;这个助手工具原版需要安装,这里也制作了一个免安装版,解压后就可以直接使用。

v1.1.1
继续修复个别线路本地包豆瓣不显示

v1.1.0
修复个别线路本地包豆瓣不显示,修复个别线路解密失败

v1.0.9
修复bug;

v1.0.8
修复jar为 img+bmp的线路下载失败的情况(如唐三新线路)。
优化线路文件夹命名方式(拼音命名)。


下载地址:

https://www.123pan.com/s/YSx0Vv-WkyEH.html

idm序列号永久激活码

2024年4月25日 09:17

idm序列号永久激活码2024免费可用,idm软件在安装的时候需要使用序列号才可以进行激活,很多玩家都想要获取免费的序列号进行激活,接下来小编就带来详细的idm序列号永久激活码2024免费使用,最新序列码免费提供。

idm序列号永久激活码2024最新:

TUTR2-i2nHo-GQBC6-ZECwH

3ZV2M-XQVN1-H0AMJ-B1MRX

56ECU-E6CY3-FMNLR-ZA787

5505O-M38P8-NHRL2-XAKWJ

KCC05-BJ2L2-ZM95G-6SFJ4

1QK5Z-4EQIM-XH4RD-BLXKT

TGG94-HRKYT-NIE2X-8A9MT

NCU51-ZEXKM-414SK-HM247

83NFH-WM0FW-GJRQ3-WQ8HL

A3RJ1-3X8AT-85C48-ET4YN


通过 Let's Encrypt 申请通配符证书并自动续签

2024年4月19日 10:11

如何申请证书

作为 https 的忠实拥护者,网站的 ssl 证书成了每个站长的必修课,作为小站,当然是选择免费的证书进行申请,对于主域名,申请 trust asia 的一年根域名证书当然够用,但对于二级域名而言,使用通配符证书即 *.qinzhi.cc 会更加合适,此时我们通常会使用 lets encrypt 的免费证书签发功能进行签发

方法 1 宝塔自带 ssl 签发



选择站点 - 设置 - ssl 设置 - 选择 lets encrypt,选择 DNS 验证即可开通,此处如果使用的是 tentent 的 dnspod 或 aliyun 的 dns 服务,会要求对应的 api key,自主在对应的解析网站上进行申请即可,填入即可申请,后续也可以通过自动任务进行续签,此处我宝塔升级到了 8.0.0 版本后已经不显示此功能了,也无法对泛域名进行续签,所以使用在线客户端进行签发 (很可能是因为宝塔接入了付费的 ssl 服务所以把免费的砍了,但实际上宝塔官网还有免费的证书)

方法 2 使用在线客户端进行签发



let’s encrypt 站点提供了多种客户端方式进行签发,可以使用命令行方式,但我比较喜欢使用在线客户端进行签发,此处非常推荐来此加密这个网站,可视化的方式进行免费签发泛域名,而且非常便捷




点击申请证书,输入域名,选择泛域名,进行申请,然后在 dns 解析服务商填上 txt 验证码即可快速申请成功,最后复制证书 pem 和 key 到宝塔面板的 ssl 当中即可快速进行部署,如果你使用的是 nginx 或其他服务器软件,下方也有教程供选择,非常非常方便!!!!!



我的推荐码   8R09WJ3R

注册地址   https://letsencrypt.osfipin.com/jump/share?code=8R09WJ3R

 免费申请SSL证书,支持泛域名和多域名: 来此加密. 使用推荐码注册:8R09WJ3R, 立刻获得5个积分. 访问:https://letsencrypt.osfipin.com/jump/share?code=8R09WJ3R

如何续签证书

方法 1 宝塔自动化续签

宝塔自动任务 - 添加任务 - shell 指令 -/www/server/panel/pyenv/bin/python /www/server/panel/class/acme_v2.py --renew=1 利用这个来自动进行到期续签!



方法 2 手动续签

在证书快到期前,来此加密会通过小程序进行提醒续签,自主登录续签即可,注意要提前绑定小程序!(小程序有广告可以帮助该站点进行运营,挺好)

方法 3 来此加密 api 续签

具体见文档通用说明 - 来此加密 (apifox.cn)

总结

一张 lets encrypt 的加密证书有效期是 3 个月,一年签 4 次就可以,免费真的是太棒啦

参考

来此加密手册


宝塔面板纯净版

2024年3月11日 15:14

去除宝塔官方接口通信,去除面板强制绑定账号。

免费提升为企业会员,免费使用软件商店中的所有[企业版插件]、[专业版插件]、[运行环境]、[免费插件]、[宝塔插件]

所有功能与原版一致,如有任何问题请参考宝塔官方解决方案

宝塔面板纯净版V8.0.5(免费使用所有插件)

---------------------------------

安装脚本链接:https://baota.sbs/


❌
❌