互动播客方案Castopod的安装

在这里插入图片描述

什么是 Castopod ?

Castopod 是一种免费的开源播客托管解决方案,专为希望与观众互动的播客而设计。Castopod 目前处于测试阶段,但已经相当稳定并被世界各地的播客使用!

命令行安装

安装并不复杂,但是容器比较多,其中官方的镜像就有 3 个:

  • castopod/app:包含所有 Castopod 依赖项的应用程序包;
  • castopod/web-server: CastopodNginx 配置;
  • castopod/video-clipper:一个可选的基于 ffmpeg 构建的视频剪辑镜像包;

此外,Castopod 需要一个与 MySQL 兼容的数据库。还可以添加 Redis 数据库作为缓存处理程序

前期准备

先要准备好域名 ,因为老苏发现用 http://群晖IP:8782 访问会被强制转为 https://群晖IP:8782,然后返回错误:ERR_SSL_PROTOCOL_ERROR

在这里插入图片描述

域名 局域网地址 备注
https://cp.laosu.ml http://192.168.0.197:8782 Castopod 的访问地址

Nginx Proxy Manager 做反代处理;实际访问时,因为老苏没有备案,所以是 https://cp.laosu.ml:444

其中:

  • 192.168.0.197 为群晖的 IP
  • 8772 是准备分配给 Castopod 的端口

在这里插入图片描述

SSL 设置里一般没啥问题的话都是全部勾选

在这里插入图片描述

docker-compose 安装

基于以上,所以在群晖上还是继续采用 docker-compose 安装,请将下面的内容保存为 docker-compose.yml 文件

官方原始的 docker-compose.yml 和变量说明可以在: https://docs.castopod.org/getting-started/docker.html 找到,老苏做了细微的调整;如果你要在 portainer 中直接运行,还需要把卷改为绝对路径;

version: "3.7"services:app:image: castopod/app:1.1.2container_name: "castopod-app"restart: unless-stoppedvolumes:- ./media:/opt/castopod/public/mediaenvironment:MYSQL_DATABASE: castopodMYSQL_USER: castopodMYSQL_PASSWORD: ERDZQi6Lfg8SCP_BASEURL: "https://cp.laosu.ml:444"CP_ANALYTICS_SALT: changemeCP_CACHE_HANDLER: redisCP_REDIS_HOST: redisweb-server:image: castopod/web-server:1.1.2container_name: "castopod-web-server"restart: unless-stoppedports:- 8782:80volumes:- ./media:/var/www/html/mediamariadb:image: mariadb:10.6container_name: "castopod-mariadb"restart: unless-stoppedvolumes:- ./data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: C8NuQ38js3DsMYSQL_DATABASE: castopodMYSQL_USER: castopodMYSQL_PASSWORD: ERDZQi6Lfg8Sredis:image: rediscontainer_name: "castopod-redis"volumes:- ./cache:/data# this container is optional# add this if you want to use the videoclips featurevideo-clipper:image: castopod/video-clipper:1.1.2container_name: "castopod-video-clipper"volumes:- ./media:/opt/castopod/public/mediaenvironment:MYSQL_DATABASE: castopodMYSQL_USER: castopodMYSQL_PASSWORD: ERDZQi6Lfg8Srestart: unless-stopped

环境变量

这里只列出了老苏用到的环境变量,没用到的可以去看官网的文档说明:https://docs.castopod.org/getting-started/docker.html#environment-variables

  • mariadb:10.6
可变
MYSQL_ROOT_PASSWORD root 用户的密码,需要修改为你自己的
MYSQL_DATABASE 数据库库名, 设为了 castopod
MYSQL_USER 数据库用户,设为了 castopod
MYSQL_PASSWORD 数据库用户 castopod 对应的密码, 需要修改为你自己的
  • castopod/video-clipper:1.1.2

需保持和 mariadb:10.6 的设置一致;

可变
MYSQL_DATABASE 数据库库名
MYSQL_USER 数据库用户
MYSQL_PASSWORD 数据库用户 castopod 对应的密码
  • castopod/app:1.1.2

需保持和 mariadb:10.6 的设置一致;

可变
MYSQL_DATABASE 数据库库名
MYSQL_USER 数据库用户
MYSQL_PASSWORD 数据库用户 castopod 对应的密码
CP_BASEURL 应用的 web 地址,需要改成你自己的地址,有端口也要带上
CP_ANALYTICS_SALT 买搞明白是啥,感觉像是个密码类型的
CP_CACHE_HANDLER 可选 fileredis,设为 redis
CP_REDIS_HOST redis数据库主机名,设为 redis

开始启动

然后执行下面的命令

# 新建文件夹 castopod 和 子目录
mkdir -p /volume2/docker/castopod/{cache,data,media}# 进入 castopod 目录
cd /volume2/docker/castopod# 修改 media 目录权限
chmod 777 media# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

在这里插入图片描述

  • /media文件夹必须是可读的,否则你在创建新的博客上会遇到 mkdir(): Permission denied 错误

运行

在浏览器中输入 https://cp.laosu.ml:444

程序默认支持中文,不需要另外设置;

在这里插入图片描述

如果没有自动跳转的话,就手动打开 https://cp.laosu.ml:444/cp-install 设置管理员账号

在这里插入图片描述

登录成功之后的主界面

在这里插入图片描述

可以创建一个新的播客

**注意:**博客封面必须是方形的图片,而且要超过 1400px

在这里插入图片描述

创建成功

还要发布播客

在这里插入图片描述

发布成功后,Castopod 会为你创建一个社交页面

在这里插入图片描述

你的播客将拥有自己的页面,其中包含许多可以自定义的设置

在这里插入图片描述

最后看看版本信息

在这里插入图片描述

参考文档

ad-aures/castopod: Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience. Synchronized read-only mirror of https://code.castopod.org/adaures/castopod
地址:https://github.com/ad-aures/castopod

Official Docker images | Castopod documentation
地址:https://docs.castopod.org/getting-started/docker.html

查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2166814.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

在这里插入图片描述

互动播客方案Castopod的安装

什么是 Castopod ? Castopod 是一种免费的开源播客托管解决方案,专为希望与观众互动的播客而设计。Castopod 目前处于测试阶段,但已经相当稳定并被世界各地的播客使用! 命令行安装
安装并不复杂,但是容器比较多&#……

旁路电容0.1uF是怎么来的

旁路电容在数字电路系统中所起的基本且重要作用,即储能与为高频噪声电流提供低阻抗路径,尽管还并未给旁路电容的这些功能概括一个“高大上”的名字,然而旁路电容所起的终极作用就是为了电源完整性(Power Integrity, PI&#xff09……

索马里ECTN/BESC/CTN证书

索马里ECTN/BESC/CTN证书 从2023年2月1日起,所有到索马里清关必须提供ECTN/CTN证书。 根据索马里法令凡是发货到索马里都必须申请电子货物跟踪单ECTN/BESC,如果没有申请将视为触犯索马里的条例,并在目的港自动受到惩罚。所有出口到索马里的货物必须在船抵……

STL02_map之插入注意事项

Map容器:每个元素都是键值-实值成对存储,自动根据键值排序,键值不能重复,不能被修改。
map如图所示,键值和实值是一一对应的。map的键值和实值类型可以是其他类型,图中键值类型设置为int类型,实……

「SQL面试题库」 No_25 统计各专业学生人数

🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试&#xff0……

研究生阶段应该如何度过?

本文档主要用于对新来的研究生进行培训,有不合适的地方欢迎讨论,勿喷,谢谢!
1 身心健康第一重要,学业第二
吃好早餐:要想身体好,早餐要吃好;规律生活:早睡早起&#xf……

【玩转client-go】解析 Kubernetes 资源的 YAML 数据的 Go 函数实现

背景
Kubernetes 是一款流行的容器编排系统,它可以自动化地部署、扩展和管理容器化的应用程序。在 Kubernetes 中,所有的资源都以 YAML 文件的形式进行定义和配置。在某些情况下,我们需要将已经创建的 Kubernetes 资源的 YAML 数据提取出来&……

python的组合和继承

python的组合和继承
一。继承 当子类继承父类时,用super().某某()可以直接调用父类的行为class a:def work(self):print("zhe")
class b(a):def work1(self):super().work()#self.work()
db()
d.work1()二。组合
clas……

python的异常和读的结合

这是一个用异常来实现的写入,encodingutf-8’是一个编码形式我们的文本默认的GBK
try:wopen(rb.txt,w,encodingutf-8)w.write(你好python)
except BaseException as e:print(e)
finally:w.close()with open(rb.txt,r,encodingutf-8) as f:print(f.read())…

python GUI编程

这是我的第一个GUI
from tkinter import *
from tkinter import messagebox
rootTk()
btno1Button(root)
btno1[text]点我就送花btno1.pack()def songhua(e):#e就是事件对象messagebox.showinfo("Message",送你一朵玫瑰花)print(送你99朵玫瑰花)
btno1.bind(<But……

Pandas入门实践2 -数据处理

为了准备数据进行分析,我们需要执行数据处理。在本节中,我们将学习如何清理和重新格式化数据(例如,重命名列和修复数据类型不匹配)、对其进行重构/整形,以及对其进行丰富(例如,离散化……

一、lua基础知识1

一、lua 的数据类型
–类型 a1; –number print(type(a)) –number b"HelloWorld"; print(type(b)) –string 两种数据类型 ctrue; print(type(c)) –boolean true 或者 false d print; d("HelloWorld"); print(type(d)); –function类型 ……

二、lua语言基础2

1.lua的类型有哪些?答:lua的数据类型有:number,string,nil function,table,thread,userdata(用户自定义的类型),boolean(布尔类型) 2.什么是尾调用,尾调用有什么优点尾调用:在一个函数的最后一步开始调用另……

quick-cocos2dx-luaUI控件讲解

–MyApp部分 require("config") require("cocos.init") require("framework.init") local MyApp class("MyApp", cc.mvc.AppBase) function MyApp:ctor() MyApp.super.ctor(self) end function MyApp:run() cc.FileUti……

quick-cocos2dx lua语言讲解 (动作,定时器,触摸事件,工程的类的讲解)

–MainScene部分
— display.newScene 创建一个场景 — 在quick里面我们的控件、精灵 一般是加载到场景上的 local MainScene class("MainScene", function() return display.newScene("MainScene") end) function MainScene:ctor() –创……

使用quick-cocos2dx-lua 实现的小游戏(包含碰撞检测,触屏发子弹)

–主界面local MainScene class("MainScene", function()return display.newScene("MainScene")end)ON true;function MainScene:ctor()local bg cc.Sprite:create("main_background.png");bg:setScale(2);bg:setPosition(display.cx,display……

cocos2d-js 中scrollview详解

/****
开头的一些废话:
1、多思考,善于思考
2、懂得变通
3、多多查询API首先复制一段 API中的源码:(UIScrollView.js)这段代码可以看出 scrollview
中的容器是一个node,并且他的位置是:代码最后……

cocos2d-js中的回调函数中世界坐标系和节点坐标系的相互转换

世界坐标系和节点坐标系都是OPENGL 坐标系 1、世界坐标系原点就是屏幕的左下角; 2、节点坐标系的原点就是一个节点的左下角; 3、两个坐标系可以通过已经写好的cocosAPI进行想换转换; 4、所有的节点需要转为一个节点上或者是统一的世界坐标系……

通过JavaScript实现漂浮

<html>
<head><meta http-equiv"Content-Type" content"text/html"; charset"gb2312" /><title>漂浮广告</title><style type"text/css">div{position:absolute;}</style>
</head>
&……

序列动画和图片内存问题

一、帧动画问题 /*** 帧动画总结:* 1、如果精灵进行新建时,加载了纹理,那么setRestoreOriginalFrame可以设置为false或者true* 2、如果精灵新建时,没有加载纹理的话,那么setRestoreOriginalFrame需要设置为false&#……

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注