{"id":19703638,"url":"https://github.com/monibuca/monica","last_synced_at":"2025-04-29T14:31:01.100Z","repository":{"id":42240775,"uuid":"244087080","full_name":"Monibuca/monica","owner":"Monibuca","description":"Monibuca的实例管理器，用于创建工程目录，根据用户选择引入引擎和插件，生成配置文件","archived":false,"fork":false,"pushed_at":"2023-01-06T17:14:13.000Z","size":9913,"stargazers_count":120,"open_issues_count":32,"forks_count":44,"subscribers_count":7,"default_branch":"NodeJs","last_synced_at":"2025-04-24T01:42:20.139Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Monibuca.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-01T04:34:09.000Z","updated_at":"2024-11-21T08:45:28.000Z","dependencies_parsed_at":"2023-02-06T07:01:35.238Z","dependency_job_id":null,"html_url":"https://github.com/Monibuca/monica","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Monibuca%2Fmonica","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Monibuca%2Fmonica/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Monibuca%2Fmonica/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Monibuca%2Fmonica/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Monibuca","download_url":"https://codeload.github.com/Monibuca/monica/tar.gz/refs/heads/NodeJs","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251518900,"owners_count":21602232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T21:18:32.207Z","updated_at":"2025-04-29T14:30:56.088Z","avatar_url":"https://github.com/Monibuca.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Monica————Monibuca 可视化实例管理器\n\n- monica是一个用来创建和管理Monibuca实例的工具，方便新入门Monibuca系统的用户使用，可以快速搭建好Golang环境和快速运行一个全功能版本的Monibuca。\n- monica采用Node.Js和Vue3.0技术开发，所以安装monica不需要golang环境，但是Monibuca是纯Go的系统，所以需要搭建Go环境。\n\n## Monibuca介绍\n[官方网站https://monibuca.com](https://monibuca.com)\n**Monibuca** 是一个开源的流媒体服务器开发框架，适用于快速定制化开发流媒体服务器，可以对接 `CDN` 厂商，作为回源服务器，也可以自己搭建集群部署环境。\n丰富的内置插件提供了流媒体服务器的常见功能，例如 `rtmp server` 、 `http-flv` 、视频录制、`webRTC`、 `GB28181` 等。除此以外还内置了后台 `web` 界面，方便观察服务器运行的状态。\n也可以自己开发后台管理界面，通过 `api` 方式获取服务器的运行信息。\n**Monibuca** 提供了可供定制化开发的插件机制，可以任意扩展其功能。\n\n## 安装和启动 monica\n\n执行下面的命令即可（ `mac` 或者 `linux` 系统请以 `root` 身份运行）\n\n```sh\nnpm i -g @langhuihui/monica\nmonica\n```\n\n\u003e **TIP：**\n**npm 命令需要安装好nodejs：**\u003cbr\u003e\n进入[官网](https://nodejs.org/en/ )下载和安装即可\n\n**mac 电脑如何进入 root 身份：**\u003cbr\u003e\n[https://www.jianshu.com/p/f5e09261a064](https://www.jianshu.com/p/f5e09261a064) ，按照链接教程设置好后，在终端执行 `su root` 然后再执行 `monica` 命令 启动实例管理器\n\n启动后，打开 [http://localhost:3000](http://localhost:3000) 会看到下面的界面\n\n![r1](./docs/images/r1.gif)\n\n这就是 **Monibuca** 实例管理器实例管理器的欢迎页面，它会帮助你，检查你本地的 `go` 环境是否正确配置。\n\n**如果没有正确配置 `go` 环境，请先配置好 `go` 环境，在点击下一步进行实例创建和管理。如果配置了 `go` 环境，请确保 `go version \u003e= 1.13` 然后再点击下一步。**\n\n## go 代理设置\n如果服务器在国内无法访问 `golang.org` 等域名的情况下，需要配置 `GOPROXY` 环境变量，执行下面脚本命令即可完成代理设置\n```bash\ngo env -w GOPROXY=\"https://goproxy.io,direct\"\n```\n\n## 实例创建\n\n### step1 进行实例管理页面\n\n点击下一步后，进入实例管理页面，展示如下图：\n\n![没有实例界面](./docs/images/r2.png)\n\n这时，你会发现，你还没有创建的实例，你需要点击 **创建新实例** 按钮进行创建实例\n\n### step2 创建实例\n\n点击 **创建新实例** 按钮进行实例创建，创建界面如下图所示：\n\n![创建实例界面](./docs/images/r3.png)\n\n图中的各个模块已经用箭头加文字进行了说明。这里我们来进行一次实例创建。大家请往下看：\n\n### step2-1 定目录\n\n鼠标聚焦在输入框时，就会进行路径联想，并把联想结果显示出来，如下图所示：\n\n![step2-1](./docs/images/r4.png)\n\n\u003e 这里，默认填充目录是用户根目录，也就是 `cd ~` 所在的目录。\n\n选择目录规则：**大家可以选择目录，可以选择存在的目录路径，也可以选择不存在的目录路径，如果是不存在目录路径，创建器会自动新建目录。**\n\n如，我们选择了不存在的目录路径，是 `/var/root/yk-kaiyuan/root-test-6` ，如下图所示： \n\n![step2-1](./docs/images/r5.png)\n\n至此我们的实例目录就确定好了，下面开始确定实例名称\n\n### step2-2 起名称\n\n点击下一步或者直接点击起名称，会进入起名称步骤，如下图所示：\n\n![step2-2](./docs/images/r6.png)\n\n这里会自动把实例目录名充到实例名称名上，一般情况下不需要做修改，如果想修改，可以直接在输入框中进行修改实例名称。\n\n\u003e **TIP：**\n\u003e **创建的实例名称是不能重复的**，比如你创建了 `10` 个实例，那这 `10` 个实例的名称是不可以重复的，必须保证是唯一的。\n\n### step2-3 选插件\n\n点击下一步或者直接点击选择插件，会进入选插件步骤，如下图所示：\n\n![step2-3](./docs/images/r7.png)\n\n这里会自动选中常用的插件，建议不做修改，全部采用默认的选择，如果你是新手，更应该如此，此处不要做改动，直接使用默认选择。\n\n### step2-4 改配置\n\n点击下一步或者直接点击改配置，会进入改配置步骤，如下图所示：\n\n![step2-4](./docs/images/r8.png)\n\n这里会自动填充默认的配置，如果这是你第一个创建的实例，建议不做修改，全部采用默认的配置。如果你是新手，更应该如此，此处不要做改动，直接使用默认配置。\n\n### step2-5 创建\n\n点击下一步或者直接点击创建，会进入创建步骤，如下图所示：\n\n![step2-5](./docs/images/r9.png)\n\n看上图，进入创建步骤后，点击下面 **开始创建** 按钮，进行实例的创建，点击 **开始创建**，出现下图：\n\n![step2-5](./docs/images/r10.png)\n\n这时，注意有一个确认过程，提示你确认是否清空实例所在的目录，这里清空是用的 `rm -rf` 。**如果该目录本身就是空目录，则无所谓。否则，请确保你的实例目录不是根目录，确保实例目录可以清空。**\n\n\u003e **TIP：**\n1、如果不是空目录，同时不想清空目录，则需要把 **开始创建** 按钮左边 的 清空目录勾选框取消勾选，即可。\u003cbr\u003e\n2、强烈建议采用新建的空目录去存放创建的实例。\u003cbr\u003e\n3、强烈建议不要使用根目录等重要目录去存放创建的实例。\n\n这里，我的是新建目录，所以点击 `Yes`  即可，点击后，即开始创建实例，创建过程如下动图演示：\n\n![step2-5](./docs/images/r11.gif)\n\n需要同时满足下面两个条件，才能表明实例创建成功：\n\n第一个条件：在执行 `go build` 下，最后的信息会提示 `success` \u003cbr\u003e\n第二个条件：创建完成后，会有创建成功的 `toast` 提示\n\n从上面动图可以得知，我们已经成功创建实例。至此，创建实例的整个过程已经阐述完了。下面我们将进入实例列表页面对实例进行各种操作。\n\n## 实例管理\n\n成功创建实例后，点击 **进入实例列表页面** 按钮进入实例列表页面，如下图所示：\n\n![实例管理](./docs/images/r12.png)\n\n会看到刚才创建的实例，已经在列表页面里了，大家一定很好奇，这个实例上的一些操作按钮是什么意识。别着急，只需要把鼠标移到操作按钮上面，就可以显示此操作按钮解释，下图是未启动时的操作按钮解释：\n\n![实例管理](./docs/images/r13.png)\n\n下面对这些操作按钮进行详细阐述：\n\n### 实例配置修改\n\n点击 **实例配置修改** 按钮，会出现下图所示的弹窗：\n\n![实例管理](./docs/images/r14.png)\n\n我们可以在此弹窗里面进行相关配置的修改，修改完后，点击 `OK` 即可完成配置修改。\n\n\n### 实例依赖更新\n\n点击 **实例依赖更新** 按钮，会出现下图所示的弹窗：\n\n![实例管理](./docs/images/r15.png)\n\n只要点击此按钮，就会开始自动更新依赖，更新完成后，点击`OK` 即可完成实例依赖更新。\n\n### 实例删除\n\n点击 **实例删除** 按钮，会出现下图所示的弹窗：\n\n![实例管理](./docs/images/r16.png)\n\n出现这个确认提示，大家应该都明白是啥意识了哈，点击 `Yes` 的话，就将进行实例删除操作。删除完成后，实例页面将不会显示该实例。\n\n### 实例启动开关\n\n在实例未开启状态下，点击 **实例启动开关** 按钮，会出现如下动图演示：\n\n![实例管理](./docs/images/r17.gif)\n\n会发现，实例开启成功，也就是运行起来了，实例开启按钮由灰变成高亮，同时右侧出现创建实例成功提示，提示信息是底层创建的成功日志。\n\n如果实例开启失败呢，开启失败的场景如下图所示：\n\n![实例管理](./docs/images/r18.png)\n\n会发现，实例开启失败，实例开启按钮没有从灰变成高亮，同时右侧出现创建实例失败提示，提示信息是底层创建的失败日志，同时下面会有该实例开启失败的解决方案。大家请参考解决方案去解决实例开启失败的问题。\n\n实例开启成功后，操作按钮会有变化，下图是启动成功后的操作按钮解释：\n\n![实例管理](./docs/images/r19.png)\n\n下面对这些操作按钮进行详细阐述：\n\n### 重启实例\n\n点击 **重启实例** 按钮，会出现下图所示的弹窗：\n\n![实例管理](./docs/images/r20.png)\n\n出现这个确认提示，大家应该都明白是啥意识了哈，点击 `Yes` 的话，就将进行实例重启操作\n\n### 实例操作面板\n\n点击 **实例操作面板** 按钮，会进入实例操作面板页面，如下图所示：\n\n![实例操作面板](./docs/images/r21.png)\n\n至此，实例管理的所有步骤已经阐述完了，下面我们将进入实例操作面板页面，进行实例操作教学\n\n## 实例操作\n\n下图展示的是实例操作面板页面：\n\n![实例操作面板](./docs/images/r22.png)\n\n下面会对页面中的主要构成部分进行阐述：\n\n### 提示语\n\n大家可以看到如下提示语：\n\n\u003e **Monibuca** 中还没有发布的流，您可以通过向 **Monibuca** 推流或者从远程拉流的方式将视频流传入 **Monibuca**\n发布成功后就可以从 **Monibuca** 中订阅流来观看了。\n\n当我们看到这句话时，就表明现在还没有流推到 **Monibuca** ，我们可以通过一些工具将视频流传入到 **Monibuca** 中，然后再使用相应的播放器进行视频观看。\n\n### StreamPath\n\n`StreamPath` 是发布流的唯一标识，我们可以把它理解为网页的 `url` ，它是流传输服务中的 `url` 。你要发布一个流，就需要一个 `StreamPath` ，这里类比后端服务的发布，需要 \t`ip` 和对外暴露的端口一起组成一个 `url` 。\n\n### 推流地址\n\n简单点说，就是这个实例开启后，你如果想往这个实例上推流，就需要将流推送到这个地址上。这样才能将流推到 **Monibuca** 。\n\n**Monibuca** 接受 `ffmpeg` 、 `OBS` 等推流工具推流，这里要注意，**如果使用已存在的 `StreamPath` ，则会导致推流失败。**\n\n### 拉流地址\n\n简单点说，就是这个实例开启后，你可以用这个实例从外部拉流导入 **Monibuca** 。\n\n主要构成部分已经介绍完了，下面我们举个例子来实践一下操作面板。\n\n\n### 操作举例\n\n使用 `ffmpeg` 往 该 **Monibuca** 实例上推流。\n\n#### step1 下载 `ffmpeg` \n\n`mac` 和 `windows` 自行搜索下载\n\n#### step2 推流\n\n选择本地一个视频，命名为 `test.mp4` 。\n\n在终端中，用 `cd` 进入该视频所在的目录下，执行下面命令：\n\n```bash\nsudo ffmpeg -re -stream_loop -1 -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://localhost/live/test\n```\n\n会看到如下动图演示：\n\n![实例操作面板案例](./docs/images/r23.gif)\n\n当执行命令后，我们会发现，实例操作面板页面发生了变化，变成了下图所示的样子：\n\n![实例操作面板案例](./docs/images/r24.png)\n\n这说明我们用 `ffmpeg` 成功的把流推到了 **monibuca** 上， **monibuca** 监听到后，会通知操作页面去展示该推流，并且提供 **预览** 和 **中止** 操作。\n\n我们点击 **预览** 按钮，会出现下图所示的弹窗：\n\n![实例操作面板案例](./docs/images/r25.png)\n\n弹窗里面会展示播放地址，同时弹窗底部提供了各种模式的预览按钮，这里我们点击 **jessibuca** 按钮进行实时预览，如下图所示：\n\n![实例操作面板案例](./docs/images/r26.png)\n\n至此，我们完整的走完了环境搭建、实例创建、实例管理、实例操作的全流程，以及一个推流加实时预览的小案例，小伙伴们是不是非常心动哈，赶快按照此教程从头体验一遍哦。\n\n## 尾牙\n\n如果对上面的某些步骤不懂，或者卡在了某个步骤上，或者出现了不在此教程中谈到的问题，请通过扫码加入 `monibuca` 微信群，提出你的问题，我们一起解决和进步🌹\n\n如何扫码：进入官网：[https://monibuca.com/](https://monibuca.com/) 即可看到右边有微信交流群二维码。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonibuca%2Fmonica","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmonibuca%2Fmonica","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonibuca%2Fmonica/lists"}