搭建自己的音乐站(解锁网易云无版权音乐)Docker部署YesPlayMusic+UnblockNeteaseMusic

因版权原因,网易云api已经删库跑路,文章不再有时效性,项目可能不可用

YesPlayMusic是一款高颜值的第三方网易云播放器,但是解锁vip以及灰色音乐不能直接在网页端使用,受orzlee启发,通过修改hosts让网页端也能使用unblock,并且使用docker容器,运行部署十分方便

效果图如下

music.PNG

下面开始部署流程

注意该教程使用的镜像fogforest/yesplaymusic:v0.4.7
pan93412/unblock-netease-music-enhanced:v0.27.1及源码yesplaymusic:v0.4.7
可能会与当前最新版本有出入,请参考项目wiki
pan93412/unblock-netease-music-enhanced可以尽量使用最新的版本

运行yesplay以及unblock

拉取镜像

docker pull pan93412/unblock-netease-music-enhanced:v0.27.1
docker pull fogforest/yesplaymusic:0.4.7

编辑docker-compose.yaml

vim docker-compose.yaml

写入以下内容,记得更改配置第六行command中解锁域名,推荐是音乐站的子路径,比如-e https://www.rainmos.com/unblock,记住你写的域名和路径,后续会用到。
关于如何获取自己的域名以及如何获取自己的域名的ssl证书这里不做介绍。
如果不愿意申请域名以及证书可以将下面配置第六行中的-e https://解锁域名删去

version: '3'
services:
  unblock:
    image: pan93412/unblock-netease-music-enhanced:v0.27.1
    container_name: unblock
    command: "-o pyncmd kugou kuwo bilibili migu -p 80:443 -a 172.168.10.163 -f 115.236.118.34 -e https://解锁域名"
    networks:
      music_network:
        ipv4_address: 172.168.10.163
    dns:
      - 119.29.29.29
      - 223.5.5.5
  yesplaymusic:
    image: fogforest/yesplaymusic:0.4.7
    container_name: yesplaymusic
    ports:
      - "3000:80"
    networks:
      music_network:
        ipv4_address: 172.168.10.165
    extra_hosts:
      - "music.163.com:172.168.10.163"
      - "interface.music.163.com:172.168.10.163"
      - "interface3.music.163.com:172.168.10.163"
    dns:
      - 119.29.29.29
      - 223.5.5.5
    environment:
      NODE_TLS_REJECT_UNAUTHORIZED: "0"
networks:
  music_network:
    ipam:
      config:
        - subnet: 172.168.10.0/24

然后执行docker-compose up -d运行,基本来说已经可以使用了,如果不使用域名以及ssl就可以结束了,直接IP:3000就能使用,记得防火墙开放端口。

修改nginx配置以支持https

因为解锁替换的资源大部分都是http,如果网站开启了https就会被浏览器自动转换成https,然后请求资源失败,因此需要用反代将http链接替换为https。
如果在上一步中配置的是音乐站的子路径,比如https://www.rainmos.com/unblock ,就只需要在启用了ssl的域名server内加入如下代码

location /unblock {
          proxy_pass http://172.168.10.163:80; # 代理到 Unblock 服务地址
      }

完整nginx配置示例如下

 server {
    listen 443 ssl ;
    server_name  xxx.com;#音乐站的域名
    ssl_certificate /xxx/xxx.cer; #证书
    ssl_certificate_key /xxx/xxx.key; #密钥
    location / {
         proxy_pass   http://127.0.0.1:3000/;
     }
     location /unblock {#音乐站的解锁路径
          proxy_pass http://172.168.10.163:80; # 代理到 Unblock 服务地址
      }
    ssl_session_timeout  5m;
    ssl_protocols TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
    ssl_prefer_server_ciphers  on;

    error_page 497  https://hosturi?$args;
}

修改后nginx -s reload或者重启nginx即可
到此配置就完成了,配置正常的话,登陆后就可以播放所有的音乐了

可选

下面操作只是提升一些使用体验,并且需要改动源码并编译打包,不想做可以跳过。

VIP Only依旧显示灰色

更改/src/api/track.js
第7行左右的

export function isTrackPlayable(track) {
  let result = {
    playable: true,
    reason: '',
  };
  if (track?.privilege?.pl > 0) {
    return result;
  }
  // cloud storage judgement logic
  if (isAccountLoggedIn() && track?.privilege?.cs) {
    return result;
  }
  if (track.fee === 1 || track.privilege?.fee === 1) {
    if (isAccountLoggedIn() && store.state.data.user.vipType === 11) {
      result.playable = true;
    } else {
      result.playable = false;
      result.reason = 'VIP Only';
    }
  } else if (track.fee === 4 || track.privilege?.fee === 4) {
    result.playable = false;
    result.reason = '付费专辑';
  } else if (
    track.noCopyrightRcmd !== null &&
    track.noCopyrightRcmd !== undefined
  ) {
    result.playable = false;
    result.reason = '无版权';
  } else if (track.privilege?.st < 0 && isAccountLoggedIn()) {
    result.playable = false;
    result.reason = '已下架';
  }
  return result;
}

改为

export function isTrackPlayable() {
  let result = {
    playable: true,
    reason: '',
  };
    return result;
}

未登录状态无法播放VIP音乐

/src/utils/Player.js
第7行左右的import { isAccountLoggedIn } from '@/utils/auth';删掉或者注释掉;
第387行左右的

  _getAudioSourceFromNetease(track) {
    if (isAccountLoggedIn()) {
      return getMP3(track.id).then(result => {
        if (!result.data[0]) return null;
        if (!result.data[0].url) return null;
        if (result.data[0].freeTrialInfo !== null) return null; // 跳过只能试听的歌曲
        const source = result.data[0].url.replace(/^http:/, 'https:');
        if (store.state.settings.automaticallyCacheSongs) {
          cacheTrackSource(track, source, result.data[0].br);
        }
        return source;
      });
    } else {
      return new Promise(resolve => {
        resolve(`https://music.163.com/song/media/outer/url?id=${track.id}`);
      });
    }
  }

改为

  _getAudioSourceFromNetease(track) {
    return getMP3(track.id).then(result => {
      if (!result.data[0]) return null;
      if (!result.data[0].url) return null;
      if (result.data[0].freeTrialInfo !== null) return null; // 跳过只能试听的歌曲
      const source = result.data[0].url.replace(/^http:/, 'https:');
      if (store.state.settings.automaticallyCacheSongs) {
        cacheTrackSource(track, source, result.data[0].br);
      }
      return source;
    });
  }

编译打包后替换yesplaymusic容器目录/usr/share/nginx/html中所有文件,然后docker restart yesplaymusic

这里提供一个解锁后的demo,不能登录只供试用,因为服务器在国外,速度一般概率不可用。。这个服务器可能被各解锁源封了😡

ERROR.PNG

文章作者: Rainmo
文章链接: https://www.rainmos.com/yesplaymusic_unblock/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明来自 rainmos.com

评论

  1. 雨天
    Windows Edge
    5月前
    2024-8-14 23:34:28

    安装博主的 方式进行部署,为啥不能用呀 也不知道问题出在哪里, 点击播放 显示时间就是不播放

    • Rainmo 博主
      Windows Firefox
      已编辑
      4月前
      2024-9-08 19:23:24

      其他不用解锁的音乐能播放吗 大概是 unblock 出了问题,可以看看日志
      像我的服务器是解锁源 (youtube) 访问失败,这就没办法了

          url: https://rr1---sn-hp57yn7y.googlevideo.com/xxxxxx,
          code: 403,
      ERROR: (hook) All promises were rejected
  2. norman
    Macintosh Chrome
    12月前
    2024-1-27 17:15:38

    自用国外VPS服务器,如何选择安装youtube音源?

    • Tepesto 博主
      Windows Firefox
      9月前
      2024-5-02 17:29:49

      docker-compose.yaml的unblock配置的command,文中示例第6行:command: “-o pyncmd kugou kuwo bilibili migu…加上youtube,如果要高优先级就放最前面。我看他们项目介绍还有一个youtube-dl ,这个我没研究过

  3. yxwllove
    Windows Edge
    1年前
    2023-9-09 15:40:26

    好像现在放不了要版权的音乐了,我看unblock日志获取到播放地址了 但是ysm那边不能直接调用地址播放了 我在大佬你的demo站也是没办法播放

    • Tepesto 博主
      Windows Firefox
      1年前
      2023-9-09 16:16:32

      什么歌曲异常?可能是其他源也没有吧。我自用的没问题,这个demo可能是我设置的问题小概率不能播放,但也能用


      查看图片
      demo

      • yxwllove
        Windows Edge
        1年前
        2023-9-09 16:23:50

        我看了下 我那个好像 无限请求跳转了 https://picdm.sunbangyan.cn/2023/09/09/qu0nr7.png

      • yxwllove
        Windows Edge
        1年前
        2023-9-09 16:29:35

        unblock 是解析出来了播放地址的 不知道为啥不能直接播放 只能播放网易云的音乐

        查看图片


        • Le4aver
          Windows Chrome
          1年前
          2023-10-31 7:28:14

          能播放了吗?

          • 雨天
            Windows Edge
            5月前
            2024-8-17 15:40:55

            请问有解决办法了没

    • Le4aver
      Windows Chrome
      1年前
      2023-10-31 8:25:32

      用pan93412/unblock-netease-music-enhanced:v0.27.1和fogforest/yesplaymusic:0.4.7可以解锁播放

      • chrisdong
        Windows Edge
        已编辑
        9月前
        2024-5-02 11:51:08

        用这两个 image 镜像,果然可以播放,用 latest 版本的 大部分歌曲会显示 无法支持的格式

  4. zhecydn
    Windows Chrome
    2年前
    2023-7-14 16:53:57

    我用的vercel部署的,看来是没办法用上这方法了😭

    • Tepesto 博主
      iPhone Safari
      2年前
      2023-7-14 17:00:58

      可以尝试下
      docker启动!🤪

  5. Leighton
    iPhone Safari
    2年前
    2023-7-12 9:30:15

    大佬想請問vip歌曲通過unblock 總是request 超時要怎麼解決🥺
    用你的demo 是可以的
    我的ip 在台灣用ytdlp也出不來

    • Tepesto 博主
      Windows Firefox
      2年前
      2023-7-12 22:20:07

      台湾网友用spotify不香吗🤔
      超时是yesmusic容器到unblock的话,可以测试下容器之间能不能相互ping通;
      如果是unblock到其他平台请求超时,可以去容器内部测试能不能ping通外网,还是不能解决的话我觉得去他们的项目看看应该能找到答案

      • Leighton
        iPhone Safari
        2年前
        2023-7-12 22:25:40

        好的 我會再試看看!
        謝謝你~
        Spotify 比較少一些翻唱的華語歌
        尤其是音樂節目的那種live
        所以很常會去依賴網易雲

  6. yxwllove
    Windows Edge
    2年前
    2023-6-23 16:24:18

    大佬怎么改docker镜像源码呀

    • Tepesto 博主
      Windows Firefox
      已编辑
      2年前
      2023-6-23 22:54:17

      你的意思是制作新的镜像吗?这个你得去网上搜搜。
      文章里的是替换容器里原有的文件,用命令 docker cp [host 源路径] [容器名称]:[容器内路径] ,然后重启容器就完成了

      • yxwllove
        Windows Edge
        1年前
        2023-7-23 13:18:36

        把服务器搜完了 找不到那两个文件 不知道docker的原理 我把github的源码拉了 但是又不知道怎么去打包

        • Tepesto 博主
          iPhone Safari
          1年前
          2023-7-23 14:02:50

          哪两个文件?
          做完第一步打开防火墙访问 ip:端口 就可以使用
          至于打包yesplay可以看:github链接 #部署到自己的服务器
          里面有介绍怎么编译打包为web文件
          但是没有经验还是别改源码,文章后面的可选对于实际使用体验没有太大影响。

          • yxwllove
            Windows Edge
            1年前
            2023-7-27 19:19:02

            好吧 非常感谢|´・ω・)ノ

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇