From cd2c128901f09a671810d8bf1519bb703c50604a Mon Sep 17 00:00:00 2001 From: Alexey Skobkin Date: Tue, 23 Jul 2024 00:25:56 +0300 Subject: [PATCH] castopod. stack draft. (#112) --- README.md | 1 + castopod/.env.dist | 44 ++++++++++++++++++++++++++++++++ castopod/docker-compose.yml | 46 ++++++++++++++++++++++++++++++++++ castopod/media/.gitignore | 2 ++ castopod/redis_data/.gitignore | 2 ++ 5 files changed, 95 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..2c61a18 --- /dev/null +++ b/castopod/.env.dist @@ -0,0 +1,44 @@ +# see https://docs.castopod.org/main/en/getting-started/docker/ +# see https://hub.docker.com/r/castopod/castopod + +# Ports +EXTERNAL_ADDRESS=127.0.0.1 +EXTERNAL_PORT=8393 + +# Castopod Settings + +CP_BASEURL=https://cp.domain.tld +CP_ANALYTICS_SALT=changeme +CP_CACHE_HANDLER=redis +#CP_REDIS_HOST=redis +CP_REDIS_PASSWORD=changeme + +# Storage + +MEDIA_PATH=./media +REDIS_DATA_PATH=./redis_data + +# See https://docs.castopod.org/main/en/getting-started/install/#s3 +#media.fileManager="s3" +#media.s3.endpoint="your_s3_host" +#media.s3.key="your_s3_key" +#media.s3.secret="your_s3_secret" +#media.s3.region="your_s3_region" +##media.s3.bucket="your_s3_bucket" + +# Mailing +#email.fromEmail=your_email_address +#email.SMTPHost=your_smtp_host +#email.SMTPUser=your_smtp_user +#email.SMTPPass=your_smtp_password +##email.SMTPPort=12345 +##email.SMTPCrypto=tls + +# Database + +MYSQL_DATABASE=database +MYSQL_USER=user +MYSQL_PASSWORD=password + +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..c4eed20 --- /dev/null +++ b/castopod/docker-compose.yml @@ -0,0 +1,46 @@ +services: + castopod: + image: castopod/castopod:latest + container_name: 'castopod' + volumes: + - '${MEDIA_PATH:-./media}:/var/www/castopod/public/media' + environment: + MYSQL_DATABASE: '${MYSQL_DATABASE:-host.docker.internal}' + MYSQL_USER: '${MYSQL_USER:-castopod}' + MYSQL_PASSWORD: '${MYSQL_PASSWORD}' + CP_BASEURL: "https://castopod.example.com" + CP_ANALYTICS_SALT: '${CP_ANALYTICS_SALT}' + 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