沐沐言
type: channel
link: https://note.camelz.cloudns.ch/
description: 最是人间留不住，朱颜辞镜花辞树。
items: Ubuntu安装docker和docker compose
items: 在飞牛系统上搭建 Typecho 博客系统
items: Windows 远程登录Ubuntu桌面环境
items: Ubuntu 安装 Docker 和 Docker Compose 教程
items: PVE修改IP地址
items: 爪云Clawcloud搭建VPS, 实现SSH 远程登录并搭建easytier
items: 一些CSS规则-解决屏幕溢出
items: v2rayN路由规则设置
items: clawcloud爪云利用H-UI面板创建Hysteria2节点
items: 彻底删除Alibaba PC Safe Service的方法

Ubuntu安装docker和docker compose
type: item
date: 2025-09-21T13:36:00+02:00
description: 一键安装脚本# 登录root sudo -i # 更新 apt update # 升级 apt upgrade # 按照工具curl和vim apt install -y curl vim # 官方脚本, 指定使用Aliyun加速, root权限执行 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun # 查看安装的docker版本 docker --version普通用户授权docker权限# 注意登录用户身份 sudo usermod -aG docker $USER # 需要登出再重新登录才生效(实测需要重启生效) # 没有生效前 id 与 id $USER 显示不一致 id $USER 或 cat /etc/group | grep docker # 查看 newgrp - docker # 更新用户组 很重要(临时生效) docker ps # 测试docker命令是否可以使用sudo正常使用(可选)配置国内源# 配置aliyun镜像加速 mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://docker.1ms.run", "https://docker.m.daocloud.io"] } EOF systemctl daemon-reload systemctl restart docker测试源是否能用# 测试镜像拉取&容器运行 docker run hello-world安装docker compose参见官方文档: https://docs.docker.com/compose/install/linux/#install-using-the-repository针对linux平台, 仓库安装脚本如下# Debian/Ubuntu sudo apt-get update sudo apt-get install docker-compose-plugin # RPM sudo yum update sudo yum install docker-compose-plugin # 验证 docker compose version docker --version docker info按照portainer管理工具参考链接https://docs.portainer.io/start/install-ce/server/docker/linux# 1. 拉取镜像 docker pull portainer/portainer-ce:latest # 2.创建磁盘卷(可选) docker volume create portainer_data # 3. 创建容器 # 端口组合二选一即可, 粘贴代码前注意先删除 自#之后的注释, 避免格式问题 docker run -d --name portainer --restart=always \ -p 8000:8000 -p 9443:9443 \ # https使用, 仅使用http的话可以尝试注释掉 -p 9000:9000 \ # 使用传统的http端口 -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data portainer/portainer-ce:latest汉化版本作者地址：https://hub.docker.com/r/6053537/portainer-cedocker volume create portainer_data docker run -d --name portainer-zh --restart=always \ -p 9000:9000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data 6053537/portainer-ce:latest以上摘抄至https://zoe.red/2024/174.html ，感谢大佬

在飞牛系统上搭建 Typecho 博客系统
type: item
date: 2025-09-15T09:33:04+02:00
description: 配置文件docker-compose.yml使用docker-compose创建项目，docker-compose.yml内容如下：services: mariadb: image: linuxserver/mariadb container_name: mariadb environment: - PUID=1000 - PGID=1001 - MYSQL_ROOT_PASSWORD=110119asdF! - MYSQL_DATABASE=typecho - MYSQL_USER=typecho - MYSQL_PASSWORD=TypechoPass123! - TZ=Asia/Shanghai volumes: - /vol2/1000/docker/MariaDB/config:/config ports: - 33306:3306 networks: - mynet restart: unless-stopped adminer: image: adminer:latest container_name: adminer environment: - ADMINER_DEFAULT_SERVER=mariadb ports: - 38079:8080 networks: - mynet depends_on: - mariadb restart: unless-stopped typecho: image: joyqi/typecho:nightly-php8.2-apache container_name: typecho-server # user: "1000:1001" restart: always environment: - TYPECHO_SITE_URL=http://192.168.199.20 - TYPECHO_DB_ADAPTER=Pdo_Mysql - TYPECHO_DB_HOST=mariadb - TYPECHO_DB_PORT=3306 - TYPECHO_DB_NAME=typecho - TYPECHO_DB_USER=typecho - TYPECHO_DB_PASSWORD=TypechoPass123! ports: - 38080:80 networks: - mynet depends_on: - mariadb volumes: - /vol2/1000/docker/Typecho/usr:/app/usr # - /vol2/1000/docker/Typecho/uploads:/app/usr/uploads # - /vol2/1000/docker/Typecho/config.inc.php:/app/config.inc.php networks: mynet: name: mynet 以上yml文件的原始文件有问题，注释掉那三行后，出现/app/usr/uploads/权限问题，加入以下命令解决# 进入容器检查上传目录权限 docker exec typecho-server ls -la /app/usr/uploads/ # 在容器内直接设置权限（使用 root 权限） docker exec -u root typecho-server chown -R www-data:www-data /app/usr/uploads/ docker exec -u root typecho-server chmod -R 777 /app/usr/uploads/ # 验证权限 docker exec typecho-server ls -la /app/usr/uploads/ # 测试写入权限 docker exec typecho-server touch /app/usr/uploads/test_file.txt docker exec typecho-server ls -la /app/usr/uploads/然后我就问了一下ChatGPT和Deepseek为什么会这样，它的回答如下：ChatGPT的分析从你提供的内容来看，解决成功的原因是你通过手动调整了容器内 /app/usr/uploads/ 目录的 权限问题，这导致了最初的 500 错误 和 权限拒绝 问题。关键点分析：权限问题原本 Typecho 容器启动时，尝试写入 /app/usr/uploads/ 和其他目录（比如 /app 目录），但是容器中的默认用户（通常是 www-data）没有足够的权限写入这些目录。在你没有挂载这些目录之前，镜像内部自带的目录结构是完好的，但一旦你挂载了宿主机的目录，特别是像 uploads 这样的目录，它可能默认是宿主机上 root:root …

Windows 远程登录Ubuntu桌面环境
type: item
date: 2025-09-15T09:29:00+02:00
description: 要实现Ubuntu 的远程桌面，主要方法是在Ubuntu 上安装和配置 xrdp 服务器，然后使用Windows 的“远程桌面连接”工具通过RDP 协议进行连接。操作步骤包括在Ubuntu 终端中执行 sudo apt update 和 sudo apt install xrdp 安装软件，接着开放防火墙的3389 端口。最后，在Windows 中输入Ubuntu 的IP 地址和用户名密码即可连接。在Ubuntu 上进行设置安装xrdp：:打开终端（Ctrl+Alt+T）。执行以下命令更新软件包列表并安装xrdp：代码sudo apt update sudo apt install xrdp启动并设置xrdp 服务：:启动xrdp 服务：代码sudo systemctl start xrdp设置服务开机自启。代码sudo systemctl enable xrdp开放防火墙端口：:确保防火墙允许RDP 流量通过（默认端口为3389）：代码sudo ufw allow 3389 sudo ufw enable # 如果防火墙未启用查看Ubuntu IP 地址：:在终端输入 ip address 或 hostname -I 来查找设备的IP 地址，以便从Windows 进行连接。在Windows 上进行连接打开远程桌面连接：:在Windows 搜索框中输入“远程桌面连接”并打开该应用。输入连接信息：:在“计算机”字段中，输入您在Ubuntu 系统上找到的IP 地址。进行连接：:点击“连接”。在出现的登录界面中，输入您的Ubuntu 用户名和密码，然后点击“确定”或“OK”。连接成功后，您就可以像操作本地系统一样在Windows 中远程控制您的Ubuntu 桌面了。﻿参考教程：https://www.cnblogs.com/xxllx/p/17730861.htmlhttps://learn.microsoft.com/zh-cn/azure/virtual-machines/linux/use-remote-desktop?tabs=azure-clihttps://blog.csdn.net/u010522887/article/details/138137107

Ubuntu 安装 Docker 和 Docker Compose 教程
type: item
date: 2025-09-15T08:16:00+02:00
description: 在 Ubuntu 上安装 Docker 和 Docker Compose 是一个常见的操作。以下是基于最新稳定版本的详细步骤（适用于 Ubuntu 18.04 及以上版本，包括 20.04, 22.04, 24.04）。第一步：安装 Docker1. 更新系统包列表bash深色版本sudo apt update2. 安装必要的依赖包bash深色版本sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release3. 添加 Docker 的官方 GPG 密钥bash深色版本curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg4. 添加 Docker 的 APT 软件源bash深色版本echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null注意：$(lsb_release -cs) 会自动获取你的 Ubuntu 版本代号（如 jammy, focal, noble 等）。5. 更新 APT 包索引bash深色版本sudo apt update6. 安装 Docker Enginebash深色版本sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin这会安装 Docker 引擎、CLI、containerd 和官方插件（包括 docker-compose 插件）。7. 验证 Docker 是否安装成功bash深色版本sudo docker --version输出应类似：深色版本Docker version 24.0.7, build afdd53b8. （可选）让当前用户无需 sudo 使用 Dockerbash深色版本sudo usermod -aG docker $USER注意：执行后需重新登录或重启终端，使用户组变更生效。第二步：安装 Docker Compose（如果未通过插件安装）从 Docker 20.10+ 开始，推荐使用 docker-compose-plugin，它允许你直接使用 docker compose 命令（注意中间是空格，不是短横线）。✅ 推荐方式：使用插件（已安装）bash深色版本docker compose version如果上一步已安装 docker-compose-plugin，你应该能看到版本信息。使用方式：docker compose up, docker compose ps, docker compose down 等。❌ 传统方式（不推荐，仅作备选）如果你需要独立的 docker-compose 二进制文件（旧方式）：bash深色版本# 下载最新版 sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 赋予可执行权限 sudo chmod +x /usr/local/bin/docker-compose # 验证 docker-compose --version注意：这种方式已逐渐被 docker compose 插件取代。第三步：启动并启用 Docker 服务bash深色版本# 启动 Docker 服务 sudo systemctl start docker # 设置开机自启 sudo systemctl enable docker第四步：测试运行bash深色版本docker run hello-world如果看到欢迎信息，说明安装成功。常见问题权限问题：确保用户已加入 docker 组，并重新登录。源错误：检查 Ubuntu 版本代号是否支持（如 noble 是 24.04）。网络问题：国内用户可考虑使用镜像源（如阿里云、中科大源）。总结工具推荐命令Dockerdocker --versionDo…

PVE修改IP地址
type: item
date: 2025-09-08T06:54:02+02:00
description: 1，修改PVE地址进入PVE>_Shell，输入以下命令vi /etc/network/interfaces找到以下信息，按说明修改auto vmbr0 iface vmbr0 inet static address 192.168.200.6/24 # 这是PVE的地址，改为你需要地址即可 gateway 192.168.200.7 # 这是网管的地址，改为主路由地址或者旁路由科学地址 bridge-ports enp1s0 bridge-stp off bridge-fd 0按i键修改，修改后内容如下auto vmbr0 iface vmbr0 inet static address 192.168.199.6/24 # 从192.168.200.6改为192.168.199.6 gateway 192.168.199.7 # 我改为了我的旁路由科学地址 bridge-ports enp1s0 bridge-stp off bridge-fd 0按esc返回，输入以下命令保存退出:wq假如修改的时候出问题，客人输入:q!不保存强制退出，加！是强制退出的意思假如使用笔记本输入，配合Fn键使用2，该web登录地址输入以下命令vi /etc/issue找到以下信息，按说明修改https://192.168.200.6:8006/ # 这是PVE的web地址，改为你需要地址即可，我改为了192.168.199.6:8006按esc返回，输入以下命令保存退出:wq3，修改host输入以下命令vi /etc/hosts找到下边信息192.168.200.6 pve.lan pve # 这是PVE的host地址，改为你需要地址即可，我改为了192.168.199.6按esc返回，输入以下命令保存退出:wq

爪云Clawcloud搭建VPS, 实现SSH 远程登录并搭建easytier
type: item
date: 2025-09-08T06:51:58+02:00
description: 在爪云创建应用部署VPS应用名为vps，拉取镜像ghcr.io/vevc/ubuntu:25.7.14，cpu给0.5，memory给512m，开发22端口，给TCP协议配置环境变量SSH_USER=zhang SSH_PASSWORD='ubuntu!23'填加家目录的存储空间/home/zhang以上配置完成部署来使运行完成后复制TCP协议，取域名部分来配置SSH工具tcp://tcp.ap-southeast-1.clawcloudrun.com:46430 /* 远程主机选择域名tcp.ap-southeast-1.clawcloudrun.com，端口选择46430，指定用户名用环境变量里自建的zhang */登录后先使家目录初始化ls -l /home sudo chown -R $USER:$USER /home/$USER然后终端字体颜色美化、ls -l 命令别名设置等curl -sk -o ~/.bashrc https://raw.githubusercontent.com/vevc/ubuntu/refs/heads/main/.bashrc curl -sk -o ~/.profile https://raw.githubusercontent.com/vevc/ubuntu/refs/heads/main/.profile当用ls命令的时候发现多了一个文件夹lost+found，运行以下命令移除即可rm -rf lost+found/注意事项需要长期保存的数据，请一定存放在用户家目录，重要数据定期备份通过 apt install 安装的应用重启后会丢失（需要在构建镜像时安装）查询家目录存储信息df -h使用 supervisor 管理容器进程，实现应用开机自启、自动保活、cron 规则持久化1，准备配置文件创建文件夹mkdir ~/boot # 家目录文件可持久化保存supervisord初始化，复制下边内容进入ssh，回车即可cat > /home/$USER/boot/supervisord.conf << EOF [supervisord] nodaemon=true logfile=/tmp/supervisord.log logfile_maxbytes=5MB logfile_backups=3 loglevel=info [program:sshd] command=/usr/sbin/sshd -D autostart=true autorestart=true [program:cron] command=/usr/sbin/cron -f autostart=true autorestart=true [program:init] command=/home/$USER/boot/init.sh autostart=true startsecs=0 ; init.sh 开机自启仅运行一次 autorestart=false startretries=0 user=$USER [program:http-server] command=python3 -m http.server 8080 autostart=true autorestart=true user=$USER EOF查看内容cat ~/boot/supervisord.conf输出user=zhang就是正常，进行下一步脚边初始化cat > /home/$USER/boot/init.sh << EOF #!/usr/bin/env sh (crontab -l 2>/dev/null; echo "* * * * * /home/$USER/cron.sh") | crontab - EOF chmod +x /home/$USER/boot/init.sh然后查看脚边具体内容cat ~/boot/init.sh输出 #!/usr/bin/env sh (crontab -l 2>/dev/null; echo "* * * * * /home/zhang/cron.sh") | crontab -表示定时认为规则添加成功，每分钟执行一次2，更新容器启动参数进入爪云点击项目的update，添加下边参数Arguments: ["supervisord", "-c", "/home/zhang/boot/supervisord.conf"]（注意路径中的用户名）添加内容如下，不要弄错["supervisord", "-c", "/home/zhang/boot/supervisord.conf"]这里意思是容器启动的时候取执行supervisord，并加载配置文件supervisord.conf完成后点击update，正…

一些CSS规则-解决屏幕溢出
type: item
date: 2025-09-02T09:44:00+02:00
description: 宽度防溢出原始代码/* 自定义bbtalk的宽度当aside隐藏时自适应recent-posts的宽度 */ div#content-inner.layout { display: flex; max-width: 1400px; } div#recent-posts.recent-posts { max-width: 1400px; flex: 1; } div#main_top.main_top { width: calc(100% - 0%); /* initial width when aside is visible */ } @media (max-width: 1300px) { div#main_top.main_top { width: 100%; /* adjust width when aside is hidden */ } } /* Hide aside for demonstration */ div#aside-content.aside-content.hidden { display: none; } /* Adjust .recent-post-items width when aside is hidden */ div#recent-posts.recent-posts.nc.adjust { width: 77%; }解决思路我帮你分析了一下，你这个 .recent-posts 超出屏幕边界的原因，很可能是 父容器和子容器的宽度计算叠加，再加上 max-width 和 width 的混用，导致在某些情况下总宽度超过了视口（viewport）。父容器 #content-inner.layout你给它 max-width: 1400px，但它本身是 display: flex，如果子元素宽度写死（比如 77%）+ 另一个子元素的宽度（哪怕是 0%），可能会超出。.recent-posts 的宽度冲突你同时给了 max-width: 1400px 和 width: 77%（在 .nc.adjust 时），这会让它在某些屏幕宽度下计算结果大于父容器宽度。box-sizing 影响如果 .recent-posts 或父容器有 padding / border，在 box-sizing: content-box 下会额外增加宽度，导致溢出。flex 子项默认最小宽度在 flex 布局中，子项的 min-width 默认是 auto，会根据内容撑开，可能突破父容器。你可以这样改，保证它不会超出屏幕边界：div#content-inner.layout { display: flex; max-width: 100%; /* 让它跟随屏幕宽度 */ box-sizing: border-box; overflow-x: hidden; /* 防止横向滚动条 */ } div#recent-posts.recent-posts { flex: 1; max-width: 100%; /* 避免超过父容器 */ box-sizing: border-box; } div#recent-posts.recent-posts.nc.adjust { width: 100%; /* 或者用 flex: 1; 让它自适应 */ } div#main_top.main_top { flex: 1; /* 用 flex 代替 calc 宽度计算 */ min-width: 0; /* 防止内容撑开 */ } 核心思路父容器用 max-width: 100%，不要固定 1400px，这样在小屏下不会超出。子容器用 flex: 1 而不是百分比宽度，让它自动分配空间。加 min-width: 0，防止 flex 子项被内容撑破。用 box-sizing: border-box，让 padding 和 border 计入宽度计算。如果你想保留 1400px 的最大宽度，但又不想超出，可以这样：div#content-inner.layout { display: flex; max-width: 1400px; margin: 0 auto; /* 居中 */ box-sizing: border-box; } div#recent-posts.recent-posts { flex: 1; min-width: 0; } 我建议你先试 min-width: 0 + flex: 1 这个组合，很多 flex 溢出问题都是它引起的。 如果你愿意，我可以帮你直接改成 既保留 1400px 最大宽度，又在小屏下自适应 的完整 CSS，这样就不会再出现超出的问题。目标保留最大内容宽度 1400px（居中显示）。小屏下自适应，不产生…

v2rayN路由规则设置
type: item
date: 2025-08-31T11:53:00+02:00
description: 在设置-路由设置-双击v3-绕过大陆（whitelist）-双击绕过局域网IP-在Domain内添加以下内容，确定即可`DOMAIN-SUFFIX,lelez.site,direct,DOMAIN-SUFFIX,fedex.com,direct,DOMAIN-SUFFIX,fedex.com.cn,direct,DOMAIN-SUFFIX,7306923.xyz,direct,DOMAIN-SUFFIX,camelz.site,direct,DOMAIN-SUFFIX,jintian.site,direct,DOMAIN-SUFFIX,ups.com,direct

clawcloud爪云利用H-UI面板创建Hysteria2节点
type: item
date: 2025-08-26T11:10:00+02:00
description: 登录爪云选择美国区创建app，不赘述创建的app名称随便命名，例如hellow-hui仓库用jonssonyan/h-ui:latest设置如下图第一个端口设置8081，第二个设置20000-40000之间的，选择UDP然后创建存储空间/h-ui/bin和/h-ui/data，创建完成后部署即可完成后进入命令界面然后分别输入以下命令cd / && ls -lacd h-ui增加opensslapk update && apk add openssl利用openssl创建证书和密钥，注意CN=后边的地址改成爪云生产的udp地址openssl req -x509 -newkey rsa:4096 -keyout hy2server.key -out hy2server.crt -days 99999 -nodes -subj "/CN=udp.us-east-1.clawcloudrun.com"查看密钥是否已经生成ls -la进入file manager下载密钥到本机自定义域名，不赘述。之后登录H-UI面板配置监听端口，用自定义的UDP端口上传证书和密钥，打开开关，选择最新版本回到H-UI首页复制节点,如图示这样修改，然后粘贴到V2RAYN里，跳过证书验证改为true即可如下图示修改：假如设置了自定义域名，把改动的位置改为自定义域名也可.

彻底删除Alibaba PC Safe Service的方法
type: item
date: 2025-08-13T09:47:00+02:00
description: Alibaba PC Safe Service是什么？ Alibabaprotect是优酷客户端附带阿里巴巴插件引起的，此进程不仅会占用大量内存和cpu性能，还会在后台悄悄的监控你的上网过程，然后给你推送相关的广告。而且Alibabaprotect非常难删除，删掉后重启电脑又会自动出现。 彻底删除Alibaba PC Safe Service的方法 1. win+s打开搜索框，输入服务（切记以管理员方式运行），找到Alibaba PC Safe Service——>属性，然后启动类型设置为手动，再把恢复那里全部改成无操作 ——>确定。 2. win+s打开搜索框，输入命令提示符（切记以管理员方式运行），键入 sc delete AlibabaProtect，回车就OK了，这时你会发现服务仍然在运行，而且文件夹仍然无法删除，这时关机重启就行了。 3. 开机后，打开任务管理器没有发现Alibaba PC Safe Service进程，说明成功关闭了，这时你就可以删除Alibaba PC Safe Service了。