普通视图

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

WordPress 前台评论添加“删除”和“标识为垃圾”链接

2024年12月9日 15:39

也就是我在原来的基础上进行了修改调整:

  1. 参数调整edit_comment_link 过滤器的回调函数接受三个参数:$link$comment_id, 和 $status

  2. 全局变量使用:确保使用正确的全局变量 $comment 和 $post

  3. URL 构建:正确构建删除和标识为垃圾的 URL,并使用 esc_url 函数来转义 URL。

  4. 字符串拼接:通过 .= 操作符正确地将新的链接追加到现有链接后面。

  5. 过滤器优先级和参数数量:设置过滤器的优先级为 99,并明确指定接受三个参数。

  6. 权限检查:将 current_user_can('moderate_comments', $post->ID) 改为 current_user_can('administrator'),以确保只有管理员才有权限查看这些链接。

功能代码

将下面的代码添加到当前主题的 functions.php 文件即可:

/**
 * WordPress 前台评论添加“删除”和“标识为垃圾”链接(仅限管理员)
 * https://wpexp.cn/731.html
 */
function comment_manage_link($link, $comment_id, $status) {
    global $comment, $post;
    if (current_user_can('administrator')) { // 检查是否为管理员
        $delete_url = admin_url("comment.php?action=cdc&c=" . $comment_id);
        $spam_url = admin_url("comment.php?action=cdc&dt=spam&c=" . $comment_id);

        $link .= ' | <a href="' . esc_url($delete_url) . '" title="' . __('删除评论') . '">删除</a>';
        $link .= ' | <a href="' . esc_url($spam_url) . '" title="' . __('标识为垃圾') . '">标识为垃圾</a>';
    }
    return $link;
}
add_filter('edit_comment_link', 'comment_manage_link', 99, 3);


Linux主机耗子面板

2024年12月9日 13:58

耗子面板是新一代企业级全能服务器运维管理面板。简单轻量,高效运维。

优势
极低占用: 在 Debian 下部署面板 + LNMP 环境,内存占用不到 500 MB,遥遥领先于使用容器化的其他面板。
低破坏性: 面板的设计理念是尽可能减少对系统的额外修改,在同类面板中,我们对系统的修改最少。
追随时代: 面板所有组件均走在时代前沿,更新快,功能强大,安全性有保障。
高效运维: 面板界面简洁,操作简单,无需繁琐的配置,即可快速部署各类环境、调整应用设置。
离线运行: 面板运行可不依赖任何外部服务,您甚至可以在部署完成后停止面板进程,不会对已部署服务造成任何影响。
久经考验: 我们生产环境自 2022 年即开始使用,已稳定运行 2 年无事故。
开源开放: 面板开源,您可以自由修改、审计面板源码,安全性有保障。
UI 截图

Linux主机耗子面板 图1



运行环境
耗子面板支持 amd64 | arm64 架构下的主流系统,下表中的系统均已测试 LNMP 环境安装。

优先建议使用标注推荐的系统,无特殊情况不建议使用标注不推荐的系统。

不在下表中的其他系统,可自行尝试安装,但不提供技术支持(接受相关 PR 提交)。

系统 版本 备注
AlmaLinux 9 推荐
AlmaLinux 8 不推荐
RockyLinux 9 支持
RockyLinux 8 不推荐
CentOS Stream 9 不推荐
CentOS Stream 8 不推荐
Ubuntu 24 推荐
Ubuntu 22 支持
Debian 12 推荐
Debian 11 支持
OpenCloudOS 9 支持
TencentOS Server 4 支持
TencentOS Server 3.1 不推荐
Alibaba Cloud Linux 3.2 不推荐
Anolis 8 不推荐
openEuler 22 不推荐
随着系统版本的不断更新,我们亦可能会终止部分过于老旧的系统的支持,以保证面板的健壮性。

挂载硬盘
如果您的服务器有未挂载的数据盘,可在安装前以root用户登录服务器运行以下命令自动挂载,面板安装后不支持跨目录迁移。

curl -fsLm 10 -o auto_mount.sh https://dl.cdn.haozi.net/panel/auto_mount.sh && bash auto_mount.sh
安装面板
Warning 安装面板前,您需要了解 LNMP 环境的基本知识,以及如何处理常见的 LNMP 环境问题,我们不建议 0 基础的用户安装和使用耗子面板。

以root用户登录服务器,运行以下命令安装面板:

curl -fsLm 10 -o install.sh https://dl.cdn.haozi.net/panel/install.sh && bash install.sh
卸载面板
优先建议备份数据重装系统,这样可以保证系统纯净。

如果您无法重装系统,请以root用户登录服务器,执行以下命令卸载面板:

curl -fsLm 10 -o uninstall.sh https://dl.cdn.haozi.net/panel/uninstall.sh && bash uninstall.sh
卸载面板前请务必备份好所有数据,提前卸载面板全部应用。卸载后数据将无法恢复!

日常维护
使用panel-cli命令进行日常维护:

panel-cli



地址:

https://github.com/TheTNB/panel

挪车二维码免服务器可微信通知打电话源码

2024年11月13日 12:38


可以部署到cloudflare的wokers,自定义变量phone和wxpusherAppToken、wxpusherUIDs 或者直接在源码修改就行
实现推送到微信
可以绑定一个域名实现cdn加速,把网址转换成二维码,打印即可
也可以把第二个button注释掉,只保留微信通知

使用方法
到这里去申请:https://wxpusher.zjiecode.com/admin
新建一个应用,你会获得一个appToken,再扫码就能获得你的UID,然后把我下面的源码保存为index.html保存到你的网站,再把网站连接制作成二维码,贴你车上就可以了
对了,源码最底下的JS脚本,可以找个在线JS加密的给加下密,这样就可以防小白看到你的appToken了,
最后,如果你的车子有多个人开,可以让他们都扫一下,用小逗号添加在[UID1,UID2]里。



index.htm

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>通知车主挪车</title>
<style>
          * { box-sizing: border-box; margin: 0; padding: 0; }
          body { font-family: Arial, sans-serif; display: flex; align-items: center; justify-content: center; height: 100vh; background: #f0f2f5; color: #333; }
          .container { text-align: center; padding: 20px; width: 100%; max-width: 400px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); background: #fff; }
          h1 { font-size: 24px; margin-bottom: 20px; color: #007bff; }
          p { margin-bottom: 20px; font-size: 16px; color: #555; }
          button { 
            width: 100%; 
            padding: 15px; 
            margin: 10px 0; 
            font-size: 18px; 
            font-weight: bold; 
            color: #fff; 
            border: none; 
            border-radius: 6px; 
            cursor: pointer; 
            transition: background 0.3s; 
          }
          .notify-btn { background: #28a745; }
          .notify-btn:hover { background: #218838; }
          .call-btn { background: #17a2b8; }
          .call-btn:hover { background: #138496; }
        </style>
</head>
<body>
<div>
<h1>通知车主挪车</h1>
<p>如需通知车主,请点击以下按钮</p>
<button onclick="notifyOwner()">通知车主挪车</button>
<button onclick="callOwner()">拨打车主电话</button>
</div>
<script>
function notifyOwner() {
    fetch("https://wxpusher.zjiecode.com/api/send/message", {
        method: "POST",
        headers: {"Content-Type": "application/json"},
        body: JSON.stringify({
            appToken: "AT_uOKPJVyVlxVd************HKaA",
            content: "您好,有人需要您挪车,请及时处理。",
            contentType: 1,
            uids: ["UID_B0GShlS*************Dms","UID_Rh*********B5QK"]
        })
    })
    .then(response => response.json())
    .then(data => {
        if (data.code === 1000) {
            alert("通知已发送!");
        } else {
            alert("通知发送失败,请稍后重试。");
        }
    })
    .catch(error => {
        console.error("Error sending notification:", error);
        alert("通知发送出错,请检查网络连接。");
    });
}

function callOwner() {
    window.location.href = "tel:1318888888";
}
</script>
</body>
</html>


宝塔面板降级版本教程(如9.0.0降版本为8.0.5)

2024年10月29日 09:58

宝塔面板的专业版都到9.2.0了,免费版才到9.0.0。如果遇到宝塔的最新版本有BUG,那么如何降级到低版本呢,这篇笔记就来简单说说。

宝塔服务器面板,一键全能部署及管理 https://www.bt.cn/u/d2y84I

如何降级安装,这里列举从9.0.0版本降级到8.0.5,如果需要其他版本,自己更改版本号即可。脚本如下:

cd /root
mkdir bt
cd bt
# 这里以 8.0.5 版本为例,可以自行更改想降级的版本
wget https://download.bt.cn/install/update/LinuxPanel-8.0.5.zip
unzip LinuxPanel-8.0.5.zip
cd panel/
bash update.sh
之后强制刷新一下面板即可。

小米红米手机刷机玩机工具汇总

2024年10月7日 10:14

一、小米官方BL解锁申请链接(建议到[小米社区]去申请): https://web.vip.miui.com/page/info/mio/mio/testDetails?type=BL_BLOCK&id=-1&fromPathname=mioInternalTest&app_version=dev.220218 

二、小米官方解锁工具下载链接: http://www.miui.com/unlock/download.html 

三、[小米社区]正式版全机型刷机包汇总链接(链接由社区大佬[云墨清风]维护,大佬社区主页: https://web.vip.miui.com/page/info/mio/mio/homePage?uid=1205154814&fromPathname=mioDetail&app_version=dev.20051 )

⒈正式版全机型刷机包汇主链接: https://xiaomishequ.feishu.cn/sheets/shtcnsRTbwSvpUsaei6B04ogI6Z 

⒉正式版全机型刷机包汇总备用链接: https://xiaomishequ.feishu.cn/sheets/shtcnsRTbwSvpUsaei6B04ogI6Z?from=from_copylink 

四、Updader App(GitHub 链接)
软件介绍:下载大部分小米、红米机型的卡刷包(可以下载旧版本)

⒈使用指南链接(简体中文): https://github.com/YuKongA/Updater/blob/main/README_CN.md#%E4%BD%BF%E7%94%A8 

⒉项目链接: https://github.com/YuKongA/Updater-KMP 

⒊下载链接: https://github.com/YuKongA/Updater-KMP/releases 

五、第三方收集小米刷机包网站链接

⒈MIUI官方ROM仓库(简体中文): https://roms.miuier.com/zh-cn 

⒉小米澎湃OS,现已发布(简体中文): https://hyperos.fans/zh 

⒊小米 ROM: https://xiaomirom.com 

⒋……

待补中……

六、Root 管理器

⒈Magisk

⑴官方 Magisk(官方面具,GitHub 链接)
项目链接: https://github.com/topjohnwu/Magisk 

下载链接: https://github.com/topjohnwu/Magisk/releases 

⑵第三方 Magisk alpha(阿尔法面具)App Center下载链接: https://install.appcenter.ms/users/vvb2060/apps/magisk/distribution_groups/public 

⑶第三方 Kitsune Magisk(狐狸面具,GitHub 链接)
项目链接: https://github.com/HuskyDG/magisk-files 

下载链接: https://github.com/HuskyDG/magisk-files/releases 

⒉KernelSU
官网链接(简体中文): https://kernelsu.org/zh_CN 

项目链接(GitHub 链接): https://github.com/tiann/KernelSU 

下载链接(GitHub 链接): https://github.com/tiann/KernelSU/releases 

⒊APatch
官网链接(简体中文): https://apatch.dev/zh_CN 

项目链接(GitHub 链接): https://github.com/bmax121/APatch 

下载链接(GitHub 链接): https://github.com/bmax121/APatch/releases 

4.……

Root 管理器待发现中……

七、柚坛工具箱
(由酷安大佬@暮间雾 开发,相关信息点击此直达链接到大佬帖子查看: https://www.coolapk.com/feed/57736247?shareKey=MmU0OGRlYjhjMjNjNjcwMDVlOWI~&shareUid=27538075&shareFrom=com.coolapk.market_14.5.3 )
官网链接: https://toolbox.uotan.cn 

项目链接(GitHub 链接): https://github.com/Uotan-Dev/UotanToolboxNT 

下载链接(GitHub 链接): https://github.com/Uotan-Dev/UotanToolboxNT/releases 

八、搞机助手
官网链接: https://lsdy.top/gjzs 

下载链接: https://lsdy.top/gjzsdownload 

九、adb SDK 平台工具版

官网链接(简体中文): https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn 

下载链接(简体中文): https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn#downloads 

十、小米社区官网链接: https://www.xiaomi.cn 


开源的SSL证书管理工具 帮你申请和自动续期SSL证书

2024年9月24日 09:35
2024-09-24  小罗  网络收集  190

开源的SSL证书管理工具_帮你申请和自动续期SSL证书 图1


Certimate是什么

Certimate是一款开源的SSL证书管理工具,可以帮助你申请SSL证书,自动续期SSL证书,通过简单的配置即可轻松申请 SSL 证书,并且在证书即将过期时自动续期,无需人工干预,为用户提供一个安全、简便的 SSL 证书管理解决方案。Certimate支持私有部署,而且部署方法简单,只需下载二进制文件并执行即可完成安装。由于是私有部署,所有数据均存储在本地,不会保存在服务商的服务器上,确保数据的安全性。

Certimate项目部署教程
Certimate 是一个开源的 SSL 证书管理工具,具有以下特点:

支持私有部署:部署方法简单,只需下载二进制文件并执行即可完成安装。
数据安全:由于是私有部署,所有数据均存储在本地,不会保存在服务商的服务器上,确保数据的安全性。
操作方便:通过简单的配置即可轻松申请 SSL 证书,并且在证书即将过期时自动续期,无需人工干预。
一、安装
安装 Certimate 非常简单,你可以选择以下方式之一进行安装:

1. 二进制文件
你可以直接从Releases 页下载预先编译好的二进制文件,解压后执行:

./certimate serve
 
Note

MacOS 在执行二进制文件时会提示:无法打开“certimate”,因为Apple无法检查其是否包含恶意软件。可在系统设置> 隐私与安全性> 安全性 中点击 "仍然允许",然后再次尝试执行二进制文件。

2. Docker 安装
git clone git@github.com:usual2970/certimate.git && cd certimate/docker && docker compose up -d
 
3. 源代码安装
git clone EMAIL:usual2970/certimate.git
cd certimate
go run main.go serve
 
二、使用
执行完上述安装操作后,在浏览器中访问 http://127.0.0.1:8090 即可访问 Certimate 管理页面。

用户名:admin@certimate.fun
密码:1234567890



三、概念
Certimate 的工作流程如下:

用户通过 Certimate 管理页面填写申请证书的信息,包括域名、dns 服务商的授权信息、以及要部署到的服务商的授权信息。
Certimate 向证书场商的 API 发起申请请求,获取 SSL 证书。
Certimate 存储证书信息,包括证书内容、私钥、证书有效期等,并在证书即将过期时自动续期。
Certimate 向服务商的 API 发起部署请求,将证书部署到服务商的服务器上。
这就涉及域名、dns 服务商的授权信息、部署服务商的授权信息等。

1. 域名
就是要申请证书的域名。

2. dns 服务商授权信息
给域名申请证书需要证明域名是你的,所以我们手动申请证书的时候一般需要在域名服务商的控制台解析记录中添加一个 TXT 记录。

Certimate 会自动添加一个 TXT 记录,你只需要在 Certimate 后台中填写你的域名服务商的授权信息即可。

比如你在阿里云购买的域名,授权信息如下:

accessKeyId: xxx
accessKeySecret: TOKEN
 
在腾讯云购买的域名,授权信息如下:

secretId: xxx
secretKey: TOKEN
 
3. 部署服务商授权信息
Certimate 申请证书后,会自动将证书部署到你指定的目标上,比如阿里云 CDN 这时你需要填写阿里云的授权信息。Certimate 会根据你填写的授权信息及域名找到对应的 CDN 服务,并将证书部署到对应的 CDN 服务上。

部署服务商授权信息和 dns 服务商授权信息一致,区别在于 dns 服务商授权信息用于证明域名是你的,部署服务商授权信息用于提供证书部署的授权信息。


网站防扒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,注意完成修改后覆盖原文件保存,这样就可以避免黑客知道你的登陆地址!


❌
❌