ByteNoteByteNote

字节笔记本

2026年2月18日

cicada:自托管多用户音乐服务

API中转
¥120

本文介绍 cicada,一个支持多用户的自托管音乐服务。它允许你在自己的服务器上搭建私人音乐平台,与家人朋友共享音乐收藏,完全掌控自己的音乐数据。

项目简介

cicada 是一个开源的自托管音乐服务,由 mebtte 开发维护。与 Spotify、Apple Music 等流媒体服务不同,cicada 让你在自己的服务器上托管音乐,实现完全的数据自主权。该项目在 GitHub 上已获得 1.1k+ stars。

项目名称 "cicada"(蝉)寓意着夏天和音乐,象征着项目希望为用户带来愉悦的音乐体验。

核心特性

  • 自托管部署: 在自己的服务器上运行,数据完全自主
  • 多用户支持: 支持多个用户账号,适合家庭或小型团队使用
  • 音乐管理: 支持上传、整理、分类管理音乐文件
  • 播放列表: 创建和分享播放列表
  • 歌词支持: 支持内嵌歌词和外部歌词文件
  • 封面管理: 自动获取和编辑专辑封面
  • 响应式界面: 现代化的 Web 界面,支持桌面和移动设备
  • PWA 支持: 可安装为渐进式 Web 应用

技术栈

  • 后端: Node.js + TypeScript
  • 前端: React + TypeScript
  • 数据库: SQLite
  • 构建工具: 自定义构建系统
  • 部署方式: Docker / 二进制文件

安装指南

使用 Docker 部署(推荐)

bash
# 创建数据目录
mkdir -p ~/cicada/data

# 运行容器
docker run -d \
  --name cicada \
  -p 8000:8000 \
  -v ~/cicada/data:/data \
  mebtte/cicada:latest

使用二进制文件部署

bash
# 下载最新版本
wget https://github.com/mebtte/cicada/releases/latest/download/cicada-linux-amd64
chmod +x cicada-linux-amd64

# 运行
./cicada-linux-amd64 --data /path/to/data

使用 Docker Compose

yaml
version: '3'
services:
  cicada:
    image: mebtte/cicada:latest
    container_name: cicada
    ports:
      - "8000:8000"
    volumes:
      - ./data:/data
      - ./music:/music:ro
    restart: unless-stopped

快速开始

初始配置

  1. 启动服务: 运行上述部署命令
  2. 访问界面: 打开浏览器访问 http://localhost:8000
  3. 创建管理员: 首次访问时创建管理员账号
  4. 上传音乐: 将音乐文件放入数据目录或使用上传功能
  5. 扫描音乐: 在设置中触发音乐库扫描

支持的音频格式

  • MP3
  • FLAC
  • OGG
  • M4A
  • WAV
  • WMA

目录结构

text
cicada-data/
├── config.json       # 配置文件
├── database.db       # SQLite 数据库
├── music/            # 音乐文件目录
│   ├── 艺术家/
│   │   └── 专辑/
│   │       └── 歌曲.mp3
└── cover/            # 封面缓存

使用示例

场景 1:家庭音乐服务器

bash
# 在 NAS 或树莓派上部署
docker run -d \
  --name cicada \
  -p 8000:8000 \
  -v /mnt/music:/music:ro \
  -v ~/cicada-data:/data \
  mebtte/cicada:latest

家庭成员可以通过浏览器访问,各自创建账号,共享音乐库。

场景 2:个人音乐收藏管理

  1. 整理本地音乐文件到标准目录结构
  2. 部署 cicada 并配置音乐目录
  3. 自动扫描并获取封面和元数据
  4. 创建个性化播放列表

配置说明

环境变量

变量说明默认值
DATA数据目录/data
PORT服务端口8000
LOG_LEVEL日志级别info

配置文件

json
{
  "port": 8000,
  "data": "/data",
  "music": "/music",
  "scanInterval": 3600
}

相关资源

许可证

本项目采用 MIT 许可证开源。

分享: