官方 Docker 镜像
Castopod 在其自动构建期间会将 3 个 Docker 映像推送到 Docker Hub :
castopod/castopod;一个使用 nginx 单元的整合 Castopod 镜像castopod/app:应用程序包,包含所有 Castopod 依赖关系castopod/web-server:Castopod 的 Nginx 配置
此外,Castopod 需要一个与 MySQL 兼容的数据库。 Redis 数据库 可以添加为缓存处理器。 A Redis database can be added as a cache handler.
目前支持的标签
Section titled “目前支持的标签”develop[unstable], 最新开发分支版本beta[stable],最新的 beta 版本构建latest[stable],最新版本构建1.x.x[stable],特定版本构建(自1.0.0起)
-
安装 Docker 和 docker-compose
-
创建
docker-compose.yml文件,并添加以下内容:version: "3.7"services:app:image: castopod/castopod:latestcontainer_name: "castopod-app"volumes:- castopod-media:/var/www/castopod/public/mediaenvironment:MYSQL_DATABASE: castopodMYSQL_USER: castopodMYSQL_PASSWORD: changemeCP_BASEURL: "https://castopod.example.com"CP_ANALYTICS_SALT: changemeCP_CACHE_HANDLER: redisCP_REDIS_HOST: redisCP_REDIS_PASSWORD: changemenetworks:- castopod-app- castopod-dbports:- 8000:8000restart: unless-stoppedmariadb:image: mariadb:10.5container_name: "castopod-mariadb"networks:- castopod-dbvolumes:- castopod-db:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: changemeMYSQL_DATABASE: castopodMYSQL_USER: castopodMYSQL_PASSWORD: changemerestart: unless-stoppedredis:image: redis:7.0-alpinecontainer_name: "castopod-redis"command: --requirepass changemevolumes:- castopod-cache:/datanetworks:- castopod-appvolumes:castopod-media:castopod-db:castopod-cache:networks:castopod-app:castopod-db:你还需要调整一些变量。 (例如:
CP_BASEURL,MYSQL_ROOT_PASSWORD,MYSQL_PASSSWORD和CP_ANALYTICS_SALT) -
设置 TLS 反向代理 (SSL/HTTPS)
TLS 是 ActivePub 工作的强制性要求。 此操作可用通过反向代理轻松解决,例如使用 Caddy 处理: This job can easily be handled by a reverse proxy, for example with Caddy:
#castopodcastopod.example.com {reverse_proxy localhost:8000} -
运行命令
docker-compose up -d, 等待初始化后跳转到https://castopod.example.com/cp-install来完成 Castopod 的设置! -
You’re all set, start podcasting! 🎙️🚀
-
castopod/castopod 和 castopod/app
变量名称 类型 ( 默认值)Default CP_BASEURLstring undefinedCP_MEDIA_BASEURL?string CP_BASEURLCP_ADMIN_GATEWAY?string "cp-admin"CP_AUTH_GATEWAY?string "cp-auth"CP_ANALYTICS_SALTstring undefinedCP_DATABASE_HOSTNAME?string "mariadb"CP_DATABASE_NAME?string MYSQL_DATABASECP_DATABASE_USERNAME?string MYSQL_USERCP_DATABASE_PASSWORD?string MYSQL_PASSWORDCP_DATABASE_PREFIX?string "cp_"CP_CACHE_HANDLER[ "file"或"redis"]"file"CP_REDIS_HOST?string "localhost"CP_REDIS_PASSWORD?string nullCP_REDIS_PORT?number 6379CP_REDIS_DATABASE?number 0CP_EMAIL_SMTP_HOST?string undefinedCP_EMAIL_FROM?string undefinedCP_EMAIL_SMTP_USERNAME?string "localhost"CP_EMAIL_SMTP_PASSWORD?string nullCP_EMAIL_SMTP_PORT?number 25CP_EMAIL_SMTP_CRYPTO[ "tls"或"ssl"]"tls"CP_ENABLE_2FA?boolean undefinedCP_MEDIA_FILE_MANAGER?string undefinedCP_MEDIA_S3_ENDPOINT?string undefinedCP_MEDIA_S3_KEY?string undefinedCP_MEDIA_S3_SECRET?string undefinedCP_MEDIA_S3_REGION?string undefinedCP_MEDIA_S3_BUCKET?string undefinedCP_MEDIA_S3_PROTOCOL?number undefinedCP_MEDIA_S3_PATH_STYLE_ENDPOINT?boolean undefinedCP_MEDIA_S3_KEY_PREFIX?string undefinedCP_DISABLE_HTTPS?[ 0or1]undefinedCP_MAX_BODY_SIZE?number (with suffix) 512MCP_PHP_MEMORY_LIMIT?number (with suffix) 512MCP_TIMEOUT?number 900 -
castopod/web-server
变量名称 Type Default CP_APP_HOSTNAME?string "app"CP_MAX_BODY_SIZE?number (with suffix) 512MCP_TIMEOUT?number 900