2025-01-21 11:00:28
一个节点一直以来用着好好的,突然出现问题:浏览器访问网页,一会能访问一会不行,能访问的时候网页还可能加载不全:
查看服务器节点的最新日志:
journalctl -u sing-box -e
发现很多bad timestamp的报错:
好像和服务器时间相关?看一下服务器当前的时间:
timedatectl
发现比我本地的时间快了几十秒:
不知道为啥会快几十秒,但是从上面的命令输出结果也可以看到系统是没有启用时间同步(NTP)的,那我配置一下NTP应该就可以解决这个问题了。配置NTP的软件有很多,比如Chrony、systemd-timesyncd,我这里就用更轻量的systemd-timesyncd了:
apt update apt install systemd-timesyncd
安装完成后应该是自动启动的,可以查看一下运行状态:
systemctl status systemd-timesyncd
这是系统层面的解决办法。如果不依赖系统本身,sing-box自身也有一个NTP的配置项可用:
{ "log": { "level": "info" }, "dns": { "servers": [ { "address": "tls://8.8.8.8" } ] }, "ntp": { "enabled": true, "server": "time.apple.com", "server_port": 123, "interval": "10m", "detour": "direct" }, "inbounds": [ { "type": "shadowsocks", "listen": "::", "listen_port": 8080, "sniff": true, "method": "2022-blake3-aes-128-gcm", "password": "hidden" } ], "outbounds": [ { "type": "direct", "tag": "direct" }, { "type": "dns", "tag": "dns-out" } ], "route": { "rules": [ { "protocol": "dns", "outbound": "dns-out" } ] } }
重启:
systemctl restart sing-box
我真的得吐槽一下,这个节点我主要是拿来玩游戏的,昨天出问题后导致我游戏上不去,我游戏内的东西都过期了,气死我了,这傻吊服务器早不出问题晚不出问题偏偏要在最关键的时候整活。。。
2025-01-12 16:37:21
Nala主要特点:漂亮的输出、并行下载、镜像源延迟测试、命令历史记录,并且支持撤销。我主要看上命令历史记录和撤销功能了,很方便!我在安装Nala和使用的过程中遇到点小问题,记录下解决的方法。
如果系统是Debian 12 Cloud镜像,有安装cloud-init的,不要使用Debian 12官方源安装Nala,因为后续使用时会遇到卡在软件包下载这里,并且无法退出,搜了一下发现这是Nala旧版本的BUG:
https://gitlab.com/volian/nala/-/issues/285
已经卡住了咋办,先看pid,然后强行结束进程,再卸载掉旧版本。。。
ps aux kill -9 pid apt purge nala apt autoremove
安装最新版:
curl https://gitlab.com/volian/volian-archive/-/raw/main/install-nala.sh | bash apt install nala
首次使用先fetch一下:
nala fetch
把你觉得延迟最低的几个源输上去保存:
保存的文件在sources.list.d目录里面,不会影响到主配置文件:
/etc/apt/sources.list.d/nala-sources.list
使用Nala更新系统的时候发现不更新内核软件包,搜了一下发现作者在这里详细说明了原因:
https://github.com/volitank/nala/issues/29#issuecomment-1863176093
简而言之在upgrade后面加–full即可:
nala upgrade --full
如果不加–full想让这变成默认行为,可编辑Nala的配置文件:
nano /etc/nala/nala.conf
修改如下配置为true:
full_upgrade = false
试一下撤销功能,假设我先安装了一个ffmpeg:
nala install ffmpeg
查看命令历史记录:
nala history
撤销,等于是卸载掉了:
nala history undo 2
甚至我还可以继续撤销,就等于重新安装了:
nala history undo 3
删除不需要的记录:
nala history clear
接受–all直接删除全部记录:
nala history clear --all
2025-01-06 16:33:16
FerriShare特点(摘自项目页面):
Securely share files with anyone Files and filenames are encrypted
Builtin IP-based rate limiting
Configurable limits for maximum filesize and maximum storage quota
Password-protected site-wide administration panel
Configurable Privacy Policy (with default template) and Legal Notice, if you need those.
Fast, efficient and memory-safe backend
安装Docker、NGINX、Certbot:
apt -y update apt -y install curl wget nginx python3-certbot-nginx curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
创建目录新建compose文件:
mkdir -p /opt/ferrishare && cd /opt/ferrishare && nano docker-compose.yml
写入如下配置:
services: ferrishare: image: ghcr.io/tobiasmarschner/ferrishare:latest container_name: ferrishare restart: unless-stopped volumes: - ./data:/app/data ports: - 127.0.0.1:3000:3000
pull镜像:
docker compose pull
初始化配置:
docker compose run --rm -it ferrishare --init
流程如下:
如果你不使用CDN,这个Proxy Depth请设置为1,后续配置NGINX反向代理需要。
目前单个文件最大只支持2GB,Maximum filesize配置再大也没用。
启动:
docker compose up -d
配置NGINX反向代理,新建NGINX站点配置文件:
nano /etc/nginx/sites-available/ferrishare
写入如下配置:
server { listen 80; server_name ferrishare.example.com; client_max_body_size 2G; location / { proxy_pass http://127.0.0.1:3000; 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; } }
启用站点:
ln -s /etc/nginx/sites-available/ferrishare /etc/nginx/sites-enabled/ferrishare
签发SSL证书:
certbot --nginx --email [email protected] --agree-tos --no-eff-email
上传界面:
管理界面:
目前FerriShare的定位应该是临时文件上传,上传的文件必须设置一个到期时间,没有永久保存的选项。
2025-01-05 16:11:29
Conduwuit是一个高性能的Matrix homeserver,配置简单,资源占用少。
与Conduit的差异:https://conduwuit.puppyirl.gay/differences.html
在开始部署之前你可能需要先添加3个DNS解析记录:
woot.example.com // Conduwuit需要 coturn.example.com // 自建TURN服务器需要 cinny.example.com // 自建Cinny客户端需要
我这里使用Docker的方式部署。先安装Docker、NGINX、Certbot:
apt -y update apt -y install curl wget nginx python3-certbot-nginx curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
新建目录和compose文件:
cd /opt && mkdir conduwuit && cd conduwuit && nano docker-compose.yml
我的compose配置如下:
services: homeserver: container_name: conduwuit-server image: girlbossceo/conduwuit:latest restart: unless-stopped ports: - 6167:6167 volumes: - db:/var/lib/conduwuit #- ./conduwuit.toml:/etc/conduwuit.toml environment: CONDUWUIT_SERVER_NAME: woot.example.com CONDUWUIT_DATABASE_PATH: /var/lib/conduwuit CONDUWUIT_PORT: 6167 CONDUWUIT_MAX_REQUEST_SIZE: 80000000 CONDUWUIT_ALLOW_REGISTRATION: 'true' CONDUWUIT_REGISTRATION_TOKEN: 'tosimple' CONDUWUIT_NEW_USER_DISPLAYNAME_SUFFIX: '"🌈"' CONDUWUIT_ALLOW_FEDERATION: 'true' CONDUWUIT_ALLOW_PUBLIC_ROOM_DIRECTORY_OVER_FEDERATION: 'true' CONDUWUIT_ALLOW_UNSTABLE_ROOM_VERSIONS: 'true' CONDUWUIT_ALLOW_CHECK_FOR_UPDATES: 'true' CONDUWUIT_TRUSTED_SERVERS: '["matrix.org"]' CONDUWUIT_FEDERATION_TIMEOUT: 3600 CONDUWUIT_URL_PREVIEW_DOMAIN_CONTAINS_ALLOWLIST: '["*"]' CONDUWUIT_TURN_URIS: '["turn:coturn.example.com?transport=udp"]' CONDUWUIT_TURN_SECRET: '2dVaXkuMU4mQFvTWnVgh0aqbgexzFPwSoY2hMS7GNAytF56IfsMnlBpm0MYRvEdf' CONDUWUIT_WELL_KNOWN__CLIENT: 'https://woot.example.com' CONDUWUIT_WELL_KNOWN__SERVER: 'woot.example.com:443' #CONDUWUIT_LOG: warn,state_res=warn CONDUWUIT_ADDRESS: 0.0.0.0 #CONDUWUIT_CONFIG: '/etc/conduwuit.toml' # Uncomment if you mapped config toml above turn: container_name: coturn-server image: docker.io/coturn/coturn restart: unless-stopped network_mode: "host" volumes: - ./coturn.conf:/etc/coturn/turnserver.conf volumes: db:
至少需要修改以下配置:
CONDUWUIT_SERVER_NAME // 部署Conduwuit实例的域名 CONDUWUIT_TURN_URIS // 部署Coturn TURN服务的域名 CONDUWUIT_TURN_SECRET // Coturn的验证密钥,可使用pwgen命令生成,与coturn.conf内的static-auth-secret配置需一致。 CONDUWUIT_WELL_KNOWN__CLIENT // .well-known相关,如没有特殊需求与conduwuit实例的域名保持一致。 CONDUWUIT_WELL_KNOWN__SERVER // .well-known相关,如没有特殊需求与conduwuit实例的域名保持一致。
建议修改以下配置:
CONDUWUIT_REGISTRATION_TOKEN // 注册时需要填写的TOKEN,类似于注册邀请码,防止滥用。
完整的conduwuit配置文件在此,如果上述的配置不满足你的需求,可按自己的需要进行修改。
之后新建coturn配置文件:
nano coturn.conf
我的配置如下:
use-auth-secret static-auth-secret=2dVaXkuMU4mQFvTWnVgh0aqbgexzFPwSoY2hMS7GNAytF56IfsMnlBpm0MYRvEdf realm=coturn.example.com
static-auth-secret可以使用pwgen生成,如没有pwgen工具可先安装:
apt -y install pwgen
然后执行如下命令:
pwgen -s 64 1
启动:
docker-compose up -d
配置NGINX反向代理,新建NGINX站点配置文件:
nano /etc/nginx/sites-available/conduwuit
写入如下配置:
server { listen 80; server_name woot.example.com; merge_slashes off; client_max_body_size 80M; location / { proxy_pass http://127.0.0.1:6167$request_uri; 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_buffering off; proxy_connect_timeout 5m; } location /_matrix/ { proxy_pass http://127.0.0.1:6167$request_uri; 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_buffering off; proxy_connect_timeout 3600s; proxy_read_timeout 3600s; } location /_conduwuit/ { proxy_pass http://127.0.0.1:6167$request_uri; 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_buffering off; proxy_connect_timeout 5m; } }
启用站点:
ln -s /etc/nginx/sites-available/conduwuit /etc/nginx/sites-enabled/conduwuit
签发SSL证书:
certbot --nginx --email [email protected] --agree-tos --no-eff-email
重新编辑刚启用的站点配置文件:
nano /etc/nginx/sites-available/conduwuit
启用HTTP2并增加一个8448端口的监听:
listen 8448 ssl http2; listen 443 ssl http2; # managed by Certbot
如图所示:
重载NGINX使配置生效:
systemctl reload nginx
打开Matrix Federation Tester输入你的conduwuit实例域名进行测试,确保一切正常:
至此Conduwuit服务端就部署完成了。
现在可以使用你喜欢的客户端注册账号并登录:https://matrix.org/ecosystem/clients/
这里我推荐Cinny,快速、界面美观,唯一的不足是缺少音视频通话功能,不过我也不用这个功能。再就是E2E加密的房间可能会偶尔出现消息无法解密的问题。
你可以直接使用官方的Web APP:https://app.cinny.in/,或者也可以自建,下面简单说一下如何自建cinny。
假设你的服务器上已经有NGINX,一般都是和Conduwuit部署在同一台服务器上,先下载cinny的压缩包解压:
cd /var/www wget https://github.com/cinnyapp/cinny/releases/download/v4.2.3/cinny-v4.2.3.tar.gz tar -xzvf cinny-v4.2.3.tar.gz mv dist/ cinny/ chown -R www-data:www-data cinny/
编辑cinny的配置文件:
nano cinny/config.json
修改如下配置:
{ "defaultHomeserver": 0, // 改成0,设置默认使用自建的conduwuit服务器。 "homeserverList": [ "woot.example.com", // 设置你的conduwuit实例域名。 "matrix.org" ], "allowCustomHomeservers": false, ... "hashRouter": { "enabled": true, // 启用hashRouter "basename": "/" } }
新建NGINX站点配置文件:
nano /etc/nginx/sites-available/cinny
写入如下配置:
server { listen 80; server_name cinny.example.com; index index.html; root /var/www/cinny; client_max_body_size 80M; add_header Access-Control-Allow-Origin *; }
启用站点:
ln -s /etc/nginx/sites-available/cinny /etc/nginx/sites-enabled/cinny
签发SSL证书:
certbot --nginx --email [email protected] --agree-tos --no-eff-email
访问cinny.example.com注册一个账号,第一个注册的账号自动成为管理员,注意注册的时候需要填写TOKEN,这个TOKEN是之前在compose内设置的值:“tosimple”(如果你没有修改的话)
登录进去后应该先配置交叉签名,用于备份E2E加密的聊天记录、设备验证:
这里可以选择直接生成Key或者设置安全短语,建议使用安全短语,设置安全短语后也会自动生成Key,这里的安全短语实际就相当于一个二级密码,方便日后使用,不然你每次恢复聊天记录都得输入一长窜的Key,非常不方便:
登出账号重新登录进来就可以点如图所示的按钮,输入你的Key或者安全短语恢复你的加密聊天记录:
Conduwuit和Conduit一样自带一个管理员房间,可以在这个房间内输入相关命令来管理服务器:
2024-11-18 15:17:05
如果你了解过*arr stack或者MoviePilot就应该知道有很多人喜欢玩“自动化追剧”,尤其是在PT这个圈子里面。。
“自动化追剧”其实简单点说就是把想看的片子订阅下来,如果出种了就自动调用下载工具下载,再由媒体服务器自动刮削进行整理。这一整套流程全部都是自动的,无需人工干预。一个不太恰当的比喻就像是:你订阅了一个博客的RSS,当博客有新文章发布的时候你能第一时间看到。而在“自动化追剧”中就是把文章换成了各类影视资源。
有很多软件和工具在“自动化追剧”中都扮演非常重要的角色,但这些软件普遍都只支持订阅一般的电影、电视剧、动漫、音乐等,涉及到成人内容的少之又少,在*arr stack中有一个叫Whisparr的软件支持,但该软件维护不积极,并且对JAV的支持不好。
我前段时间通过一个偶然的方式得知AutoLady这个软件,这个软件可以说是专为JAV设计,我当时部署试了一下,觉得功能算完善的了,基本可以实现我想要的需求:通过搜索番号来找片,找到了就订阅下来,片子出种后第一时间自动调用下载器下载。
我用了一段时间后发现有点问题,AutoLady的搜索结果是调用Javbus和JavLibrary的,然而这两个站数据更新太慢,很多新片都发售很久了却还没有收录,试想一下,如果一部新片发售了但是搜不到,那还订阅个毛线,既然要订阅肯定是想在第一时间下载到新片啊。。
然后我就给作者提了个建议,想让作者增加对www.avbase.net的支持,把搜索的数据源改为AVbase,因为这个站的数据是最全的,并且更新也快,基本可以和片商保持在同一天内更新。AVbase除了数据全、更新快以外还有非常重要的一点:AVbase可以识别出每部片的真实女优姓名,尤其是像SIRO、300MIUM、200GANA这种小片商的片子,片商都用假的AV女优姓名,你不知道真名的情况下,订阅个假的名字也没意义。
没想到啊没想到,我也只是建议,AutoLady作者真的给力,没过几天直接发了个新版本,采纳我的建议把搜索功能改成用avbase了,在这里必须给作者点个赞,哈哈哈,太给力了!!下面记录下AutoLady的部署和使用方法。在开始之前有一些注意事项:
1、AutoLady目前只支持有限的PT站点,目前支持的有:M-Team(馒头)、FSM(飞天拉面)、PTT,如果没有这几个站的账号,就没有必要折腾了。
2、下载工具只支持qBittorrent和Transmission,这里我选择用qBittorrent,有关qBittorrent安装方法可参考这篇文章。
3、媒体服务器支持Jellyfin、EMBY、Plex,这里我使用的是Jellyfin,但我不使用AutoLady内置的相关功能,因为我的Jellyfin已经配置好MetaTube了,MetaTube会帮我刮削。有关MetaTube的配置可参考这篇文章。
安装Docker:
apt -y update apt -y install curl curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
新建compose文件:
mkdir -p /opt/autolady && cd /opt/autolady && nano docker-compose.yml
写入如下内容:
services: auto-lady: image: orekiiiiiiiiiiiii/auto-lady:latest container_name: auto-lady restart: unless-stopped ports: - "127.0.0.1:8043:80" volumes: - ./auto-lady-data:/data
启动:
docker compose up -d
首次启动需在日志中查看默认的管理员账号、密码:
docker compose logs
[可选]配置NGINX反向代理,安装NGINX:
apt -y update apt -y install nginx python3-certbot-nginx
新建NGINX站点配置文件:
nano /etc/nginx/sites-available/autolady
写入如下内容:
server { listen 80; listen [::]:80; server_name autolady.example.com; client_max_body_size 0; location / { proxy_pass http://127.0.0.1:8043; 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; proxy_set_header X-Forwarded-Protocol $scheme; } }
启用站点:
ln -s /etc/nginx/sites-available/autolady /etc/nginx/sites-enabled/autolady
签发TLS证书:
certbot --nginx --email [email protected] --agree-tos --no-eff-email
使用管理员账号登录到auto-lady后台,点设置,首先要配置站点,M-team需要一个令牌,FSM需要APITOKEN和PASSKEY:
M-team的令牌在“实验室”-“存取令牌”界面可以生成:
FSM的APITOKEN生成:
FSM的PASSKEY:
auto-lady下载器的配置:
从上图可以看到我把qBittorrent的下载目录设置成:/opt/qbtuser/Downloads。
那么Jellyfin直接挂载这个目录即可:
services: jellyfin: image: jellyfin/jellyfin container_name: jellyfin restart: 'unless-stopped' ports: - "127.0.0.1:8096:8096" - "127.0.0.1:7359:7359" volumes: - ./config:/config - ./cache:/cache - /opt/qbtuser/Downloads:/media:ro
有关Jellyfin的安装与刮削配置,可以参考我的这篇文章:https://lala.im/9288.html
剩下的一些设置可选,比如微信、Telegram推送这些,可以根据自身需要来配置,我不需要这些功能就不配置了。
2024-11-13 16:06:02
我前段时间买了两台OVH独立服务器,其中这台KS-LE-E各种问题不断,刚拿到手的时候就发现少了16GB内存,连IPMI上去发现确实是有一根内存条有问题:
当时就只想着解决这个内存的问题去了,发了个工单让他们给我把内存换了一根就好了。其他的硬件,比如硬盘的信息就简单看了下没发现什么大问题就没管它了,直接装了个PVE就拿来用了。这两天看邮箱的垃圾箱突然发现PVE给我发了很多封SMART错误的邮件:
登录服务器一看还真是,这块/dev/sdb的盘确实是有点问题了:
虽然这块盘现在还是能用的,但出于谨慎的态度我还是发了个工单问了下,OVH那边也不墨迹,二话不说直接就把这块盘给换了。在换之前我也没有在服务器上特别设置什么,就是简单看了下硬盘的分区以及当时的ZFS池状态:
OVH那边换完之后,我再次登录服务器查看,可以看到/dev/sdb这块盘是新换的了,没有了之前的分区表:
查看ZFS池状态,变成降级状态了,因为我这个是RAID10阵列,挂了一块盘也能正常运行:
关于在ZFS中更换硬盘,主要分为两种情况:系统盘(bootable device)、非系统盘。
如果是更换系统盘,则需要复制硬盘的分区表、生成GUID、以及重建EFI分区。而非系统盘的话不需要这些操作,直接更换就好了。
我现在的情况是属于更换系统盘,所以现在我需要把一块健康硬盘的分区表复制到这块新的/dev/sdb。现在我的服务器上除了sdb外还有sda、sdc、sdd三块盘,这些硬盘都是健康的,随便选一个复制就行:
sgdisk /dev/sda -R /dev/sdb
生成随机的GUID:
sgdisk -G /dev/sdb
然后更换ZFS池中的硬盘:
zpool replace -f rpool /dev/sdb3 /dev/sdb3
这个命令可能具有迷惑性,为什么新旧硬盘的分区都是/dev/sdb3?因为新盘的分区表是按照原来的分区表原封不动复制过来的,又因为新换的硬盘设备名正好还是sdb,所以完全相同。如果不是很明白,看看这个命令就懂了:
zpool replace -f [pool] [old zfs partition] [new zfs partition]
再次查看ZFS池状态可以看到在重建了,因为问题发现的早,我也没存多少数据,重建是非常快的:
重建完成后再次查看,全部都在线了:
现在还需要重建EFI分区:
proxmox-boot-tool format /dev/sdb2 proxmox-boot-tool init /dev/sdb2
更新配置:
proxmox-boot-tool refresh
重新生成/etc/kernel/proxmox-boot-uuids:
proxmox-boot-tool clean
查看状态:
proxmox-boot-tool status
如有下回显说明一切正常:
至此就全部完成了,可以重启一下测试服务器是否能够正常引导:
systemctl reboot
这个方法是通用的,不限于RAID10阵列,无论是RAIDZ-1、RAIDZ-2,或者RAID1,都可以用这个办法在ZFS中更换硬盘。
参考资料:
https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysadmin_zfs_change_failed_dev
https://forum.proxmox.com/threads/how-to-regenerate-etc-kernel-proxmox-boot-uuids.99333/
https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysboot_proxmox_boot_tool