自建播客平台 Castopod:摆脱版权限制的开源托管方案
Castopod 是一款专为播客创作者设计的开源托管系统,支持 RSS 订阅分发、多用户管理和内置统计分析。相比托管在国内免费平台可能面临的版权下架风险,自建 Castopod 能让你完全掌控内容与数据。对播客新手来说,它部署简单、界面友好,是理想的入门之选。

部署代码
推荐通过 Docker Compose 部署 Castopod,详情请见 Docker Compose 部署教程。以下是 Docker Compose 配置示例:
services:
castopod-app:
image: castopod/app:latest
container_name: "castopod-app"
volumes:
- /volume1/docker/castopod/castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
#CP_BASEURL: "http://192.168.2.3:9010"
#CP_DISABLE_HTTPS: 1
CP_BASEURL: "https://podcast.aishort.top"
CP_DATABASE_HOSTNAME: "castopod-mariadb"
CP_ANALYTICS_SALT: changemesalt
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: castopod-redis
CP_REDIS_DATABASE: 1
#CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
depends_on:
- castopod-mariadb
castopod-web-server:
image: castopod/web-server:latest
container_name: "castopod-web-server"
volumes:
- /volume1/docker/castopod/castopod-media:/var/www/html/media
environment:
CP_APP_HOSTNAME: "castopod-app"
networks:
- castopod-app
ports:
- 9010:80
restart: unless-stopped
depends_on:
- castopod-app
castopod-mariadb:
image: mariadb:11.2
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- /volume1/docker/castopod/castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
castopod-redis:
image: redis:7.2-alpine
container_name: "castopod-redis"
volumes:
- /volume1/docker/castopod/castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:部署完成后,通过浏览器访问 CP_BASEURL 链接即可开始你的博客。
配置说明
部署注意事项
- 启动时间:首次部署需要 5–10 分钟完成初始化,耐心等待后再访问
CP_BASEURL指定的链接。 - Redis 配置:官方示例中的
CP_REDIS_HOST: redis在某些环境下会报错,建议注释掉该行,使用默认的 localhost。 - Nginx Unit vs App+Web:本文采用 app + web-server 容器模式,比 nginx unit 更稳定。
永久链接冲突
发布剧集时,如果音频文件名为中文,自动生成的永久链接容易重复导致报错。建议在发布前手动修改剧集的永久链接字段。
字幕上传
Castopod 支持为剧集上传 SRT 字幕,但需注意:
- 字幕文件不能出现连续多个空行;
- SRT 文件末尾通常有两个空行,需删除至仅有一个。
反向代理与端口
如果你的网络环境无法开放 80/443 端口,可通过 Nginx Proxy Manager 设置反向代理。播客链接支持带端口访问,例如:
CP_BASEURL: "https://podcast.aishort.top:9010"Cloudflare Tunnel + S3 环境
在此环境下上传较大音频文件时,可能因超过 Cloudflare Tunnel 100 秒超时限制而失败。建议:
- 上传前将
CP_BASEURL临时改为内网地址,并设置CP_DISABLE_HTTPS: 1; - 上传完成后立即恢复原配置。
使用流程
- 访问
CP_BASEURL完成管理员账号注册; - 登录后台,在左侧菜单选择「播客 → 新播客」创建节目;
- 填写播客名称、封面、分类等元信息;
- 进入播客详情页,点击「剧集 → 新剧集」上传音频并发布。
发布后,Castopod 会自动生成符合 Apple Podcasts、Spotify 等平台规范的 RSS 订阅链接,可直接提交到各大播客目录。
其他播客方案对比
Podcast Generator
Podcast Generator 是一个开源的播客部署方案。
但是,它有许多缺点,例如不支持多栏目部署,没有音频时间轴定位,不支持播客字幕管理。
音频时间轴定位可通过 Overcast 等第三方应用来实现;字幕管理则可以考虑使用 vidstack 来开启音频字幕板。
国内服务器无法访问 WebSub,否则会使播客更新变得极其缓慢,需要在后台关闭 WebSub 才能恢复正常。以后还需进一步考虑是否有其他解决办法。详细了解 websub 原理,默认推送地址为 https://pubsubhubbub.appspot.com/。
WordPress 插件
WordPress 生态中有几款播客插件,但整体实用性不高:
| 插件 | 优点 | 缺点 |
|---|---|---|
| Seriously Simple Podcasting | 免费、内置统计 | 功能较基础 |
| Blubrry PowerPress | 功能全面 | 配置复杂、上传繁琐 |
| Podcast Player | 界面美观 | 兼容性问题,显示不稳定 |
综合来看,如果你追求完整的播客托管体验,Castopod 是目前开源方案中的最佳选择。