惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
J
Java Code Geeks
雷峰网
雷峰网
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
V
Vulnerabilities – Threatpost
S
Securelist
The Hacker News
The Hacker News
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
AI
AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Schneier on Security
Schneier on Security
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Hacker News: Front Page
博客园 - 司徒正美
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
大猫的无限游戏
大猫的无限游戏
Security Latest
Security Latest
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
U
Unit 42
V
V2EX
V2EX - 技术
V2EX - 技术
L
LINUX DO - 最新话题
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
Recorded Future
Recorded Future
P
Privacy & Cybersecurity Law Blog
美团技术团队
小众软件
小众软件
F
Fortinet All Blogs

iyear - 记录本是反抗 - iyear

LFX Mentorship: 与 KubeVela 社区在开源相遇 - iyear OSPP2022 + DevStream社区 复盘 - iyear 《图解TCP/IP》读后感 - iyear - 记录本是反抗 Redis · 为什么哈希槽数为16384? - iyear 分布式 · 一致性哈希 - iyear 3200元32G1TSSD开发机DIY选型经历 - iyear - 记录本是反抗 企鹅电竞WebSocket弹幕协议浅析 - iyear - 记录本是反抗 2021 - iyear - 记录本是反抗 尝试理解前后端分离 - iyear - 记录本是反抗
在N1小钢炮上搭建私有音乐库koel - iyear - 记录本是反抗
博主: iyear · 2021-12-09 · via iyear - 记录本是反抗 - iyear
  • 发布时间:
  • 2437次浏览
  • 暂无评论
  • 2501字数
  • 分类: 技术研究
  1. 首页
  2. 正文  

起源

高中开始一直有一个 Sony Walkman A55 ,里面放着不同平台聚合的喜欢的歌,但是一到大学就难受了,一个一半手机大小的砖一直要带着跑来跑去。但是在每个设备上都同步一遍几十G的音乐不现实,所以想着怎么在云端搭一个私人音乐库,所有新歌只需要在上面传一次就行。

选择

  1. SMB 。这是我一开始的选择,也是我认为最理想的。因为这样我就可以用 foobox 无缝切换,手机再搞个支持 SMB 的文件浏览器就实现了这个功能。

但是暴露 SMB 竟然成为了最麻烦的地方,由于 445 端口成为众多病毒的攻击点,运营商基本关闭了公网 445 端口,所以要暴露,必须在服务端和客户端各转发一次端口,而 Windows 又无法修改 SMB 的默认端口。所以这个计划真的要实行也很麻烦了。

  1. WebDav FTP ,最大的弱点就是没有支持良好的播放器,暴露倒是不难。
  2. Web Player ,所以只能找私人音乐库的在线播放器,最终找到了开源中还算不错的 koel (虽然功能其实也挺简陋的,性能可能因为 PHP 写的,也不太行)。

所需

  • 安装了小钢炮的 N1 (armbian openwrt 都可以,只要能装 docker)
  • 一个外接硬盘,并且已经挂载(自带8G Flash太小了)

目标

  • 完整的 koel 安装,使用轻量的 sqlite 数据库,官方推荐的 docker-compose 用的 mysqlN1 可能会跑不动
  • 白嫖钉钉内网穿透暴露公网
  • 写个 golang 小脚本批量导入 Sony A55 的歌单

安装

踩了不少坑,一定要按顺序操作

把官方提供的 https://github.com/koel/docker 跑起来

docker run -d --name koel -v 媒体目录(外接硬盘挂载点):/music -p 本地端口:80 hyzual/koel
# docker run -d --name koel -v /media/music:/music -p 7777:80 hyzual/koel

进入小钢炮 docker 控制面板,进入容器内部命令行,以下均在容器内执行

安装 vim ,编辑 .env 文件

apt-get install -y vim && vi .env

修改为以下内容

# 不要随便动KEY
APP_KEY=rUvKWgs38Fe/jJfnzWHVJEBg4gRBRlvUe392MsWMgIc=
DB_CONNECTION=sqlite-persistent
# 数据库位置
DB_DATABASE=/var/www/html/database/data.db
APP_NAME=Koel
# 指定容器内的读取目录
MEDIA_PATH=/music
APP_ENV=production
APP_DEBUG=true
# 同步目录歌曲时内存限制 MB
MEMORY_LIMIT=512
# hyzual/koel镜像自带ffmpeg
FFMPEG_PATH=/usr/bin/ffmpeg
# 输出比特率
OUTPUT_BIT_RATE=320
# 允许下载
ALLOW_DOWNLOAD=true

创建数据库

touch database/data.db

给予文件夹权限

chmod -R 777 .

初始化 koel

php artisan koel:init --no-assets

重新生成 APP_KEY

php artisan key:generate --force

打开 <ip>:<port> ,默认账号密码如下:

Email: [email protected]
Password: KoelIsCool

成功登录!记得修改默认密码

同步媒体文件夹

php artisan koel:sync

重建搜索索引

php artisan koel:search:import

设置管理员密码

php artisan koel:admin:change-password

内网穿透

以下在 ssh 小钢炮后台操作

下载钉钉内网穿透 arm64 版及配置文件: https://github.com/open-dingtalk/pierced/tree/113bab7e397a6471775f6534f4b277961b7a345f/linux_arm

通过各种途径上传到小钢炮中

安装 screen

https://www.right.com.cn/forum/thread-801304-1-1.html

启动 ding

./ding -config=./ding.cfg -subdomain=<子域名> <启动容器的宿主机端口号>
# ./ding -config=./ding.cfg -subdomain=mykoel 7777
# Ctrl + A + D 

然后就可以从外网访问了

迁移歌单

TODO

在N1小钢炮上搭建私有音乐库koel

 • 

起源

高中开始一直有一个 Sony Walkman A55 ,里面放着不同平台聚合的喜欢的歌,但是一到大学就难受了,一个一半手机大小的砖一直要带着跑来跑去。但是在每个设备上都同步一遍几十G的音乐不现实,所以想着怎么在云端搭一个私人音乐库,所有新歌只需要在上面传一次就行。

选择

  1. SMB 。这是我一开始的选择,也是我认为最理想的。因为这样我就可以用 foobox 无缝切换,手机再搞个支持 SMB 的文件浏览器就实现了这个功能。

但是暴露 SMB 竟然成为了最麻烦的地方,由于 445 端口成为众多病毒的攻击点,运营商基本关闭了公网 445 端口,所以要暴露,必须在服务端和客户端各转发一次端口,而 Windows 又无法修改 SMB 的默认端口。所以这个计划真的要实行也很麻烦了。

  1. WebDav FTP ,最大的弱点就是没有支持良好的播放器,暴露倒是不难。
  2. Web Player ,所以只能找私人音乐库的在线播放器,最终找到了开源中还算不错的 koel (虽然功能其实也挺简陋的,性能可能因为 PHP 写的,也不太行)。

所需

  • 安装了小钢炮的 N1 (armbian openwrt 都可以,只要能装 docker)
  • 一个外接硬盘,并且已经挂载(自带8G Flash太小了)

目标

  • 完整的 koel 安装,使用轻量的 sqlite 数据库,官方推荐的 docker-compose 用的 mysqlN1 可能会跑不动
  • 白嫖钉钉内网穿透暴露公网
  • 写个 golang 小脚本批量导入 Sony A55 的歌单

安装

踩了不少坑,一定要按顺序操作

把官方提供的 https://github.com/koel/docker 跑起来

docker run -d --name koel -v 媒体目录(外接硬盘挂载点):/music -p 本地端口:80 hyzual/koel
# docker run -d --name koel -v /media/music:/music -p 7777:80 hyzual/koel

进入小钢炮 docker 控制面板,进入容器内部命令行,以下均在容器内执行

安装 vim ,编辑 .env 文件

apt-get install -y vim && vi .env

修改为以下内容

# 不要随便动KEY
APP_KEY=rUvKWgs38Fe/jJfnzWHVJEBg4gRBRlvUe392MsWMgIc=
DB_CONNECTION=sqlite-persistent
# 数据库位置
DB_DATABASE=/var/www/html/database/data.db
APP_NAME=Koel
# 指定容器内的读取目录
MEDIA_PATH=/music
APP_ENV=production
APP_DEBUG=true
# 同步目录歌曲时内存限制 MB
MEMORY_LIMIT=512
# hyzual/koel镜像自带ffmpeg
FFMPEG_PATH=/usr/bin/ffmpeg
# 输出比特率
OUTPUT_BIT_RATE=320
# 允许下载
ALLOW_DOWNLOAD=true

创建数据库

touch database/data.db

给予文件夹权限

chmod -R 777 .

初始化 koel

php artisan koel:init --no-assets

重新生成 APP_KEY

php artisan key:generate --force

打开 <ip>:<port> ,默认账号密码如下:

Email: [email protected]
Password: KoelIsCool

成功登录!记得修改默认密码

同步媒体文件夹

php artisan koel:sync

重建搜索索引

php artisan koel:search:import

设置管理员密码

php artisan koel:admin:change-password

内网穿透

以下在 ssh 小钢炮后台操作

下载钉钉内网穿透 arm64 版及配置文件: https://github.com/open-dingtalk/pierced/tree/113bab7e397a6471775f6534f4b277961b7a345f/linux_arm

通过各种途径上传到小钢炮中

安装 screen

https://www.right.com.cn/forum/thread-801304-1-1.html

启动 ding

./ding -config=./ding.cfg -subdomain=<子域名> <启动容器的宿主机端口号>
# ./ding -config=./ding.cfg -subdomain=mykoel 7777
# Ctrl + A + D 

然后就可以从外网访问了

迁移歌单

TODO