docker搭建unblock-netease-music,解锁云音乐

在linux上直接用sudo docker-compose -f 下面文件.yml up -d即可;安卓(可能需要老一些的版本比如7.3.28)、ios、windows都可以直接解锁。不需要额外导入证书等操作

红字是需要注意或者变更的部分。

version: '3.1'

services:

  unblockmusic:
    container_name: unblockmusic
    image: pan93412/unblock-netease-music-enhanced
    restart: always
    ports:
      - 1082:8080
    command: "'-o' 'kugou' 'pyncmd' 'kuwo' 'bilibili' '-e' '-'"
    environment:
      - ENABLE_LOCAL_VIP=true
#      - NO_CACHE=true
      - ENABLE_FLAC=true
      - NODE_ENV=production
      - DISABLE_UPGRADE_CHECK=true
#      - SON_LOG=true
      - SELECT_MAX_BR=true
      - LOG_LEVEL=debug
    networks: #(可以删除下面所有代码)
      - "mynet" # HTTPS port
networks:
  mynet:
    external: true

openwrt ddns无法验证代理,用mixd-port会失败

openwrt的ddns-script验证mix-port会卡在代理验证上,本来以为是mixd-port问题,后来发现是openwrt的nc命令可能存在问题,这里给出一个workaround,绕过代理验证。

编辑dynamic_dns_functions.sh,直接修改 local __ERR=0 即可

nano /usr/lib/ddns/dynamic_dns_functions.sh

 # analyze and verify given proxy string
 # $1    Proxy-String to verify
 verify_proxy() {
         #       complete entry          user:password@host:port
         #                               inside user and password NO '@' of ":" allowed
         #       host and port only      host:port
         #       host only               host            ERROR unsupported
         #       IPv4 address instead of host    123.234.234.123
         #       IPv6 address instead of host    [xxxx:....:xxxx]        in square bracket
         local __TMP __HOST __PORT
         local __ERR=0 255 # last error buffer
         local __CNT=0   # error counter

         [ $# -ne 1 ] && write_log 12 "Error calling 'verify_proxy()' - wrong number of parameters"
         write_log 7 "Verify Proxy server 'http://$1'"

         # try to split user:password "@" host:port
         __TMP=$(echo $1 | awk -F "@" '{print $2}')
         # no "@" found - only host:port is given
         [ -z "$__TMP" ] && __TMP="$1"
         # now lets check for IPv6 address
         __HOST=$(echo $__TMP | grep -m 1 -o "$IPV6_REGEX")
         # IPv6 host address found read port
         if [ -n "$__HOST" ]; then
                 # IPv6 split at "]:"
                 __PORT=$(echo $__TMP | awk -F "]:" '{print $2}')
         else
                 __HOST=$(echo $__TMP | awk -F ":" '{print $1}')
                 __PORT=$(echo $__TMP | awk -F ":" '{print $2}')
         fi
         # No Port detected - EXITING
         [ -z "$__PORT" ] && {
                 [ -n "$LUCI_HELPER" ] && return 5
                 write_log 14 "Invalid Proxy server Error '5' - proxy port missing"
         }

         while [ $__ERR -gt 0 ]; do
                 verify_host_port "$__HOST" "$__PORT"
                 __ERR=$?
                 if [ -n "$LUCI_HELPER" ]; then  # no retry if called by LuCI helper script
                         return $__ERR
                 elif [ $__ERR -gt 0 -a $VERBOSE -gt 1 ]; then   # VERBOSE > 1 then NO retry
                         write_log 4 "Verify Proxy server '$1' failed - Verbose Mode: $VERBOSE - NO retry on error"
                         return $__ERR
                 elif [ $__ERR -gt 0 ]; then
                         __CNT=$(( $__CNT + 1 )) # increment error counter
                         # if error count > retry_count leave here
                         [ $retry_count -gt 0 -a $__CNT -gt $retry_count ] && \
                                 write_log 14 "Verify Proxy server '$1' failed after $retry_count retries"

                         write_log 4 "Verify Proxy server '$1' failed - retry $__CNT/$retry_count in $RETRY_SECONDS seconds"
                         sleep $RETRY_SECONDS &
                         PID_SLEEP=$!
                         wait $PID_SLEEP # enable trap-handler
                         PID_SLEEP=0
                 fi
         done
         return 0
 }

ubuntu升级到22.04lts

server端升级,可以先升级所有的软件

sudo apt-get update
sudo apt-get upgrade
#如果有部分依赖未解决,可以用aptitude解决
sudo aptitude upgrade

然后执行下列命令,不需要修改source.list

sudo do-release-upgrade

监控阿里云/服务器性能

最近阿里云经常卡住,ssh服务也无法访问,所以建了一个脚本监控cpu 内存 硬盘的读取情况,可以加到cron任务里面进行定期监控。

1、怀疑是云监控

2、怀疑是Debian系统和阿里云不兼容,同样的内容在腾讯云流畅运行

echo -e “\n################ $(date) ################”
echo “cpu”
ps -eo pid,comm,%cpu –sort=-%cpu | head -6
echo “mem”
ps -eo pid,comm,%mem –sort=-%mem | head -6
echo “io”
/usr/sbin/iotop -obP -n 1

卸载阿里云监控、云助手等

如果不删除阿里云助手,貌似会触发硬盘读写异常,当用控制台查看系统资源占用的时候

卸载阿里云盾

远程连接到阿里云云服务器或者轻量应用服务器后,执行以下代码卸载阿里云盾:

wget http://update.aegis.aliyun.com/download/uninstall.sh

chmod +x uninstall.sh

./uninstall.sh

wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh

chmod +x quartz_uninstall.sh

./quartz_uninstall.sh

删除阿里云盾文件残留

卸载阿里云盾后,执行如下代码删除阿里云盾文件残留:

pkill aliyun-service

rm -fr /etc/init.d/agentwatch /usr/sbin/aliyun-service

rm -rf /usr/local/aegis*

最后检查下自己服务器上的阿里云盾是否卸载干净了,主要就是看进程里有没有阿里云盾的相关进程了(AliYunDun、aliyun-service和AliYunDunUpdate),可以通过ps -aux | grep -E ‘aliyun|AliYunDun’ 来检查,如果没有相关进程则说明阿里云盾已经卸载干净了。

卸载云监控

# 停止

/usr/local/cloudmonitor/cloudmonitorCtl.sh stop

# 卸载

/usr/local/cloudmonitor/cloudmonitorCtl.sh uninstall

rm -rf /usr/local/cloudmonitor

附上官方文档页面链接:

https://help.aliyun.com/document_detail/183482.htm?spm=a2c4g.38859.0.0.2cbdaf24YF96LF#task-1950491

卸载阿里云助手

https://help.aliyun.com/document_detail/134379.html

/usr/local/share/assist-daemon/assist_daemon --stop
/usr/local/share/assist-daemon/assist_daemon --delete
rm -rf /usr/local/share/assist-daemon


sudo dpkg -l
sudo dpkg -r aliyun-assist

jellyfin 列表显示文件名

下载一些音视频jellyfin不会显示文件名,而是显示内嵌的标题。官方没有提供支持,但是我们可以找一个折中的方法.

1、取消偏好内嵌标题

2、全选文件,右击-属性,然后编辑标题,可以先输入空格然后删除,然后点确定。

3、然后重新扫描即可。

debian从11升级到12

最近Debian升级,带来了新的特性:

➡️Linux 内核升级 6.1

Debian 12“bookworm”发布后,最值得关注的事情之一无疑是 Linux 内核的升级。内核版本从 5.10 版本升级到 6.1 LTS 版本,这意味着用户现在可以充分利用更新的驱动程序来支持新的硬件,并直至至少 2026 年 12 月的长期支持。

➡️新的 non-free 固件仓库

Debian 12“bookworm”的另一个重大变化是新的 non-free 固件仓库。与只有 free 和开源固件的系统不兼容的用户可以使用这一仓库。不再需要提供两种不同的 ISO 镜像文件,Debian 12 ISO 文件默认包含 free 和 non-free 固件。使用 non-free 固件并且从 Debian 11 升级的用户应该在他们的 APT 源列表中添加新的 non-free 固件仓库。

➡️桌面环境的更新

在 Debian 12 中,还有许多其他的桌面环境更新,包括 Gnome 43、KDE Plasma 5.27、LXDE 11、LXQt 1.2.0、MATE 1.26 和 Xfce

sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list

#需要去/etc/apt/sources.list.d文件夹逐文件修改,如果包含bullseye的都修改成bookworm,部分list没有指定版本

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
#有些未解决依赖可以利用aptitude解决
sudo aptitude upgrade

利用Scrcpy(2.0)实现安卓手机投屏和电脑操作(类似华为多屏协同|Miui+)

scrcpy 介绍

Scrcpy 是一款开源的安卓手机投屏软件,可以在电脑上操作安卓手机屏幕。不用虚拟机,同样的手机环境,不需要特殊权限,不用安装scrcpy。如果安装华为的电脑管家(还需要破解)、小米的miui+等都需要超管权限。

它专注于:

  • 轻量化:本地使用,只显示设备屏幕
  • 性能:取决于设备,30~120 帧每秒
  • 质量:1920×1080 或更高
  • 低延迟:35~70ms
  • 启动时间短: ~1 秒钟即可展示第一张图片
  • 不会干扰:不会在安卓设备上留下任何安装文件
  • 用户受益:无需账户、无广告、无网络需求
  • 自由:免费开源软件

其特点包括:

  • 音频转发(需要 Android >= 11) 录制
  • 在 Android 设备屏幕关闭的情况下进行镜像化
  • 双向复制粘贴
  • 可配置的画质
  • 将 Android 设备屏幕作为网络摄像头(仅限 Linux)
  • 物理键盘/鼠标模拟(HID)
  • OTG 模式

下面是具体的操作步骤:

  1. 下载并安装 Scrcpy。

在 Scrcpy 的官方网站(https://github.com/Genymobile/scrcpy)上下载 Scrcpy 软件,并进行安装。

  1. 连接安卓手机到电脑。

将安卓手机连接到电脑,可以使用 USB 数据线连接,也可以通过 Wi-Fi 进行连接。如果是通过 USB 连接,则需要启用手机的 USB 调试模式,可以在手机的设置中找到该选项并开启。

不同手机的开启方法不同,这里不一一介绍,小米手机需要打开USB调试安全设置,否则无法控制屏幕。

  1. 打开 Scrcpy。

打开 Scrcpy 软件,并检查与安卓手机的连接是否正常。双击scrcpy.exe,或者执行open_a_terminal_here.bat,后者可以输入一些参数,比如输入scrcpy –always-on-top –print-fps –turn-screen-off等

  1. 开始投屏和操作。

通过 Scrcpy,可以在电脑上投屏显示手机屏幕,然后就可以通过键盘和鼠标对安卓手机进行操作了。例如,可以通过鼠标点击手机屏幕来操作手机,也可以使用键盘对手机进行输入操作等(只支持英文)。

音频转发

如果是安卓12以上的默认有音频转发,11的可以利用adb shell am start -n com.android.shell/.HeapDumpActivity命令来弹出一个对话框,点确认即可。11以下的不行。

https://github.com/Genymobile/scrcpy/blob/master/doc/audio.md

快捷键

https://github.com/Genymobile/scrcpy/blob/master/doc/shortcuts.md

在下面的列表中,MOD 是指快捷键修饰键。默认情况下,它是(左)Alt 或(左)Super。

ActionShortcut
切换全屏模式MOD+f
向左旋转显示器MOD+← (left)
向右旋转显示器MOD+→ (right)
将窗口调整为1:1(像素完美)MOD+g
将窗口调整为移除黑边MOD+w | Double-left-click¹
点击 HOMEMOD+h | Middle-click
点击 BACKMOD+b | MOD+Backspace | Right-click²
点击 APP_SWITCHMOD+s | 4th-click³
点击 MENU(解锁屏幕)⁴MOD+m
点击 VOLUME_UPMOD+↑ (up)
点击 VOLUME_DOWNMOD+↓ (down)
点击 POWERMOD+p
开机Right-click²
关闭设备屏幕(保持镜像)MOD+o
打开设备屏幕MOD+Shift+o
旋转设备屏幕MOD+r
展开通知面板MOD+n | 5th-click³
展开设置面板MOD+n+n | Double-5th-click³
折叠面板MOD+Shift+n
复制到剪贴板⁵MOD+c
剪切到剪贴板⁵MOD+x
同步剪贴板并粘贴⁵MOD+v
注入计算机剪贴板文本MOD+Shift+v
启用/禁用 FPS 计数器(在标准输出上)MOD+i
手指捏合缩放Ctrl+click-and-move
拖放 APK 文件Install APK from computer
拖放非 APK 文件Push file to device
快捷键
  • ¹双击黑边即可移除它们。
  • ²右键单击可以将屏幕打开,如果已经打开,则按 BACK 按钮。
  • ³第四和第五个鼠标按钮(如果您的鼠标支持)。
  • ⁴针对正在开发的 react-native 应用,MENU 触发开发菜单。
  •  ⁵仅适用于 Android >= 7。