起源
高中开始一直有一个 Sony Walkman A55 ,里面放着不同平台聚合的喜欢的歌,但是一到大学就难受了,一个一半手机大小的砖一直要带着跑来跑去。但是在每个设备上都同步一遍几十G的音乐不现实,所以想着怎么在云端搭一个私人音乐库,所有新歌只需要在上面传一次就行。
选择
SMB。这是我一开始的选择,也是我认为最理想的。因为这样我就可以用foobox无缝切换,手机再搞个支持SMB的文件浏览器就实现了这个功能。
但是暴露 SMB 竟然成为了最麻烦的地方,由于 445 端口成为众多病毒的攻击点,运营商基本关闭了公网 445 端口,所以要暴露,必须在服务端和客户端各转发一次端口,而 Windows 又无法修改 SMB 的默认端口。所以这个计划真的要实行也很麻烦了。
WebDavFTP,最大的弱点就是没有支持良好的播放器,暴露倒是不难。Web Player,所以只能找私人音乐库的在线播放器,最终找到了开源中还算不错的koel(虽然功能其实也挺简陋的,性能可能因为PHP写的,也不太行)。
所需
- 安装了小钢炮的
N1(armbianopenwrt都可以,只要能装docker) - 一个外接硬盘,并且已经挂载(自带8G Flash太小了)
目标
- 完整的
koel安装,使用轻量的sqlite数据库,官方推荐的docker-compose用的mysql,N1可能会跑不动 - 白嫖钉钉内网穿透暴露公网
- 写个
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