mirror of
https://github.com/tiennm99/coolify.git
synced 2026-08-19 22:23:42 +00:00
feat(service): add Celld one-click service template (#11155)
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
# documentation: https://celld.dev/docs
|
||||
# slogan: Self-hosted, distributed Durable Objects powered by Deno.
|
||||
# category: backend
|
||||
# tags: deno, durable-objects, workers, sqlite, distributed, backend, serverless
|
||||
# logo: svgs/denoKV.svg
|
||||
# port: 8080
|
||||
|
||||
services:
|
||||
celld:
|
||||
image: 'ghcr.io/denoland/celld:${CELLD_VERSION:-latest}'
|
||||
environment:
|
||||
- SERVICE_URL_CELLD_8080
|
||||
- CELLD_BUCKET=${CELLD_BUCKET:?}
|
||||
- S3_ENDPOINT=${S3_ENDPOINT:-}
|
||||
- AWS_REGION=${AWS_REGION:-us-east-1}
|
||||
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?}
|
||||
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?}
|
||||
- AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN:-}
|
||||
- CELLD_ADDR=0.0.0.0:8080
|
||||
- CELLD_ADVERTISE=celld:8080
|
||||
- CELLD_WATCH=/var/lib/celld/state
|
||||
- RUST_LOG=${RUST_LOG:-info}
|
||||
volumes:
|
||||
- celld-data:/var/lib/celld
|
||||
@@ -536,6 +536,25 @@
|
||||
"template_last_updated_at": "2026-03-13T12:05:06+05:30",
|
||||
"port": "8080"
|
||||
},
|
||||
"celld": {
|
||||
"documentation": "https://celld.dev/docs?utm_source=coolify.io",
|
||||
"slogan": "Self-hosted, distributed Durable Objects powered by Deno.",
|
||||
"compose": "c2VydmljZXM6CiAgY2VsbGQ6CiAgICBpbWFnZTogJ2doY3IuaW8vZGVub2xhbmQvY2VsbGQ6JHtDRUxMRF9WRVJTSU9OOi1sYXRlc3R9JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0VMTERfODA4MAogICAgICAtICdDRUxMRF9CVUNLRVQ9JHtDRUxMRF9CVUNLRVQ6P30nCiAgICAgIC0gJ1MzX0VORFBPSU5UPSR7UzNfRU5EUE9JTlQ6LX0nCiAgICAgIC0gJ0FXU19SRUdJT049JHtBV1NfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBV1NfQUNDRVNTX0tFWV9JRD0ke0FXU19BQ0NFU1NfS0VZX0lEOj99JwogICAgICAtICdBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JHtBV1NfU0VDUkVUX0FDQ0VTU19LRVk6P30nCiAgICAgIC0gJ0FXU19TRVNTSU9OX1RPS0VOPSR7QVdTX1NFU1NJT05fVE9LRU46LX0nCiAgICAgIC0gJ0NFTExEX0FERFI9MC4wLjAuMDo4MDgwJwogICAgICAtICdDRUxMRF9BRFZFUlRJU0U9Y2VsbGQ6ODA4MCcKICAgICAgLSBDRUxMRF9XQVRDSD0vdmFyL2xpYi9jZWxsZC9zdGF0ZQogICAgICAtICdSVVNUX0xPRz0ke1JVU1RfTE9HOi1pbmZvfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2NlbGxkLWRhdGE6L3Zhci9saWIvY2VsbGQnCg==",
|
||||
"tags": [
|
||||
"deno",
|
||||
"durable-objects",
|
||||
"workers",
|
||||
"sqlite",
|
||||
"distributed",
|
||||
"backend",
|
||||
"serverless"
|
||||
],
|
||||
"category": "backend",
|
||||
"logo": "svgs/denoKV.svg",
|
||||
"minversion": "0.0.0",
|
||||
"template_last_updated_at": "2026-08-07T14:41:11+02:00",
|
||||
"port": "8080"
|
||||
},
|
||||
"changedetection": {
|
||||
"documentation": "https://github.com/dgtlmoon/changedetection.io/?utm_source=coolify.io",
|
||||
"slogan": "Website change detection monitor and notifications.",
|
||||
|
||||
@@ -536,6 +536,25 @@
|
||||
"template_last_updated_at": "2026-03-13T12:05:06+05:30",
|
||||
"port": "8080"
|
||||
},
|
||||
"celld": {
|
||||
"documentation": "https://celld.dev/docs?utm_source=coolify.io",
|
||||
"slogan": "Self-hosted, distributed Durable Objects powered by Deno.",
|
||||
"compose": "c2VydmljZXM6CiAgY2VsbGQ6CiAgICBpbWFnZTogJ2doY3IuaW8vZGVub2xhbmQvY2VsbGQ6JHtDRUxMRF9WRVJTSU9OOi1sYXRlc3R9JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX0NFTExEXzgwODAKICAgICAgLSAnQ0VMTERfQlVDS0VUPSR7Q0VMTERfQlVDS0VUOj99JwogICAgICAtICdTM19FTkRQT0lOVD0ke1MzX0VORFBPSU5UOi19JwogICAgICAtICdBV1NfUkVHSU9OPSR7QVdTX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnQVdTX0FDQ0VTU19LRVlfSUQ9JHtBV1NfQUNDRVNTX0tFWV9JRDo/fScKICAgICAgLSAnQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7QVdTX1NFQ1JFVF9BQ0NFU1NfS0VZOj99JwogICAgICAtICdBV1NfU0VTU0lPTl9UT0tFTj0ke0FXU19TRVNTSU9OX1RPS0VOOi19JwogICAgICAtICdDRUxMRF9BRERSPTAuMC4wLjA6ODA4MCcKICAgICAgLSAnQ0VMTERfQURWRVJUSVNFPWNlbGxkOjgwODAnCiAgICAgIC0gQ0VMTERfV0FUQ0g9L3Zhci9saWIvY2VsbGQvc3RhdGUKICAgICAgLSAnUlVTVF9MT0c9JHtSVVNUX0xPRzotaW5mb30nCiAgICB2b2x1bWVzOgogICAgICAtICdjZWxsZC1kYXRhOi92YXIvbGliL2NlbGxkJwo=",
|
||||
"tags": [
|
||||
"deno",
|
||||
"durable-objects",
|
||||
"workers",
|
||||
"sqlite",
|
||||
"distributed",
|
||||
"backend",
|
||||
"serverless"
|
||||
],
|
||||
"category": "backend",
|
||||
"logo": "svgs/denoKV.svg",
|
||||
"minversion": "0.0.0",
|
||||
"template_last_updated_at": "2026-08-07T14:41:11+02:00",
|
||||
"port": "8080"
|
||||
},
|
||||
"changedetection": {
|
||||
"documentation": "https://github.com/dgtlmoon/changedetection.io/?utm_source=coolify.io",
|
||||
"slogan": "Website change detection monitor and notifications.",
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
it('includes a celld one-click service template', function () {
|
||||
$compose = file_get_contents(__DIR__.'/../../templates/compose/celld.yaml');
|
||||
|
||||
expect($compose)
|
||||
->toContain('ghcr.io/denoland/celld:${CELLD_VERSION:-latest}')
|
||||
->toContain('SERVICE_URL_CELLD_8080')
|
||||
->toContain('CELLD_BUCKET=${CELLD_BUCKET:?}')
|
||||
->toContain('S3_ENDPOINT=${S3_ENDPOINT:-}')
|
||||
->toContain('CELLD_ADDR=0.0.0.0:8080')
|
||||
->toContain('CELLD_ADVERTISE=celld:8080')
|
||||
->toContain('celld-data:/var/lib/celld');
|
||||
|
||||
foreach (['service-templates.json', 'service-templates-latest.json'] as $templateFile) {
|
||||
$templates = json_decode(
|
||||
file_get_contents(__DIR__."/../../templates/{$templateFile}"),
|
||||
associative: true,
|
||||
flags: JSON_THROW_ON_ERROR,
|
||||
);
|
||||
|
||||
expect($templates)->toHaveKey('celld');
|
||||
expect($templates['celld']['port'] ?? null)->toBe('8080');
|
||||
expect($templates['celld']['logo'] ?? null)->toBe('svgs/denoKV.svg');
|
||||
expect($templates['celld']['category'] ?? null)->toBe('backend');
|
||||
|
||||
$generatedCompose = base64_decode($templates['celld']['compose'], strict: true);
|
||||
|
||||
expect($generatedCompose)
|
||||
->toContain('ghcr.io/denoland/celld:${CELLD_VERSION:-latest}')
|
||||
->toContain('CELLD_BUCKET=${CELLD_BUCKET:?}');
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user