mirror of
https://github.com/tiennm99/coolify.git
synced 2026-10-20 02:17:09 +00:00
feat(service): add Celld one-click service template (#11155)
This commit is contained in:
4 files changed
+95
No files matched your search
@@ -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",
|
"template_last_updated_at": "2026-03-13T12:05:06+05:30",
|
||||||
"port": "8080"
|
"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": {
|
"changedetection": {
|
||||||
"documentation": "https://github.com/dgtlmoon/changedetection.io/?utm_source=coolify.io",
|
"documentation": "https://github.com/dgtlmoon/changedetection.io/?utm_source=coolify.io",
|
||||||
"slogan": "Website change detection monitor and notifications.",
|
"slogan": "Website change detection monitor and notifications.",
|
||||||
|
|||||||
@@ -536,6 +536,25 @@
|
|||||||
"template_last_updated_at": "2026-03-13T12:05:06+05:30",
|
"template_last_updated_at": "2026-03-13T12:05:06+05:30",
|
||||||
"port": "8080"
|
"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": {
|
"changedetection": {
|
||||||
"documentation": "https://github.com/dgtlmoon/changedetection.io/?utm_source=coolify.io",
|
"documentation": "https://github.com/dgtlmoon/changedetection.io/?utm_source=coolify.io",
|
||||||
"slogan": "Website change detection monitor and notifications.",
|
"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