Nginx Certbot

Nginx and Let’s Encrypt with Docker 这篇主要都是来自 medium 的这篇文章 Nginx and Let’s Encrypt with Docker in Less Than 5 Minutes | by Philipp | Medium 非常简单,我也就不多赘述,如果有不明白的问问 g 老师或者 c 老师即可 配完后确保域名解析到服务器即可(一直忘记改 cf,懵了好一会儿) 主要是为了下一篇文章 配置评论系统

March 25, 2025 · 1 min · 34 words · Ray

Nginx 记一次基础转发配置

显示已折叠代码(28 行) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 server { listen 1043 ssl default_server; server_name 172.16.99.32; ssl_certificate /etc/nginx/ssl/1043/server.crt; ssl_certificate_key /etc/nginx/ssl/1043/server.key; access_log /var/log/nginx/1043_access.log; error_log /var/log/nginx/1043_error.log warn; location / { add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "Authorization, Content-Type"; add_header Access-Control-Allow-Credentials true; proxy_pass http://X.X.X.X:1030; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 处理 OPTIONS 预检请求 if ($request_method = OPTIONS) { return 204; } } } 这个 nginx 配置做了什么事情 ...

March 24, 2025 · 2 min · 251 words · Ray

Win 杂记C盘满了

去年装的新电脑,刚开始只买了一块2T的SSD。自作聪明给C盘分了100G觉得足矣。结果随后不到两个月就是无尽的红色警告 直到今天终于忍不了了。 之前因为存储焦虑(因为大学配的ITX只买了一块西数500G的,那真的是捉襟见肘的存储。游戏随玩随删) 这次配电脑没多久还买了一块二手16T希捷企业机械盘。买之前担惊受怕 买之后只能说(真香) 这里必须提醒。二手盘有风险,数据无价。我有多次备份的习惯,所以大胆入了,除了炒豆子有点吵,用着感觉还行。 解决方案 bb太多有点偏题,解决方案很简单。 右键我的电脑。有一个计算机管理(Manage) 打开存储->磁盘管理 可以看到下面是我的SSD 此时C盘右侧邻近的是我的D盘.F盘是从D盘压缩出来的 右键D盘 点击压缩卷(Shrink Volume). 不知道为什么我这里最多只能压缩出来640G 但是D盘我本身还有很多,这里一路Next.随后压缩出来的卷会显示未分配.我这里因为已经新建了F盘了 就不截图了,右键未分配进行新建卷即可 然后备份D盘的内容到F盘. [!TIP] 如果D盘大于F盘怎么办呢(哥们我全给删了.反正都是游戏) 哈哈备份走就好了 文件清空后对D盘 Delete Volume/ 删除卷 长达两个小时的安静 沃日 太麻烦了 一怒之下直接全部清空。重装。现在一块2T C盘 一块 16T E盘。舒服!!!!

March 22, 2025 · 1 min · 34 words · Ray

Win 常用开发环境安装

记上一次急躁的我为了扩C盘直接抛弃了D盘后。所有开发环境也被我删干净了,都在D盘。正好那就重新安装,顺便记录一下。 我主要用到的环境一般是python java和node 这里java因为许久未碰。我都把我JB系列的软件都删了,现在是cursor用户也足以。主要是常常会在公司打开接近十几个工作空间。五个桌面,轻量的vscode配合插件也足以 所以我首先安装miniconda,用来管理python环境 Conda Conda is an open source package management system and environment management system for installing multiple versions of software packages and their dependencies and switching easily between them. It works on Linux, OS X and Windows, and was created for Python programs but can package and distribute any software. 最初接触Python的时候还是 Python3.7,就是五年前的事情了。那时候对于Anaconda的安装都是模模糊糊的。后来也是摸爬滚打,像Python Java系列的依赖,觉得比C++真的容易太多了。 这里准备安装的是miniConda。顾名思义,mini版 这一类安装 建议参考官方文档,所以先放上链接miniconda/intstall 然后是我的安装步骤 诶,太久没装了吗。原来win直接装一个exe就一步到位了 尬住了 那就装一下node吧 node 因为调试需求。node也会需要不同的版本。之前用的是nvm管理不同的版本,所以还是继续安装nvm 题外话好像也有人做了jvm 管理不同的jdk版本。不过之前都是手动切换 顶多也是java1.8和java十几 ...

March 21, 2025 · 1 min · 87 words · Ray

给ssh登录做一个通知

给ssh登录做一个通知 钉钉创建一个群。然后创建一个普通机器人。 这个思路是自己想的,随手搜了一下 真有佬做了.下面是链接 如何使用钉钉机器人通知接收服务器SSH登录提醒 - 阿豪运维笔记 根据佬的写法 后面再加点功能。最近忙的紧,先把这个脚本部署尝试 主要原理就是sshrc是SSH服务的一个特殊文件,它会在每次SSH会话建立时自动执行。 执行时获取一些信息,执行 POST 请求 到钉钉的 webhook 地址,群里的机器人就可以发消息了 注意关键词的设置 显示已折叠代码(70 行) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 # 编辑/etc/ssh/sshrc文件 最后更新时间 2025-03-17 11:09:34 # 设置日志文件 LOG_FILE="/tmp/ssh_notification_debug.log" # 记录详细日志的函数 log_debug() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] [PID:$$] [SSH_TTY:$SSH_TTY] [PPID:$PPID] $1" >> "$LOG_FILE" } # 记录脚本启动 log_debug "脚本开始执行 ====================" log_debug "SSH_CLIENT: $SSH_CLIENT" # 获取登录者的用户名 user=$USER # 获取登录IP地址 ip=${SSH_CLIENT%% *} # 创建基于用户、IP和当前小时的锁文件名 # 这样同一IP同一用户每小时只会通知一次 current_hour=$(date +%Y%m%d%H) LOCK_FILE="/tmp/ssh_notify_${user}_${ip}_${current_hour}" GLOBAL_LOCK="/tmp/ssh_notification.lock" log_debug "检查锁文件: $LOCK_FILE" # 简化的锁定机制,兼容dash shell if [ -f "$LOCK_FILE" ]; then log_debug "本小时已经为用户${user}从IP${ip}发送过通知" echo "Welcome back. The administrator has already been notified of your login this hour." exit 0 fi # 创建锁定文件 touch "$LOCK_FILE" log_debug "已创建锁文件: $LOCK_FILE" # 获取登录的时间 time=$(date +%F%t%k:%M) # 服务器的IP地址和自定义名称 server='204-ray-server-in-mckj' # 修改函数声明语法,使其兼容Dash DingDingalarm() { log_debug "开始发送钉钉通知" local url="https://oapi.dingtalk.com/robot/send?access_token=钉钉token" local UA="Mozilla/5.0(WindowsNT6.2;WOW64)AppleWebKit/535.24(KHTML,likeGecko)Chrome/19.0.1055.1Safari/535.24" local res res=$(curl -XPOST -s -L -H"Content-Type:application/json" -H"charset:utf-8" "$url" -d "{\"msgtype\":\"markdown\",\"markdown\":{\"title\":\"$1\",\"text\":\"$2\"}}") if [ $? -eq 0 ]; then log_debug "钉钉通知发送成功: $res" echo "钉钉通知已发送,结果:$res" echo "Notification sent to admin." else log_debug "钉钉通知发送失败: $res" echo "钉钉通知发送失败,错误信息:$res" fi } # 使用Markdown格式美化通知内容 message="### 🔔 服务器登录通知 🔔\n\n**时间**:<font color='#FF5722'>$time</font>\n\n**服务器**:<font color='#2196F3'>$server</font>\n\n**用户**:<font color='#4CAF50'>$user</font>\n\n**来源IP**:<font color='#9C27B0'>$ip</font>\n\n**会话信息**:TTY=$SSH_TTY, PID=$$, PPID=$PPID\n\n> Please make sure to check if this login is expected." DingDingalarm "服务器登录通知" "$message" # 打印日志,通知管理员并告知操作将被记录 echo "The administrator has been notified. All actions will be logged." log_debug "通知完成,脚本结束 ====================" # 要定期清理锁文件,请使用以下命令设置cron作业(在root权限下执行一次): # echo "5 * * * * root find /tmp -name 'ssh_notify_*' -type f -mmin +60 -delete" > /etc/cron.d/clean_ssh_locks 小插曲 直接 cp 到 sshrc 中时报错 ...

March 13, 2025 · 2 min · 332 words · Ray