首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
2,510 阅读
2
推荐31个docker应用,每一个都很实用
1,311 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
931 阅读
4
一条命令,永久激活!Office 2024!
618 阅读
5
优选 Cloudflare 官方 / 中转 IP
490 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
docker部署
虚拟机
WordPress
群晖
uni-app
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
264
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
69
篇与
的结果
2026-01-22
Docker 一键部署 WireGuard VPN,支持可视化管理与监控
🌟 引言随着远程办公、跨地域访问与隐私保护需求的不断增长,VPN(虚拟专用网络) 正在成为个人与企业必备的基础设施之一。而传统的 WireGuard VPN 配置流程对于普通用户而言存在一定门槛,需要大量命令行操作与手动配置。WG-Easy 正是在这种背景下应运而生的高效解决方案,它将 WireGuard 的强大性能与可视化管理相结合,大大降低部署和维护难度。💡 项目简介WG-Easy(WireGuard Easy) 是一个将 WireGuard VPN 核心服务与 Web 可视化管理界面深度集成的开源项目。它通过直观的浏览器操作界面,让用户无需掌握复杂的命令行知识,即可快速完成 VPN 的部署、配置与监控。设计理念:📦 开箱即用:基于 Docker 容器化部署,一条命令即可启动🖱️ 可视化优先:所有操作均可在 Web 界面完成,告别配置文件🚀 性能卓越:基于 WireGuard 协议,提供媲美直连的网络速度🔒 安全可靠:采用现代密码学套件,代码简洁易审计🎯 核心特性WireGuard Easy 提供了一套完整的 VPN 管理功能,主要特性包括:🧩 一体化架构:将 WireGuard 核心 VPN 与 Web 管理界面整合在一起。🚀 快速部署:基于 Docker 容器化,一条命令即可启动完整 VPN 服务。🖥️ 可视化管理面板:客户端创建、编辑、禁用、删除全部图形化完成。📱 二维码一键接入:自动生成配置二维码,便于移动设备一键连接。🔗 一次性分享链接:生成临时配置链接,分享后自动失效,提升安全性📊 实时连接与流量监控:显示每个客户端的在线状态、上传 / 下载流量。🌗 多语言 & 深浅色模式:自动适配浏览器语言,支持暗黑模式。📈Prometheus 监控支持:原生支持 Prometheus,便于接入 Grafana 统一监控体系。🔑 双因素认证(2FA):支持 TOTP 双因素认证,提升账户安全。🔐 继承 WireGuard 的安全模型:公钥认证、现代加密算法,无密码、无证书链复杂度。ℹ️ 环境信息🔍 WireGuard 内核支持检查在部署前,请确认服务器内核已支持 WireGuard:uname -r加载 WireGuard 内核模块:modprobe wireguard验证是否成功:lsmod | grep wireguard说明:Linux Kernel ≥ 5.6 已内置 WireGuardUbuntu 20.04+ / 22.04 LTS 默认支持若加载失败,请检查内核版本或云厂商是否裁剪模块基础环境云服务器(VPS / 轻量云 / 物理机)操作系统:Ubuntu 22.04 LTS(推荐)具有域名 或 公网 IP已安装 Docker / Docker Compose网络与安全组要求UDP 51820(WireGuard 通信端口)TCP 51821(wg-easy Web 管理界面)出口网络允许访问公网(用于 VPN 转发)🔥 配置防火墙规则# Ubuntu/Debian (使用 ufw) sudo ufw allow 51820/udp comment 'WireGuard VPN' sudo ufw allow 51821/tcp comment 'WG-Easy Web UI'⚠️ 若云厂商启用防火墙 / 安全组,务必同步放行端口。📦 部署教程🚀 方式一:Docker 命令行部署(快速上手)1️⃣ 创建网络docker network create \ -d bridge --ipv6 \ --subnet 10.42.42.0/24 \ --subnet fdcc:ad94:bacf:61a3::/64 \ wg2️⃣ 启动容器docker run -d \ --net wg \ -e INSECURE=true \ --name wg-easy \ --ip6 fdcc:ad94:bacf:61a3::2a \ --ip 10.42.42.42 \ -v ~/.wg-easy:/etc/wireguard \ -v /lib/modules:/lib/modules:ro \ -p 51820:51820/udp \ -p 51821:51821/tcp \ --cap-add NET_ADMIN \ --cap-add SYS_MODULE \ --sysctl net.ipv4.ip_forward=1 \ --sysctl net.ipv4.conf.all.src_valid_mark=1 \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ --sysctl net.ipv6.conf.all.forwarding=1 \ --sysctl net.ipv6.conf.default.forwarding=1 \ --restart unless-stopped \ ghcr.io/wg-easy/wg-easy:153️⃣ 访问 Web 界面访问浏览器 http://服务器IP:51821 即可进入界面。🐳 方式二:Docker Compose 部署(推荐)1️⃣ 安装 Docker Compose# Ubuntu/Debian # sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo apt install -y docker-compose-plugin2️⃣ 创建配置目录mkdir ~/wg-easy/ && mkdir ~/wg-easy/3️⃣ 下载 Docker Compose 文件sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml4️⃣ 修改配置编辑docker-compose.yml文件并取消environment注释INSECURE设置INSECURE为true允许通过非安全http连接访问 Web UI。完整 docker-compose.yml 文件如下:volumes: etc_wireguard: services: wg-easy: volumes: etc_wireguard: services: wg-easy: environment: - INSECURE=true image: ghcr.nju.edu.cn/wg-easy/wg-easy:15 container_name: wg-easy networks: wg: ipv4_address: 10.42.42.42 ipv6_address: fdcc:ad94:bacf:61a3::2a volumes: - etc_wireguard:/etc/wireguard - /lib/modules:/lib/modules:ro ports: - "51820:51820/udp" - "51821:51821/tcp" restart: unless-stopped cap_add: - NET_ADMIN - SYS_MODULE sysctls: - net.ipv4.ip_forward=1 - net.ipv4.conf.all.src_valid_mark=1 - net.ipv6.conf.all.disable_ipv6=0 - net.ipv6.conf.all.forwarding=1 - net.ipv6.conf.default.forwarding=1 networks: wg: driver: bridge enable_ipv6: true ipam: driver: default config: - subnet: 10.42.42.0/24 - subnet: fdcc:ad94:bacf:61a3::/645️⃣ 启动服务# 启动容器 docker compose up -d # 查看日志 docker compose logs -f wg-easy # 查看容器状态 docker compose ps访问浏览器 http://服务器IP:51821 即可进入界面。⚙️ 初始配置🔐 创建管理员账号📱 创建客户端配置🔀 配置路由规则(重要)修改客户端配置,添加允许的 IP ,决定哪些流量走 VPN:# 全局代理(所有流量走 VPN) 0.0.0.0/0, ::/0 # 仅访问特定网段(分流模式,推荐) 10.42.42.0/24 # WireGuard 内网 10.7.0.0/22 # 服务器内网 172.17.0.0/24 # docker 192.168.1.0/24 # 家庭网络💡 分流模式的优势:✅ 仅内网流量走 VPN,外网直连✅ 节省 VPN 服务器带宽✅ 访问国内网站速度更快保存后即可通过扫描二维码或下载配置文件连接📊 启用 Prometheus 监控1️⃣ 在 WG-Easy 中启用进入 管理面板 > 通用设置 > Prometheus,启用监控并设置密码。 2️⃣ 配置 Prometheus在 Prometheus 配置文件中添加:以下是一个示例:scrape_configs: - job_name: 'wg-easy' scrape_interval: 30s metrics_path: /metrics/prometheus static_configs: - targets: - '服务器IP:51821' authorization: type: Bearer credentials: '上一步设置的密码'导入 Grafana 仪表盘Grafana Dashboard ID:21733🖥️ 项目界面预览📊 仪表盘💻 客户端连接Windows客户端 iPhone客户端 🎯 适用场景WG-Easy 适用于多种实际应用场景,从个人隐私保护到企业级远程访问,都能提供高效的解决方案:🧑💻 远程办公 / 内网访问安全访问公司内网服务(Git、Jenkins、数据库、K8s 等)。🌍 跨地域统一出口网络多终端统一出口 IP,便于访问特定区域网络资源。🏡 家庭网络远程访问安全访问家中 NAS、路由器、智能家居设备、监控摄像头、内网服务。👥 小型团队 VPN 管理无需专业网络运维即可维护团队 VPN。🧪 测试 / 沙箱 / 运维环境快速搭建临时 VPN,随用随删,配置可追溯。🔗 相关链接📖 官方文档官方网站:https://wg-easy.github.io/wg-easy/latest/GitHub 仓库:https://github.com/wg-easy/wg-easy快速开始:https://wg-easy.github.io/wg-easy/latest/getting-started/部署示例:https://wg-easy.github.io/wg-easy/latest/examples/tutorials/basic-installation/🔧 高级配置Caddy 反向代理:https://wg-easy.github.io/wg-easy/latest/examples/tutorials/caddy/Traefik 反向代理:https://wg-easy.github.io/wg-easy/latest/examples/tutorials/traefik/可选配置项:https://wg-easy.github.io/wg-easy/latest/advanced/config/optional-config/API 接口文档:https://wg-easy.github.io/wg-easy/latest/advanced/api/📱 客户端下载平台下载地址Windowshttps://download.wireguard.com/windows-client/🍎 macOShttps://apps.apple.com/app/wireguard/id1451685025🤖 Androidhttps://play.google.com/store/apps/details?id=com.wireguard.android📱 iOShttps://apps.apple.com/app/wireguard/id1441195209🐧 Linuxsudo apt install wireguard 或各发行版包管理器💬 社区支持问题反馈:https://github.com/wg-easy/wg-easy/issues讨论区:https://github.com/wg-easy/wg-easy/discussions贡献指南:https://wg-easy.github.io/wg-easy/latest/contributing/general/WireGuard vs IPsec vs OpenVPN 核心对比选择 WireGuard,如果你需要:✅ 极致性能:低延迟、高吞吐量的网络体验✅ 移动场景:频繁切换网络(4G/5G ↔ WiFi)✅ 简单部署:快速上手,无需复杂配置✅ 物联网/嵌入式:资源受限的设备🎯 适用场景:个人 VPN、移动办公、物联网、云原生环境选择 IPsec,如果你需要:✅ 企业合规:满足 FIPS、CC 等安全认证要求✅ 站点互联:分支机构与总部的网络互联✅ 原生集成:操作系统内置支持,无需额外客户端✅ 传统设备:需要与老旧设备兼容🎯 适用场景:企业站点互联、合规要求高的场景、金融行业选择 OpenVPN,如果你需要:✅ 最大兼容性:严格的防火墙环境(可伪装 HTTPS)✅ 灵活认证:用户名密码、双因素认证等✅ 成熟生态:丰富的第三方工具和管理系统✅ 细粒度控制:复杂的访问控制和策略路由🎯 适用场景:企业远程访问、严格防火墙环境、需要灵活认证的场景🎉 总结WG-Easy 以其实用性和易用性,将传统 WireGuard VPN 的部署门槛大幅降低,使得 VPN 架构不仅对开发者友好,同时对非专业用户亦极易上手。无论是个人搭建,还是企业内网 VPN 管理,WG-Easy 都能提供简洁、高效、安全的解决方案,是值得推荐的开源 VPN 工具。
2026年01月22日
3 阅读
0 评论
0 点赞
2025-08-13
搭建私有 Linux 镜像仓库:从零到生产的完整指南(ubuntu,centos,docker)
概述为什么需要私有镜像仓库?在企业环境中,搭建私有Linux镜像仓库具有以下优势:网络优化:减少外网带宽消耗,提升下载速度安全控制:内网环境下的安全软件分发版本管理:统一管理软件包版本,确保环境一致性离线部署:支持无外网环境的软件安装成本节约:减少重复下载,节省带宽成本架构设计环境准备硬件要求组件最低配置推荐配置生产环境CPU2核4核8核+内存4GB8GB16GB+存储500GB2TB10TB+网络100Mbps1Gbps10Gbps软件环境# 操作系统:Ubuntu 22.04 LTS 或 CentOS 8 # Web服务器:Nginx # 同步工具:rsync, apt-mirror, reposync # 监控:Prometheus + Grafana目录规划# 创建目录结构 sudomkdir -p /data/mirrors/{ubuntu,centos,docker,alpine} sudomkdir -p /data/mirrors/logs sudomkdir -p /data/mirrors/scripts sudomkdir -p /etc/mirrors搭建APT私有镜像源安装apt-mirror# Ubuntu/Debian系统 sudo apt update sudo apt install -y apt-mirror nginx # 创建镜像用户 sudo useradd -r -s /bin/false -d /data/mirrors aptmirror sudochown -R aptmirror:aptmirror /data/mirrors配置apt-mirror# 编辑配置文件 sudo nano /etc/apt/mirror.list# /etc/apt/mirror.list ############# config ################## set base_path /data/mirrors/ubuntu set mirror_path $base_path/mirror set skel_path $base_path/skel set var_path $base_path/var set cleanscript $var_path/clean.sh set defaultarch amd64 set postmirror_script $var_path/postmirror.sh set run_postmirror 0 set nthreads 20 set _tilde 0 ############# end config ############## # Ubuntu 22.04 LTS (Jammy) deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse # Ubuntu 20.04 LTS (Focal) deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse # 源码包(可选) # deb-src http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse # 清理脚本 clean http://archive.ubuntu.com/ubuntu clean http://security.ubuntu.com/ubuntu创建同步脚本# 创建同步脚本 sudo nano /data/mirrors/scripts/sync-ubuntu.sh#!/bin/bash # Ubuntu镜像同步脚本 set -e LOGFILE="/data/mirrors/logs/ubuntu-sync-$(date +%Y%m%d-%H%M%S).log" LOCKFILE="/var/run/ubuntu-mirror.lock" # 检查锁文件 if [ -f "$LOCKFILE" ]; then echo"同步进程已在运行,退出..." exit 1 fi # 创建锁文件 echo $$ > "$LOCKFILE" # 清理函数 cleanup() { rm -f "$LOCKFILE" } trap cleanup EXIT echo"开始Ubuntu镜像同步: $(date)" | tee -a "$LOGFILE" # 执行同步 sudo -u aptmirror apt-mirror /etc/apt/mirror.list 2>&1 | tee -a "$LOGFILE" # 更新时间戳 echo"$(date)" > /data/mirrors/ubuntu/last_update echo"Ubuntu镜像同步完成: $(date)" | tee -a "$LOGFILE" # 清理旧日志(保留30天) find /data/mirrors/logs -name "ubuntu-sync-*.log" -mtime +30 -delete # 发送通知(可选) # curl -X POST -H 'Content-type: application/json' \ # --data '{"text":"Ubuntu镜像同步完成"}' \ # YOUR_WEBHOOK_URL# 设置执行权限 sudochmod +x /data/mirrors/scripts/sync-ubuntu.sh配置Nginx# 创建Nginx配置 sudo nano /etc/nginx/sites-available/ubuntu-mirrorserver { listen80; server_name ubuntu-mirror.example.com; root /data/mirrors/ubuntu/mirror; index index.html; # 访问日志 access_log /var/log/nginx/ubuntu-mirror.access.log; error_log /var/log/nginx/ubuntu-mirror.error.log; # 基本配置 location / { autoindexon; autoindex_exact_sizeoff; autoindex_localtimeon; # 缓存配置 expires1d; add_header Cache-Control "public, immutable"; # 安全头 add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; } # 包文件缓存 location~* \.(deb|udeb|tar\.gz|tar\.xz|tar\.bz2)$ { expires7d; add_header Cache-Control "public, immutable"; } # 元数据文件 location~* (Release|Packages|Sources)$ { expires1h; add_header Cache-Control "public, must-revalidate"; } # 状态页面 location /status { alias /data/mirrors/ubuntu/; try_files /last_update =404; add_header Content-Type text/plain; } # 禁止访问隐藏文件 location~ /\. { deny all; } }# 启用站点 sudoln -s /etc/nginx/sites-available/ubuntu-mirror /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx搭建YUM私有镜像源安装reposync# CentOS/RHEL系统 sudo yum install -y yum-utils createrepo nginx # 或者在Ubuntu上安装 sudo apt install -y yum-utils createrepo-c nginx配置YUM仓库同步# 创建CentOS 8同步脚本 sudo nano /data/mirrors/scripts/sync-centos.sh#!/bin/bash # CentOS镜像同步脚本 set -e MIRROR_BASE="/data/mirrors/centos" LOGFILE="/data/mirrors/logs/centos-sync-$(date +%Y%m%d-%H%M%S).log" LOCKFILE="/var/run/centos-mirror.lock" # 检查锁文件 if [ -f "$LOCKFILE" ]; then echo"同步进程已在运行,退出..." exit 1 fi echo $$ > "$LOCKFILE" cleanup() { rm -f "$LOCKFILE" } trap cleanup EXIT echo"开始CentOS镜像同步: $(date)" | tee -a "$LOGFILE" # 同步CentOS 8 Stream sync_centos_stream() { local version=$1 local repo_dir="$MIRROR_BASE/$version" mkdir -p "$repo_dir" # 同步各个仓库 for repo in baseos appstream extras powertools; do echo"同步 CentOS $version$repo..." | tee -a "$LOGFILE" reposync \ --download-path="$repo_dir" \ --repo="$repo" \ --arch=x86_64 \ --newest-only \ --delete \ 2>&1 | tee -a "$LOGFILE" # 创建仓库元数据 createrepo_c "$repo_dir/$repo/" 2>&1 | tee -a "$LOGFILE" done } # 同步不同版本 sync_centos_stream "8-stream" sync_centos_stream "9-stream" # 更新时间戳 echo"$(date)" > "$MIRROR_BASE/last_update" echo"CentOS镜像同步完成: $(date)" | tee -a "$LOGFILE" # 清理旧日志 find /data/mirrors/logs -name "centos-sync-*.log" -mtime +30 -delete配置YUM仓库文件# 创建仓库配置模板 sudo nano /data/mirrors/centos/centos8-stream.repo[baseos] name=CentOS Stream $releasever - BaseOS baseurl=http://your-mirror.example.com/centos/8-stream/baseos/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [appstream] name=CentOS Stream $releasever - AppStream baseurl=http://your-mirror.example.com/centos/8-stream/appstream/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [extras] name=CentOS Stream $releasever - Extras baseurl=http://your-mirror.example.com/centos/8-stream/extras/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [powertools] name=CentOS Stream $releasever - PowerTools baseurl=http://your-mirror.example.com/centos/8-stream/powertools/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialNginx配置(CentOS)server { listen80; server_name centos-mirror.example.com; root /data/mirrors/centos; index index.html; access_log /var/log/nginx/centos-mirror.access.log; error_log /var/log/nginx/centos-mirror.error.log; location / { autoindexon; autoindex_exact_sizeoff; autoindex_localtimeon; expires1d; add_header Cache-Control "public, immutable"; } # RPM包缓存 location~* \.rpm$ { expires7d; add_header Cache-Control "public, immutable"; } # 元数据缓存 location~* (repomd\.xml|primary\.xml|filelists\.xml|other\.xml)$ { expires1h; add_header Cache-Control "public, must-revalidate"; } # 仓库配置文件下载 location /repo-files/ { alias /data/mirrors/centos/; try_files$uri$uri.repo =404; add_header Content-Type text/plain; } }搭建Docker私有镜像仓库安装Docker Registry# 安装Docker curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER # 创建Registry目录 sudomkdir -p /data/mirrors/docker/{registry,auth,certs}配置Registry# 创建Registry配置文件 sudo nano /data/mirrors/docker/config.ymlversion:0.1 log: accesslog: disabled:false level:info formatter:text fields: service:registry storage: cache: blobdescriptor:inmemory filesystem: rootdirectory:/var/lib/registry delete: enabled:true http: addr::5000 headers: X-Content-Type-Options: [nosniff] Access-Control-Allow-Origin: ['*'] Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE'] Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control'] health: storagedriver: enabled:true interval:10s threshold:3 proxy: remoteurl:https://registry-1.docker.io username:your-dockerhub-username password:your-dockerhub-password启动Registry服务# 创建docker-compose文件 sudo nano /data/mirrors/docker/docker-compose.ymlversion:'3.8' services: registry: image:registry:2.8 container_name:docker-registry restart:unless-stopped ports: -"5000:5000" environment: REGISTRY_CONFIG_PATH:/etc/docker/registry/config.yml REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY:/var/lib/registry volumes: -/data/mirrors/docker/registry:/var/lib/registry -/data/mirrors/docker/config.yml:/etc/docker/registry/config.yml:ro networks: -registry-net registry-ui: image:joxit/docker-registry-ui:latest container_name:registry-ui restart:unless-stopped ports: -"8080:80" environment: REGISTRY_TITLE:"Private Docker Registry" REGISTRY_URL:http://registry:5000 DELETE_IMAGES:"true" SHOW_CONTENT_DIGEST:"true" depends_on: -registry networks: -registry-net networks: registry-net: driver:bridge# 启动服务 cd /data/mirrors/docker sudo docker-compose up -d配置Registry代理# Docker Registry Nginx配置 server { listen80; server_name docker-registry.example.com; client_max_body_size0; chunked_transfer_encodingon; location /v2/ { proxy_pass http://localhost:5000; proxy_set_header Host $http_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; proxy_read_timeout900; } location / { proxy_pass http://localhost:8080; proxy_set_header Host $http_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; } }自动化同步与更新创建统一同步脚本# 创建主同步脚本 sudo nano /data/mirrors/scripts/sync-all.sh#!/bin/bash # 统一镜像同步脚本 set -e SCRIPT_DIR="/data/mirrors/scripts" LOG_DIR="/data/mirrors/logs" NOTIFICATION_URL="${WEBHOOK_URL:-}" # 日志函数 log() { echo"[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_DIR/sync-all.log" } # 通知函数 notify() { local message="$1" local status="$2" log"$message" if [ -n "$NOTIFICATION_URL" ]; then curl -X POST -H 'Content-type: application/json' \ --data "{\"text\":\"$message\", \"status\":\"$status\"}" \ "$NOTIFICATION_URL" || true fi } # 执行同步任务 run_sync() { local script="$1" local name="$2" if [ -f "$script" ]; then log"开始同步 $name" if"$script"; then notify "$name 同步成功""success" else notify "$name 同步失败""error" return 1 fi else log"同步脚本不存在: $script" return 1 fi } # 主执行流程 main() { log"开始镜像同步任务" local failed=0 # 同步Ubuntu run_sync "$SCRIPT_DIR/sync-ubuntu.sh""Ubuntu" || ((failed++)) # 同步CentOS run_sync "$SCRIPT_DIR/sync-centos.sh""CentOS" || ((failed++)) # 清理旧日志 find "$LOG_DIR" -name "*.log" -mtime +30 -delete if [ $failed -eq 0 ]; then notify "所有镜像同步完成""success" else notify "有 $failed 个镜像同步失败""warning" fi log"镜像同步任务结束" } main "$@"配置定时任务# 编辑crontab sudo crontab -e # 添加定时任务 # 每天凌晨2点同步 0 2 * * * /data/mirrors/scripts/sync-all.sh # 每周日凌晨1点清理Docker Registry 0 1 * * 0 /data/mirrors/scripts/cleanup-docker.sh # 每小时检查服务状态 0 * * * * /data/mirrors/scripts/health-check.sh健康检查脚本# 创建健康检查脚本 sudo nano /data/mirrors/scripts/health-check.sh#!/bin/bash # 服务健康检查脚本 SERVICES=("nginx""docker") LOG_FILE="/data/mirrors/logs/health-check.log" log() { echo"[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE" } check_service() { local service="$1" if systemctl is-active --quiet "$service"; then log"$service 服务正常运行" return 0 else log"$service 服务异常,尝试重启" systemctl restart "$service" sleep 5 if systemctl is-active --quiet "$service"; then log"$service 服务重启成功" return 0 else log"$service 服务重启失败" return 1 fi fi } check_disk_space() { local usage=$(df /data/mirrors | awk 'NR==2 {print $5}' | sed 's/%//') if [ "$usage" -gt 85 ]; then log"磁盘空间不足: ${usage}%" # 发送告警 return 1 else log"磁盘空间正常: ${usage}%" return 0 fi } # 主检查流程 main() { local failed=0 # 检查服务状态 for service in"${SERVICES[@]}"; do check_service "$service" || ((failed++)) done # 检查磁盘空间 check_disk_space || ((failed++)) # 检查网络连通性 if ! curl -s --max-time 10 http://localhost/status > /dev/null; then log"Web服务访问异常" ((failed++)) fi if [ $failed -eq 0 ]; then log"所有检查项正常" else log"发现 $failed 个异常项" fi } main "$@"高可用与负载均衡配置HAProxy负载均衡# 安装HAProxy sudo apt install -y haproxy # 配置HAProxy sudo nano /etc/haproxy/haproxy.cfgglobal daemon chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms option httplog option dontlognull errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http frontend mirror_frontend bind *:80 bind *:443 ssl crt /etc/ssl/certs/mirror.pem redirect scheme https if !{ ssl_fc } # 根据域名分发 acl is_ubuntu hdr(host) -i ubuntu-mirror.example.com acl is_centos hdr(host) -i centos-mirror.example.com acl is_docker hdr(host) -i docker-registry.example.com use_backend ubuntu_backend if is_ubuntu use_backend centos_backend if is_centos use_backend docker_backend if is_docker default_backend ubuntu_backend backend ubuntu_backend balance roundrobin option httpchk GET /status server ubuntu1 192.168.1.10:80 check server ubuntu2 192.168.1.11:80 check backup backend centos_backend balance roundrobin option httpchk GET /status server centos1 192.168.1.10:80 check server centos2 192.168.1.11:80 check backup backend docker_backend balance roundrobin option httpchk GET /v2/ server docker1 192.168.1.10:5000 check server docker2 192.168.1.11:5000 check backup listen stats bind *:8404 stats enable stats uri /stats stats refresh 30s stats admin if TRUE配置Keepalived高可用# 安装Keepalived sudo apt install -y keepalived # 主节点配置 sudo nano /etc/keepalived/keepalived.conf# 主节点配置 vrrp_script chk_haproxy { script "/bin/kill -0 `cat /var/run/haproxy.pid`" interval 2 weight 2 fall 3 rise 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 } track_script { chk_haproxy } }监控与维护配置Prometheus监控# 创建Prometheus配置 sudo nano /etc/prometheus/prometheus.ymlglobal: scrape_interval:15s evaluation_interval:15s rule_files: -"mirror_rules.yml" scrape_configs: -job_name:'prometheus' static_configs: -targets: ['localhost:9090'] -job_name:'node-exporter' static_configs: -targets: ['localhost:9100'] -job_name:'nginx' static_configs: -targets: ['localhost:9113'] -job_name:'haproxy' static_configs: -targets: ['localhost:8404'] alerting: alertmanagers: -static_configs: -targets: -alertmanager:9093创建告警规则# 创建告警规则 sudo nano /etc/prometheus/mirror_rules.ymlgroups: -name:mirror_alerts rules: -alert:HighDiskUsage expr:(node_filesystem_size_bytes{mountpoint="/data"}-node_filesystem_free_bytes{mountpoint="/data"})/node_filesystem_size_bytes{mountpoint="/data"}*100>85 for:5m labels: severity:warning annotations: summary:"磁盘使用率过高" description:"镜像存储磁盘使用率超过85%" -alert:ServiceDown expr:up==0 for:2m labels: severity:critical annotations: summary:"服务不可用" description:"{{ $labels.instance }} 服务已停止" -alert:HighMemoryUsage expr:(1-(node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes))*100>90 for:5m labels: severity:warning annotations: summary:"内存使用率过高" description:"内存使用率超过90%" -alert:SyncJobFailed expr:increase(sync_job_failures_total[1h])>0 for:0m labels: severity:critical annotations: summary:"镜像同步失败" description:"镜像同步任务执行失败"Grafana仪表板{ "dashboard":{ "id":null, "title":"Linux Mirror Repository Dashboard", "tags":["mirror","linux"], "timezone":"browser", "panels":[ { "title":"磁盘使用率", "type":"stat", "targets":[ { "expr":"(node_filesystem_size_bytes{mountpoint=\"/data\"} - node_filesystem_free_bytes{mountpoint=\"/data\"}) / node_filesystem_size_bytes{mountpoint=\"/data\"} * 100", "legendFormat":"磁盘使用率" } ], "fieldConfig":{ "defaults":{ "unit":"percent", "thresholds":{ "steps":[ {"color":"green","value":null}, {"color":"yellow","value":70}, {"color":"red","value":85} ] } } } }, { "title":"网络流量", "type":"graph", "targets":[ { "expr":"rate(node_network_receive_bytes_total{device=\"eth0\"}[5m])", "legendFormat":"接收" }, { "expr":"rate(node_network_transmit_bytes_total{device=\"eth0\"}[5m])", "legendFormat":"发送" } ] }, { "title":"同步状态", "type":"table", "targets":[ { "expr":"sync_last_success_timestamp_seconds", "legendFormat":"最后同步时间" } ] } ], "time":{ "from":"now-1h", "to":"now" }, "refresh":"30s" } }安全配置SSL/TLS配置# 生成SSL证书 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/mirror.key \ -out /etc/ssl/certs/mirror.crt \ -subj "/C=CN/ST=Beijing/L=Beijing/O=Company/CN=mirror.example.com" # 合并证书文件(HAProxy使用) sudocat /etc/ssl/certs/mirror.crt /etc/ssl/private/mirror.key > /etc/ssl/certs/mirror.pem访问控制# IP白名单配置 geo$allowed_ip { default0; 192.168.0.0/16 1; 10.0.0.0/8 1; 172.16.0.0/12 1; } server { listen80; server_name mirror.example.com; # IP访问控制 if ($allowed_ip = 0) { return403; } # 限制连接数 limit_conn_zone$binary_remote_addr zone=conn_limit_per_ip:10m; limit_conn conn_limit_per_ip 10; # 限制请求频率 limit_req_zone$binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s; limit_req zone=req_limit_per_ip burst=20 nodelay; location / { # 基本认证(可选) auth_basic"Private Mirror"; auth_basic_user_file /etc/nginx/.htpasswd; # 其他配置... } }防火墙配置# UFW防火墙配置 sudo ufw default deny incoming sudo ufw default allow outgoing # 允许SSH sudo ufw allow ssh # 允许HTTP/HTTPS sudo ufw allow 80/tcp sudo ufw allow 443/tcp # 允许内网访问 sudo ufw allow from 192.168.0.0/16 to any port 80 sudo ufw allow from 10.0.0.0/8 to any port 80 # 启用防火墙 sudo ufw enable故障排除常见问题诊断1. 同步失败问题# 检查网络连通性 curl -I http://archive.ubuntu.com/ubuntu/ # 检查磁盘空间 df -h /data/mirrors # 检查权限 ls -la /data/mirrors/ # 查看同步日志 tail -f /data/mirrors/logs/ubuntu-sync-*.log2. 服务访问问题# 检查Nginx状态 sudo systemctl status nginx sudo nginx -t # 检查端口监听 sudo netstat -tlnp | grep :80 # 检查防火墙 sudo ufw status # 测试本地访问 curl -I http://localhost/3. 性能问题# 检查系统负载 top htop iotop # 检查网络流量 iftop nethogs # 检查磁盘IO iostat -x 1故障恢复脚本# 创建故障恢复脚本 sudo nano /data/mirrors/scripts/recovery.sh#!/bin/bash # 故障恢复脚本 SERVICES=("nginx""docker""haproxy") BACKUP_DIR="/data/backup" # 服务恢复 recover_services() { for service in"${SERVICES[@]}"; do if ! systemctl is-active --quiet "$service"; then echo"恢复服务: $service" systemctl restart "$service" sleep 5 if systemctl is-active --quiet "$service"; then echo"$service 恢复成功" else echo"$service 恢复失败" fi fi done } # 配置文件恢复 recover_configs() { if [ -d "$BACKUP_DIR" ]; then echo"恢复配置文件..." # 恢复Nginx配置 if [ -f "$BACKUP_DIR/nginx.conf" ]; then cp"$BACKUP_DIR/nginx.conf" /etc/nginx/nginx.conf nginx -t && systemctl reload nginx fi # 恢复HAProxy配置 if [ -f "$BACKUP_DIR/haproxy.cfg" ]; then cp"$BACKUP_DIR/haproxy.cfg" /etc/haproxy/haproxy.cfg systemctl reload haproxy fi fi } # 数据完整性检查 check_data_integrity() { echo"检查数据完整性..." # 检查Ubuntu镜像 if [ -f "/data/mirrors/ubuntu/mirror/dists/jammy/Release" ]; then echo"Ubuntu镜像完整" else echo"Ubuntu镜像损坏,需要重新同步" /data/mirrors/scripts/sync-ubuntu.sh fi # 检查CentOS镜像 if [ -f "/data/mirrors/centos/8-stream/baseos/repodata/repomd.xml" ]; then echo"CentOS镜像完整" else echo"CentOS镜像损坏,需要重新同步" /data/mirrors/scripts/sync-centos.sh fi } # 主恢复流程 main() { echo"开始故障恢复..." recover_services recover_configs check_data_integrity echo"故障恢复完成" } main "$@"监控脚本# 创建监控脚本 sudo nano /data/mirrors/scripts/monitor.sh#!/bin/bash # 实时监控脚本 ALERT_EMAIL="admin@example.com" WEBHOOK_URL="https://hooks.slack.com/services/YOUR/WEBHOOK/URL" send_alert() { local message="$1" local severity="$2" echo"[$(date)] ALERT [$severity]: $message" # 发送邮件告警 echo"$message" | mail -s "Mirror Alert [$severity]""$ALERT_EMAIL" # 发送Webhook通知 curl -X POST -H 'Content-type: application/json' \ --data "{\"text\":\"$message\", \"severity\":\"$severity\"}" \ "$WEBHOOK_URL" } # 检查磁盘空间 check_disk() { local usage=$(df /data/mirrors | awk 'NR==2 {print $5}' | sed 's/%//') if [ "$usage" -gt 90 ]; then send_alert "磁盘空间严重不足: ${usage}%""CRITICAL" elif [ "$usage" -gt 80 ]; then send_alert "磁盘空间不足: ${usage}%""WARNING" fi } # 检查同步状态 check_sync() { local last_sync=$(stat -c %Y /data/mirrors/ubuntu/last_update 2>/dev/null || echo 0) local current_time=$(date +%s) local diff=$((current_time - last_sync)) # 如果超过24小时未同步 if [ $diff -gt 86400 ]; then send_alert "Ubuntu镜像同步超时: $((diff/3600))小时""WARNING" fi } # 检查服务状态 check_services() { local services=("nginx""docker") for service in"${services[@]}"; do if ! systemctl is-active --quiet "$service"; then send_alert "$service 服务异常""CRITICAL" fi done } # 主监控循环 main() { whiletrue; do check_disk check_sync check_services sleep 300 # 5分钟检查一次 done } main "$@"总结通过本文的详细指南,我们成功搭建了一个完整的私有 Linux 镜像仓库系统,包括:核心功能• 多发行版支持:Ubuntu、CentOS、Docker镜像• 自动化同步:定时同步上游镜像源• 负载均衡:HAProxy + Keepalived高可用方案• 监控告警:Prometheus + Grafana监控体系运维特性• 安全加固:SSL/TLS、访问控制、防火墙配置• 故障恢复:自动化故障检测和恢复机制• 性能优化:缓存策略、并发控制• 日志管理:完整的日志记录和轮转最佳实践定期备份:配置文件和关键数据的定期备份容量规划:根据使用情况合理规划存储容量网络优化:配置适当的缓存和CDN策略安全更新:及时更新系统和软件包这套方案可以满足企业级的私有镜像仓库需求,提供稳定、高效、安全的软件包分发服务。
2025年08月13日
29 阅读
0 评论
1 点赞
2025-07-21
xiaomi 小米手机免授权免登陆刷机工具 MiFlash Prime Edition
刷机有风险,能自己承担后果再尝试,出问题概不负责!小米刷机工具 MiFlash Prime Edition 2024.08.01 (修改版) ,9008免授权免登陆刷机。小米 Mi Flash Tool 2023.4.14.0 的特点免授权刷机 (9008 EDL 模式)无需登陆账号刷机文件名称:MiFlash Prime Edition 2024.08.01.0.zip发布时间:2024.08.01文件大小:95.5M链接: https://pan.baidu.com/s/1miwwzriTpijaJ6BVhiu3jA?pwd=8888提取码: 8888步骤 1 安装驱动下载并解压刷机工具,双击“XiaoMiFlash.exe”运行,点击【Driver】弹出窗口后点击【安装】已经安装过的可以略过此步步骤 2 手机进入Fastboot模式在手机上操作 关机状态下,同时按住 音量下 + 电源键,进入 Fastboot 模式,将手机USB连接电脑。步骤 3 解压固件线刷包下载完成后解压,打开线刷包文件夹,复制地址栏地址如下图。步骤 4 准备刷机将刚才复制的路径内容粘贴到蓝色区域位置。点击黄色圈选部分加载设备,刷机程序会自动识别手机。点击红色圈选部分刷机开始刷机。有BL锁机型默认会选择“全部删除并LOCK”,没有BL锁机型需要手动选择“全部删除”(如图绿框显示)。步骤 5 刷机成功然后等待,如图表示已经刷机成功,手机会自动开机。结尾刷机有风险,能自己承担后果再尝试,出问题概不负责!
2025年07月21日
161 阅读
0 评论
0 点赞
2025-05-24
靠谱!2025年8大程序员接单、软件外包平台推荐
作为在代码和甲方间反复横跳、多年兼职接单、做过无数软件定制外包的赛博程序员,我把这些年被平台算法坑、被甲方蹂躏、被平台抽佣吸血的程序员接单经历,浓缩成这份含泪的程序员兼职平台推荐指南。一、程序聚合优点: 程序聚合(devlg.com) 是最近发现的程序员接单、软件外包平台,也有小程序。也是我近些年看到比较靠谱的软件外包平台。平台没有任何会员费、入驻费,抽佣相对其他平台低,也没有隐藏收费,流程相对规范,对于新接单的个人比较友好。对程序员简历和客户需求都有人工审核,工作人员都懂些技术,会理解客户需求进行初步筛选,能避免一些无意义沟通。缺点: 开发者简历上传有字数限制,人工审核严格,程序员入驻基本都得10分钟,要是认真填写得花15-20分钟。因为没有付费接单方式,平台可能是将简历完善度看作新人阶段的个人意愿的表现。反正在哪个平台接单都有筛选,要不花心思,要不花钱。实际接单,开发时平台也会要求写周进度汇报,每周都有人提醒。二、CodeMatrix优点: 这程序员兼职平台的AI匹配系统算是赛博月老,比同行人工匹配速度快很多。上次我上传了React和Three.js的项目经历,第二天就推了个元宇宙商城项目。国外新风口项目土豪多,预算很充足。平台的代码风险预警也确实专业。动态定价机制有时候能捡漏,某些冷门时间点,非热门技术栈像Rust程序员的时薪能飙到几百刀。缺点: 这个软件外包平台可能web3相关的软件定制偏多,传统项目偏少,程序员兼职机会偏少。AI匹配也有抽风的时候,很依赖初始简历信息,有时候也有错得很离谱。三、开源众包优点: 背靠开源中国,社区氛围相对纯粹,在这里接过最硬核的软件定制项目——给某国产数据库优化SQL解析器,甲方CTO亲自上阵review代码,讨论B+树索引优化能聊到凌晨三点。平台盈利模式以团队接单为主,但对个人程序员兼职也没那么苛刻。缺点: 平台盈利模式以团队接单为主,整体肯定是偏向小型软件外包公司。另外最最重要的是,这个是开源中国的边缘业务中的边缘业务,整体不受重视。刚刚登上去,发现开源众包好像已经终止新程序员入驻,仅作维护善后了。四、Upwork优点: 可能是全球最大的远程工作平台,全球化机会,主要软件外包项目来自欧美,项目类型多样,适合希望赚取美元收入的程序员。阶梯抽成机制:长期合作后佣金比例可降至5%,降低长期成本。流程规范:采用托管支付和合同管理,保障双方权益,减少尾款拖欠风险。缺点: 高抽成与竞争激烈:程序员兼职初期佣金很高,且需投入大量精力优化个人主页以维持曝光。语言与文化壁垒:需熟练使用英文沟通,对非母语开发者构成挑战。需要和印度、东南亚的兼职程序员低价竞争。五、码市优点: 也算老牌软件外包平台,多元化服务,覆盖开发、设计、测试等领域,提供项目管理工具和在线协作功能,提升效率。资金托管与软件定制保险机制完善,纠纷处理流程规范。缺点: 项目评审标准模糊,部分低质量项目可能通过审核,而优质项目因标准不明确被拒,影响开发者体验。付费门槛高,本身还是以软件外包公司接单为主,入驻1W元起步,不适合个人程序员兼职尝试。六、Toptal优点: 一切都比较正式,软件定制项目质量很顶,接过软件外包的都知道,就这一条就很值得一看。缺点: 缺点也是太正式了,面试也很严格,通过他们家面试比拿到谷歌offer还难。平台抽成也让人肉疼,参与有些大型软件定制项目还要求跟你签竞业协议,外包项目签竞业就很离谱。不太适合个人程序员兼职。七、华为云开发者众包优点 合规性与税务支持:软件外包模式类似小鱼儿网的“四流一致”模式,代缴税费并提供发票,解决企业税务合规难题。资源对接高效:依托华为生态,吸引大型企业软件定制项目,适合承接复杂系统开发需求。缺点 门槛较高:倾向于服务成熟团队或资深接单程序员,新手程序员兼职难以获得机会,对发单客户也一样,一些中小型项目也不会获得重视。灵活性不足:流程偏传统,缺乏自由职业平台的敏捷性。八、DevHive优点 开发者社区化协作:强调程序员社区互动,适合技术交流与软件定制项目合作。技术驱动匹配:可能采用AI或区块链技术优化任务分配。链上资金托管相对安心吧。缺点 用户基数小:新兴平台软件外包项目资源有限,程序员兼职机会较少。功能待验证:新型模式需时间检验其稳定性和实用性。总结与建议选择策略: 新手程序员兼职建议从 程序聚合 或 Fiverr 起步,积累经验与好评。资深开发者可专注 社区接单、Upwork ,承接高价值软件项目。风险规避: 拒绝不合规的软件定制项目。优先选择资金托管平台,避免私单交易风险。开发前约定好交付标准,最好是原型图,再不济用文字也要描述清楚功能模块。长期发展: 将程序员接外包看作是提升沟通,搞定客户等软性能力的契机。提升技术栈与英语能力,适应国际化竞争,国外软件定制单性价比通常高点。结合多个国内、国外软件外包平台扩大机会,如 “程序聚合+Upwork” 组合。最后送上护体真言:接单不规范,亲人两行泪;平台套路深,代码才是真。
2025年05月24日
149 阅读
0 评论
0 点赞
2025-05-16
远程桌面控制软件-rustdesk-附docker部署脚本
客户端程序 1.4.0 版本官网地址:https://github.com/rustdesk/rustdesk/releases/tag/1.4.0{cloud title="rustdesk-1.4.0" type="lz" url="https://wwtt.lanzouy.com/b02djvq20f" password="9dwl"/}自建中继服务器Docker脚本试过很多远程软件,最后还是觉得 rustdesk 最适合,如果家里有nas,那就更完美了,可以自建中继服务器,不过官方的不带账号功能,需要配合rustdesk-api才能实现账号管理,有大神整合了API功能,以下yaml文件直接实现,IPV6也是可以的,要双方都有IPV6,我域名绑定的IP6地址,没有卡顿,画质清晰。networks: rustdesk-net: external: false services: rustdesk: ports: - 21114:21114 - 21115:21115 - 21116:21116 - 21116:21116/udp - 21117:21117 - 21118:21118 - 21119:21119 image: lejianwen/rustdesk-server-s6:latest environment: - RELAY=<server[:21117]> - ENCRYPTED_ONLY=1 - MUST_LOGIN=Y #是否必须登录 - TZ=Asia/Shanghai - RUSTDESK_API_RUSTDESK_ID_SERVER=<server[:21116]> #21116 - RUSTDESK_API_RUSTDESK_RELAY_SERVER=<server[:21117]> #21117 - RUSTDESK_API_RUSTDESK_API_SERVER=http://<server[:21114]> #21114 - RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub - RUSTDESK_API_JWT_KEY=xxxxxx # jwt key volumes: - /data/rustdesk/server:/data #将server的key挂载出来 - /data/rustdesk/api:/app/data #将数据库挂载 networks: - rustdesk-net restart: unless-stoppedkey 在 Docker 运行后在 日志 中查看将自己的IP或者域名替换以上<>,如: - RELAY=<server[:21117]> 替换成 - RELAY=8.8.8.8:21117 或者 - RELAY=http://baidu.com:21117客户端设置客户端只需要配置网络,有4个设置项,其中3个必填,如果需要登录就需要设置API服务器ID服务器:域名或者IP:21116中继服务器:域名或者IP:21117API服务器:http://域名orIP:21114key,从日志中查看实测公网IPV6绑定域名,只要双方都有IPV6也能流畅访问。
2025年05月16日
84 阅读
0 评论
0 点赞
2025-03-11
PHP短链接生成域名防红系统源码-附搭建使用教程
项目概述这是一套 PHP 的短链接生成系统源码、也称为网址生成系统、域名防红系统,幽络源已经搭建测试,表示可以正常使用。源码链接:{cloud title="PHP短链接生成域名防红系统源码" type="default" url="http://pan.lysdad.cn/down.php/38500091e85c54cd3ff3ae3a6c01409d.zip" password=""/}所需环境 PHP7.4.33,MySQL5.7、Nginx 1.24.0 本项目使用宝塔面板搭建测试,以下教程按宝塔步骤讲诉搭建配置教程1.添加站点PHP项目中添加站点,如图,填写好域名,并指定创建数据库确定即可,我这里使用的ip测试,不用域名也可以2.上传项目将下载的源码压缩包上传到刚才创建的站点根目录。3.伪静态配置这个是必须要配置的,跳转需要,配置内容如下location / { if (!-f $request_filename){ set $rule_0 1$rule_0; } if (!-d $request_filename){ set $rule_0 2$rule_0; } if ($rule_0 = "21"){ rewrite /(.*)$ /t.php?code=$1 last; } }4.访问域名第一次访问域名会提示安装资源,一直点下一步就行了。中间有一步是填写数据库配置,填写你刚才创建站点时的数据库配置即可。5.访问后台项目安装完成后,后台地址为:域名 + /admin/login.php,账号密码分别为 admin 与 123456。6.配置后台信息这一步是必做的,在 系统设置-网站信息设置 中,将网站域名修改为自己的域名并且保存!!使用教程上面搭建配置完了,然后就是使用1.后台生成使用在网址管理中点击新增,然后填写你要跳转的地址,这里有个非常重要重要重要的一点,填写的跳转地址必须得包含协议,http或https,若不包协议,跳转是会失败的!!2.测试跳转链接新增后会生成一个短链,将其复制,然后在浏览器使用,短链通过302跳转到了指定的链接。3.最后提示本项目搭建后,也可以提供给别人使用,别人可以填写链接后生成一个短链,你在后台可以看到别人生成的链接。
2025年03月11日
116 阅读
0 评论
0 点赞
2025-03-06
推荐31个docker应用,每一个都很实用
推荐的这些 docker 应用都是我自己常用的,同时也有自己的一些偏好在里面,每个人的需求不同,对应用的要求也不同。还有很多优秀的 docker 应用我没有用过,所有没有推荐的并不代表不优秀。所有的 docker 应用布署都比较简单,只有少量的会需要在数据库和权限的配置上研究一下。排名不分先后Memos 笔记记事功能强大的笔记应用,支持多用户,笔记支持私有,工作区和公开https://github.com/usememos/memosWbo-Boards 共享白板非常好的白板应用,支持多人共享,一人在白板上画图写字,其他在线用户可以实时看到https://github.com/lovasoa/whitebophirVaultWard 密码管理BitWard的轻量版,密码管理,可以在电脑和手机上自动填写用户和密码,实现自动登陆注意:此应用不支持IP:Port访问,安全原因,只支持https连接https://github.com/dani-garcia/vaultwardenMoments 极简朋友圈微信朋友圈风格,支持多用户,可以发贴和记事,比起各博客应用更简单易用https://github.com/kingwrcy/momentsGhost 博客本人最喜欢的博客应用,轻松发博,只是对中文版支持不是太好https://github.com/TryGhost/GhostTypecho 博客简单的博客,发博时稍烦所,不如Ghost强大,简单易用不如极简朋友圈,看个人的需求https://github.com/typecho/typechoEasyImage 图床本人自用的主力图床https://hub.docker.com/r/ddsderek/easyimageLsky-pro 图床图床不多说了,感觉功能易用性和EasyImage差不多https://hub.docker.com/r/dko0/lsky-pro/Lychee 相册漂亮且功能强大的相册,支持多用户和相册分享注意:如果不能上传图片,检查一下目录的权限https://github.com/LycheeOrg/LycheeFileBrowser 网盘简单易用,适合个人自用,当然也支持多用户和文件分享https://github.com/filebrowser/filebrowserCloudreve 网盘强大的网盘,虽不如Nextcloud强大,但是速度更快更好用,支持多用户和文件分享https://github.com/cloudreve/CloudreveFileCodeBox 文件文字加密分享简单易用,支持访客分享,让小白分享文件更简单更安全用户通过简单的方式分享文本和文件,接收者只需要一个提取码就可以取得文件,就像从快递柜取出快递一样简单https://github.com/vastsa/FileCodeBoxJellyfin 视频流媒体服务器不用多说了,和Emby一样的功能,但这个是开源免费的https://github.com/jellyfin/jellyfinAllinOne IPtv可以在线看央视和其他地方卫视。https://www.nodeseek.com/post-176265-1Navidrome 音乐服务器音乐收藏和流媒体服务器,里面没有音乐,要自己上传音乐文件https://github.com/navidrome/navidromeMeTube 视频网站下载器可以从YouTube下载视频,或直接下载音频,支持视频列表下载。同时还支持从其他上百个视频网站下载https://github.com/alexta69/metubeqBittorrent 下载工具大家都应该用过吧https://github.com/qbittorrent/qBittorrentDosGame DOS老游戏Dos游戏中文版,可以用浏览器在线玩dos游戏,包含40几个经典游戏https://hub.docker.com/r/oldiy/dosgame-web-docker/LinkAce 书签管理网址网页收藏管理,支持多用户,书签支持私有,内部和公开https://github.com/Kovah/LinkAceOneNav 书签管理强大且简洁高效的浏览器书签管理器,个人单用户适用https://github.com/helloxz/onenavSlash 短域名跳转如果自己拥有短域名,可以设置短域名跳转服务注意:开源版有些限制,码佬可以自己改一下https://github.com/yourselfhosted/slashActualBudet 记账应用功能不错,但本人只用过一些简单功能,好像暂时没有中文版本https://github.com/actualbudget/actual-serverTimeTagger 时间记录时间记录打卡,很适合小朋友练琴和学习的时间记录,支持标签https://github.com/almarklein/timetaggerStirling-PDF PDF编辑转换PDF编辑转换工具,功能超级强大,再也不用花钱买PDF软件了https://github.com/Stirling-Tools/Stirling-PDFit-tools IT常用工具各种IT常用工具。https://github.com/CorentinTh/it-toolsSpeedTest 网速测试网速测试应用,简单易用,也可以用作docker测试应用https://github.com/librespeed/speedtestUptime-Kuma 监测工具实时监测工具,可以对IP,网站,DNS等服务进行实时监测,并可发送警报信息https://github.com/louislam/uptime-kumaSmokeping 网络延迟监测自定义IP点,监测网络延迟,并可以显示延迟图https://github.com/linuxserver/docker-smokepingServerStatus 探针本人的主力探针,简单易用,支持一键脚本布署https://github.com/cppla/ServerStatusMyNodeQuery 探针本人的备用探针,简单易用,支持一键脚本布署https://hub.docker.com/r/jaydenlee2019/mynodequery/Adminer 数据库管理工具强大易用的数据库管理工具,支持MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, MongoDB等各种数据库。本人原来一直用phpmyadmin管理MySQL数据库,现在已改用Adminer了。https://github.com/vrana/adminer
2025年03月06日
1,311 阅读
0 评论
0 点赞
2025-02-24
Deepseek R1满血版整合 - 自收藏网址
网页版本 --- 无需登录序号平台网址1官方https://chat.deepseek.com/2国家超算互联网中心https://chat.scnet.cn/#/home3华为小艺ai网页版https://xiaoyi.huawei.com/chat4360纳米aihttps://bot.n.cn/5秘塔aihttps://metaso.cn/6天工aihttps://www.tiangong.cn/7当贝aihttps://ai.dangbei.com/chat8问小白https://www.wenxiaobai.com/chat9跃问https://yuewen.cn/chats/new10百度https://chat.baidu.com/11有道https://fanyi.youdao.com/12Lambdahttps://lambda.chat/13Flowithhttps://flowith.io/14Deepinfrahttps://deepinfra.com/chat/15Nvidiahttps://build.nvidia.com/deepseek-ai/deepseek-r1排名不分先后!网页版本 --- 需登录序号平台网址1腾讯元宝https://yuanbao.tencent.com/chat2知乎直答https://zhida.zhihu.com/3跃问https://yuewen.cn/4WPShttps://copilot.wps.cn/API序号平台网址输入/M输出/M1官方https://chat.deepseek.com/¥4¥162硅基流动https://cloud.siliconflow.cn/i/vxqhWDjY¥4¥163阿里云百炼https://bailian.console.aliyun.com/#/model-market/detail/deepseek-r1¥2¥84腾讯云https://cloud.tencent.com/document/product/1772/115963¥4¥165字节火山引擎https://www.volcengine.com/ 6百度千帆https://console.bce.baidu.com/qianfan/ais/console/onlineTest/LLM/DeepSeek-R1¥2¥87华为云https://activity.huaweicloud.com/maas-ds.html 8天翼云https://www.ctyun.cn/act/xirang/deepseek 9Fireworkshttps://fireworks.ai/$3$810Hyperbolichttps://app.hyperbolic.xyz/$2$211Togetherhttps://www.together.ai/$3$712Novitahttps://novita.ai/$4$413魔搭社区https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1/summary
2025年02月24日
49 阅读
0 评论
0 点赞
2025-02-18
分享几个测速网站,包含跨境测速和全球测速
高校自建测速平台中国科学技术大学测速站地址:https://test.ustc.edu.cn/特点:国内教育网基准测速,延迟抖动数据精准南京大学测速站地址:https://test.nju.edu.cn/备注:采用与中科大相似的开源架构,适合对比跨区域网络质量跨境网络测试专项台湾大学测速平台地址:http://speed5.ntu.edu.tw/speed5/功能亮点:可检测跨境连接速度(如大陆至台湾线路质量)全球权威测速服务Speedtest by Ookla官网:https://www.speedtest.net/核心优势:▶ 覆盖全球超800个节点(含国内电信/联通/移动服务器)▶ 支持5G网络专项测试▶ 提供历史数据对比功能cloudflare官网:https://speed.cloudflare.com/核心优势:Cloudflare测速站设计极简,无广告,精准反馈延迟/抖动数据,最真实的评测线路实际使用体验。
2025年02月18日
240 阅读
0 评论
0 点赞
2025-02-05
[Windows] 卡巴斯基Kaspersky 21.20.8.505 免费版
卡巴斯基免费版从界面到功能和使用体验来说,简洁、高效、严苛、轻巧,可以“弥补”火绒杀毒能力不强,同时也不会像 Microsoft Defender 误报。卡巴斯基免费版,拥有文件反病毒、反网络攻击、安全浏览、邮件反病毒、系统监控、卡巴斯基安全网络等功能,与收费版只差了防火墙和入侵防御,对普通用户来说,免费版足够用了。卡巴斯基免费版具有以下防护功能:文件反病毒: 可扫描所有打开、保存和运行的文件;反网络攻击: 可保护您的计算机,防御危险网络活动和网络攻击;安全浏览: 可检查网站是否安全并阻止病毒下载;邮件反病毒: 可扫描邮件客户端中接收和发送的邮件;系统监控: 防护勒索软件和恶意软件以及回滚由恶意程序活动导致的系统更改;卡巴斯基安全网络: 包含有关文件、网络资源和软件的信誉信息的云数据库。卡巴斯基最新版本 21.20.8.505已经可以下载,卡巴斯基在中国地区提供的最新21.20.8.505免费版本还能不需要付费继续使用,现提供卡巴斯基免费版KFA 21.20.8.505在线和离线安装包和安装测试过程截图供有需要者安装测试。卡巴斯基 Kaspersky 21.20.8.505(Free/Standard/Plus/Premium)在线安装包官方下载链接:https://dm.s.kaspersky-labs.com/zh-Hans-CN/Kaspersky4Win/21.20.8.505/startup.exe卡巴斯基 Kaspersky 21.20.8.505(Free/Standard/Plus/Premium)在线安装包&离线安装包蓝奏云下载链接:https://www.lanzouw.com/b035noi6xe 密码:b45i其中:卡巴斯基Kaspersky4Win 21.20.8.505.exe为卡巴斯基 Kaspersky 21.20.8.505(Free/Standard/Plus/Premium)官方在线安装包下载卡巴斯基Kaspersky 21.20.8.505.1.rar、卡巴斯基Kaspersky 21.20.8.505.2.rar、卡巴斯基Kaspersky 21.20.8.505.3.rar解压后就能得到卡巴斯基卡巴斯基Kaspersky 21.20.8.505官方离线exe安装包用官方在线安装包或离线安装包安装完成后,输入卡巴斯基kaspersky 免费试用激活码( 366 天,到期后,点击授权许可界面的更新状态按钮即可重新获得一年): 3SXCM-M9RJM-6985N-PWKP7 或 A23B5-44EXM-85MVF-KM2GQ 即可激活免费版。如电脑上已经安装卡巴21.19.7.527免费版或其他版本,想安装测试 21.20.8.505免费版本,建议先卸载21.19.7.527等卡巴斯基旧的版本,全新安装 21.20.8.505如果不能用卡巴斯基自带的卸载程序卸载,可用卡巴斯基 Kaspersky 官方卸载工具试试:https://support.kaspersky.com/common/uninstall/1464https://media.kaspersky.com/utilities/ConsumerUtilities/kavremvr.exe
2025年02月05日
166 阅读
0 评论
0 点赞
1
2
...
7