首页
归档
分类
标签
更多
留言板
说说
关于
Search
1
饥荒联机版控制台代码大全
1,025 阅读
2
编译安装带 Brotli 压缩的 Nginx
930 阅读
3
Obsidian多端快速同步插件
901 阅读
4
树莓派+EC20模块实现连接蜂窝网和短信收发
888 阅读
5
EC20通过gammu接收短信再转发优化
865 阅读
软件
CSS
Python
MySql
Java
typecho自定义
Vue
学习笔记
Linux
Shell脚本
Nginx
树莓派
邮件
拍照
热点
ec20
云盘
系统烧录
好玩
饥荒
硬件
工具
笔记
随心记
登录
Search
标签搜索
树莓派
Linux
Java
CSS
饥荒
小妙招
个人热点
nextcloud
云盘
DHT11
学习笔记
树莓派拍照
Nginx
MySql
ESP
娱乐
ec20模块
文件共享
git
图床
Mango
累计撰写
51
篇文章
累计收到
7
条评论
首页
栏目
软件
CSS
Python
MySql
Java
typecho自定义
Vue
学习笔记
Linux
Shell脚本
Nginx
树莓派
邮件
拍照
热点
ec20
云盘
系统烧录
好玩
饥荒
硬件
工具
笔记
随心记
页面
归档
分类
标签
留言板
说说
关于
搜索到
13
篇与
的结果
2024-11-15
使用dpkg-deb对deb文件解压、重新打包
前引aic8800d80相关驱动在最新的linux内核中无法安装,在网上找了很多别人重新编译的驱动都无法正常使用,后来才了解到deb文件可以解压出源码文件,在针对错误进行修改后又可以重新打包。命令安装apt install dpkg解压deb文件dpkg-deb -x org.deb ./src/将deb文件解压到一个文件夹中修改源码文件为了后续重新打包最好不要改变源代码文件结构解压出包的控制信息dpkg-deb -e org.deb ./src/DEBIAN重新打包dpkg-deb -b ./src new.deb安装dpkg -i new.deb
2024年11月15日
578 阅读
0 评论
0 点赞
2024-07-03
编译安装带 Brotli 压缩的 Nginx
安装依赖apt install dpkg-dev curl gnupg2 build-essential zlib1g-dev libpcre3 libpcre3-dev unzip cmake -y下载编译源码添加nginx源码库添加 Nginx 密钥:curl -L https://nginx.org/keys/nginx_signing.key | apt-key add -添加密钥后,使用以下命令添加 Nginx 存储库:vim /etc/apt/sources.list.d/nginx.list添加如下内容deb http://nginx.org/packages/ubuntu/ focal nginx deb-src http://nginx.org/packages/ubuntu/ focal nginx更新存储库apt update -y下载nginx Brotli 源文件目录文件最好保持一致,在后续编译配置文件修改部分需要文件路径正确cd /usr/local/src apt source nginx安装编译nginx所需要的文件apt build-dep nginx -y从github下载 Brotli 源代码:git clone --recursive https://github.com/google/ngx_brotli.git修改编译配置文件修改Nginx 源并编辑 debian 规则文件添加 Brotli模块 :cd /usr/local/src/nginx-*/ vim debian/rules添加位置不同位置可能有些许不同,这里需要注意模块路径,也就是github下载 Brotli 源代码存储路径,如果位置不对需要自行修改1.26.1版本1.22.1版本其他版本添加位置也可能会有不同--add-module=/usr/local/src/ngx_brotli编译文件使用以下命令编译并构建具有 ngx_brotli 支持的 nginx 包:dpkg-buildpackage -b -uc -us在编译时如果出现以下报错:/usr/bin/ld: cannot find -lbrotlienc /usr/bin/ld: cannot find -lbrotlicommon collect2: error: ld returned 1 exit status make[2]: *** [objs/Makefile:383: objs/nginx] Error 1 make[2]: Leaving directory '/usr/local/src/nginx-1.26.1/debian/build-nginx' make[1]: *** [Makefile:10: build] Error 2 make[1]: Leaving directory '/usr/local/src/nginx-1.26.1/debian/build-nginx' make: *** [debian/rules:62: build-arch.nginx] Error 2 dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2只需要编译编译一下brotli子模块即可cd /usr/local/src/ngx_brotli/deps/brotli mkdir out cd out cmake -DCMAKE_BUILD_TYPE=Release .. makebrotli子模块编译完成后再执行编译命令cd /usr/local/src/nginx-* dpkg-buildpackage -b -uc -us若没有新的报错出现,在/usr/local/src就有可安装的deb软件包安装 Nginx 并启用 Brotli 支持安装软件包cd /usr/local/src/ dpkg -i *.deb若软件无法安装,出现如下报错新nginx和原有的冲突,现在安装的nginx再重新安装即可apt remove nginx apt --fix-broken install启用Brotli 安装所有软件包后,编辑 Nginx 主配置文件并启用 Brotli 支持:vim /etc/nginx/nginx.conf在 http{ 下面添加以下行 brotli on; brotli_comp_level 6; brotli_static on; brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;重新启动 Nginx 服务:systemctl restart nginx验证 Nginx 和 Brotlicurl -H 'Accept-Encoding: br' -I http://localhost如果一切正常,您将看到 brotli 支持的结果“content-encoding:br”,如下所示:禁用nginx更新将 nginx 标记为保持:sudo apt-mark hold nginx查看所有被标记为“保持”的包:apt-mark showhold取消“保持”状态,允许更新:sudo apt-mark unhold nginx
2024年07月03日
930 阅读
0 评论
0 点赞
2024-04-08
树莓派+EC20模块实现连接蜂窝网和短信收发
软硬件树莓派ec20wvdialgammuSIM卡EC20模块概述EC20-CE是移远通信最近推出的LTE Cat 4无线通信模块,采用LTE 3GPP Release 11 技术,支持最大下行速率 150 Mbps和最大上行速率50 Mbps;同时在封装上兼容移远通信多网络制式LTE EC21系列、EC25系列和EG25-G 模块,实现了3G网络与4G网络之间的无缝切换。EC20-CE采用镭雕工艺,镭雕工艺具有外观更漂亮、金属质感强、散热更好、信息不容易被抹除、更能适应自动化需求等优点。EC20-CE内置多星座高精度定位GNSS(GPS/GLONASS/BDS/Galileo/QZSS)接收机;在简化产品设计的同时,还大大提升了定位速度及精度。EC20-CE内置丰富的网络协议,集成多个工业标准接口,并支持多种驱动和软件功能(适用于Windows 7/8/8.1/10/11、Linux、Android等操作系统下的USB驱动等),极大地拓展了EC20-CE在M2M领域的应用范围,如CPE、路由器、数据卡、平板电脑、车载、智能安全以及工业级PDA等。产品特性更多详情可到官网查看{%link LTE EC20-CE,QUECTEL,https://www.quectel.com.cn/product/lte-ec20-ce %}产品手册 Quectel_Product_Brochure_CN_V7.8)查看设备是否挂载成功使用命令sudo ls /dev |grep ttyUSB挂载成功会有如图输出要是没有看到设备则检查设备是否稳定插入、更换USB口或者重启设备之后再重新使用命令查看拨号上网wvdial安装wvdial是一个方便使用的PPP拨号模块,它能调用调制调节器,并通过PPP上网,无需像手动拨号一样配置繁琐的文件sudo apt update sudo apt install wvdial配置修改配置文件sudo vim /etc/wvdial.conf可以继续使用 [Dialer Defaults]也可以重新根据自己需要添加,我这里为了没有多余手机卡,也为了方便输入命令,就直接使用电信/移动SIM卡使用以下配置[Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Modem Type = Analog Modem Modem = /dev/ttyUSB3 Baud = 115200 New PPPD = yes ISDN = 0 Phone = *99# Username = card Password = card联通卡使用以下配置[Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = at+cgdcont=1,"ip","uninet" Modem Type = Analog Modem Modem = /dev/ttyUSB3 Baud = 115200 New PPPD = yes ISDN = 0 Phone = *99# Password = card Username = card配置来源于 Quectel EC20 在 Linux 上的使用在配置文件中大部分都不需要自己调整,只有Modem和Baud需要根据自己设备情况进行调整Modem:根据情况选择合适的设备我的这个ttyUSB2和ttyUSB3都能正常使用Baud:根据情况选择合适的波特率,对于ec20来说9600-115200都可以启动wvdialsudo wvdial查看网络设备ifconfig可以看到多了ppp0和wwan0两个设备正常情况还无法访问网络,因为默认路由在其他网络设备中,需要重新配置路由配置路由查看路由sudo route配置路由的方式有很多种,我这里的方法比较简单粗暴,需要具体配置的可自己查找方法sudo route add default dev ppp0该命令会在路由表中添加一条新的默认路由在每次重启后都会刷新路由,可以将命令加到/etc/rc.local中,每次开机都执行添加方法sudo vim /etc/rc.local在exit 0前添加su - root -c `route add default dev ppp0`通过systemctl来管理wvdial开机自启wvdial的方法有很多种,并不一定要使用systemctl最简单的就是和添加路由一样,在/etc/rc.local中添加启动命令sudo vim /etc/rc.local # 添加 wvdial &编写控制wvdial启动和检测wvdial运行脚本新建sh脚本文件,可以放到你想存放的地方我这里在root用户下/root/shell中sudo mkdir /root/shell && cd shell # 名字可以任起 sudo vim onwvdial.shwvdial控制脚本内容#!/bin/bash DEVICE_NAME="/dev/ttyUSB3" # 和wvdial配置设备一致 LOG_FILE="/var/log/wvdial_on.log" # 日志文件存储位置 PROCESS_NAME=(wvdial pppd) # 需检查占用软件 # 定义函数检查进程是否占用设备 check_device_usage() { local process_name=$1 local device=$2 local pids=$(pgrep -f "$process_name") if [ -z "$pids" ]; then return fi for pid in $pids; do echo "pid:$pid" local device_count=$(lsof -p "$pid" 2>/dev/null | grep -e "$device" | wc -l) if [ "$device_count" -gt 0 ]; then echo "占用设备:$device" kill $pid fi done return } function check_wvdial() { if pgrep -x "wvdial" >/dev/null; then return 0 # wvdial 进程在运行 else return 1 # wvdial 进程未运行 fi } for process in $PROCESS_NAME; do echo "进程名: $process" check_device_usage $process $DEVICE_NAME done wvdial >> "$LOG_FILE" 2>&1 & route add default dev ppp0 while true;do if ! check_wvdial;then echo "$(date +"%Y-%m-%d %H:%M:%S") - wvdial 进程未运行,正在重新启动..." >> "$LOG_FILE" wvdial >> "$LOG_FILE" 2>&1 & fi sleep 120 done该脚本包含功能:停止wvdial启动前所需设备的占用启动wvdial添加ppp0默认路由每120秒检测wvdial是否运行记录启动、错误日志设置可执行权限sudo chmod u+x /root/shell/onwvdial.sh编写systemctl控制文件sudo vim /etc/systemd/system/wvdial_on.service配置文件内容如下:[Unit] Description=Safe Start Wvadil After=dev-ttyUSB3.device Requires=dev-ttyUSB3.device [Service] User=root Group=root ExecStart=/root/shell/onwvdial.sh # 路径根据自己配置修改 [Install] WantedBy=multi-user.target 启动服务systemctl daemon-reload systemctl start wvdial_on.service systemctl enable wvdial_on.service设置自启动后就不需要在/etc/rc.local中添加修改路由和启动wvdial命令了配置防火墙如果在ec20模块连接4G网络后还需要使用wifi则需要配置防火墙,不需要则不用配置sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE sudo iptables -A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT 将防火墙规则写入文件 sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"顺序执行命令即可收发短信安装软件gammusudo apt install gammu gammu-smsd配置gammu使用命令sudo gammu-config配置可参考我的或者直接修改/root/.gammurc,效果是一样的如果没有/root/.gammurc文件就使用命令[gammu] port = /dev/ttyUSB2 model = connection = at19200 synchronizetime = yes logfile = logformat = nothing use_locking = no gammuloc =修改 /etc/gammu-smsdrc[gammu] # Please configure this! port = /dev/ttyUSB2 connection = at19200 # Debugging #logformat = textall # SMSD configuration, see gammu-smsdrc(5) [smsd] service = files logfile = syslog RunOnReceive = /root/msmtp/sh/send-smsd.sh # 发送邮件脚本 # Increase for debugging information debug = yes #debuglevel = 0 # Paths where messages are stored inboxpath = /var/spool/gammu/inbox/ outboxpath = /var/spool/gammu/outbox/ sentsmspath = /var/spool/gammu/sent/ errorsmspath = /var/spool/gammu/error/编辑收到短信后自动发送邮件脚本树莓派配置邮件这里不再赘述,可以自行搜索,或者参考我之前的一篇博客{% link 树莓派开机自动发送邮件,TeohZY,https://blog.teohzy.com/posts/smpxjfsyj/ %}编辑脚本vim /root/msmtp/sh/send-smsd.sh文件路径根据自己需要修改#!/bin/bash for i in `seq $SMS_MESSAGES` ; do if [ $i -eq 1 ]; then phone="$SMS_1_NUMBER" fi tmp="$(eval echo '$'SMS_${i}_TEXT)" message="$text$tmp" done echo "$message" |mutt -s "树莓派短信转发" xxx@163.com重启gammusystemctl restart gammu-smsd.service短信测试向目标号码发送短信后邮箱能收到短信通过终端向其他号码发送短信gammu-smsd-inject TEXT 目标号码 -text '短信内容' -unicode如果收到短信说明配置成功短信发送失败踩坑查看端口占用sudo lsof /dev/ttyUSB2如果有其他进程和gammu-sms占用设备,可以使用kill命令结束非必须进程设备波特率和wvdial重复检查wvdial配置和gammu配置,如果wvdial已经使用了ttyUSB3和波特率115200则gammu配置中就不要再使用相同设备和波特率,可以使用ttyUSB2和波特率at19200ModemManager占用设备查看设备后发现有进程ModemMnana在使用设备,可以停用ModemManager需要考虑实际使用情况来判断,在确认ModemManager确实不是必要软件后再进行操作sudo systemctl disable ModemManager.service sudo systemctl stop ModemManager.service
2024年04月08日
888 阅读
0 评论
0 点赞
2023-10-31
远程访问本地搭建的NextCloud(反向代理网页)
前言在没有公网IP的情况下,很难从其他网络环境中直接访问到部署在本地的web服务,这时候就需要通过内网穿透的方式来实现。而对于内网穿透,有着很多的实现方式,最为常见的就是通过云服务器搭建和使用别人提供的服务自建内网穿透服务需要有自己的云服务器服务端和客户端都需要下载frp,下载地址 => Releases · fatedier/frp (github.com)服务端配置编辑frps.ini文件[common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # 授权码,需要与客户端一致,请改为更复杂的 token = aaaaaa # frp管理后台端口,请按自己需求更改 dashboard_port = 7500 # frp管理后台用户名和密码,请改成自己的 dashboard_user = Mango dashboard_pwd = 12345678 enable_prometheus = true # http 端口可更改 vhost_http_port = 8090 # https 端口可更改 vhost_https_port= 8081 #vhost_https_port = 8080 # frp日志配置 路径根据自己需求更改 log_file = /root/frp/.frps.log log_level = error log_max_days = 3配置systemd守护进程便于管理vim /etc/systemd/system/frps.service输入以下内容并保存[Unit] Description=fraps service After=network.target syslog.target Wants=network.target [Service] Type=simple #启动服务的命令(此处写你的frps的实际安装目录) ExecStart=/root/frp/frps -c /root/frp/frps.ini [Install] WantedBy=multi-user.target启动frps并设置开机自启systemctl daemon-reload systemctl start frps systemctl enable frps配置nginx如果没有nginx先安装apt update apt install nginx编辑配置文件vim /etc/nginx/sites-enabled/nextcloud # 也可以不新建nextcloud文件,直接配置默认文件 vim /etc/nginx/sites-enabled/defaultnginx代理frps配置文件参考可配置SSL开启httpsserver{ listen 80; listen 443 ssl; #对应你的域名 server_name xxx.xxx.cn; # https 域名证书相关配置 # ssl证书存储路径,根据个人存储路径设置,我的被存在了 /etc/nginx/ssl/ 文件夹下面 ssl_certificate /etc/nginx/ssl/xxx.mstzf.cn.pem; ssl_certificate_key /etc/nginx/ssl/xxx.mstzf.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8090; # 映射的frp服务端frps.ini的 vhost_http_port端口 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 240s; client_max_body_size 0; } } }重启nginx服务systemctl restart nginx客户端配置编辑frpc.ini文件[common] # 远程服务器地址 # 替换为自己的域名 server_addr = 0.0.0.0 # 远程服务器监听端口 # 和服务端 bind_port 相同 server_port = 7000 # 连接密钥 # 必须和服务端配置相同 token = aaaaaa # 配置日志文件 # 日志级别:trace, debug, info, warn, error # 日志保存路径根据需求修改 log_file = /home/zh/frp/log/.log log_level = error log_max_days = 3 # 客户端管理配置 admin_addr = 127.0.0.1 admin_port = 7500 admin_user = Mango admin_pwd = 12345678 # 代理端口配置 模板 # [内容随意 如ssh] # type = 连接类型 如 tcp # local_ip = 127.0.0.1 # local_port = 22 本地需要代理的端口 # remote_port = 2222 将本地22端口代理为远程的2222端口 # 该配置下,可用远程 ip 的 2222 端口访问到本地的 22 端口服务 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 2222 [rdp] type=tcp local_ip = 127.0.0.1 local_port=3389 remote_port=3389 [nx] type=tcp local_ip=127.0.0.1 local_port=4000 remote_port=4000 [web] type = http local_ip = 127.0.0.1 local_port = 80 #subdomain = root # 绑定的域名 和nginx配置下的 server_name 相同 custom_domains = xxx.mstzf.cn为frpc配置systemd守护进程便于管理编辑文件vim /etc/systemd/system/frpc.service输入以下内容[Unit] Description=Frp Client Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s # 根据frp所在位置设置 ExecStart=/home/zh/frp/frpc -c /home/zh/frp/frpc.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target启动frpc并配置开机自启systemctl daemon-reload systemctl start frpc systemctl enable frpc使用第三方服务我个人使用的是Sakura Frp,有能够满足基本需求的免费套餐,vip套餐也很划算,已经能够满足我的基本需求{% link SakuraFrp,SakuraFrp,https://www.natfrp.com/ %}注册账号完善个人信息如果有建站需求想要使用国内站点,需要完成实名认证和有备案域名,否则只能使用国外的站点来搭建在客户端安装frp软件这一部分官网中已经介绍得十分的详细,这里只有几个关键命令,具体可到官网查看{% link frpc 基本使用指南,SakuraFrp 帮助文档,https://doc.natfrp.com/frpc/usage.html %}确认系统架构uname -m获取软件链接{% link 软件下载,SakuraFrp,https://www.natfrp.com/tunnel/download %}安装cd /usr/local/bin wget -O frpc <下载地址> chmod 755 frpc配置守护进程(systemd)具体操作可去指导文档查看{% link Systemd配置frpc服务,SakuraFrp帮助文档,https://doc.natfrp.com/frpc/service/systemd.html %}添加工作目录mkdir -p /usr/local/etc/natfrp编辑配置文件vim /etc/systemd/system/frpc@.service输入配置内容[Unit] Description=SakuraFrp Service After=network.target [Service] Type=idle #DynamicUser=yes Restart=on-failure RestartSec=60s ExecStart=/usr/local/bin/frpc -f %i WorkingDirectory=/usr/local/etc/natfrp [Install] WantedBy=multi-user.target重载systemdsystemctl daemon-reload新建隧道对于远程访问网页的,需要选择可建站的节点;至于选择国内还是国外要先看自己的域名是否已经备过案,备案过的域名可以使用国内节点,国内节点在各方面都要优于国外。如果没有备案域名,就只能使用国外节点。端口根据本地网页端口配置在绑定域名和自动HTTPS中一定要输入自己需要使用的域名配置DSN解析复制节点域名,到域名服务商处配置DNS解析,将自己的域名CNAME到复制的节点域名上记录类型选择CNAME记录值选择选择节点所绑定域名配置SSL证书{% link 配置frpc使用的SSL证书,SakuraFrp帮助文档,https://doc.natfrp.com/frpc/ssl.html %}从服务商下载域名SSL证书选择Nginx,将证书重命名为 将其中 扩展名为pem的直接将扩展名修改为crt 并只保留域名和扩展名 即 如 nextcloud.mstzf.cn.key 的形式将证书移动到之前配置的工作目录中 /usr/local/etc/natfrp启动隧道systemctl <start|stop> <Unit名称> # <Unit名称> 即下图 -f 之后 红色框部分
2023年10月31日
445 阅读
0 评论
0 点赞
2023-05-24
NextCloud无法上传大文件问题解决
NextCloud无法上传大文件问题解决限制NextCloud上传大文件的主要因素有两个,一个就是上传文件的大小,以及文件上传超时时间。修改PHP文件上传限制查看PHP配置文件路径php -i |grep php.ini修改文件中的upload_max_filesize限制上传文件大小可根据自己的需求设置,我这里设置了16Gupload_max_filesize = 16G修改文件上传超时时间max_execution_time以及页面数据接收超时时间max_input_timemax_execution_time = 3600 max_input_time = 600修改post表单接收最大值post_max_sizepost_max_size = 16G修改Nginx文件上传限制修改Nginx配置文件/etc/nginx/nginx.conf在http或者location下添加client_max_body_size 0;0表示无限制内网穿透多Nginx配置如果做内网穿透使用HTTPS并且使用了多个Nginx,每个Nginx下都要做文件上传限制配置
2023年05月24日
573 阅读
0 评论
0 点赞
2023-05-24
nginx做web代理偶尔网页出现PHP Version界面解决办法
出现场景之前在树莓派上利用Nginx和NextCloud搭建了一个自用的网盘,NextCloud需要PHP作为运行环境,但是时不时会出现网页无法正常显示的情况,之前一直以为是通过frp做内网穿透时和nginx监听的80端口冲突解决办法究其原因是因为安装PHP时附带下载了Apache2,apache2启动后占用了80端口导致Nginx无法正常启动查看80端口占用# lsof -i:80停止apache2# systemctl disable apache2 # systemctl stop apache2重启Nginx# systemctl restart nginx
2023年05月24日
296 阅读
0 评论
0 点赞
2023-01-31
饥荒联机服务器搭建(本地、云服务器、双云服务器)
前引饥荒联机是一个制作精良的“多人联机”生存游戏,游戏在可玩性上没得说,但是由于房主PC性能和网络等各种不确定性原因,导致联机体验特别糟糕。对于联机卡顿的情况,可以通过搭建饥荒联机服务器来解决。我会比较详细的介绍饥荒联机服务器搭建的过程,其中包括本地服务器搭建、云服务器搭建、通过两个服务器将地面和洞穴世界分开服务器搭建KLEI服务器访问令牌无论搭建什么类型的服务器此步骤都不能省略,获取到后可以暂时保存到记事本中,后面会用到进入游戏打开饥荒联机版,进入菜单界面点击账号找到饥荒服务器在导航栏中选择 游戏 ,找到饥荒联机版的图标,选择《饥荒:联机版》的游戏服务器添加服务器名字可以随便取,取好名字之后就可以添加服务器获取代码其他的都不用配置,直接复制访问令牌就可以创建新世界根据自己的喜好创建一个新的饥荒世界,配置好人数,世界属性,以及添加需要的服务器模组之后就和平时玩一样创建一个新世界。在选人界面直接退出找到新世界存档,位置一般在C:\Users\mstzf\Documents\Klei\DoNotStarveTogether文件夹下面的那个数字文件夹里面存放着不同世界的文件夹。文件以Cluster_1来命名,找到新创建的世界文件夹点击进入。在文件中添加新文件,命名为cluster_token.txt,一定要注意扩展名为. txt如果默认不显示扩展名的要注意可能会出错。打开 cluster_token.txt 将上一步获取的服务器访问令牌粘贴在里面保存退出。根据需求修改添加,其中必须要在默认的基础上加入 cluster_tooken.txt才可以搭建联机服务器Cavers :饥荒联机版洞穴世界配置文件。Master :饥荒联机版主世界配置文件。adminlist.txt :管理员名单,在文件中写入玩家的KLEI ID可以将玩家变为服务器管理员,拥有控制台输入命令和踢人的权限。blocklist.txt :黑名单,加入KLEI ID的玩家无法加入游戏。cluster.ini :饥荒联机版配置文件,可以设置人数和世界模式等,可根据需要修改。whitelist.txt :服务器白名单,可写入玩家KLEI ID加入白名单,服务器会空出白名单人数的可加入人数。如果服务器可以有人,白名单中有一人,那么如果白名单中的人不在世界中的话,实际可加入的人数就只有5人。做完这些,这个游戏存档就可以被做为饥荒的联机服务器存档了饥荒本地联机服务器搭建复制存档将之前配置的游戏存档复制到他的上一级C:\Users\mstzf\Documents\Klei\DoNotStarveTogether中下载饥荒联机工具打开Steam游戏库,将游戏软件那个下拉箭头中,将工具也勾上在目录中找到Don't Starve Together Dedicated Server,并下载安装编辑启动文件通过Steam直接打开服务器本地文件(也可以通过文件夹打开,路径为:Steam安装位置\steamapps\common\Don't Starve Together Dedicated Server找到 bin/scripts/launch_preconfigured_servers.bat 文件修改launch_preconfigured_servers.bat文件内容为@ECHO OFF set SteamAppId=322330 set SteamGameId=322330 cd .. start "Don't Starve Together Overworld" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster 改为新建世界存档名 -console -shard Master -console start "Don't Starve Together Caves" /D "%~dp0.." "%~dp0..\dontstarve_dedicated_server_nullrenderer.exe" -cluster 改为新建世界存档名 -console -shard Caves -console如果你的服务器不需要任何服务器mod,那么可以直接点击launch_preconfigured_servers.bat文件启动服务器添加mod对于本地搭建服务器的mod,可以直接复制原本饥荒的mod文件夹中的mod文件到饥荒服务器文件夹中的mod文件夹中找饥荒联机版文件的方法和之前一样,这里就不在赘述另一种方法时编辑mod文件夹下面的dedicated_server_mods_setup.luaServerModSetup("350811795") --数字为mod的id号 ServerModCollectionSetup("379114180") --数字为合计的id号对于怎么获取mod和合集的id,可以在Steam的创意工坊中,在mod或者合集订阅页面复制网页URL,在获取的网址中的数字就是mod或者合集的id号云服务器搭建饥荒联机云服务器相比与本地,有更好的网络连接条件,我本人在用一个2核2G的云服务器,短期档10人左右基本不卡,长期档6人以内也可以支持。对于服务器的话,如果是学生,可以在阿里云进行学生认证,有着不错的折扣。{% link 阿里云学生优惠链接,阿里云,https://www.aliyun.com/daily-act/ecs/activity_share?userCode=6vfvkhtz %}我的环境是Ubuntu 20.04.5 LTS安装依赖环境更新系统 sudo apt update && sudo apt upgrade -y安装依赖环境sudo apt-get install lib32gcc1 libstdc++6 libgcc1 libcurl4-gnutls-dev -y创建Steam安装目录mkdir ~/Steam cd Steam下载SteamCMD安装软件wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz等待下载完成对软件解压缩tar -zxvf steamcmd_linux.tar.gz运行SteamCMD./steamcmd.sh当看到Steam>就说明安装配置已经成功最有可能出现问题的就是在安装依赖的时候,多根据报错检查指定游戏安装路径我喜欢装在Steam文件夹下,可以根据自己喜好修改force_install_dir /root/Steam/DSTServer登录Steam下载饥荒服务器login anonymous app_update 343050 validate等待游戏下载完成完成后可以使用Ctrl + C 或者输入quit 退出SteamCMD编辑启动脚本可以通过直接运行文件来启动服务器./root/Steam/DSTServer/bin/dontstarve_dedicated_server_nullrenderer但是这样不方便管理在启动时如果出现报错:error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory或者error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory这里是个大坑。是由于缺少对应的库,开启i386支持再去安装对应的库开启i386支持 sudo dpkg --add-architecture i386 更新软件库 sudo apt update && sudo apt upgrade -y 安装缺少的库 sudo apt install libcurl4-gnutls-dev:i386 sudo apt install libstdc++6:i386启动脚本可以被放在任何位置,我习惯放在root下自建的bash文件下mkdir /root/bash cd /root/bash vim startDST.sh没有vim的可以用:sudo apt install vim -y 安装启动脚本:steamcmd_dir为steamcmd.sh路径install_dir 为游戏安装路径cluster_name为存档名#!/bin/bash steamcmd_dir="/root/Steam" install_dir="/root/Steam/DSTServer" cluster_name="Cluster_1" dontstarve_dir="/root/.klei/DoNotStarveTogether" function fail() { echo Error: "$@" >&2 exit 1 } function check_for_file() { if [ ! -e "$1" ]; then fail "Missing file: $1" fi } cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!" check_for_file "steamcmd.sh" check_for_file "$dontstarve_dir/$cluster_name/cluster.ini" check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt" check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini" check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini" check_for_file "$install_dir/bin" cd "$install_dir/bin" || fail run_shared=(./dontstarve_dedicated_server_nullrenderer) run_shared+=(-console) run_shared+=(-cluster "$cluster_name") run_shared+=(-monitor_parent_process $$) run_shared+=(-shard) "${run_shared[@]}" Caves | sed 's/^/Caves: /' & "${run_shared[@]}" Master | sed 's/^/Master: /' 给脚本文件可执行权限sudo chmod u+x /root/bash/startDST.sh执行脚本用 :./root/bash/startDST.sh添加modvim /root/Steam/DSTserver/mods/dedicated_server_mods_setup.lua编辑文件内容ServerModCollectionSetup("2606822598") -- 括号内数字替换为自己需要订阅的合集id ServerModSetup("1505270912") -- 括号内数字替换为自己需要订阅的mod的id上传世界存档文件夹上传服务器的方式有很多软件方式可以使用FileZilla{% link ,FileZilla中文网 - 免费开源的FTP解决方案,FileZilla,https://www.filezilla.cn %}上传到服务器后将文件夹保存到:/root/.klei/DoNotStarveTogether/下面,并修改启动脚本中cluster_name的值找不到文件夹的可以先./root/Steam/DSTServer/bin/dontstarve_dedicated_server_nullrenderer运行一下完成后就可以运行启动脚本,启动饥荒联机服务器后台运行推荐使用screen下载 sudo apt install screen -y 启动 screen -S DST 关闭 Ctrl+A+D双服务器分开地面和洞穴要带一些大型模组的多人长期档,一个性能低的服务器可能无法满足,此时如果有多个服务器可以采用不同服务器跑不同部分的办法实现。要使用这一方法,需要在每个服务器都安装饥荒服务器环境,并且都要上传饥荒游戏存档。主要要编辑洞穴服务器的cluster.ini文件对于启动文件,只需要将最后的两部分根据需要注释掉就可以了如果是主世界的启动程序就注释带有Caves的那一行,如果是洞穴就注释带有Master的那一行,然后要保证主世界先运行起来再启动洞穴
2023年01月31日
671 阅读
0 评论
0 点赞
2022-12-21
Linux安装指定版本Nodejs
安装nodejs通过Linux自带软件库安装的nodejs往往版本较老可以通过设置代理更新nodejs软件版本curl -sL https://deb.nodesource.com/setup_18.x | sudo bash -需要安装哪个版本就设置setup_18.x对应版本数字sudo apt-get install -y nodejs nodejs -v 查看版本号,测试安装成功npm更换淘宝镜像npm config set registry https://registry.npm.taobao.org
2022年12月21日
279 阅读
0 评论
0 点赞
2022-12-16
双系统时间不一致问题解决(Win和Linux)
{% note info simple %}本文内容只为方便自己平时查找使用,并非原创性内容{% endnote %}在Linux中使用命令sudo timedatectl set-local-rtc 1将Linux系统时间和BIOS时间同步。sudo timedatectl status是最简单,命令最少的一种方法,亲测有效
2022年12月16日
291 阅读
0 评论
0 点赞
2022-09-17
Shell脚本自动检查并挂载硬盘
挂载在树莓派上的硬盘经常自己取消了挂载,就改写了一个自动检测并挂载硬盘的Shell脚本代码改自:{% link 一个不知道干嘛的小萌新,Shell编程实例 —— 自动检测并挂载硬盘》,https://www.cnblogs.com/zhuangquan/p/13555793.html %}#!/bin/sh # 判断是否挂载 IS_MOUNT=`df -h | grep /home/pi/Disk | wc -l` DISK_NAME=`lsblk -l | awk '{if ($3=="0") print}' | grep sda | awk '{print $1}'` if [ $IS_MOUNT -eq 0 ]; then echo 硬盘未挂载 # 获取硬盘地址 判断硬盘地址是否存在 if [ -b /dev/$DISK_NAME ]; then echo 硬盘即将挂载 mount /dev/$DISK_NAME /home/pi/Disk sync else echo 设备不存在 fi elif [ $IS_MOUNT -eq 1 ]; then echo 硬盘已挂载 else echo ERROR fi开机自动挂载硬盘获取硬盘 UUIDblkid -s UUID /dev/sda1写入配置vim /etc/fstab # 配置 UUID=9032ef41-46cf-4bc6-ac01-be54be5f6c49 /data ext4 defaults 0 0使用UUID挂载最近新购入了一块硬盘,不知道是树莓派供电不足还是什么原因,开机后硬盘设备不太稳定,有时是 /dev/sda1 有时候又是 /dev/sdb1,之前的脚本就会出现问题#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin export PATH # 判断硬盘是否已挂载和处理挂载点冲突 TIME=$(date "+%Y-%m-%d %H:%M:%S") LOG_FILE="/home/zh/sh/.chickDiskLog" MOUNT_POINT="/mnt/Disk" UUID="34aada44-e3e6-4a7e-b02d-66e672d3ec24" # 替换为你的硬盘UUID # 检查硬盘是否挂载 IS_MOUNT=$(findmnt -rn -S UUID=$UUID -o TARGET) if [ -z $IS_MOUNT ]; then echo "$TIME 硬盘未挂载" >> $LOG_FILE # 检查挂载点是否被占用 MOUNTED=$(mount | grep -w $MOUNT_POINT | wc -l) if [ $MOUNTED -ne 0 ]; then echo "$TIME 挂载点已被占用,尝试卸载当前设备" >> $LOG_FILE umount $MOUNT_POINT if [ $? -ne 0 ]; then echo "$TIME 卸载失败,挂载中止" >> $LOG_FILE exit 1 fi echo "$TIME 卸载成功" >> $LOG_FILE fi # 判断 UUID 是否存在 if blkid | grep -q "UUID=\"$UUID\""; then # 处理 systemd 提示 sudo systemctl daemon-reload # 挂载设备 mount UUID=$UUID $MOUNT_POINT sync if [ $? -eq 0 ]; then echo "$TIME 已挂载新设备" >> $LOG_FILE else echo "$TIME 挂载失败" >> $LOG_FILE fi else echo "$TIME 设备不存在" >> $LOG_FILE fi elif [ "$IS_MOUNT" = "$MOUNT_POINT" ]; then echo "$TIME 硬盘已挂载" >> $LOG_FILE else echo "$TIME ERROR" >> $LOG_FILE fi代码中的 systemctl daemon-reload 不是必须,挂载时出现:mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload. 提示的再添加
2022年09月17日
494 阅读
0 评论
0 点赞
1
2