From 24beb91928d9b764c046d4649593838da2e92a3e Mon Sep 17 00:00:00 2001 From: Alexey Skobkin Date: Thu, 25 Jul 2024 20:24:19 +0000 Subject: [PATCH] castopod (#112) (#114) Co-authored-by: Alexey Skobkin Reviewed-on: https://git.skobk.in/skobkin/docker-stacks/pulls/114 --- README.md | 1 + castopod/.env.dist | 57 ++++++++++++++++++++++++++++++++++ castopod/docker-compose.yml | 46 +++++++++++++++++++++++++++ castopod/media/.gitignore | 2 ++ castopod/redis_data/.gitignore | 2 ++ 5 files changed, 108 insertions(+) create mode 100644 castopod/.env.dist create mode 100644 castopod/docker-compose.yml create mode 100644 castopod/media/.gitignore create mode 100644 castopod/redis_data/.gitignore diff --git a/README.md b/README.md index 0b428e6..acad4de 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ Not every stack is tested to fully work. | App Name | Status | Image | Description | Links | |-------------------------|-------------|----------------------------------------------|-------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ARK Server | ✅ | `thmhoag/arkserver` | ARK: Survival Evolved game server with ArkManager. | [Website](http://playark.com), [Steam](https://store.steampowered.com/app/346110/ARK_Survival_Evolved/), [Image Github](https://github.com/thmhoag/arkserver), [ArkManager](https://github.com/arkmanager/ark-server-tools) | +| Castopod | ✅ | `castopod/castopod` | Self-hosted federated podcasting platform | [Website](https://castopod.org), [Gitlab](https://code.castopod.org/adaures/castopod) | | Drone | ✅ | `drone/drone` | Continuous integration platform. | [Website](https://www.drone.io), [Github](https://github.com/harness/drone), [Image](https://hub.docker.com/r/drone/drone) | | Drone Docker Runner | ✅ | `drone/drone-runner-docker` | CI runner daemon for Docker. | [Website](https://www.drone.io), [Github](https://github.com/drone-runners/drone-runner-docker), [Image](https://hub.docker.com/r/drone/drone-runner-docker) | | Duplicati | ✅ | `linuxserver/duplicati` | Backup solution with many storage backends. | [Website](https://www.duplicati.com), [Github](https://github.com/duplicati/duplicati) | diff --git a/castopod/.env.dist b/castopod/.env.dist new file mode 100644 index 0000000..ad5217d --- /dev/null +++ b/castopod/.env.dist @@ -0,0 +1,57 @@ +# see https://docs.castopod.org/main/en/getting-started/docker/ +# see https://hub.docker.com/r/castopod/castopod +# see https://docs.castopod.org/main/en/getting-started/docker/#environment-variables + +IMAGE_TAG=latest + +# Ports +EXTERNAL_ADDRESS=127.0.0.1 +EXTERNAL_PORT=8393 + +# Castopod Settings + +CP_BASEURL=https://cp.domain.tld +#CP_MEDIA_BASEURL=https://cp.domain.tld +CP_ANALYTICS_SALT=changeme +#CP_CACHE_HANDLER=redis +#CP_REDIS_HOST=redis +CP_REDIS_PASSWORD=changeme + +#CP_ADMIN_GATEWAY=custom-admin-path +#CP_AUTH_GATEWAY=custom-auth-path + +#CP_ENABLE_2FA=true + +CP_DATABASE_HOSTNAME=host.docker.internal +CP_DATABASE_NAME=castopod +CP_DATABASE_USERNAME=castopod +CP_DATABASE_PASSWORD=changeme + +# Storage + +MEDIA_PATH=./media +REDIS_DATA_PATH=./redis_data + +# See https://docs.castopod.org/main/en/getting-started/install/#s3 +#CP_MEDIA_FILE_MANAGER="s3" +#CP_MEDIA_S3_ENDPOINT="your_s3_host" +#CP_MEDIA_S3_KEY="your_s3_key" +#CP_MEDIA_S3_SECRET="your_s3_secret" +#CP_MEDIA_S3_REGION="your_s3_region" +##CP_MEDIA_S3_BUCKET="your_s3_bucket" +##CP_MEDIA_S3_PROTOCOL= +##CP_MEDIA_S3_PATH_STYLE_ENDPOINT= +##CP_MEDIA_S3_KEY_PREFIX= + +#CP_MAX_BODY_SIZE=512M + +# Mailing +#CP_EMAIL_FROM=your_email_address +#CP_EMAIL_SMTP_HOST=your_smtp_host +#CP_EMAIL_SMTP_USERNAME=your_smtp_user +#CP_EMAIL_SMTP_PASSWORD=your_smtp_password +##CP_EMAIL_SMTP_PORT=12345 +##CP_EMAIL_SMTP_CRYPTO=tls + +LOG_MAX_SIZE=5m +LOG_MAX_FILE=5 diff --git a/castopod/docker-compose.yml b/castopod/docker-compose.yml new file mode 100644 index 0000000..1582ea0 --- /dev/null +++ b/castopod/docker-compose.yml @@ -0,0 +1,46 @@ +services: + castopod: + image: 'castopod/castopod:${IMAGE_TAG:-latest}' + container_name: 'castopod' + volumes: + - '${MEDIA_PATH:-./media}:/var/www/castopod/public/media' + environment: + MYSQL_DATABASE: '${CP_DATABASE_NAME:-castopod}' + MYSQL_USER: '${CP_DATABASE_USERNAME:-castopod}' + MYSQL_PASSWORD: '${CP_DATABASE_PASSWORD}' + CP_BASEURL: "${CP_BASEURL}" + CP_ANALYTICS_SALT: '${CP_ANALYTICS_SALT}' + CP_CACHE_HANDLER: '${CP_CACHE_HANDLER:-redis}' + CP_REDIS_HOST: '${CP_REDIS_HOST:-redis}' + CP_REDIS_PASSWORD: '${CP_REDIS_PASSWORD}' + env_file: '.env' + networks: + - castopod + extra_hosts: + - 'host.docker.internal:host-gateway' + ports: + - '${EXTERNAL_ADDRESS:-127.0.0.1}:${EXTERNAL_PORT:-8393}:8000' + restart: unless-stopped + logging: + driver: 'json-file' + options: + max-size: '${LOG_MAX_SIZE:-5m}' + max-file: '${LOG_MAX_FILE:-5}' + + redis: + image: 'redis:7.2-alpine' + container_name: 'castopod-redis' + command: '--requirepass ${CP_REDIS_PASSWORD}' + volumes: + - '${REDIS_DATA_PATH:-./redis_data}:/data' + networks: + - castopod + restart: unless-stopped + logging: + driver: 'json-file' + options: + max-size: '${LOG_MAX_SIZE:-5m}' + max-file: '${LOG_MAX_FILE:-5}' + +networks: + castopod: diff --git a/castopod/media/.gitignore b/castopod/media/.gitignore new file mode 100644 index 0000000..a68d087 --- /dev/null +++ b/castopod/media/.gitignore @@ -0,0 +1,2 @@ +/* +!/.gitignore diff --git a/castopod/redis_data/.gitignore b/castopod/redis_data/.gitignore new file mode 100644 index 0000000..a68d087 --- /dev/null +++ b/castopod/redis_data/.gitignore @@ -0,0 +1,2 @@ +/* +!/.gitignore