🏠 HomeLab:中年男人之友
未读封面来源: Unsplash-Taylor Vick 相关文章: 先导篇:我的 HomeLab 概要; 硬件篇:介绍我所拥有的硬件设备; 网络篇:包括网络环境、异地组网与网络安全; 服务篇:使用 Docker 搭建的各类服务; 数据篇:包括数据存储方案、备份方案和数据恢复方案; HomeLab数据同步:构建高效的数据同步网络 HomeLab数据备份:打造坚实的数据安全防线 HomeLab 网络续集:升级 10G 网络-再战 10 年 NAT 内网穿透详解:揭秘网络连接背后的奥秘 简介在本篇博客中,我们将深入探讨如何在 HomeLab 中实现高效的数据存储、备份和同步方案。 随着个人数据的不断增长,数据的安全性和可用性变得越来越重要。为此,我们可以采用一种被称为 3-2-1 原则 的备份策略,以确保我们的数据在发生意外时能够得到及时恢复。 3-2-1 备份原则 的核心要点如下: (另外一些细节分析可以看韦易笑在知乎的回答:《如何长时间保存重要数据?》) 3 份备份数据:我们不应依赖单一的数据备份,而应该拥有至少两份数据副本作为额外的安全保障。这样可以大大降低因单一备份故障导致数据丢 ...
🏠 HomeLab:中年男人之友
未读在这个充满无限可能的数字时代, 我们有机会通过自托管的云服务平台来构建一个属于个人的云端世界. 这不是简单地访问远程服务器, 而是亲手打造、定制并管理自己的虚拟实验室, 进行各种新奇有趣的服务部署. 这种“折腾”不仅仅是一种乐趣, 更是一种自我挑战和创造力的释放. 从这篇博客开始, 我会不时地介绍一些我在自托管环境中安装和配置的新奇有趣服务. 这些服务或许并非我当下所需, 但正是这种创造需求的精神驱动着我不断地探索新领域、学习新技术. 在这个过程中, 我也希望能够与大家分享我的经验和见解, 一起探讨如何在个人云端世界中找到乐趣和价值. 在这里, 你将会看到我如何一步步搭建属于自己的实验环境, 从选择合适的硬件到配置各种软件服务. 无论是对技术充满热情的爱好者, 还是希望拓展技能的初学者, 这里都会有一些实用的技巧和建议. 让我们一起踏上这段旅程吧!让我们在自托管的乐趣中不断学习、创造和成长. 敬请关注接下来的博客文章, 期待与你的共同探讨和分享. 相关文章: 先导篇:我的 HomeLab 概要; 硬件篇:介绍我所拥有的硬件设备; 网络篇:包括网络环境、异地组网与网络安全; 服务篇: ...
🏠 HomeLab:中年男人之友
未读前言NAT (网络地址转换, Network Address Translation) 的由来与互联网的发展历史密切相关, 主要是为了解决 IPv4 地址资源紧张问题, 同时增强网络安全性和管理灵活性. 相关文章: 先导篇:我的 HomeLab 概要; 硬件篇:介绍我所拥有的硬件设备; 网络篇:包括网络环境、异地组网与网络安全; 服务篇:使用 Docker 搭建的各类服务; 数据篇:包括数据存储方案、备份方案和数据恢复方案; HomeLab数据同步:构建高效的数据同步网络 HomeLab数据备份:打造坚实的数据安全防线 HomeLab 网络续集:升级 10G 网络-再战 10 年 NAT 内网穿透详解:揭秘网络连接背后的奥秘 背景与由来1. IPv4 地址枯竭问题IPv4 使用 32 位地址空间, 最多可以提供约 43 亿个唯一地址. 随着互联网的普及, 联网设备数量迅速增长, 特别是 1990 年代后期, 地址分配紧张的问题愈发明显. 早期解决方案如子网划分和无类别域间路由 (CIDR) 延缓了地址耗尽, 但并不能彻底解决问题. 2. 私有网络需求 很多组织和企业需要将大量内部 ...
🏠 HomeLab:中年男人之友
未读在构建个人云端实验室 (HomeLab) 的过程中, 硬件是基石, 而网络则是让这些硬件协同工作的血脉和灵魂. 本篇将深入探讨家庭网络的配置, 从基础的架构设计到高级的安全性和异地组网技术, 逐步展示如何搭建一个高效、稳定且安全的自托管网络环境. 我将从以下几个方面进行详细阐述: 网络架构: 介绍如何选择合适的网络设备 (如路由器、交换机等) , 以及如何在不同的房间和位置部署网络覆盖. 安全性: 讨论如何设置网络安全策略, 包括防火墙规则、VPN 配置、加密通信等, 以确保数据的安全性和隐私保护. 异地组网: 展示如何通过远程访问技术, 将家庭实验室扩展到外部网络, 实现异地管理和操作. 实践案例: 分享实际操作步骤和经验, 帮助读者更好地理解和应用这些网络技术和概念. 通过本篇的探讨, 你将能够了解到如何构建一个高效、安全且可扩展的自托管网络环境. 这不仅能够满足日常工作和学习的需求, 还能为你的个人云端实验室提供一个稳固的网络基础. 让我们一起揭开家庭网络配置的神秘面纱, 探索自托管的无限可能吧! 相关文章: 先导篇:我的 HomeLab 概要; 硬件篇:介绍我所拥有的硬 ...
🏠 HomeLab:中年男人之友
未读简介在打造个人云端实验室(HomeLab)的过程中,硬件选择是至关重要的第一步。它们不仅是实验的基础设施,也是整个系统稳定性和性能的保证。本篇将重点探讨如何在预算范围内,选择具有高稳定性、良好性价比、可扩展性以及兼容性的硬件。 以下是我在挑选硬件时需要考虑的关键因素: 稳定性:我将优先考虑那些可靠性高的硬件产品,避免因频繁故障而导致的维护成本和工作中断。 性价比:在确保硬件能满足基本需求的前提下,我会寻找性价比最高的选项。毕竟,资金是有限的资源,需要合理分配。 可扩展性:为了未来的发展和可能的升级,我倾向于选择那些能够轻松扩展的硬件解决方案。 兼容性:为了避免后期使用中的不兼容问题,我将选择那些在市场上得到广泛认可的、具有良好兼容性的组件。 在选择硬件时,我特别看重稳定性。我不想频繁地处理各种硬件故障,这不仅影响工作效率,也可能导致宝贵的数据丢失。因此,我排除了集成所有功能的“全功能一体机”(All In One)方案(这类方案又叫 All In Boom)。这类产品虽然在某些方面可能看起来很有吸引力,但它们往往牺牲了性能和升级的可能性。 相反,我会将服务部署到多个独立的服务器上 ...
🏠 HomeLab:中年男人之友
未读目前公司的数据存储模式比较落后, 主要问题在于数据安全性差;整体数据量大以及原有大量陈旧的数据难以存储;存在多操作系统平台,设备繁杂导致存放的数据难以共享协作和管理,造成效率低下;员工的离职造成资料丢失。我们需要一个满足需求又安全的方案来解决这样的普遍难题。 NAS 存储共享解决方案包含:群晖 NAS 服务器、Backup 插件。 应用场景:企业数据集中存储/共享/备份,企业私有云文件管理器搭建。 方案背景随着企业信息化的发展,企业信息化带来的数据爆炸式增长向企业的数据管理方式提出了挑战,一方面要应对数据容量的不断扩充,另一方面需要确保所有有效数据的高安全性和可管理性。目前来看,企业的数据各自存放、分散管理,关联性不强,无法很好的针对不同的业务数据进行统一、有效的管理。 企业的数据存储模式比较落后,成本较高且效率低下,主要问题在于数据安全性差;整体数据量大以及原有大量陈旧的数据难以存储;存在多操作系统平台,设备繁杂导致存放的数据难以共享协作和管理,造成效率低下;员工的离职造成资料丢失。 从对企业单位数据存储的分析中可以看出,要使整个企业内部的数据得到统一管理和 ...
🎉 高能分享
未读4630436162ade97ba2718b7d0c4b3b63dc7090183d7540ee162ecb0e10eb241487dbd1e89a47424548c5d087c44d4f7f31b17b457b7d65ff59cc159308c3e00efae0ce3d99fc6a4158f0399aa44eaf93ce7ec3735c7f3f0287b65a5bce8b70c625083c213bca5248778dc205fe9f3525b51a0d7955270da23508c64b0a29b587e04d015e7418cdc8258990757e9f824cc61301d8acd91a20a6d348056a9bd200dcb87cdbd5c031fdf45779ae1df3ab90e88e1a10fbc27c08d1125994c02c42dc9044435e225068672b900c89984c096bcf2aaee6a8544f7e22171e4951ac8215 密码是 123456, 解密后需要刷 ...
🏠 HomeLab:中年男人之友
未读增加 KVM 虚拟机磁盘容量在 KVM 中扩展虚拟机磁盘容量分为两步:扩展虚拟磁盘文件 和 扩展虚拟机内的分区和文件系统。 第一步:扩展虚拟磁盘文件1. 确认虚拟磁盘文件路径使用以下命令查找虚拟机磁盘文件的位置: 1virsh domblklist <虚拟机名称> 示例输出: 123Target Source------------------------------------------------vda /var/lib/libvirt/images/vm-disk.qcow2 记下磁盘文件路径(例如 /var/lib/libvirt/images/vm-disk.qcow2)。 2. 扩展磁盘文件假设需要将磁盘扩展为 50 GB,根据磁盘格式选择以下命令: QCOW2 格式磁盘扩展 1qemu-img resize /var/lib/libvirt/images/vm-disk.qcow2 50G RAW 格式磁盘扩展 1qemu-img resize /var/lib/libv ...
🎉 高能分享
未读使用 vuepress 搭建自己的博客 Vuepress 介绍官网: https://vuepress.vuejs.org/ 类似 hexo 一个极简的静态网站生成器, 用来写技术文档不能在爽. 当然搭建成博客也不成问题. Vuepress 特点 响应式, 也可以自定义主题与 hexo 类似 内置 markdown (还增加了一些扩展), 并且可以在其使用 Vue 组件 Google Analytics 集成 PWA 自动生成 Service Worker 快速上手安装初始化项目 12yarn init -y# 或者 npm init -y 安装 vuepress 12yarn add -D vuepress# 或者 npm install -D vuepress 全局安装 vuepress 12yarn global add vuepress# 或者 npm install -g vuepress 新建一个 docs 文件夹 1mkdir docs 设置下 package.json 123456{ "scripts": { ...
🎉 高能分享
未读zuihou-admin-cloud基于 SpringCloud(Hoxton.SR1) + SpringBoot(2.2.2.RELEASE) 的 SaaS 型微服务脚手架,具备用户管理、资源权限管理、网关统一鉴权、Xss 防跨站攻击、自动代码生成、多存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发, 支持多服务并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,非常适合学习使用。核心技术采用 Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Seata、Nacos、Sentinel、 RabbitMQ、FastDFS 等主要框架和中间件。 希望能努力打造一套从 SaaS基础框架 - 分布式微服务架构 - 持续集成 - 系统监测 的解决方案。本项目旨在实现基础能力,不涉及具体业务。 部署方面,可以采用以下 4 种方式,并会陆续公布 jenkins 集合以下 3 种部署方式的脚本和配置文件: IDEA 启动 jar 部署 docker 部署 k8s 部署 租户后台 ...
🧩 开发框架与中间件
未读1. 概述这篇文章将阐述怎么在 Spring 中使用 Profile 从 Spring 3.1 开始,我们能够将 bean 映射到不同的 profile 上,如 dev, test, prod 等。 我们也能够根据环境 (environment) 来激活不同的 profile,从而加载我们需要的 bean。 2. 在 Bean 上使用 @Profile我们先从简单的例子开始,看看怎么把 bean 绑定到不同的 profile 上。 使用 @Profile 注解,我们可以将 bean 绑定到指定的 profile 上。这个注解支持绑定一个或多个 profile。 试想这样一个场景:我们有一个 bean,只在开发环境需要,线上环境不需要。那么我们可以通过注解将这个 bean 绑定到 dev profile 上。这样,这个 bean 只会存在于开发环境,而在其他环境中不会被加载。如下所示: 1234@Component@Profile("dev")public class DevDatasourceConfig 上面的写法是指绑定 bean 到 de ...
🧱 后端开发与架构
未读互联网是基于 HTTP 协议构建的,而 HTTP 协议因为简单流行开来,但是 HTTP 协议是无状态(通信层面上虚电路比数据报昂贵太多)的,为此人们为了追踪用户想出了各种办法,包括 cookie/session 机制、token、flash 跨浏览器 cookie 甚至浏览器指纹等。 把用户身份藏在每一个地方(浏览器指纹技术甚至不需要存储介质) 讲使用 spring security 等具体技术的资料已经很多了,这篇文章不打算写框架和代码的具体实现。我们会讨论认证和授权的区别,然后会介绍一些被业界广泛采用的技术,最后会聊聊怎么为 API 构建选择合适的认证方式。 认证、授权、凭证首先,认证和授权是两个不同的概念,为了让我们的 API 更加安全和具有清晰的设计,理解认证和授权的不同就非常有必要了,它们在英文中也是不同的单词。 认证是 authentication,指的是当前用户的身份,当用户登陆过后系统便能追踪到他的身份做出符合相应业务逻辑的操作。即使用户没有登录,大多数系统也会追踪他的身份,只是当做来宾或者匿名用户来处理。认证技术解决的是 “我是谁?” 的问题。 ...
🔥 效能提升
未读Maven 相关问题 由于未统一管理多个模块的 jar 依赖, 每个模块都各自为政;模块之间的配置相互拷贝, 有用的没用的都拷了;升级版本麻烦, 每个相关模块都得改版本. 1. 重复的依赖 redis-cache 模块的 pom.xml 2. 重复的插件 mamagesystem 模块的 pom.xml 3. 依赖冲突 mamagesystem 模块的 pom.xml 4. 重复的配置 导致的问题有可能导致出现以下几种异常: java.lang.ClassNotFoundException java.lang.NoSuchMethodError java.lang.NoClassDefFoundError 解决方案 所有模块使用一个父模块来管理将重复配置迁移到 parent pom.xml 中;使用 dependencyManagement 来统一管理 jar 依赖;使用 pluginManagement 统一管理插件依赖;所有 jar 依赖的版本全部使用 properties 管理;使用 excludes 排除冲突的 jar 包; 代码问题1. 代码不规范 ...
🧩 开发框架与中间件
未读缓存服务组件 依赖于: jedis spring-data-redis spring-session-data-redis redis 集群使用的是 ShardedJedisPool, redis 3.x 后自带集群负载 jar 中重要的类 JedisConnectionFactory用于获取 jedis 实例,从而操作 redis ShardedJedisPool用于连接 redis 集群 cache 重要的类 RedisDataSource使用 JedisConnectionFactory 从 ShardedJedisPool 连接池中获取 jedis RedisClientTemplate依赖 RedisDataSource 操作 redis 的具体模板方法 RedisCacheServiceImpl对 RedisClientTemplate 再次封装 JedisPool(非切片链接池) 和 ShardedJedisPool(切片链接池) 有什么区别JedisPool 连一台 Redis,ShardedJedisPool 连 Redis 集群,通过一致性 ...





















