群晖NAS中Docker容器镜像拉取失败怎么办?
前言目前由于一些未知原因,国内各大 DockerHub 镜像服务器已宣布停止使用,这导致我们无法拉取Docker镜像并构建容器。网络上解决方法有很多,今天介绍一种使用CloudFlare Worker代理加速Docker容器镜像。
博主写该篇文章主要还是以个人搭建代理为主要目的,当然不想折腾的,可以直接用第三方的代理ps:第三方代理,安全性、持久性、稳定性都没有保障,所以最好是自己搭建
项目来源本方法来自于Github大佬 cmliu ,项目名称及地址:【CF-Workers-docker.io:Docker仓库镜像代理工具】
这个项目是一个基于 Cloudflare Workers 的 Docker 镜像代理工具。它能够中转对 Docker 官方镜像仓库的请求,解决一些访问限制和加速访问的问题。
Cloudflare
Cloudflare 是一家国外的CDN加速服务商。提供免费和付费的加速和网站保护服务。
Cloudflare 提供了不同类型的套餐,即使是免费用户,Cloudflare 提供的功能也是很全面的。
注册Cloudflare我们需要用到 Cloudflare,用来 ...
关于Linux上多版本JDK使用的解决方案
前言在开发或部署Java项目时,不同项目可能需要依赖不同版本的JDK(Java Development Kit)。例如,一个旧项目可能需要JDK 8,而一个新项目可能已经升级到JDK 17。如果你是在Linux环境下工作,如何高效管理和切换多版本JDK就是一个非常实际的问题。本网将介绍如何在Linux上轻松管理多版本JDK。
需求博主想安装一个Jenkins,但是现在Jenkins需要高版本的JDK。但Linux上只有JDK 8,所以有使用高版本JDK的需求,所以就要下载高版本的JDK 17。
众所周知,高版本JDK是收费的,所以就选择 社区版的OpenJDK 17
手动安装解压每个版本的操作流程都一致,具体操作步骤可以参考 Linux下安装JDK8 这篇文章。
切换版本原项目使用JDK 8,所以在不影响原项目运行的情况下,可以临时切换到高版本JDK。但每次切换版本都需要修改环境变量,所以博主图省事,就写了一个 shell命令文件,放在 /usr/local/jenkins/ 路径下
1234567891011121314151617181920212223242526272 ...
Linux下安装Jenkins
前言Jenkins 是一个开源的持续集成工具,广泛应用于自动化构建、测试和部署。本文将详细介绍如何在 Linux 系统中基于 JDK8 安装 Jenkins,包括所需命令和相关配置,帮助您快速搭建一个功能完善的 Jenkins 环境。
Jenkins官网地址Jenkins 插件地址Jenkins英文官网 war包最新版本下载,主要版本使用2.346.1或2.346.3Jenkins中文官网 war包最新版本下载,主要版本使用2.346.1或2.346.3Jenkins官网 rpm包下载,主要版本使用jenkins-2.346-1.1.noarch.rpm
支持JDK对应列表
ps:官网中有两个版本支线,Weekly周更版本 和 LTS长期成熟稳定支持版本,主要使用稳定的 LTS版本如图所示,非常经典的版本2.346.1,这个版本同时支持 JDK8、JDK11、JDK17,使用的最广泛,也意味着坑最多
环境准备
操作系统: Linux CentOS
Java 环境: JDK 8
Jenkins版本: jenkins-2.346.3(支持JDK 8)、jenkins-2.479.2( ...
群晖NAS关于反向代理及映射网口问题
前言个人使用群晖NAS时,经常遇到在外地访问家里的NAS服务器(域名+端口)的场景。这种情况就会涉及到端口映射及反向代理的问题。
反向代理场景博主想访问家里NAS中利用Docker启动的某个程序(端口:18080):http://nas.renyuxin.cn:18080
ps:该场景是基于能通过域名正常匹配上家里的IP地址(动态固定IP)
Docker使用的是HTTP协议,如果普通程序在没有特殊情况下,是允许使用HTTP协议进行访问的,但某些程序由于加了访问条件限制,浏览器访问必须得使用HTTPS协议才能正常访问,所以我们就需要在NAS中做反向代理。
解决方案
群晖控制面板 -> 登录门户 -> 高级 -> 反向代理服务器 -> 新增 -> 填写配置
修改完后,点击保存
网页访问测试:http://nas.renyuxin.cn:18081,成功
填写配置时,这里一定注意来源这组配置,我们是需求是支持通过HTTPS协议进行访问的,需要用一个未被占用的18081端口反向代理到这个18080端口上。
至于其他配置的可以根据下图仿照着修改。
保存后 ...
如何获取某个网站的图标LOGO
前言在整合自己的网站导航时,需要获取网站的图标LOGO,个人手动收集网站图标LOGO非常麻烦,主要是查看网站源码、百度、谷歌等途径把对应导航的图标下载下来,累死累活也收集不了多少,所以找了几个api,可以快速获取网站的图标LOGO。
一为API
接口地址:https://api.iowen.cn/favicon
返回格式:图片
请求方式:GET
请求格式:https://api.iowen.cn/favicon/网址.png
请求示例:https://api.iowen.cn/favicon/blog.renyuxin.cn.png
请求参数说明:
名称
必填
类型
说明
url
是
string
需要获取图标的URL地址,如:blog.renyuxin.cn,确保URL能够正常打开 不需要 http(s):// ,且结尾必须填.png
关于pm2命令的使用指南
前言在Node.js项目中,进程管理是一个重要的部分。pm2 是一个非常流行的Node.js进程管理工具,它可以帮助我们管理和监控Node.js应用的运行状态。本文将介绍 pm2 的安装和基本使用方法,更好地管理Node.js项目。
ps:博主经常喜欢折腾些小玩意,用的是自己的服务器。但是在部署这些小玩意的时候,启动后要持久化,由于有些小玩意并不支持自带的命令,所以就写了一个关于pm2命令的使用指南,方便以后使用。
介绍【PM2官方网站 | Github】pm2 是一个Node.js进程管理器,专为生产环境下的应用程序设计。
提供了进程守护、负载均衡、日志管理、性能监控等功能。它允许你轻松地启动、停止、重启和监控Node.js应用程序,并提供了友好的命令行接口和强大的API。
它可以自动重启崩溃的应用,支持负载均衡,还提供了详细的日志管理和监控功能。
pm2 使得Node.js应用的部署和管理变得更加简单和高效。
安装在Linux系统上安装 pm2 非常简单,只需执行以下命令12345# 使用npm全局安装PM2npm install pm2 -g# 验证成功pm2 - ...
Linux下安装Go
前言
Go,又称 Golang
Google的 Robert Griesemer,Rob Pike 及Ken Thompson开发的一种静态强类型、编译型语言。
Go语言语法与C相近,但功能上有:内存安全,GC(垃圾回收),结构形态及CSP-style并发计算。
创建文件夹在/usr/local路径下创建一个文件夹java
1mkdir /usr/go
安装进入到到/usr/go目录下,使用yum下载安装GO
1yum install golang
配置软连接1ln -s /usr/go/bin/go /usr/local/bin/
测试安装成功1go version
输出:12[root@SMART ~]# go versiongo version go1.15.6 linux/amd64
关于Hugo的使用安装及部署
前言Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。【Hugo 中文文档】
ps:需要先安装go环境,参考文章:Linux下安装Go下安装Go
下载安装包去Hugo官网下载安装包或者Github下载:Github | gohugoio/Hugo
例如:hugo_extended_0.129.0_Linux-64bit.tar.gz
创建文件夹在Linux创建文件夹/usr/local/hugo1mkdir /usr/local/hugo
解压安装包1tar -zxvf hugo_extended_0.129.0_Linux-64bit.tar.gz -C /usr/local/hugo
验证安装1234567cd /usr/local/hugo./hugo version````# 配置软连接```shellln -s /usr/local/hugo/hugo /usr/local/bin/
配置域名我用是阿里云平台的域名,配置的是nav.renyuxin.cn。关于域名注册解析具体流程就不说了
配置Nginx域名直接访问,需要配置Nginx
12 ...
Java中关于JDK8新特性的介绍及使用示例
前言JDK 8(Java Development Kit 8)引入了许多新的特性和改进,使得Java语言更加现代化和易于使用。以下是JDK 8的一些主要新特性:
Lambda表达式允许把函数作为参数传递给方法,简化代码编写,提高代码的可读性和可维护性。
1234567891011// 传统写法new Thread(new Runnable() { @Override public void run() { System.out.println("Hello, world!"); }}).start();// Lambda表达式new Thread(() -> System.out.println("Hello, world!")).start();
函数式接口只包含一个抽象方法的接口,称为函数式接口。可以用Lambda表达式来实现函数式接口。
例如,java.util.function包中的接口(如Function, Predicate, Consumer等)。
...
数据库设计规范
前言
制定规范的直接目的是约束设计行为,最终目的是确保设计的合理统一。
约定优先于配置(Convention Over Configuration)。数据库命名规范、数据库基本设计规范、数据库索引设计规范、数据库字段设计规范、数据库SQL开发规范、数据库操作行为规范
数据库规范库名规范
命名有意义,只能使用英文字母、数字、下划线,使用小写字母,长度32个字符以内
避免用MySQL的保留字如:call、group等
编码
采用 UTF8 编码。 只能是utf8或者utf8mb4
分库
名称:库通配名+编号(从0开始递增),比如:wenda_001
把一个数据库分成多个,建议做个读写分离,做分库会加大开发成本,不推荐使用。
采用分库策略的,库的数量不能超过1024
数据表表名
命名有意义,只能使用英文字母、数字、下划线,使用小写字母,表名不使用复数名词,长度32个字符以内
避免用MySQL的保留字如:call、group等
同一模块使用的表名尽量使用统一前缀。 模块前缀+表名,如师资系统采用”sz”作为前缀,渠道系统采用”qd”作为前缀等。
相关模块的表名与表名之间尽量体现jo ...








