From 0cad52b9295537356dfb9cda90f3dd7ab87999c7 Mon Sep 17 00:00:00 2001 From: ShadowArcanist Date: Sun, 9 Feb 2025 11:58:34 +0530 Subject: [PATCH 1/2] Added All services pages --- docs/.vitepress/config.mts | 152 +- .../images/services/activepieces-banner.webp | Bin 5760 -> 0 bytes docs/public/images/services/anythingllm.webp | Bin 3706 -> 3930 bytes .../{covers => services}/browserless.webp | Bin .../fileflows.webp} | Bin .../overseerr.webp} | Bin .../plex.webp} | Bin .../prowlarr.webp} | Bin .../radarr.webp} | Bin .../sonarr.webp} | Bin docs/public/images/services/zipline1.webp | Bin 0 -> 9666 bytes docs/public/images/services/zipline2.webp | Bin 0 -> 6396 bytes docs/services/activepieces.md | 249 ++- docs/services/anythingllm.md | 156 +- docs/services/appsmith.md | 41 + docs/services/appwrite.md | 1467 ++++++++--------- docs/services/argilla.md | 18 + docs/services/authentik.md | 18 +- docs/services/babybuddy.md | 23 +- docs/services/beszel.md | 24 + docs/services/browserless.md | 26 +- docs/services/budge.md | 15 +- docs/services/changedetection.md | 12 +- docs/services/chaskiq.md | 16 + docs/services/chatwoot.md | 15 + docs/services/classicpress.md | 13 +- docs/services/cloudflared.md | 16 + docs/services/code-server.md | 16 +- docs/services/dashboard.md | 8 +- docs/services/directus.md | 24 +- docs/services/docker-registry.md | 16 + docs/services/docmost.md | 21 + docs/services/docuseal.md | 19 + docs/services/dokuwiki.md | 10 +- docs/services/dozzle.md | 19 + docs/services/duplicati.md | 10 +- docs/services/emby-stat.md | 8 +- docs/services/emby.md | 10 +- docs/services/fider.md | 8 +- docs/services/filebrowser.md | 12 +- docs/services/fileflows.md | 33 + docs/services/firefly-iii.md | 12 +- docs/services/forgejo.md | 32 + docs/services/formbricks.md | 9 +- docs/services/ghost.md | 5 +- docs/services/gitea.md | 4 +- docs/services/gitlab.md | 20 + docs/services/glance.md | 15 + docs/services/glances.md | 16 + docs/services/glitchtip.md | 4 +- docs/services/gotenberg.md | 19 + docs/services/grafana.md | 6 +- docs/services/grocy.md | 4 +- docs/services/heimdall.md | 10 +- docs/services/homepage.md | 18 + docs/services/infisical.md | 19 + docs/services/invoice-ninja.md | 16 + docs/services/jellyfin.md | 8 +- docs/services/jenkins.md | 16 + docs/services/kimai.md | 23 + docs/services/kuzzle.md | 6 +- docs/services/labelstudio.md | 19 + docs/services/langfuse.md | 35 + docs/services/listmonk.md | 20 + docs/services/litellm.md | 22 + docs/services/logto.md | 5 +- docs/services/mailpit.md | 17 + docs/services/mediawiki.md | 27 + docs/services/meilisearch.md | 3 +- docs/services/metabase.md | 3 +- docs/services/metube.md | 3 +- docs/services/minecraft.md | 15 + docs/services/minio.md | 6 +- docs/services/mixpost.md | 16 + docs/services/moodle.md | 16 + docs/services/mosquitto.md | 15 + docs/services/n8n.md | 20 + docs/services/nextcloud.md | 19 + docs/services/nexus.md | 32 + docs/services/nitropage.md | 30 + docs/services/nocodb.md | 21 + docs/services/odoo.md | 18 + docs/services/ollama.md | 21 + docs/services/openblocks.md | 17 + docs/services/outline.md | 18 + docs/services/overseerr.md | 20 + docs/services/overview.md | 100 +- docs/services/pairdrop.md | 15 + docs/services/penpot.md | 22 + docs/services/phpmyadmin.md | 15 + docs/services/plane.md | 23 + docs/services/plausible.md | 20 +- docs/services/plex.md | 31 + docs/services/plunk.md | 22 + docs/services/pocketbase.md | 16 + docs/services/posthog.md | 16 + docs/services/prefect.md | 21 + docs/services/prowlarr.md | 20 + docs/services/qdrant.md | 17 + docs/services/rabbitmq.md | 16 + docs/services/radarr.md | 19 + docs/services/reactive-resume.md | 16 + docs/services/rocketchat.md | 22 + docs/services/searxng.md | 15 + docs/services/shlink.md | 15 + docs/services/slash.md | 17 + docs/services/snapdrop.md | 13 + docs/services/sonarr.md | 19 + docs/services/statusnook.md | 3 +- docs/services/stirling-pdf.md | 16 + docs/services/supabase.md | 19 + docs/services/syncthing.md | 16 + docs/services/tolgee.md | 17 + docs/services/trigger.md | 16 + docs/services/twenty.md | 19 + docs/services/umami.md | 23 + docs/services/unleash.md | 20 + docs/services/unstructured.md | 24 + docs/services/uptime-kuma.md | 16 + docs/services/vaultwarden.md | 13 + docs/services/vikunja.md | 20 + docs/services/weaviate.md | 15 + docs/services/weblate.md | 20 + docs/services/whoogle.md | 15 + docs/services/windmill.md | 23 + docs/services/wordpress.md | 56 + docs/services/zipline.md | 24 + 127 files changed, 2923 insertions(+), 1117 deletions(-) delete mode 100644 docs/public/images/services/activepieces-banner.webp rename docs/public/images/{covers => services}/browserless.webp (100%) rename docs/public/images/{screenshots/fileflows_screenshot.webp => services/fileflows.webp} (100%) rename docs/public/images/{screenshots/overseerr_screenshot.webp => services/overseerr.webp} (100%) rename docs/public/images/{screenshots/plex_screenshot.webp => services/plex.webp} (100%) rename docs/public/images/{screenshots/prowlarr_screenshot.webp => services/prowlarr.webp} (100%) rename docs/public/images/{screenshots/radarr_screenshot.webp => services/radarr.webp} (100%) rename docs/public/images/{screenshots/sonarr_screenshot.webp => services/sonarr.webp} (100%) create mode 100644 docs/public/images/services/zipline1.webp create mode 100644 docs/public/images/services/zipline2.webp create mode 100644 docs/services/appsmith.md create mode 100644 docs/services/argilla.md create mode 100644 docs/services/beszel.md create mode 100644 docs/services/chaskiq.md create mode 100644 docs/services/chatwoot.md create mode 100644 docs/services/cloudflared.md create mode 100644 docs/services/docker-registry.md create mode 100644 docs/services/docmost.md create mode 100644 docs/services/docuseal.md create mode 100644 docs/services/dozzle.md create mode 100644 docs/services/fileflows.md create mode 100644 docs/services/forgejo.md create mode 100644 docs/services/gitlab.md create mode 100644 docs/services/glance.md create mode 100644 docs/services/glances.md create mode 100644 docs/services/gotenberg.md create mode 100644 docs/services/homepage.md create mode 100644 docs/services/infisical.md create mode 100644 docs/services/invoice-ninja.md create mode 100644 docs/services/jenkins.md create mode 100644 docs/services/kimai.md create mode 100644 docs/services/labelstudio.md create mode 100644 docs/services/langfuse.md create mode 100644 docs/services/listmonk.md create mode 100644 docs/services/litellm.md create mode 100644 docs/services/mailpit.md create mode 100644 docs/services/mediawiki.md create mode 100644 docs/services/minecraft.md create mode 100644 docs/services/mixpost.md create mode 100644 docs/services/moodle.md create mode 100644 docs/services/mosquitto.md create mode 100644 docs/services/n8n.md create mode 100644 docs/services/nextcloud.md create mode 100644 docs/services/nexus.md create mode 100644 docs/services/nitropage.md create mode 100644 docs/services/nocodb.md create mode 100644 docs/services/odoo.md create mode 100644 docs/services/ollama.md create mode 100644 docs/services/openblocks.md create mode 100644 docs/services/outline.md create mode 100644 docs/services/overseerr.md create mode 100644 docs/services/pairdrop.md create mode 100644 docs/services/penpot.md create mode 100644 docs/services/phpmyadmin.md create mode 100644 docs/services/plane.md create mode 100644 docs/services/plex.md create mode 100644 docs/services/plunk.md create mode 100644 docs/services/pocketbase.md create mode 100644 docs/services/posthog.md create mode 100644 docs/services/prefect.md create mode 100644 docs/services/prowlarr.md create mode 100644 docs/services/qdrant.md create mode 100644 docs/services/rabbitmq.md create mode 100644 docs/services/radarr.md create mode 100644 docs/services/reactive-resume.md create mode 100644 docs/services/rocketchat.md create mode 100644 docs/services/searxng.md create mode 100644 docs/services/shlink.md create mode 100644 docs/services/slash.md create mode 100644 docs/services/snapdrop.md create mode 100644 docs/services/sonarr.md create mode 100644 docs/services/stirling-pdf.md create mode 100644 docs/services/supabase.md create mode 100644 docs/services/syncthing.md create mode 100644 docs/services/tolgee.md create mode 100644 docs/services/trigger.md create mode 100644 docs/services/twenty.md create mode 100644 docs/services/umami.md create mode 100644 docs/services/unleash.md create mode 100644 docs/services/unstructured.md create mode 100644 docs/services/uptime-kuma.md create mode 100644 docs/services/vaultwarden.md create mode 100644 docs/services/vikunja.md create mode 100644 docs/services/weaviate.md create mode 100644 docs/services/weblate.md create mode 100644 docs/services/whoogle.md create mode 100644 docs/services/windmill.md create mode 100644 docs/services/wordpress.md create mode 100644 docs/services/zipline.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 52bff057..7b9137cb 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -125,42 +125,122 @@ export default defineConfig({ { text: 'Overview', link: '/services/overview', - // items: [ - // { text: 'ActivePieces', link: '/services/activepieces' }, - // { text: 'AnythingLLM', link: '/services/anythingllm' }, - // { text: 'Appwrite', link: '/services/appwrite' }, - // { text: 'Authentik', link: '/services/authentik' }, - // { text: 'BabyBuddy', link: '/services/babybuddy' }, - // { text: 'Browserless', link: '/services/browserless' }, - // { text: 'BudgE', link: '/services/budge' }, - // { text: 'ChangeDetection', link: '/services/change-detection' }, - // { text: 'ClassicPress', link: '/services/classicpress' }, - // { text: 'Code-Server', link: '/services/code-server' }, - // { text: 'Dashboard', link: '/services/dashboard' }, - // { text: 'DokuWiki', link: '/services/dokuwiki' }, - // { text: 'Duplicati', link: '/services/duplicati' }, - // { text: 'Emby Stat', link: '/services/emby-stat' }, - // { text: 'Emby', link: '/services/emby' }, - // { text: 'Fider', link: '/services/fider' }, - // { text: 'Filebrowser', link: '/services/filebrowser' }, - // { text: 'Firefly III', link: '/services/firefly-iii' }, - // { text: 'Formbricks', link: '/services/formbricks' }, - // { text: 'Ghost', link: '/services/ghost' }, - // { text: 'Gitea', link: '/services/gitea' }, - // { text: 'Glitchtip', link: '/services/glitchtip' }, - // { text: 'Grafana', link: '/services/grafana' }, - // { text: 'Grocy', link: '/services/grocy' }, - // { text: 'Heimdall', link: '/services/heimdall' }, - // { text: 'Jellyfin', link: '/services/jellyfin' }, - // { text: 'Kuzzle', link: '/services/kuzzle' }, - // { text: 'Logto', link: '/services/logto' }, - // { text: 'Meilisearch', link: '/services/meilisearch' }, - // { text: 'Metabase', link: '/services/metabase' }, - // { text: 'Metube', link: '/services/metube' }, - // { text: 'MinIO', link: '/services/minio' }, - // { text: 'Plausible', link: '/services/plausible' }, - // { text: 'Statusnook', link: '/services/statusnook' }, - // ] + items: [ + { text: 'ActivePieces', link: '/services/activepieces' }, + { text: 'AnythingLLM', link: '/services/anythingllm' }, + { text: 'Appsmith', link: '/services/appsmith' }, + { text: 'Appwrite', link: '/services/appwrite' }, + { text: 'Argilla', link: '/services/argilla' }, + { text: 'Authentik', link: '/services/authentik' }, + { text: 'Baby Buddy', link: '/services/babybuddy' }, + { text: 'Beszel', link: '/services/beszel' }, + { text: 'Browserless', link: '/services/browserless' }, + { text: 'BudgE', link: '/services/budge' }, + { text: 'Change Detection', link: '/services/changedetection' }, + { text: 'Chaskiq', link: '/services/chaskiq' }, + { text: 'Chatwoot', link: '/services/chatwoot' }, + { text: 'ClassicPress', link: '/services/classicpress' }, + { text: 'Cloudflared', link: '/services/cloudflared' }, + { text: 'Code Server', link: '/services/code-server' }, + { text: 'Dashboard', link: '/services/dashboard' }, + { text: 'Directus', link: '/services/directus' }, + { text: 'Docker Registry', link: '/services/docker-registry' }, + { text: 'Docmost', link: '/services/docmost' }, + { text: 'Docuseal', link: '/services/docuseal' }, + { text: 'DokuWiki', link: '/services/dokuwiki' }, + { text: 'Dozzle', link: '/services/dozzle' }, + { text: 'Duplicati', link: '/services/duplicati' }, + { text: 'Emby', link: '/services/emby' }, + { text: 'Emby Stat', link: '/services/emby-stat' }, + { text: 'Fider', link: '/services/fider' }, + { text: 'Filebrowser', link: '/services/filebrowser' }, + { text: 'FileFlows', link: '/services/fileflows' }, + { text: 'Firefly III', link: '/services/firefly-iii' }, + { text: 'Forgejo', link: '/services/forgejo' }, + { text: 'Formbricks', link: '/services/formbricks' }, + { text: 'Ghost', link: '/services/ghost' }, + { text: 'Gitea', link: '/services/gitea' }, + { text: 'GitLab', link: '/services/gitlab' }, + { text: 'Glance', link: '/services/glance' }, + { text: 'Glances', link: '/services/glances' }, + { text: 'GlitchTip', link: '/services/glitchtip' }, + { text: 'Gotenberg', link: '/services/gotenberg' }, + { text: 'Grafana', link: '/services/grafana' }, + { text: 'Grocy', link: '/services/grocy' }, + { text: 'Heimdall', link: '/services/heimdall' }, + { text: 'Homepage', link: '/services/homepage' }, + { text: 'Infisical', link: '/services/infisical' }, + { text: 'Invoice Ninja', link: '/services/invoice-ninja' }, + { text: 'Jellyfin', link: '/services/jellyfin' }, + { text: 'Jenkins', link: '/services/jenkins' }, + { text: 'Kimai', link: '/services/kimai' }, + { text: 'Kuzzle', link: '/services/kuzzle' }, + { text: 'Label Studio', link: '/services/labelstudio' }, + { text: 'Langfuse', link: '/services/langfuse' }, + { text: 'Listmonk', link: '/services/listmonk' }, + { text: 'Litellm', link: '/services/litellm' }, + { text: 'Logto', link: '/services/logto' }, + { text: 'Mailpit', link: '/services/mailpit' }, + { text: 'MediaWiki', link: '/services/mediawiki' }, + { text: 'MeiliSearch', link: '/services/meilisearch' }, + { text: 'Metabase', link: '/services/metabase' }, + { text: 'Metube', link: '/services/metube' }, + { text: 'Minecraft', link: '/services/minecraft' }, + { text: 'MinIO', link: '/services/minio' }, + { text: 'Mixpost', link: '/services/mixpost' }, + { text: 'Moodle', link: '/services/moodle' }, + { text: 'Mosquitto', link: '/services/mosquitto' }, + { text: 'N8N', link: '/services/n8n' }, + { text: 'Nextcloud', link: '/services/nextcloud' }, + { text: 'Sonatype Nexus', link: '/services/nexus' }, + { text: 'Nitropage', link: '/services/nitropage' }, + { text: 'NocoDB', link: '/services/nocodb' }, + { text: 'Odoo', link: '/services/odoo' }, + { text: 'Ollama', link: '/services/ollama' }, + { text: 'Openblocks', link: '/services/openblocks' }, + { text: 'Outline', link: '/services/outline' }, + { text: 'Overseerr', link: '/services/overseerr' }, + { text: 'Pairdrop', link: '/services/pairdrop' }, + { text: 'Penpot', link: '/services/penpot' }, + { text: 'phpMyAdmin', link: '/services/phpmyadmin' }, + { text: 'Plane', link: '/services/plane' }, + { text: 'Plausible Analytics', link: '/services/plausible' }, + { text: 'Plex', link: '/services/plex' }, + { text: 'Plunk', link: '/services/plunk' }, + { text: 'Pocketbase', link: '/services/pocketbase' }, + { text: 'PostHog', link: '/services/posthog' }, + { text: 'Prefect', link: '/services/prefect' }, + { text: 'Prowlarr', link: '/services/prowlarr' }, + { text: 'Qdrant', link: '/services/qdrant' }, + { text: 'RabbitMQ', link: '/services/rabbitmq' }, + { text: 'Radarr', link: '/services/radarr' }, + { text: 'Reactive Resume', link: '/services/reactive-resume' }, + { text: 'Rocket.Chat', link: '/services/rocketchat' }, + { text: 'SearXNG', link: '/services/searxng' }, + { text: 'Shlink', link: '/services/shlink' }, + { text: 'Slash', link: '/services/slash' }, + { text: 'Snapdrop', link: '/services/snapdrop' }, + { text: 'Sonarr', link: '/services/sonarr' }, + { text: 'StatusNook', link: '/services/statusnook' }, + { text: 'Stirling PDF', link: '/services/stirling-pdf' }, + { text: 'Supabase', link: '/services/supabase' }, + { text: 'Syncthing', link: '/services/syncthing' }, + { text: 'Tolgee', link: '/services/tolgee' }, + { text: 'Trigger', link: '/services/trigger' }, + { text: 'Twenty', link: '/services/twenty' }, + { text: 'Umami', link: '/services/umami' }, + { text: 'Unleash', link: '/services/unleash' }, + { text: 'Unstructured', link: '/services/unstructured' }, + { text: 'Uptime Kuma', link: '/services/uptime-kuma' }, + { text: 'Vaultwarden', link: '/services/vaultwarden' }, + { text: 'Vikunja', link: '/services/vikunja' }, + { text: 'Weaviate', link: '/services/weaviate' }, + { text: 'Weblate', link: '/services/weblate' }, + { text: 'Whoogle', link: '/services/whoogle' }, + { text: 'Windmill', link: '/services/windmill' }, + { text: 'WordPress', link: '/services/wordpress' }, + { text: 'Zipline', link: '/services/zipline' } + ] } ], }, diff --git a/docs/public/images/services/activepieces-banner.webp b/docs/public/images/services/activepieces-banner.webp deleted file mode 100644 index f3eb0ff46cbc0b7c51688833688f0391af0d9fa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5760 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 B2e$wK diff --git a/docs/public/images/covers/browserless.webp b/docs/public/images/services/browserless.webp similarity index 100% rename from docs/public/images/covers/browserless.webp rename to docs/public/images/services/browserless.webp diff --git a/docs/public/images/screenshots/fileflows_screenshot.webp b/docs/public/images/services/fileflows.webp similarity index 100% rename from docs/public/images/screenshots/fileflows_screenshot.webp rename to docs/public/images/services/fileflows.webp diff --git a/docs/public/images/screenshots/overseerr_screenshot.webp b/docs/public/images/services/overseerr.webp similarity index 100% rename from docs/public/images/screenshots/overseerr_screenshot.webp rename to docs/public/images/services/overseerr.webp diff --git a/docs/public/images/screenshots/plex_screenshot.webp b/docs/public/images/services/plex.webp similarity index 100% rename from docs/public/images/screenshots/plex_screenshot.webp rename to docs/public/images/services/plex.webp diff --git a/docs/public/images/screenshots/prowlarr_screenshot.webp b/docs/public/images/services/prowlarr.webp similarity index 100% rename from docs/public/images/screenshots/prowlarr_screenshot.webp rename to docs/public/images/services/prowlarr.webp diff --git a/docs/public/images/screenshots/radarr_screenshot.webp b/docs/public/images/services/radarr.webp similarity index 100% rename from docs/public/images/screenshots/radarr_screenshot.webp rename to docs/public/images/services/radarr.webp diff --git a/docs/public/images/screenshots/sonarr_screenshot.webp b/docs/public/images/services/sonarr.webp similarity index 100% rename from docs/public/images/screenshots/sonarr_screenshot.webp rename to docs/public/images/services/sonarr.webp diff --git a/docs/public/images/services/zipline1.webp b/docs/public/images/services/zipline1.webp new file mode 100644 index 0000000000000000000000000000000000000000..8989be556731a917c786492b545c85beab134e89 GIT binary patch literal 9666 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 E0PCXfDF6Tf literal 0 HcmV?d00001 diff --git a/docs/public/images/services/zipline2.webp b/docs/public/images/services/zipline2.webp new file mode 100644 index 0000000000000000000000000000000000000000..652384773ebc97b3db6757b797658480b8ea56a0 GIT binary patch literal 6396 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 Kuf5CVQ@{Y@- - It may take up to 5 minutes for the services to go healthy after - deployment. Please be patient and avoid assuming the services are not - working during this period. - type: info - - title: Default Credentials - content: - items: - - icon: 👤 - label: Username - value: admin - - icon: 🔑 - label: Password - value: admin - - title: External Links - content: - items: - - code: Official Website - description: https://www.activepieces.com?utm_source=coolify.io - - code: Official Documentation - description: https://www.activepieces.com/docs?utm_source=coolify.io - - code: GitHub Repository - description: https://github.com/activepieces/activepieces?utm_source=coolify.io -compose: - services: - activepieces: - image: ghcr.io/activepieces/activepieces:latest - environment: - - SERVICE_FQDN_ACTIVEPIECESS - - AP_API_KEY=$SERVICE_PASSWORD_64_APIKEY - - AP_ENCRYPTION_KEY=$SERVICE_PASSWORD_ENCRYPTIONKEY - - >- - AP_ENGINE_EXECUTABLE_PATH=${AP_ENGINE_EXECUTABLE_PATH:-dist/packages/engine/main.js} - - AP_ENVIRONMENT=${AP_ENVIRONMENT:-prod} - - AP_EXECUTION_MODE=${AP_EXECUTION_MODE:-UNSANDBOXED} - - AP_FRONTEND_URL=${SERVICE_FQDN_ACTIVEPIECES} - - AP_JWT_SECRET=$SERVICE_PASSWORD_64_JWT - - AP_POSTGRES_DATABASE=${POSTGRES_DB:-activepieces} - - AP_POSTGRES_HOST=${POSTGRES_HOST:-postgres} - - AP_POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} - - AP_POSTGRES_PORT=${POSTGRES_PORT:-5432} - - AP_POSTGRES_USERNAME=$SERVICE_USER_POSTGRES - - AP_REDIS_HOST=${REDIS_HOST:-redis} - - AP_REDIS_PORT=${REDIS_PORT:-6379} - - AP_SANDBOX_RUN_TIME_SECONDS=${AP_SANDBOX_RUN_TIME_SECONDS:-600} - - AP_TELEMETRY_ENABLED=${AP_TELEMETRY_ENABLED:-false} - - >- - AP_TEMPLATES_SOURCE_URL=${AP_TEMPLATES_SOURCE_URL:-https://cloud.activepieces.com/api/v1/flow-templates} - - >- - AP_TRIGGER_DEFAULT_POLL_INTERVAL=${AP_TRIGGER_DEFAULT_POLL_INTERVAL:-5} - - AP_WEBHOOK_TIMEOUT_SECONDS=${AP_WEBHOOK_TIMEOUT_SECONDS:-30} - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_started - healthcheck: - test: - - CMD - - curl - - '-f' - - http://127.0.0.1:80 - interval: 5s - timeout: 20s - retries: 10 - postgres: - image: postgres:latest - environment: - - POSTGRES_DB=${POSTGRES_DB:-activepieces} - - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} - - POSTGRES_USER=${SERVICE_USER_POSTGRES} - - POSTGRES_PORT=${POSTGRES_PORT:-5432} - volumes: - - pg-data:/var/lib/postgresql/data - healthcheck: - test: - - CMD-SHELL - - pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} - interval: 5s - timeout: 20s - retries: 10 - redis: - image: redis:latest - volumes: - - redis_data:/data - healthcheck: - test: - - CMD - - redis-cli - - ping - interval: 5s - timeout: 20s - retries: 10 +# tabs: +# - title: Overview & Requirements +# content: +# items: +# - icon: 🔲 +# label: CPU +# value: 2 Cores +# - icon: 💾 +# label: RAM +# value: 2 GB +# - icon: 💿 +# label: Storage +# value: 10 GB +# - icon: 🌐 +# label: Network +# value: IPv4 Address Required +# - icon: 🖥️ +# label: Supported OS +# value: All Linux-based distributions +# - icon: 🌱 +# label: System Architecture +# value: ARM64, AMD64 (x86_64) +# message: +# icon: 🌱 +# value: >- +# It may take up to 5 minutes for the services to go healthy after +# deployment. Please be patient and avoid assuming the services are not +# working during this period. +# type: info +# - title: Default Credentials +# content: +# items: +# - icon: 👤 +# label: Username +# value: admin +# - icon: 🔑 +# label: Password +# value: admin +# - title: External Links +# content: +# items: +# - code: Official Website +# description: https://www.activepieces.com?utm_source=coolify.io +# - code: Official Documentation +# description: https://www.activepieces.com/docs?utm_source=coolify.io +# - code: GitHub Repository +# description: https://github.com/activepieces/activepieces?utm_source=coolify.io +# compose: +# services: +# activepieces: +# image: ghcr.io/activepieces/activepieces:latest +# environment: +# - SERVICE_FQDN_ACTIVEPIECESS +# - AP_API_KEY=$SERVICE_PASSWORD_64_APIKEY +# - AP_ENCRYPTION_KEY=$SERVICE_PASSWORD_ENCRYPTIONKEY +# - >- +# AP_ENGINE_EXECUTABLE_PATH=${AP_ENGINE_EXECUTABLE_PATH:-dist/packages/engine/main.js} +# - AP_ENVIRONMENT=${AP_ENVIRONMENT:-prod} +# - AP_EXECUTION_MODE=${AP_EXECUTION_MODE:-UNSANDBOXED} +# - AP_FRONTEND_URL=${SERVICE_FQDN_ACTIVEPIECES} +# - AP_JWT_SECRET=$SERVICE_PASSWORD_64_JWT +# - AP_POSTGRES_DATABASE=${POSTGRES_DB:-activepieces} +# - AP_POSTGRES_HOST=${POSTGRES_HOST:-postgres} +# - AP_POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} +# - AP_POSTGRES_PORT=${POSTGRES_PORT:-5432} +# - AP_POSTGRES_USERNAME=$SERVICE_USER_POSTGRES +# - AP_REDIS_HOST=${REDIS_HOST:-redis} +# - AP_REDIS_PORT=${REDIS_PORT:-6379} +# - AP_SANDBOX_RUN_TIME_SECONDS=${AP_SANDBOX_RUN_TIME_SECONDS:-600} +# - AP_TELEMETRY_ENABLED=${AP_TELEMETRY_ENABLED:-false} +# - >- +# AP_TEMPLATES_SOURCE_URL=${AP_TEMPLATES_SOURCE_URL:-https://cloud.activepieces.com/api/v1/flow-templates} +# - >- +# AP_TRIGGER_DEFAULT_POLL_INTERVAL=${AP_TRIGGER_DEFAULT_POLL_INTERVAL:-5} +# - AP_WEBHOOK_TIMEOUT_SECONDS=${AP_WEBHOOK_TIMEOUT_SECONDS:-30} +# depends_on: +# postgres: +# condition: service_healthy +# redis: +# condition: service_started +# healthcheck: +# test: +# - CMD +# - curl +# - '-f' +# - http://127.0.0.1:80 +# interval: 5s +# timeout: 20s +# retries: 10 +# postgres: +# image: postgres:latest +# environment: +# - POSTGRES_DB=${POSTGRES_DB:-activepieces} +# - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} +# - POSTGRES_USER=${SERVICE_USER_POSTGRES} +# - POSTGRES_PORT=${POSTGRES_PORT:-5432} +# volumes: +# - pg-data:/var/lib/postgresql/data +# healthcheck: +# test: +# - CMD-SHELL +# - pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB} +# interval: 5s +# timeout: 20s +# retries: 10 +# redis: +# image: redis:latest +# volumes: +# - redis_data:/data +# healthcheck: +# test: +# - CMD +# - redis-cli +# - ping +# interval: 5s +# timeout: 20s +# retries: 10 --- - --> - -![ActivePieces](/images/services/activepieces-banner.webp) + ## What is ActivePieces @@ -139,11 +138,11 @@ Your friendliest open source all-in-one automation tool, designed to be extensib -## Installation & Configuration + - +/> --> diff --git a/docs/services/anythingllm.md b/docs/services/anythingllm.md index a28911f3..17914d20 100644 --- a/docs/services/anythingllm.md +++ b/docs/services/anythingllm.md @@ -1,85 +1,85 @@ --- title: AnythingLLM -tabs: - - title: Overview & Requirements - content: - items: - - icon: 🔲 - label: CPU - value: 2 Cores - - icon: 💾 - label: RAM - value: 2 GB - - icon: 💿 - label: Storage - value: 10 GB - - icon: 🌐 - label: Network - value: IPv4 Address Required - - icon: 🖥️ - label: Supported OS - value: All Linux-based distributions - - icon: 🌱 - label: System Architecture - value: ARM64, AMD64 (x86_64) - message: - icon: 🌱 - value: >- - It may take up to 5 minutes for the services to go healthy after - deployment. Please be patient and avoid assuming the services are not - working during this period. - type: info - - title: Default Credentials - content: - items: - - icon: 👤 - label: Username - value: admin - - icon: 🔑 - label: Password - value: admin - - title: External Links - content: - items: - - code: Official Website - description: https://www.activepieces.com?utm_source=coolify.io - - code: Official Documentation - description: https://www.activepieces.com/docs?utm_source=coolify.io - - code: GitHub Repository - description: https://github.com/activepieces/activepieces?utm_source=coolify.io -compose: - services: - anything-llm: - image: mintplexlabs/anythingllm - environment: - - SERVICE_FQDN_ANYTHINGLLM_3001 - - STORAGE_DIR=/app/server/storage - - DISABLE_TELEMETRY=${DISABLE_TELEMETRY:-true} - - PASSWORDLOWERCASE=${PASSWORDLOWERCASE:-1} - - PASSWORDMAXCHAR=${PASSWORDMAXCHAR:-250} - - PASSWORDMINCHAR=${PASSWORDMINCHAR:-6} - - PASSWORDNUMERIC=${PASSWORDNUMERIC:-1} - - PASSWORDREQUIREMENTS=${PASSWORDREQUIREMENTS:-1} - - PASSWORDSYMBOL=${PASSWORDSYMBOL:-1} - - PASSWORDUPPERCASE=${PASSWORDUPPERCASE:-1} - - SIG_KEY=${SERVICE_PASSWORD_SIGKEY} - - SIG_SALT=${SERVICE_PASSWORD_SIGSALT} - - JWT_SECRET=${SERVICE_PASSWORD_JWTSECRET} - - AUTH_TOKEN=${SERVICE_PASSWORD_AUTHTOKEN} - - SERVER_PORT=${SERVER_PORT:-3001} - cap_add: - - SYS_ADMIN - volumes: - - anythingllm-storage:/app/server/storage - - anythingllm-hot:/app/collector/hotdir - - anythingllm-outputs:/app/collector/outputs - user: ${UID:-1000}:${GID:-1000} +# tabs: +# - title: Overview & Requirements +# content: +# items: +# - icon: 🔲 +# label: CPU +# value: 2 Cores +# - icon: 💾 +# label: RAM +# value: 2 GB +# - icon: 💿 +# label: Storage +# value: 10 GB +# - icon: 🌐 +# label: Network +# value: IPv4 Address Required +# - icon: 🖥️ +# label: Supported OS +# value: All Linux-based distributions +# - icon: 🌱 +# label: System Architecture +# value: ARM64, AMD64 (x86_64) +# message: +# icon: 🌱 +# value: >- +# It may take up to 5 minutes for the services to go healthy after +# deployment. Please be patient and avoid assuming the services are not +# working during this period. +# type: info +# - title: Default Credentials +# content: +# items: +# - icon: 👤 +# label: Username +# value: admin +# - icon: 🔑 +# label: Password +# value: admin +# - title: External Links +# content: +# items: +# - code: Official Website +# description: https://www.activepieces.com?utm_source=coolify.io +# - code: Official Documentation +# description: https://www.activepieces.com/docs?utm_source=coolify.io +# - code: GitHub Repository +# description: https://github.com/activepieces/activepieces?utm_source=coolify.io +# compose: +# services: +# anything-llm: +# image: mintplexlabs/anythingllm +# environment: +# - SERVICE_FQDN_ANYTHINGLLM_3001 +# - STORAGE_DIR=/app/server/storage +# - DISABLE_TELEMETRY=${DISABLE_TELEMETRY:-true} +# - PASSWORDLOWERCASE=${PASSWORDLOWERCASE:-1} +# - PASSWORDMAXCHAR=${PASSWORDMAXCHAR:-250} +# - PASSWORDMINCHAR=${PASSWORDMINCHAR:-6} +# - PASSWORDNUMERIC=${PASSWORDNUMERIC:-1} +# - PASSWORDREQUIREMENTS=${PASSWORDREQUIREMENTS:-1} +# - PASSWORDSYMBOL=${PASSWORDSYMBOL:-1} +# - PASSWORDUPPERCASE=${PASSWORDUPPERCASE:-1} +# - SIG_KEY=${SERVICE_PASSWORD_SIGKEY} +# - SIG_SALT=${SERVICE_PASSWORD_SIGSALT} +# - JWT_SECRET=${SERVICE_PASSWORD_JWTSECRET} +# - AUTH_TOKEN=${SERVICE_PASSWORD_AUTHTOKEN} +# - SERVER_PORT=${SERVER_PORT:-3001} +# cap_add: +# - SYS_ADMIN +# volumes: +# - anythingllm-storage:/app/server/storage +# - anythingllm-hot:/app/collector/hotdir +# - anythingllm-outputs:/app/collector/outputs +# user: ${UID:-1000}:${GID:-1000} --- - --> # AnythingLLM @@ -93,10 +93,10 @@ AnythingLLM is the easiest to use, all-in-one AI application that can do RAG, AI ![AnythingLLM](/images/services/anythingllm.gif) - +/> --> ## Links diff --git a/docs/services/appsmith.md b/docs/services/appsmith.md new file mode 100644 index 00000000..468525f0 --- /dev/null +++ b/docs/services/appsmith.md @@ -0,0 +1,41 @@ +--- +title: "Appsmith" +description: "Here you can find the documentation for hosting Appsmith with Coolify." +--- + +# Appsmith +![Appsmith](https://raw.githubusercontent.com/appsmithorg/appsmith/release/static/images/appsmith-in-100-seconds.png) + + +## What is Appsmith +Organizations build internal applications such as dashboards, database GUIs, admin panels, approval apps, customer support tools, etc. to help improve their business operations. + +Appsmith is an open-source developer tool that enables the rapid development of these applications. You can drag and drop pre-built widgets to build UI. + +Connect securely to your databases & APIs using its datasources. Write business logic to read & write data using queries & JavaScript. + +## Why Appsmith +Appsmith makes it easy to build a UI that talks to any datasource. You can create anything from simple CRUD apps to complicated multi-step workflows with a few simple steps: + +- Connect Datasource: Integrate with a database or API. Appsmith supports the most popular databases and REST APIs. +- Build UI: Use built-in widgets to build your app layout. +- Write Logic: Express your business logic using queries and JavaScript anywhere in the editor. +- Collaborate, Deploy, Share: Appsmith supports version control using Git to build apps in collaboration using branches to track and roll back changes. Deploy the app and share it with other users. + + +## Learning Resources +- [Documentation](https://docs.appsmith.com?utm_source=coolify.io) +- [Tutorials](https://docs.appsmith.com/getting-started/tutorials?utm_source=coolify.io) +- [Videos](https://www.youtube.com/appsmith?utm_source=coolify.io) +- [Templates](https://www.appsmith.com/templates?utm_source=coolify.io) + + +## Need Help? +- [Discord](https://discord.gg/rBTTVJp?utm_source=coolify.io) +- [Community Portal](https://community.appsmith.com/?utm_source=coolify.io) +- [support@appsmith.com](mailto:support@appsmith.com) + + +## Links +- [The official website ›](https://www.appsmith.com?utm_source=coolify.io) +- [GitHub ›](https://github.com/appsmithorg/appsmith?utm_source=coolify.io) diff --git a/docs/services/appwrite.md b/docs/services/appwrite.md index f50c9034..b7037415 100644 --- a/docs/services/appwrite.md +++ b/docs/services/appwrite.md @@ -1,744 +1,741 @@ --- title: Appwrite -compose: - services: - appwrite: - image: appwrite/appwrite:1.6.0 - container_name: appwrite - volumes: - - appwrite-uploads:/storage/uploads:rw - - appwrite-cache:/storage/cache:rw - - appwrite-config:/storage/config:rw - - appwrite-certificates:/storage/certificates:rw - - appwrite-functions:/storage/functions:rw - depends_on: - - appwrite-mariadb - - appwrite-redis - environment: - - SERVICE_FQDN_APPWRITE=/ - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_LOCALE=${_APP_LOCALE:-en} - - _APP_CONSOLE_WHITELIST_ROOT=${_APP_CONSOLE_WHITELIST_ROOT:-enabled} - - _APP_CONSOLE_WHITELIST_EMAILS=${_APP_CONSOLE_WHITELIST_EMAILS} - - _APP_CONSOLE_WHITELIST_IPS=${_APP_CONSOLE_WHITELIST_IPS} - - >- - _APP_CONSOLE_HOSTNAMES=${_APP_CONSOLE_HOSTNAMES:-localhost,appwrite.io,*.appwrite.io} - - _APP_SYSTEM_EMAIL_NAME=${_APP_SYSTEM_EMAIL_NAME:-Appwrite} - - >- - _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-team@appwrite.io} - - _APP_SYSTEM_TEAM_EMAIL=${_APP_SYSTEM_TEAM_EMAIL:-team@appwrite.io} - - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} - - _APP_SYSTEM_RESPONSE_FORMAT=${_APP_SYSTEM_RESPONSE_FORMAT} - - _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled} - - >- - _APP_OPTIONS_ROUTER_PROTECTION=${_APP_OPTIONS_ROUTER_PROTECTION:-disabled} - - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} - - >- - _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=${_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS:-disabled} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DOMAIN=$SERVICE_URL_APPWRITE - - _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE - - _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_SMTP_HOST=${_APP_SMTP_HOST} - - _APP_SMTP_PORT=${_APP_SMTP_PORT} - - _APP_SMTP_SECURE=${_APP_SMTP_SECURE} - - _APP_SMTP_USERNAME=${_APP_SMTP_USERNAME} - - _APP_SMTP_PASSWORD=${_APP_SMTP_PASSWORD} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_STORAGE_LIMIT=${_APP_STORAGE_LIMIT:-30000000} - - _APP_STORAGE_PREVIEW_LIMIT=${_APP_STORAGE_PREVIEW_LIMIT:-20000000} - - _APP_STORAGE_ANTIVIRUS=${_APP_STORAGE_ANTIVIRUS:-disabled} - - >- - _APP_STORAGE_ANTIVIRUS_HOST=${_APP_STORAGE_ANTIVIRUS_HOST:-appwrite-clamav} - - _APP_STORAGE_ANTIVIRUS_PORT=${_APP_STORAGE_ANTIVIRUS_PORT:-3310} - - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} - - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} - - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} - - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} - - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} - - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} - - >- - _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} - - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} - - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} - - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} - - >- - _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} - - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} - - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} - - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} - - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} - - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} - - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} - - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} - - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - - _APP_FUNCTIONS_SIZE_LIMIT=${_APP_FUNCTIONS_SIZE_LIMIT:-30000000} - - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} - - _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900} - - _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0} - - _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0} - - >- - _APP_FUNCTIONS_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES:-node-20.0,php-8.2,python-3.11,ruby-3.2} - - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_MAINTENANCE_INTERVAL=${_APP_MAINTENANCE_INTERVAL:-86400} - - _APP_MAINTENANCE_DELAY=${_APP_MAINTENANCE_DELAY} - - >- - _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION:-1209600} - - >- - _APP_MAINTENANCE_RETENTION_CACHE=${_APP_MAINTENANCE_RETENTION_CACHE:-2592000} - - >- - _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400} - - >- - _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600} - - >- - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=${_APP_MAINTENANCE_RETENTION_USAGE_HOURLY:-8640000} - - >- - _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400} - - _APP_SMS_PROVIDER=${_APP_SMS_PROVIDER} - - _APP_SMS_FROM=${_APP_SMS_FROM} - - _APP_GRAPHQL_MAX_BATCH_SIZE=${_APP_GRAPHQL_MAX_BATCH_SIZE:-10} - - _APP_GRAPHQL_MAX_COMPLEXITY=${_APP_GRAPHQL_MAX_COMPLEXITY:-250} - - _APP_GRAPHQL_MAX_DEPTH=${_APP_GRAPHQL_MAX_DEPTH:-3} - - _APP_VCS_GITHUB_APP_NAME=${_APP_VCS_GITHUB_APP_NAME} - - _APP_VCS_GITHUB_PRIVATE_KEY=${_APP_VCS_GITHUB_PRIVATE_KEY} - - _APP_VCS_GITHUB_APP_ID=${_APP_VCS_GITHUB_APP_ID} - - _APP_VCS_GITHUB_WEBHOOK_SECRET=${_APP_VCS_GITHUB_WEBHOOK_SECRET} - - _APP_VCS_GITHUB_CLIENT_SECRET=${_APP_VCS_GITHUB_CLIENT_SECRET} - - _APP_VCS_GITHUB_CLIENT_ID=${_APP_VCS_GITHUB_CLIENT_ID} - - >- - _APP_MIGRATIONS_FIREBASE_CLIENT_ID=${_APP_MIGRATIONS_FIREBASE_CLIENT_ID} - - >- - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET} - - _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY} - appwrite-console: - image: appwrite/console:5.0.12 - container_name: appwrite-console - environment: - - SERVICE_FQDN_APPWRITE=/console - appwrite-realtime: - image: appwrite/appwrite:1.6.0 - entrypoint: realtime - container_name: appwrite-realtime - depends_on: - - appwrite-mariadb - - appwrite-redis - environment: - - SERVICE_FQDN_APPWRITE=/v1/realtime - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - appwrite-worker-audits: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-audits - container_name: appwrite-worker-audits - depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - appwrite-worker-webhooks: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-webhooks - container_name: appwrite-worker-webhooks - depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} - - >- - _APP_SYSTEM_SECURITY_EMAIL_ADDRESS=${_APP_SYSTEM_SECURITY_EMAIL_ADDRESS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - appwrite-worker-deletes: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-deletes - container_name: appwrite-worker-deletes - depends_on: - - appwrite-redis - - appwrite-mariadb - volumes: - - appwrite-uploads:/storage/uploads:rw - - appwrite-cache:/storage/cache:rw - - appwrite-functions:/storage/functions:rw - - appwrite-builds:/storage/builds:rw - - appwrite-certificates:/storage/certificates:rw - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local} - - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} - - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} - - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} - - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} - - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} - - >- - _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} - - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} - - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} - - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} - - >- - _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} - - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} - - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} - - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} - - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} - - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} - - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} - - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} - - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} - - >- - _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400} - - >- - _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600} - - >- - _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION:-1209600} - appwrite-worker-databases: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-databases - container_name: appwrite-worker-databases - depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - appwrite-worker-builds: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-builds - container_name: appwrite-worker-builds - depends_on: - - appwrite-redis - - appwrite-mariadb - volumes: - - appwrite-functions:/storage/functions:rw - - appwrite-builds:/storage/builds:rw - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_VCS_GITHUB_APP_NAME=${_APP_VCS_GITHUB_APP_NAME} - - _APP_VCS_GITHUB_PRIVATE_KEY=${_APP_VCS_GITHUB_PRIVATE_KEY} - - _APP_VCS_GITHUB_APP_ID=${_APP_VCS_GITHUB_APP_ID} - - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} - - _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900} - - _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0} - - _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0} - - _APP_FUNCTIONS_SIZE_LIMIT=${_APP_FUNCTIONS_SIZE_LIMIT:-30000000} - - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} - - >- - _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=${_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS:-disabled} - - _APP_DOMAIN=$SERVICE_URL_APPWRITE - - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local} - - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} - - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} - - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} - - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} - - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} - - >- - _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} - - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} - - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} - - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} - - >- - _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} - - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} - - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} - - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} - - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} - - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} - - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} - - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} - - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - appwrite-worker-certificates: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-certificates - container_name: appwrite-worker-certificates - depends_on: - - appwrite-redis - - appwrite-mariadb - volumes: - - appwrite-config:/storage/config:rw - - appwrite-certificates:/storage/certificates:rw - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DOMAIN=$SERVICE_URL_APPWRITE - - _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE - - _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE - - _APP_EMAIL_CERTIFICATES=${_APP_EMAIL_CERTIFICATES:-enabled} - - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - appwrite-worker-functions: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-functions - container_name: appwrite-worker-functions - depends_on: - - appwrite-redis - - appwrite-mariadb - - openruntimes-executor - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DOMAIN=$SERVICE_URL_APPWRITE - - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} - - _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900} - - _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0} - - _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0} - - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME} - - _APP_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - appwrite-worker-mails: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-mails - container_name: appwrite-worker-mails - depends_on: - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_SYSTEM_EMAIL_NAME=${_APP_SYSTEM_EMAIL_NAME:-Appwrite} - - >- - _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-team@appwrite.io} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_SMTP_HOST=${_APP_SMTP_HOST} - - _APP_SMTP_PORT=${_APP_SMTP_PORT} - - _APP_SMTP_SECURE=${_APP_SMTP_SECURE} - - _APP_SMTP_USERNAME=${_APP_SMTP_USERNAME} - - _APP_SMTP_PASSWORD=${_APP_SMTP_PASSWORD} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_DOMAIN=$SERVICE_URL_APPWRITE - appwrite-worker-messaging: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-messaging - container_name: appwrite-worker-messaging - volumes: - - appwrite-uploads:/storage/uploads:rw - depends_on: - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_SMS_FROM=${_APP_SMS_FROM} - - _APP_SMS_PROVIDER=${_APP_SMS_PROVIDER} - - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} - - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} - - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} - - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} - - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} - - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} - - >- - _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} - - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} - - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} - - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} - - >- - _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} - - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} - - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} - - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} - - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} - - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} - - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} - - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} - - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - appwrite-worker-migrations: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-migrations - container_name: appwrite-worker-migrations - depends_on: - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DOMAIN=$SERVICE_URL_APPWRITE - - _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE - - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - >- - _APP_MIGRATIONS_FIREBASE_CLIENT_ID=${_APP_MIGRATIONS_FIREBASE_CLIENT_ID} - - >- - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET} - appwrite-task-maintenance: - image: appwrite/appwrite:1.6.0 - entrypoint: maintenance - container_name: appwrite-task-maintenance - depends_on: - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_DOMAIN=$SERVICE_URL_APPWRITE - - _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE - - _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_MAINTENANCE_INTERVAL=${_APP_MAINTENANCE_INTERVAL} - - >- - _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION} - - >- - _APP_MAINTENANCE_RETENTION_CACHE=${_APP_MAINTENANCE_RETENTION_CACHE:-2592000} - - >- - _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400} - - >- - _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600} - - >- - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=${_APP_MAINTENANCE_RETENTION_USAGE_HOURLY:-8640000} - - >- - _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400} - appwrite-worker-usage: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-usage - container_name: appwrite-worker-usage - restart: unless-stopped - depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30} - appwrite-worker-usage-dump: - image: appwrite/appwrite:1.6.0 - entrypoint: worker-usage-dump - container_name: appwrite-worker-usage-dump - depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30} - appwrite-task-scheduler-functions: - image: appwrite/appwrite:1.6.0 - entrypoint: schedule-functions - container_name: appwrite-task-scheduler-functions - depends_on: - - appwrite-mariadb - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - appwrite-task-scheduler-executions: - image: appwrite/appwrite:1.6.0 - entrypoint: schedule-executions - container_name: appwrite-task-scheduler-executions - depends_on: - - appwrite-mariadb - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - appwrite-task-scheduler-messages: - image: appwrite/appwrite:1.6.0 - entrypoint: schedule-messages - container_name: appwrite-task-scheduler-messages - depends_on: - - appwrite-mariadb - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - appwrite-assistant: - image: appwrite/assistant:0.4.0 - container_name: appwrite-assistant - environment: - - _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY} - openruntimes-executor: - container_name: openruntimes-executor - hostname: appwrite-executor - stop_signal: SIGINT - image: openruntimes/executor:0.6.11 - networks: - - runtimes - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - appwrite-builds:/storage/builds:rw - - appwrite-functions:/storage/functions:rw - - /tmp:/tmp:rw - environment: - - OPR_EXECUTOR_INACTIVE_TRESHOLD=${_APP_FUNCTIONS_INACTIVE_THRESHOLD} - - >- - OPR_EXECUTOR_MAINTENANCE_INTERVAL=${_APP_FUNCTIONS_MAINTENANCE_INTERVAL} - - OPR_EXECUTOR_NETWORK=${_APP_FUNCTIONS_RUNTIMES_NETWORK:-runtimes} - - OPR_EXECUTOR_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME} - - OPR_EXECUTOR_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD} - - OPR_EXECUTOR_ENV=${_APP_ENV:-production} - - OPR_EXECUTOR_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES} - - OPR_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - OPR_EXECUTOR_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - OPR_EXECUTOR_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - - >- - OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local} - - OPR_EXECUTOR_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} - - OPR_EXECUTOR_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION} - - OPR_EXECUTOR_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} - - >- - OPR_EXECUTOR_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} - - OPR_EXECUTOR_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION} - - OPR_EXECUTOR_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} - - >- - OPR_EXECUTOR_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} - - OPR_EXECUTOR_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION} - - OPR_EXECUTOR_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} - - >- - OPR_EXECUTOR_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} - - OPR_EXECUTOR_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION} - - OPR_EXECUTOR_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} - - >- - OPR_EXECUTOR_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - - OPR_EXECUTOR_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION} - - OPR_EXECUTOR_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - appwrite-mariadb: - image: mariadb:10.11 - container_name: appwrite-mariadb - volumes: - - appwrite-mariadb:/var/lib/mysql:rw - environment: - - MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MARIADBROOT - - MYSQL_DATABASE=${_APP_DB_SCHEMA:-appwrite} - - MYSQL_USER=$SERVICE_USER_MARIADB - - MYSQL_PASSWORD=$SERVICE_PASSWORD_MARIADB - - MARIADB_AUTO_UPGRADE=1 - command: mysqld --innodb-flush-method=fsync - appwrite-redis: - image: redis:7.2.4-alpine - container_name: appwrite-redis - command: > - redis-server --maxmemory 512mb --maxmemory-policy - allkeys-lru --maxmemory-samples 5 - volumes: - - appwrite-redis:/data:rw - networks: - runtimes: - name: runtimes - volumes: - appwrite-mariadb: null - appwrite-redis: null - appwrite-cache: null - appwrite-uploads: null - appwrite-certificates: null - appwrite-functions: null - appwrite-builds: null - appwrite-config: null +# compose: +# services: +# appwrite: +# image: appwrite/appwrite:1.6.0 +# container_name: appwrite +# volumes: +# - appwrite-uploads:/storage/uploads:rw +# - appwrite-cache:/storage/cache:rw +# - appwrite-config:/storage/config:rw +# - appwrite-certificates:/storage/certificates:rw +# - appwrite-functions:/storage/functions:rw +# depends_on: +# - appwrite-mariadb +# - appwrite-redis +# environment: +# - SERVICE_FQDN_APPWRITE=/ +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_LOCALE=${_APP_LOCALE:-en} +# - _APP_CONSOLE_WHITELIST_ROOT=${_APP_CONSOLE_WHITELIST_ROOT:-enabled} +# - _APP_CONSOLE_WHITELIST_EMAILS=${_APP_CONSOLE_WHITELIST_EMAILS} +# - _APP_CONSOLE_WHITELIST_IPS=${_APP_CONSOLE_WHITELIST_IPS} +# - >- +# _APP_CONSOLE_HOSTNAMES=${_APP_CONSOLE_HOSTNAMES:-localhost,appwrite.io,*.appwrite.io} +# - _APP_SYSTEM_EMAIL_NAME=${_APP_SYSTEM_EMAIL_NAME:-Appwrite} +# - >- +# _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-team@appwrite.io} +# - _APP_SYSTEM_TEAM_EMAIL=${_APP_SYSTEM_TEAM_EMAIL:-team@appwrite.io} +# - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} +# - _APP_SYSTEM_RESPONSE_FORMAT=${_APP_SYSTEM_RESPONSE_FORMAT} +# - _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled} +# - >- +# _APP_OPTIONS_ROUTER_PROTECTION=${_APP_OPTIONS_ROUTER_PROTECTION:-disabled} +# - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} +# - >- +# _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=${_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS:-disabled} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_DOMAIN=$SERVICE_URL_APPWRITE +# - _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE +# - _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_SMTP_HOST=${_APP_SMTP_HOST} +# - _APP_SMTP_PORT=${_APP_SMTP_PORT} +# - _APP_SMTP_SECURE=${_APP_SMTP_SECURE} +# - _APP_SMTP_USERNAME=${_APP_SMTP_USERNAME} +# - _APP_SMTP_PASSWORD=${_APP_SMTP_PASSWORD} +# - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} +# - _APP_STORAGE_LIMIT=${_APP_STORAGE_LIMIT:-30000000} +# - _APP_STORAGE_PREVIEW_LIMIT=${_APP_STORAGE_PREVIEW_LIMIT:-20000000} +# - _APP_STORAGE_ANTIVIRUS=${_APP_STORAGE_ANTIVIRUS:-disabled} +# - >- +# _APP_STORAGE_ANTIVIRUS_HOST=${_APP_STORAGE_ANTIVIRUS_HOST:-appwrite-clamav} +# - _APP_STORAGE_ANTIVIRUS_PORT=${_APP_STORAGE_ANTIVIRUS_PORT:-3310} +# - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} +# - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} +# - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} +# - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} +# - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} +# - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} +# - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} +# - >- +# _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} +# - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} +# - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} +# - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} +# - >- +# _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} +# - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} +# - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} +# - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} +# - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} +# - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} +# - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} +# - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} +# - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} +# - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} +# - _APP_FUNCTIONS_SIZE_LIMIT=${_APP_FUNCTIONS_SIZE_LIMIT:-30000000} +# - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} +# - _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900} +# - _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0} +# - _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0} +# - >- +# _APP_FUNCTIONS_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES:-node-20.0,php-8.2,python-3.11,ruby-3.2} +# - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - _APP_MAINTENANCE_INTERVAL=${_APP_MAINTENANCE_INTERVAL:-86400} +# - _APP_MAINTENANCE_DELAY=${_APP_MAINTENANCE_DELAY} +# - >- +# _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION:-1209600} +# - >- +# _APP_MAINTENANCE_RETENTION_CACHE=${_APP_MAINTENANCE_RETENTION_CACHE:-2592000} +# - >- +# _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400} +# - >- +# _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600} +# - >- +# _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=${_APP_MAINTENANCE_RETENTION_USAGE_HOURLY:-8640000} +# - >- +# _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400} +# - _APP_SMS_PROVIDER=${_APP_SMS_PROVIDER} +# - _APP_SMS_FROM=${_APP_SMS_FROM} +# - _APP_GRAPHQL_MAX_BATCH_SIZE=${_APP_GRAPHQL_MAX_BATCH_SIZE:-10} +# - _APP_GRAPHQL_MAX_COMPLEXITY=${_APP_GRAPHQL_MAX_COMPLEXITY:-250} +# - _APP_GRAPHQL_MAX_DEPTH=${_APP_GRAPHQL_MAX_DEPTH:-3} +# - _APP_VCS_GITHUB_APP_NAME=${_APP_VCS_GITHUB_APP_NAME} +# - _APP_VCS_GITHUB_PRIVATE_KEY=${_APP_VCS_GITHUB_PRIVATE_KEY} +# - _APP_VCS_GITHUB_APP_ID=${_APP_VCS_GITHUB_APP_ID} +# - _APP_VCS_GITHUB_WEBHOOK_SECRET=${_APP_VCS_GITHUB_WEBHOOK_SECRET} +# - _APP_VCS_GITHUB_CLIENT_SECRET=${_APP_VCS_GITHUB_CLIENT_SECRET} +# - _APP_VCS_GITHUB_CLIENT_ID=${_APP_VCS_GITHUB_CLIENT_ID} +# - >- +# _APP_MIGRATIONS_FIREBASE_CLIENT_ID=${_APP_MIGRATIONS_FIREBASE_CLIENT_ID} +# - >- +# _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET} +# - _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY} +# appwrite-console: +# image: appwrite/console:5.0.12 +# container_name: appwrite-console +# environment: +# - SERVICE_FQDN_APPWRITE=/console +# appwrite-realtime: +# image: appwrite/appwrite:1.6.0 +# entrypoint: realtime +# container_name: appwrite-realtime +# depends_on: +# - appwrite-mariadb +# - appwrite-redis +# environment: +# - SERVICE_FQDN_APPWRITE=/v1/realtime +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# appwrite-worker-audits: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-audits +# container_name: appwrite-worker-audits +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# appwrite-worker-webhooks: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-webhooks +# container_name: appwrite-worker-webhooks +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} +# - >- +# _APP_SYSTEM_SECURITY_EMAIL_ADDRESS=${_APP_SYSTEM_SECURITY_EMAIL_ADDRESS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# appwrite-worker-deletes: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-deletes +# container_name: appwrite-worker-deletes +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# volumes: +# - appwrite-uploads:/storage/uploads:rw +# - appwrite-cache:/storage/cache:rw +# - appwrite-functions:/storage/functions:rw +# - appwrite-builds:/storage/builds:rw +# - appwrite-certificates:/storage/certificates:rw +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} +# - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local} +# - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} +# - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} +# - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} +# - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} +# - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} +# - >- +# _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} +# - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} +# - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} +# - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} +# - >- +# _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} +# - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} +# - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} +# - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} +# - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} +# - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} +# - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} +# - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} +# - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} +# - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} +# - >- +# _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400} +# - >- +# _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600} +# - >- +# _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION:-1209600} +# appwrite-worker-databases: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-databases +# container_name: appwrite-worker-databases +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# appwrite-worker-builds: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-builds +# container_name: appwrite-worker-builds +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# volumes: +# - appwrite-functions:/storage/functions:rw +# - appwrite-builds:/storage/builds:rw +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - _APP_VCS_GITHUB_APP_NAME=${_APP_VCS_GITHUB_APP_NAME} +# - _APP_VCS_GITHUB_PRIVATE_KEY=${_APP_VCS_GITHUB_PRIVATE_KEY} +# - _APP_VCS_GITHUB_APP_ID=${_APP_VCS_GITHUB_APP_ID} +# - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} +# - _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900} +# - _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0} +# - _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0} +# - _APP_FUNCTIONS_SIZE_LIMIT=${_APP_FUNCTIONS_SIZE_LIMIT:-30000000} +# - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} +# - >- +# _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=${_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS:-disabled} +# - _APP_DOMAIN=$SERVICE_URL_APPWRITE +# - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} +# - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local} +# - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} +# - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} +# - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} +# - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} +# - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} +# - >- +# _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} +# - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} +# - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} +# - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} +# - >- +# _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} +# - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} +# - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} +# - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} +# - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} +# - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} +# - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} +# - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} +# - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} +# - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} +# appwrite-worker-certificates: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-certificates +# container_name: appwrite-worker-certificates +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# volumes: +# - appwrite-config:/storage/config:rw +# - appwrite-certificates:/storage/certificates:rw +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_DOMAIN=$SERVICE_URL_APPWRITE +# - _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE +# - _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE +# - _APP_EMAIL_CERTIFICATES=${_APP_EMAIL_CERTIFICATES:-enabled} +# - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# appwrite-worker-functions: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-functions +# container_name: appwrite-worker-functions +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# - openruntimes-executor +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_DOMAIN=$SERVICE_URL_APPWRITE +# - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} +# - _APP_FUNCTIONS_BUILD_TIMEOUT=${_APP_FUNCTIONS_BUILD_TIMEOUT:-900} +# - _APP_FUNCTIONS_CPUS=${_APP_FUNCTIONS_CPUS:-0} +# - _APP_FUNCTIONS_MEMORY=${_APP_FUNCTIONS_MEMORY:-0} +# - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} +# - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} +# - _APP_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME} +# - _APP_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD} +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# appwrite-worker-mails: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-mails +# container_name: appwrite-worker-mails +# depends_on: +# - appwrite-redis +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_SYSTEM_EMAIL_NAME=${_APP_SYSTEM_EMAIL_NAME:-Appwrite} +# - >- +# _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-team@appwrite.io} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_SMTP_HOST=${_APP_SMTP_HOST} +# - _APP_SMTP_PORT=${_APP_SMTP_PORT} +# - _APP_SMTP_SECURE=${_APP_SMTP_SECURE} +# - _APP_SMTP_USERNAME=${_APP_SMTP_USERNAME} +# - _APP_SMTP_PASSWORD=${_APP_SMTP_PASSWORD} +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - _APP_DOMAIN=$SERVICE_URL_APPWRITE +# appwrite-worker-messaging: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-messaging +# container_name: appwrite-worker-messaging +# volumes: +# - appwrite-uploads:/storage/uploads:rw +# depends_on: +# - appwrite-redis +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - _APP_SMS_FROM=${_APP_SMS_FROM} +# - _APP_SMS_PROVIDER=${_APP_SMS_PROVIDER} +# - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} +# - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} +# - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} +# - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} +# - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} +# - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} +# - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} +# - >- +# _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} +# - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} +# - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} +# - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} +# - >- +# _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} +# - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} +# - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} +# - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} +# - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} +# - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} +# - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} +# - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} +# - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} +# - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} +# appwrite-worker-migrations: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-migrations +# container_name: appwrite-worker-migrations +# depends_on: +# - appwrite-mariadb +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_DOMAIN=$SERVICE_URL_APPWRITE +# - _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE +# - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - >- +# _APP_MIGRATIONS_FIREBASE_CLIENT_ID=${_APP_MIGRATIONS_FIREBASE_CLIENT_ID} +# - >- +# _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET} +# appwrite-task-maintenance: +# image: appwrite/appwrite:1.6.0 +# entrypoint: maintenance +# container_name: appwrite-task-maintenance +# depends_on: +# - appwrite-redis +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_DOMAIN=$SERVICE_URL_APPWRITE +# - _APP_DOMAIN_TARGET=$SERVICE_URL_APPWRITE +# - _APP_DOMAIN_FUNCTIONS=$SERVICE_URL_APPWRITE +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_MAINTENANCE_INTERVAL=${_APP_MAINTENANCE_INTERVAL} +# - >- +# _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION} +# - >- +# _APP_MAINTENANCE_RETENTION_CACHE=${_APP_MAINTENANCE_RETENTION_CACHE:-2592000} +# - >- +# _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400} +# - >- +# _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600} +# - >- +# _APP_MAINTENANCE_RETENTION_USAGE_HOURLY=${_APP_MAINTENANCE_RETENTION_USAGE_HOURLY:-8640000} +# - >- +# _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400} +# appwrite-worker-usage: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-usage +# container_name: appwrite-worker-usage +# restart: unless-stopped +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30} +# appwrite-worker-usage-dump: +# image: appwrite/appwrite:1.6.0 +# entrypoint: worker-usage-dump +# container_name: appwrite-worker-usage-dump +# depends_on: +# - appwrite-redis +# - appwrite-mariadb +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} +# - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30} +# appwrite-task-scheduler-functions: +# image: appwrite/appwrite:1.6.0 +# entrypoint: schedule-functions +# container_name: appwrite-task-scheduler-functions +# depends_on: +# - appwrite-mariadb +# - appwrite-redis +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# appwrite-task-scheduler-executions: +# image: appwrite/appwrite:1.6.0 +# entrypoint: schedule-executions +# container_name: appwrite-task-scheduler-executions +# depends_on: +# - appwrite-mariadb +# - appwrite-redis +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# appwrite-task-scheduler-messages: +# image: appwrite/appwrite:1.6.0 +# entrypoint: schedule-messages +# container_name: appwrite-task-scheduler-messages +# depends_on: +# - appwrite-mariadb +# - appwrite-redis +# environment: +# - _APP_ENV=${_APP_ENV:-production} +# - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} +# - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE +# - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} +# - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} +# - _APP_REDIS_USER=${_APP_REDIS_USER} +# - _APP_REDIS_PASS=${_APP_REDIS_PASS} +# - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} +# - _APP_DB_PORT=${_APP_DB_PORT:-3306} +# - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} +# - _APP_DB_USER=$SERVICE_USER_MARIADB +# - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB +# appwrite-assistant: +# image: appwrite/assistant:0.4.0 +# container_name: appwrite-assistant +# environment: +# - _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY} +# openruntimes-executor: +# container_name: openruntimes-executor +# hostname: appwrite-executor +# stop_signal: SIGINT +# image: openruntimes/executor:0.6.11 +# networks: +# - runtimes +# volumes: +# - /var/run/docker.sock:/var/run/docker.sock +# - appwrite-builds:/storage/builds:rw +# - appwrite-functions:/storage/functions:rw +# - /tmp:/tmp:rw +# environment: +# - OPR_EXECUTOR_INACTIVE_TRESHOLD=${_APP_FUNCTIONS_INACTIVE_THRESHOLD} +# - >- +# OPR_EXECUTOR_MAINTENANCE_INTERVAL=${_APP_FUNCTIONS_MAINTENANCE_INTERVAL} +# - OPR_EXECUTOR_NETWORK=${_APP_FUNCTIONS_RUNTIMES_NETWORK:-runtimes} +# - OPR_EXECUTOR_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME} +# - OPR_EXECUTOR_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD} +# - OPR_EXECUTOR_ENV=${_APP_ENV:-production} +# - OPR_EXECUTOR_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES} +# - OPR_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE +# - OPR_EXECUTOR_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} +# - OPR_EXECUTOR_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} +# - >- +# OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY:-local} +# - OPR_EXECUTOR_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} +# - OPR_EXECUTOR_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION} +# - OPR_EXECUTOR_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} +# - >- +# OPR_EXECUTOR_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} +# - OPR_EXECUTOR_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} +# - OPR_EXECUTOR_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION} +# - OPR_EXECUTOR_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} +# - >- +# OPR_EXECUTOR_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} +# - OPR_EXECUTOR_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} +# - OPR_EXECUTOR_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION} +# - OPR_EXECUTOR_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} +# - >- +# OPR_EXECUTOR_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} +# - OPR_EXECUTOR_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} +# - OPR_EXECUTOR_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION} +# - OPR_EXECUTOR_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} +# - >- +# OPR_EXECUTOR_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} +# - OPR_EXECUTOR_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} +# - OPR_EXECUTOR_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION} +# - OPR_EXECUTOR_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} +# appwrite-mariadb: +# image: mariadb:10.11 +# container_name: appwrite-mariadb +# volumes: +# - appwrite-mariadb:/var/lib/mysql:rw +# environment: +# - MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MARIADBROOT +# - MYSQL_DATABASE=${_APP_DB_SCHEMA:-appwrite} +# - MYSQL_USER=$SERVICE_USER_MARIADB +# - MYSQL_PASSWORD=$SERVICE_PASSWORD_MARIADB +# - MARIADB_AUTO_UPGRADE=1 +# command: mysqld --innodb-flush-method=fsync +# appwrite-redis: +# image: redis:7.2.4-alpine +# container_name: appwrite-redis +# command: > +# redis-server --maxmemory 512mb --maxmemory-policy +# allkeys-lru --maxmemory-samples 5 +# volumes: +# - appwrite-redis:/data:rw +# networks: +# runtimes: +# name: runtimes +# volumes: +# appwrite-mariadb: null +# appwrite-redis: null +# appwrite-cache: null +# appwrite-uploads: null +# appwrite-certificates: null +# appwrite-functions: null +# appwrite-builds: null +# appwrite-config: null --- ---- -title: Appwrite ---- # Appwrite -![Appwrite](https://raw.githubusercontent.com/appwrite/appwrite/main/public/images/banner.webp) +![Appwrite](https://raw.githubusercontent.com/appwrite/appwrite/main/public/images/banner.png) ## What is Appwrite? diff --git a/docs/services/argilla.md b/docs/services/argilla.md new file mode 100644 index 00000000..cfb45f4b --- /dev/null +++ b/docs/services/argilla.md @@ -0,0 +1,18 @@ +--- +title: "Argilla" +description: "Here you can find the documentation for hosting Argilla with Coolify." +--- + + + +## What is Argilla? +Argilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets. + + +## Screenshots + + +## Links + +- [The official website ›](https://argilla.io/?utm_source=coolify.io) +- [GitHub ›](https://github.com/argilla-io/argilla?utm_source=coolify.io) diff --git a/docs/services/authentik.md b/docs/services/authentik.md index d9500db7..fa063899 100644 --- a/docs/services/authentik.md +++ b/docs/services/authentik.md @@ -1,21 +1,23 @@ --- -title: Authentik +title: "Authentik" +description: "Here you can find the documentation for hosting Authentik with Coolify." --- ![Authentik](https://goauthentik.io/img/icon_top_brand_colour.svg) ## What is authentik? +Authentik is an open-source Identity Provider that emphasizes flexibility and versatility. It can be seamlessly integrated into existing environments to support new protocols. -Authentik is an open-source Identity Provider that emphasizes flexibility and versatility. It can be seamlessly integrated into existing environments to support new protocols. authentik is also a great solution for implementing sign-up, recovery, and other similar features in your application, saving you the hassle of dealing with them. +Authentik is also a great solution for implementing sign-up, recovery, and other similar features in your application, saving you the hassle of dealing with them. -## Screenshots +## Screenshots | Light | Dark | | ----------------------------------------------------------- | ---------------------------------------------------------- | -| | | -| | | +| ![](https://docs.goauthentik.io/img/screen_apps_light.jpg) | ![](https://docs.goauthentik.io/img/screen_apps_dark.jpg) | +| ![](https://docs.goauthentik.io/img/screen_admin_light.jpg) | ![](https://docs.goauthentik.io/img/screen_admin_dark.jpg) | -## Links -- [The official website ›](https://goauthentik.io) -- [GitHub ›](https://github.com/goauthentik/authentik) +## Links +- [The official website ›](https://goauthentik.io?utm_source=coolify.io) +- [GitHub ›](https://github.com/goauthentik/authentik?utm_source=coolify.io) diff --git a/docs/services/babybuddy.md b/docs/services/babybuddy.md index faedd962..8df7d7b5 100644 --- a/docs/services/babybuddy.md +++ b/docs/services/babybuddy.md @@ -1,27 +1,28 @@ --- -title: BabyBuddy +title: "BabyBuddy" +description: "Here you can find the documentation for hosting BabyBuddy with Coolify." --- -![BabyBuddy](https://raw.githubusercontent.com/babybuddy/babybuddy/master/babybuddy/static_src/logo/icon.webp) -## What is BabyBuddy? +![BabyBuddy](https://raw.githubusercontent.com/babybuddy/babybuddy/master/babybuddy/static_src/logo/icon.png) + +## What is BabyBuddy? A buddy for babies! Helps caregivers track sleep, feedings, diaper changes, tummy time and more to learn about and predict baby's needs without (_as much_) guess work. + ## Screenshots +![Baby Buddy desktop view](https://raw.githubusercontent.com/babybuddy/babybuddy/master/screenshot.png) +![Baby Buddy mobile views](https://raw.githubusercontent.com/babybuddy/babybuddy/master/screenshot_mobile.png) -![Baby Buddy desktop view](https://raw.githubusercontent.com/babybuddy/babybuddy/master/screenshot.webp) -![Baby Buddy mobile views](https://raw.githubusercontent.com/babybuddy/babybuddy/master/screenshot_mobile.webp) ## Demo - -A [demo of Baby Buddy](https://demo.baby-buddy.net) is available. The demo instance +A [demo of Baby Buddy](https://demo.baby-buddy.net?utm_source=coolify.io) is available. The demo instance resets every hour. Login credentials are: - - Username: `admin` - Password: `admin` -## Links -- [The official website ›](https://docs.baby-buddy.net/) -- [GitHub ›](https://github.com/babybuddy/babybuddy) +## Links +- [The official website ›](https://docs.baby-buddy.net?utm_source=coolify.io) +- [GitHub ›](https://github.com/babybuddy/babybuddy?utm_source=coolify.io) diff --git a/docs/services/beszel.md b/docs/services/beszel.md new file mode 100644 index 00000000..ce31b786 --- /dev/null +++ b/docs/services/beszel.md @@ -0,0 +1,24 @@ +--- +title: "Beszel" +description: "Here you can find the documentation for hosting Beszel with Coolify." +--- + + + +## What is Beszel? +Lightweight server monitoring hub with historical data, docker stats, and alerts. + + +## Setup + +- Deploy Beszel using Coolify template +- In the UI, `Add a new System` +- Enter `beszel-agent` in Host/IP +- Copy the key from the modal in the `KEY` environnement variable in Beszel's docker-compose env section (Edit Docker Compose button of Beszel service in Coolify UI) + + + + +## Links + +- [GitHub ›](https://github.com/henrygd/beszel) diff --git a/docs/services/browserless.md b/docs/services/browserless.md index 07f6684d..ad4d01bf 100644 --- a/docs/services/browserless.md +++ b/docs/services/browserless.md @@ -1,15 +1,16 @@ --- -title: Browserless +title: "Browserless" +description: "Here you can find the documentation for hosting Browserless with Coolify." --- -![Browserless](/images/covers/browserless.webp) -## What is Browserless + +## What is Browserless Browserless is a platform that provides headless browser automation and management services. It allows developers to run automated browser tasks without the need for manual intervention, making it ideal for web scraping, testing, and rendering tasks. -## Example use cases +## Example use cases - Web Scraping: Automate the collection of data from websites, such as product prices, news articles, or social media content, without worrying about CAPTCHAs, JavaScript rendering, or rate limits. - Automated Testing: Run browser-based tests for web applications using tools like Puppeteer or Selenium to check functionality, compatibility, and performance across different browsers. @@ -20,8 +21,8 @@ Browserless is a platform that provides headless browser automation and manageme - SEO Audits: Use Browserless to run scripts that crawl your website, analyzing metadata, tags, and other factors that impact SEO, ensuring your site follows best practices. -## Key Features +## Key Features - Headless Browser Automation: Supports running headless browsers, automating tasks with Puppeteer, Playwright, and Selenium without manual browser operation. - Cloud-Based Infrastructure: Run scripts in the cloud, reducing the need to manage your own browser environments and infrastructure. @@ -32,15 +33,14 @@ Browserless is a platform that provides headless browser automation and manageme - Logging & Debugging Tools: Detailed logging and debugging tools for tracking and troubleshooting automated browser sessions. -## Images -![build](https://screenshotone.com/_astro/browserless.Cl-s6Lzv_1jshVo.webp) +## Images ![templates](https://cdn.prod.website-files.com/65cb4923a3a6b08fe1124094/6601a7a5b8508b353addd84f_social-preview.jpg) -## Links -- [The official website ›](https://www.browserless.io/) -- [Documentation ›](https://docs.browserless.io/) -- [GitHub ›](https://github.com/browserless) -- [Api Documentation ›](https://docs.browserless.io/docs/api.html) -- [Pricing ›](https://www.browserless.io/pricing) +## Links +- [The official website ›](https://www.browserless.io?utm_source=coolify.io) +- [Documentation ›](https://docs.browserless.io?utm_source=coolify.io) +- [GitHub ›](https://github.com/browserless?utm_source=coolify.io) +- [Api Documentation ›](https://docs.browserless.io/docs/api.html?utm_source=coolify.io) +- [Pricing ›](https://www.browserless.io/pricing?utm_source=coolify.io) diff --git a/docs/services/budge.md b/docs/services/budge.md index 2e319890..a390b615 100644 --- a/docs/services/budge.md +++ b/docs/services/budge.md @@ -1,10 +1,11 @@ --- -title: BudgE +title: "BudgE" +description: "Here you can find the documentation for hosting BudgE with Coolify." --- -## What is BudgE? -BudgE (pronounced "budgie", like the bird) is an open source "budgeting with envelopes" personal finance app, taking inspiration from other tools such as [Aspire Budgeting](https://www.aspirebudget.com/), [budgetzero](https://budgetzero.io/), and [Buckets](https://www.budgetwithbuckets.com/). +## What is BudgE? +BudgE (pronounced "budgie", like the bird) is an open source "budgeting with envelopes" personal finance app, taking inspiration from other tools such as [Aspire Budgeting](https://www.aspirebudget.com?utm_source=coolify.io), [budgetzero](https://budgetzero.io?utm_source=coolify.io), and [Buckets](https://www.budgetwithbuckets.com/?utm_source=coolify.io). ## Current Features @@ -19,8 +20,10 @@ BudgE (pronounced "budgie", like the bird) is an open source "budgeting with env ## Screenshots -![screenshot1](https://raw.githubusercontent.com/linuxserver/budge/main/images/budget.webp) -![screenshot2](https://raw.githubusercontent.com/linuxserver/budge/main/images/account.webp) +![screenshot1](https://raw.githubusercontent.com/linuxserver/budge/main/images/budget.png) + + +![screenshot2](https://raw.githubusercontent.com/linuxserver/budge/main/images/account.png) ## Support @@ -28,4 +31,4 @@ BudgE (pronounced "budgie", like the bird) is an open source "budgeting with env ## Links -- [GitHub ›](https://github.com/linuxserver/budge) +- [GitHub ›](https://github.com/linuxserver/budge?utm_source=coolify.io) diff --git a/docs/services/changedetection.md b/docs/services/changedetection.md index f113641f..af46ce3b 100644 --- a/docs/services/changedetection.md +++ b/docs/services/changedetection.md @@ -1,8 +1,10 @@ --- -title: Change Detection +title: "Change Detection" +description: "Here you can find the documentation for hosting Change Detection with Coolify." --- -![Change Detection](https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/screenshot.webp) + +![Change Detection](https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/screenshot.png) ## What is Change Detection? @@ -48,10 +50,10 @@ Live your data-life pro-actively. - Execute JS before extracting text (Good for logging in, see examples in the UI!) - Override Request Headers, Specify `POST` or `GET` and other methods - Use the "Visual Selector" to help target specific elements -- Configurable [proxy per watch](https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration) +- Configurable [proxy per watch](https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration?utm_source=coolify.io) - Send a screenshot with the notification when a change is detected in the web page. ## Links -- [The official website ›](https://changedetection.io) -- [GitHub ›](https://github.com/dgtlmoon/changedetection.io) +- [The official website ›](https://changedetection.io?utm_source=coolify.io) +- [GitHub ›](https://github.com/dgtlmoon/changedetection.io?utm_source=coolify.io) diff --git a/docs/services/chaskiq.md b/docs/services/chaskiq.md new file mode 100644 index 00000000..b60a4b1d --- /dev/null +++ b/docs/services/chaskiq.md @@ -0,0 +1,16 @@ +--- +title: "Chaskiq" +description: "Here you can find the documentation for hosting Chaskiq with Coolify." +--- + + +![Chaskiq](https://user-images.githubusercontent.com/11976/81771025-eaefe780-94af-11ea-881b-ad7910536fee.png) + +## What is Chaskiq? + +Chaskiq is an open source chat platform that allows you to chat with your customers. + +## Links + +- [The official website ›](https://chaskiq.io?utm_source=coolify.io) +- [GitHub ›](https://github.com/chaskiq/chaskiq?utm_source=coolify.io) diff --git a/docs/services/chatwoot.md b/docs/services/chatwoot.md new file mode 100644 index 00000000..570757fe --- /dev/null +++ b/docs/services/chatwoot.md @@ -0,0 +1,15 @@ +--- +title: "Chatwoot" +description: "Here you can find the documentation for hosting Chatwoot with Coolify." +--- + +![Chatwoot](https://user-images.githubusercontent.com/2246121/282256632-87f6a01b-6467-4e0e-8a93-7bbf66d03a17.png#gh-dark-mode-only) + +## What is Chatwoot? + +Chatwoot gives you all the tools to manage conversations, build relationships and delight your customers from one place. + +## Links + +- [The official website ›](https://www.chatwoot.com?utm_source=coolify.io) +- [GitHub ›](https://github.com/chatwoot/chatwoot?utm_source=coolify.io) diff --git a/docs/services/classicpress.md b/docs/services/classicpress.md index f0ce5ac4..64453711 100644 --- a/docs/services/classicpress.md +++ b/docs/services/classicpress.md @@ -1,8 +1,9 @@ --- -title: ClassicPress +title: "ClassicPress" +description: "Here you can find the documentation for hosting ClassicPress with Coolify." --- -![ClassicPress](https://raw.githubusercontent.com/ClassicPress/ClassicPress/develop/src/wp-admin/images/classicpress-logo.webp) +![ClassicPress](https://raw.githubusercontent.com/ClassicPress/ClassicPress/develop/src/wp-admin/images/classicpress-logo.png) ## What is ClassicPress? @@ -10,7 +11,7 @@ ClassicPress is a community-led open source content management system for creato For more information, see: -- [The official website ›](https://www.classicpress.net/) -- [The ClassicPress documentation ›](https://docs.classicpress.net/) -- [The ClassicPress governance ›](https://www.classicpress.net/governance/) -- [Suggest features ›](https://github.com/ClassicPress/ClassicPress/issues/) +- [The official website ›](https://www.classicpress.net?utm_source=coolify.io) +- [The ClassicPress documentation ›](https://docs.classicpress.net?utm_source=coolify.io) +- [The ClassicPress governance ›](https://www.classicpress.net/governance?utm_source=coolify.io) +- [Suggest features ›](https://github.com/ClassicPress/ClassicPress/issues?utm_source=coolify.io) diff --git a/docs/services/cloudflared.md b/docs/services/cloudflared.md new file mode 100644 index 00000000..ca762406 --- /dev/null +++ b/docs/services/cloudflared.md @@ -0,0 +1,16 @@ +--- +title: "Cloudflared" +description: "Here you can find the documentation for hosting Cloudflared with Coolify." +--- + + +![Cloudflare](https://avatars.githubusercontent.com/u/314135?s=200&v=4) + +## What is Cloudflared? + +Cloudflare Tunnel is tunneling software that lets you quickly secure and encrypt application traffic to any type of infrastructure, so you can hide your web server IP addresses, block direct attacks, and get back to delivering great applications. + +## Links + +- [The official website ›](https://www.cloudflare.com/products/tunnel?utm_source=coolify.io) +- [GitHub ›](https://github.com/cloudflare/cloudflared?utm_source=coolify.io) diff --git a/docs/services/code-server.md b/docs/services/code-server.md index 4221957d..b93d6e14 100644 --- a/docs/services/code-server.md +++ b/docs/services/code-server.md @@ -1,9 +1,11 @@ --- -title: Code Server +title: "Code Server" +description: "Here you can find the documentation for hosting Code Server with Coolify." --- -![Code Server1](https://github.com/coder/code-server/raw/main/docs/assets/screenshot-1.webp) -![Code Server2](https://github.com/coder/code-server/raw/main/docs/assets/screenshot-2.webp) +# Code Server +![Code Server1](https://github.com/coder/code-server/raw/main/docs/assets/screenshot-1.png) +![Code Server2](https://github.com/coder/code-server/raw/main/docs/assets/screenshot-2.png) ## What is Code Server? @@ -17,15 +19,15 @@ Run [VS Code](https://github.com/Microsoft/vscode) on any machine anywhere and a ## Requirements -See [requirements](https://coder.com/docs/code-server/latest/requirements) for minimum specs +See [requirements](https://coder.com/docs/code-server/latest/requirements?utm_source=coolify.io) for minimum specs **TL;DR:** Linux machine with WebSockets enabled, 1 GB RAM, and 2 vCPUs ## Questions? -See answers to [frequently asked questions](https://coder.com/docs/code-server/latest/FAQ). +See answers to [frequently asked questions](https://coder.com/docs/code-server/latest/FAQ?utm_source=coolify.io). ## Links -- [The official website ›](https://coder.com/docs/code-server/) -- [GitHub ›](https://github.com/coder/code-server) +- [The official website ›](https://coder.com/docs/code-server/?utm_source=coolify.io) +- [GitHub ›](https://github.com/coder/code-server?utm_source=coolify.io) diff --git a/docs/services/dashboard.md b/docs/services/dashboard.md index 0e986b93..f6f0dae6 100644 --- a/docs/services/dashboard.md +++ b/docs/services/dashboard.md @@ -1,8 +1,10 @@ --- -title: Dashboard +title: "Dashboard" +description: "Here you can find the documentation for hosting Dashboard with Coolify." --- -![dashboard](https://github.com/phntxx/dashboard/blob/master/screenshot.webp?raw=true) + +![dashboard](https://i.imgur.com/tOnPDYQ.png) ## What is Dashboard? @@ -19,4 +21,4 @@ So what makes this project different from (or even better than) SUI? ## Links -- [GitHub ›](https://github.com/phntxx/dashboard/) +- [GitHub ›](https://github.com/phntxx/dashboard?utm_source=coolify.io) diff --git a/docs/services/directus.md b/docs/services/directus.md index 82b25d4b..d7df0882 100644 --- a/docs/services/directus.md +++ b/docs/services/directus.md @@ -1,8 +1,10 @@ --- -title: Directus +title: "Directus" +description: "Here you can find the documentation for hosting Directus with Coolify." --- -![directus](https://user-images.githubusercontent.com/522079/158864859-0fbeae62-9d7a-4619-b35e-f8fa5f68e0c8.webp) + +![directus](https://user-images.githubusercontent.com/522079/158864859-0fbeae62-9d7a-4619-b35e-f8fa5f68e0c8.png) ## What is Directus? @@ -13,21 +15,21 @@ Directus is a real-time API and App dashboard for managing SQL database content. - **Manage Pure SQL.** Works with new or existing SQL databases, no migration required. - **Choose your Database.** Supports PostgreSQL, MySQL, SQLite, OracleDB, CockroachDB, MariaDB, and MS-SQL. - **On-Prem or Cloud.** Run locally, install on-premises, or use our - [self-service Cloud service](https://directus.io/pricing). + [self-service Cloud service](https://directus.io/pricing?utm_source=coolify.io). - **Completely Extensible.** Built to white-label, it is easy to customize our modular platform. - **A Modern Dashboard.** Our no-code Vue.js app is safe and intuitive for non-technical users, no training required. ## Community Help -[The Directus Documentation](https://docs.directus.io) is a great place to start, or explore these other channels: +[The Directus Documentation](https://docs.directus.io?utm_source=coolify.io) is a great place to start, or explore these other channels: -- [Discord](https://directus.chat) (Questions, Live Discussions) -- [GitHub Issues](https://github.com/directus/directus/issues) (Report Bugs) -- [GitHub Discussions](https://github.com/directus/directus/discussions) (Feature Requests) -- [Twitter](https://twitter.com/directus) (Latest News) -- [YouTube](https://www.youtube.com/c/DirectusVideos/featured) (Video Tutorials) +- [Discord](https://directus.chat?utm_source=coolify.io) (Questions, Live Discussions) +- [GitHub Issues](https://github.com/directus/directus/issues?utm_source=coolify.io) (Report Bugs) +- [GitHub Discussions](https://github.com/directus/directus/discussions?utm_source=coolify.io) (Feature Requests) +- [Twitter](https://twitter.com/directus?utm_source=coolify.io) (Latest News) +- [YouTube](https://www.youtube.com/c/DirectusVideos/featured?utm_source=coolify.io) (Video Tutorials) ## Links -- [The official website ›](https://directus.io) -- [GitHub ›](https://github.com/directus/directus) +- [The official website ›](https://directus.io?utm_source=coolify.io) +- [GitHub ›](https://github.com/directus/directus?utm_source=coolify.io) diff --git a/docs/services/docker-registry.md b/docs/services/docker-registry.md new file mode 100644 index 00000000..9315523d --- /dev/null +++ b/docs/services/docker-registry.md @@ -0,0 +1,16 @@ +--- +title: "Docker Registry" +description: "Here you can find the documentation for hosting Docker Registry with Coolify." +--- + + +![Docker Registry](https://raw.githubusercontent.com/distribution/distribution/main/distribution-logo.svg) + +## What is Docker Registry? + +Docker Registry is a stateless, highly-available server side application that stores and distributes Docker images. + +## Links + +- [The official website ›](https://hub.docker.com?utm_source=coolify.io) +- [GitHub ›](https://github.com/docker/distribution?utm_source=coolify.io) diff --git a/docs/services/docmost.md b/docs/services/docmost.md new file mode 100644 index 00000000..7f74163a --- /dev/null +++ b/docs/services/docmost.md @@ -0,0 +1,21 @@ +--- +title: "Docmost" +description: "Here you can find the documentation for hosting Docmost with Coolify." +--- + + +# What is Docmost? +Docmost is an open-source collaborative wiki and documentation software. + +## Screenshots + +![Docmost editor](https://docmost.com/screenshots/editor.png) + +![Docmost editor 2](https://docmost.com/screenshots/editor2.png) + +![Docmost home](https://docmost.com/screenshots/home.png) + +## Links + +- [The official website ›](https://www.docmost.com?utm_source=coolify.io) +- [GitHub ›](https://github.com/docmost/docmost?utm_source=coolify.io) diff --git a/docs/services/docuseal.md b/docs/services/docuseal.md new file mode 100644 index 00000000..1d62549e --- /dev/null +++ b/docs/services/docuseal.md @@ -0,0 +1,19 @@ +--- +title: "Docuseal" +description: "Here you can find the documentation for hosting Docuseal with Coolify." +--- + + +## What is Docuseal? + +Document Signing for Everyone free forever for individuals, extensible for businesses and developers. Open Source Alternative to DocuSign, PandaDoc and more. + +## Screenshots + + + + +## Links + +- [The official website ›](https://www.docuseal.co?utm_source=coolify.io) +- [GitHub ›](https://github.com/docusealco/docuseal?utm_source=coolify.io) diff --git a/docs/services/dokuwiki.md b/docs/services/dokuwiki.md index c7c44a30..f580d22b 100644 --- a/docs/services/dokuwiki.md +++ b/docs/services/dokuwiki.md @@ -1,8 +1,10 @@ --- -title: DokuWiki +title: "DokuWiki" +description: "Here you can find the documentation for hosting DokuWiki with Coolify." --- -![DokuWiki](https://www.dokuwiki.org/lib/tpl/dokuwiki/images/logo.webp) + +![DokuWiki](https://www.dokuwiki.org/lib/tpl/dokuwiki/images/logo.png) ## What is DokuWiki? @@ -32,5 +34,5 @@ DokuWiki are quick to update and new pages are easily added. Designed for collab ## Links -- [The official website ›](https://www.dokuwiki.org) -- [GitHub ›](https://github.com/splitbrain/dokuwiki) +- [The official website ›](https://www.dokuwiki.org?utm_source=coolify.io) +- [GitHub ›](https://github.com/splitbrain/DokuWiki?utm_source=coolify.io) diff --git a/docs/services/dozzle.md b/docs/services/dozzle.md new file mode 100644 index 00000000..6af0913d --- /dev/null +++ b/docs/services/dozzle.md @@ -0,0 +1,19 @@ +--- +title: "Dozzle" +description: "Here you can find the documentation for hosting Dozzle with Coolify." +--- + +![Dozzle](https://dozzle.dev/logo.svg) + +## What is Dozzle? + +Dozzle is an open-source project sponsored by Docker OSS. It is a log viewer designed to simplify monitoring and debugging containers. This lightweight, web-based application offers real-time log streaming, filtering, and searching capabilities through an intuitive user interface. + +Users can quickly access logs generated by their Docker containers, making it an essential tool for debugging and troubleshooting applications in a Docker environment. By default, Dozzle supports JSON logs with intelligent color coding. + +Dozzle is easy to install and configure, making it an ideal solution for developers and system administrators seeking an efficient, user-friendly log viewer for their Docker environment. The tool is available under the MIT license and is actively maintained by its developer, Amir Raminfar. + +## Links + +- [The official website ›](https://dozzle.dev/guide/getting-started#running-with-docker?utm_source=coolify.io) +- [GitHub ›](https://github.com/amir20/dozzle?utm_source=coolify.io) diff --git a/docs/services/duplicati.md b/docs/services/duplicati.md index 7200d681..14e48d0e 100644 --- a/docs/services/duplicati.md +++ b/docs/services/duplicati.md @@ -1,8 +1,10 @@ --- -title: Duplicati +title: "Duplicati" +description: "Here you can find the documentation for hosting Duplicati with Coolify." --- -![Duplicati](https://docs.duplicati.com/en/latest/duplicatilogo.webp) + +![Duplicati](https://avatars.githubusercontent.com/u/8270231?s=200&v=4) ## What is Duplicati? @@ -10,5 +12,5 @@ Free backup software to store encrypted backups online for Windows, macOS and Li ## Links -- [The official website ›](https://www.duplicati.com/) -- [GitHub ›](https://github.com/duplicati/duplicati) +- [The official website ›](https://www.duplicati.com?utm_source=coolify.io) +- [GitHub ›](https://github.com/duplicati/duplicati?utm_source=coolify.io) diff --git a/docs/services/emby-stat.md b/docs/services/emby-stat.md index 284749dc..508d98a0 100644 --- a/docs/services/emby-stat.md +++ b/docs/services/emby-stat.md @@ -1,8 +1,10 @@ --- -title: Emby Stat +title: "Emby Stat" +description: "Here you can find the documentation for hosting Emby Stat with Coolify." --- -![Emby Stat](https://raw.githubusercontent.com/mregni/EmbyStat/develop/branding/logo-color.webp) + +![Emby Stat](https://raw.githubusercontent.com/mregni/EmbyStat/develop/branding/logo-color.png) ## What is Emby Stat? @@ -10,4 +12,4 @@ EmbyStat is a personal web server that can calculate all kinds of statistics fro ## Links -- [The official website ›](https://github.com/mregni/EmbyStat) +- [The official website ›](https://github.com/mregni/EmbyStat?utm_source=coolify.io) \ No newline at end of file diff --git a/docs/services/emby.md b/docs/services/emby.md index 1d000088..95788020 100644 --- a/docs/services/emby.md +++ b/docs/services/emby.md @@ -1,8 +1,10 @@ --- -title: Emby +title: "Emby" +description: "Here you can find the documentation for hosting Emby with Coolify." --- -![Emby](https://emby.media/support/images/logo.webp) + +![Emby](https://emby.media/support/images/logo.png) ## What is Emby? @@ -32,5 +34,5 @@ Windows, Mac, Linux, or FreeBSD computer ## Community -- [The official website ›](https://emby.media/) -- [The Emby community ›](https://emby.media/community/) +- [The official website ›](https://emby.media?utm_source=coolify.io) +- [The Emby community ›](https://emby.media/community?utm_source=coolify.io) diff --git a/docs/services/fider.md b/docs/services/fider.md index 7d74cdba..14302bc9 100644 --- a/docs/services/fider.md +++ b/docs/services/fider.md @@ -1,8 +1,10 @@ --- -title: Fider +title: "Fider" +description: "Here you can find the documentation for hosting Fider with Coolify." --- -![Fider](https://github.com/getfider/fider/raw/main/etc/homepage.webp) + +![Fider](https://github.com/getfider/fider/raw/main/etc/homepage.png) ## What is Fider? @@ -10,4 +12,4 @@ Fider is a feedback portal for feature requests and suggestions. Give your custo ## Links -- [The official website ›](https://fider.io/) +- [The official website ›](https://fider.io?utm_source=coolify.io) diff --git a/docs/services/filebrowser.md b/docs/services/filebrowser.md index 94b5c5e3..770777f8 100644 --- a/docs/services/filebrowser.md +++ b/docs/services/filebrowser.md @@ -1,8 +1,10 @@ --- -title: Filebrowser +title: "Filebrowser" +description: "Here you can find the documentation for hosting Filebrowser with Coolify." --- -![Filebrowser](https://raw.githubusercontent.com/filebrowser/logo/master/banner.webp) + +![Filebrowser](https://raw.githubusercontent.com/filebrowser/logo/master/banner.png) ## What is Filebrowser? @@ -14,11 +16,11 @@ Filebrowser provides a file managing interface within a specified directory and ## Demo -Url: https://demo.filebrowser.org/ +Link: [Filebrowser Demo](https://demo.filebrowser.org/?utm_source=coolify.io) Credentials: demo/demo ## Links -- [The official Filebrowser website ›](https://filebrowser.org/) -- [GitHub ›](https://github.com/filebrowser/filebrowser) +- [The official Filebrowser website ›](https://filebrowser.org?utm_source=coolify.io) +- [GitHub ›](https://github.com/filebrowser/filebrowser?utm_source=coolify.io) diff --git a/docs/services/fileflows.md b/docs/services/fileflows.md new file mode 100644 index 00000000..fcfdb248 --- /dev/null +++ b/docs/services/fileflows.md @@ -0,0 +1,33 @@ +--- +title: "FileFlows" +description: "Here you can find the documentation for hosting FileFlows with Coolify." +--- + + + + +## What is FileFlows? + +Are you tired of manually managing your files? Meet FileFlows — the ultimate solution for automatic file processing! + +FileFlows lets you monitor and process any file type with custom flows. Videos, audio, images, archives, comics, eBooks—you name it! + +## Installation + +1. Create the service within Coolify. +2. If your device supports it, enable hardware transcoding by uncommenting this section in the compose file: + +```yaml +#devices: +# - "/dev/dri:/dev/dri" +``` + +## Screenshots + + + + +## Links + +- [The official website ›](https://fileflows.com/) +- [Doc ›](https://fileflows.com/docs) diff --git a/docs/services/firefly-iii.md b/docs/services/firefly-iii.md index fb4a61ec..cb6c818d 100644 --- a/docs/services/firefly-iii.md +++ b/docs/services/firefly-iii.md @@ -1,8 +1,10 @@ --- -title: Firefly III +title: "Firefly III" +description: "Here you can find the documentation for hosting Firefly III with Coolify." --- -![Firefly III](https://raw.githubusercontent.com/firefly-iii/firefly-iii/develop/.github/assets/img/logo-small.webp) + +![Firefly III](https://raw.githubusercontent.com/firefly-iii/firefly-iii/develop/.github/assets/img/logo-small.png) ## What is Firefly III? @@ -14,9 +16,9 @@ But you get the idea: this is your money. These are your expenses. Stop them fro ## Screenshots -![Firefly III screenshot](https://raw.githubusercontent.com/firefly-iii/firefly-iii/develop/.github/assets/img/imac-complete.webp) +![Firefly III screenshot](https://raw.githubusercontent.com/firefly-iii/firefly-iii/develop/.github/assets/img/imac-complete.png) ## Links -- [The official website ›](https://firefly-iii.org/) -- [GitHub ›](https://github.com/firefly-iii/firefly-iii/) +- [The official website ›](https://firefly-iii.org?utm_source=coolify.io) +- [GitHub ›](https://github.com/firefly-iii/firefly-iii?utm_source=coolify.io) diff --git a/docs/services/forgejo.md b/docs/services/forgejo.md new file mode 100644 index 00000000..61e6cb13 --- /dev/null +++ b/docs/services/forgejo.md @@ -0,0 +1,32 @@ +--- +title: "Forgejo" +description: "Here you can find the documentation for hosting Forgejo with Coolify." +--- + +![forgejo](https://forgejo.org/images/forgejo-wordmark.svg) + +## What is Forgejo? + +Forgejo is a self-hosted lightweight software forge. It's easy to install and low maintenance, it just does the job. + +## Forgejo Actions Runner + +Forgejo has available a first party "actions runner" to [execute task jobs on a repository](https://forgejo.org/docs/latest/user/actions/), much like [GitHub Actions](https://docs.github.com/en/actions) or [GitLab CI](https://docs.gitlab.com/ee/ci/index.html). + +Coolify includes Forgejo services with a single runner, using [Docker-in-Docker](https://hub.docker.com/_/docker) to handle and report task jobs. + +Due to the alpha status of the Forgejo runner, rebooting the Forejo application container after the initial setup is required to fully register the shared secret into Forejo for runners to validate: + +1. In the **Environment Variables** section of the service configuration, you may set as `RUNNER_SHARED_SECRET` a random 40-character hexagesimal string. The command `openssl rand -hex 20` creates something you can copy and paste. +2. After sucessfully setting up Forejo, **reboot the `forgejo` service** and wait some seconds until the runner appears in Forgejo _Actions_ Configuration section. + +Forejo is also compatible with third-party CI apps and platforms. Forgejo is a Gitea-fork, so instructions to incorporate these CI may be the same for both. + +## Demo + +- [Demo ›](https://next.forgejo.org/) + +## Links + +- [The official website ›](https://forgejo.org/) +- [Github ›](https://codeberg.org/forgejo/forgejo) diff --git a/docs/services/formbricks.md b/docs/services/formbricks.md index 5af1df33..8ca993db 100644 --- a/docs/services/formbricks.md +++ b/docs/services/formbricks.md @@ -1,5 +1,6 @@ --- -title: Formbricks +title: "Formbricks" +description: "Here you can find the documentation for hosting Formbricks with Coolify." --- ![Formbricks](https://github.com/formbricks/formbricks/assets/72809645/0086704f-bee7-4d38-9cc8-fa42ee59e004) @@ -10,9 +11,9 @@ Formbricks provides a free and open source surveying platform. Gather feedback a ## Screenshots -![Formbricks screenshot](https://camo.githubusercontent.com/d66ab4c7e282af440ec47c73c5c730833eb9c75d3bbcd226bf33dcacd9d7014c/68747470733a2f2f6769746875622d70726f64756374696f6e2d757365722d61737365742d3632313064662e73332e616d617a6f6e6177732e636f6d2f3637353036352f3234393434313936372d63636238396561332d383262342d346266322d386432632d3532383732316563333133622e706e67) +![Formbricks screenshot](https://camo.githubusercontent.com/e2c25e9b7c1fce99c6314379fb0341980f44529b2ae136956be878071bf8558b/68747470733a2f2f6769746875622d70726f64756374696f6e2d757365722d61737365742d3632313064662e73332e616d617a6f6e6177732e636f6d2f3637353036352f3234393434313936372d63636238396561332d383262342d346266322d386432632d3532383732316563333133622e706e67) ## Links -- [The official website ›](https://formbricks.com/) -- [GitHub ›](https://github.com/formbricks/formbricks) +- [The official website ›](https://formbricks.com?utm_source=coolify.io) +- [GitHub ›](https://github.com/formbricks/formbricks?utm_source=coolify.io) diff --git a/docs/services/ghost.md b/docs/services/ghost.md index 8b25180e..35139b07 100644 --- a/docs/services/ghost.md +++ b/docs/services/ghost.md @@ -1,8 +1,9 @@ --- -title: Ghost +title: "Ghost" +description: "Here you can find the documentation for hosting Ghost with Coolify." --- -![Ghost](https://user-images.githubusercontent.com/353959/169805900-66be5b89-0859-4816-8da9-528ed7534704.webp) +![Ghost](https://user-images.githubusercontent.com/353959/169805900-66be5b89-0859-4816-8da9-528ed7534704.png) ## What is Ghost? diff --git a/docs/services/gitea.md b/docs/services/gitea.md index 258e2a5e..376b890c 100644 --- a/docs/services/gitea.md +++ b/docs/services/gitea.md @@ -1,7 +1,9 @@ --- -title: Gitea +title: "Gitea" +description: "Here you can find the documentation for hosting Gitea with Coolify." --- + ![Gitea](https://about.gitea.com/gitea-text.svg) ## What is Gitea? diff --git a/docs/services/gitlab.md b/docs/services/gitlab.md new file mode 100644 index 00000000..b77566e5 --- /dev/null +++ b/docs/services/gitlab.md @@ -0,0 +1,20 @@ +--- +title: "GitLab" +description: "Here you can find the documentation for hosting GitLab with Coolify." +--- + + +![Gitlab](https://raw.githubusercontent.com/gitlabhq/gitlabhq/refs/heads/master/public/apple-touch-icon.png) + +## What is GitLab? + +GitLab is a web-based DevOps lifecycle tool that provides a Git-repository manager providing wiki, issue-tracking and CI/CD pipeline features, powered by Ruby on Rails framework. + +## Demo + +- [Demo ›](https://gitlab.com/) + +## Links + +- [The official website ›](https://gitlab.com/) +- [GitHub ›](https://github.com/gitlabhq/gitlabhq) diff --git a/docs/services/glance.md b/docs/services/glance.md new file mode 100644 index 00000000..6ba1d6ea --- /dev/null +++ b/docs/services/glance.md @@ -0,0 +1,15 @@ +--- +title: "Glance" +description: "Here you can find the documentation for hosting Glance with Coolify." +--- + +# Glance +A self-hosted dashboard that puts all your feeds in one place. + +## Screenshots + +![Glance UI](https://raw.githubusercontent.com/glanceapp/glance/main/docs/images/readme-main-image.png) + +## Links + +- [The official website ›](https://github.com/glanceapp/glance) \ No newline at end of file diff --git a/docs/services/glances.md b/docs/services/glances.md new file mode 100644 index 00000000..ef57654b --- /dev/null +++ b/docs/services/glances.md @@ -0,0 +1,16 @@ +--- +title: "Glances" +description: "Here you can find the documentation for hosting Glances with Coolify." +--- + + +![Glances](https://raw.githubusercontent.com/nicolargo/glances/develop/docs/_static/glances-responsive-webdesign.png) + +## What is Glances? + +Glances is a cross-platform monitoring tool which aims to provide a simple yet efficient and straightforward way to access and display system information. + +## Links + +- [The official website ›](https://nicolargo.github.io/glances/) +- [GitHub ›](https://github.com/nicolargo/glances) \ No newline at end of file diff --git a/docs/services/glitchtip.md b/docs/services/glitchtip.md index 72b13811..167faea5 100644 --- a/docs/services/glitchtip.md +++ b/docs/services/glitchtip.md @@ -1,7 +1,9 @@ --- -title: Glitchtip +title: "Glitchtip" +description: "Here you can find the documentation for hosting Glitchtip with Coolify." --- + ![Glitchtip](https://glitchtip.com/assets/logo-again.svg) ## What is Glitchtip? diff --git a/docs/services/gotenberg.md b/docs/services/gotenberg.md new file mode 100644 index 00000000..fd2055fe --- /dev/null +++ b/docs/services/gotenberg.md @@ -0,0 +1,19 @@ +--- +title: "Gotenberg" +description: "Here you can find the documentation for hosting Gotenberg with Coolify." +--- + + +![Gotenberg](https://user-images.githubusercontent.com/8983173/130322857-185831e2-f041-46eb-a17f-0a69d066c4e5.png) + +## What is Gotenberg? + +Gotenberg provides a developer-friendly API to interact with powerful tools like Chromium and LibreOffice +for converting numerous document formats (HTML, Markdown, Word, Excel, etc.) into PDF files, and more! + +Gotenberg **has no UI**. Head to the [documentation](https://gotenberg.dev/docs/getting-started/introduction) to learn how to interact with it 🚀. + +## Links + +- [Official Website ›](https://https://gotenberg.dev) +- [GitHub ›](https://github.com/gotenberg/gotenberg) diff --git a/docs/services/grafana.md b/docs/services/grafana.md index 04423eaf..9ddc5f84 100644 --- a/docs/services/grafana.md +++ b/docs/services/grafana.md @@ -1,8 +1,10 @@ --- -title: Grafana +title: "Grafana" +description: "Here you can find the documentation for hosting Grafana with Coolify." --- -![Grafana](https://github.com/grafana/grafana/raw/main/docs/logo-horizontal.webp#gh-light-mode-only) + +![Grafana](https://github.com/grafana/grafana/raw/main/docs/logo-horizontal.png#gh-light-mode-only) ## What is Grafana? diff --git a/docs/services/grocy.md b/docs/services/grocy.md index 48c9014c..dd776236 100644 --- a/docs/services/grocy.md +++ b/docs/services/grocy.md @@ -1,7 +1,9 @@ --- -title: Grocy +title: "Grocy" +description: "Here you can find the documentation for hosting Grocy with Coolify." --- + ![Grocy](https://raw.githubusercontent.com/grocy/grocy/master/public/img/logo.svg?sanitize=true) ## What is Grocy? diff --git a/docs/services/heimdall.md b/docs/services/heimdall.md index 130ed6b1..d6599423 100644 --- a/docs/services/heimdall.md +++ b/docs/services/heimdall.md @@ -1,8 +1,10 @@ --- -title: Heimdall +title: "Heimdall" +description: "Here you can find the documentation for hosting Heimdall with Coolify." --- -![Heimdall](https://camo.githubusercontent.com/3a9babdb52929de80a0a4d067097622216dd1f4637c24a60c742757d24687034/68747470733a2f2f692e696d6775722e636f6d2f4d72433451704e2e676966) + +![Heimdall](https://camo.githubusercontent.com/0b7b7b9940d2234a4edc1af41c191c62b716baf21a0803a38b0cc9d5328db54e/68747470733a2f2f692e696d6775722e636f6d2f697556387733792e706e67) ## What is Heimdall? @@ -12,6 +14,10 @@ Heimdall is an elegant solution to organise all your web applications. It’s de Why not use it as your browser start page? It even has the ability to include a search bar using either Google, Bing or DuckDuckGo. +## Screenshots + +![Heimdall Preview](https://camo.githubusercontent.com/b07301664bb1779167d39c07c193d0974e51ae99be153b45cf310285f87a4371/68747470733a2f2f692e696d6775722e636f6d2f4d72433451704e2e676966) + ## Links - [The official website ›](https://heimdall.site/) diff --git a/docs/services/homepage.md b/docs/services/homepage.md new file mode 100644 index 00000000..1b92dabf --- /dev/null +++ b/docs/services/homepage.md @@ -0,0 +1,18 @@ +--- +title: "Homepage" +description: "Here you can find the documentation for hosting Homepage with Coolify." +--- + +![Homepage](https://gethomepage.dev/assets/banner_light@2x.webp) + +## What is Homepage? + +A modern, fully static, fast, secure fully proxied, highly customizable application dashboard + +## Screenshots + +![Homepage Preview](https://gethomepage.dev/assets/homepage_demo_clip.webp) + +## Links + +- [The official website ›](https://gethomepage.dev/latest/) diff --git a/docs/services/infisical.md b/docs/services/infisical.md new file mode 100644 index 00000000..8ba2ce2e --- /dev/null +++ b/docs/services/infisical.md @@ -0,0 +1,19 @@ +--- +title: "Infisical" +description: "Here you can find the documentation for hosting Infisical with Coolify." +--- + + + +## What is Infisical? + +Infisical is the open source secret management platform that developers use to centralize their application configuration and secrets like API keys and database credentials as well as manage their internal PKI. + +## Screenshots + + + +## Links + +- [The official website ›](https://infisical.com/?utm_source=coolify.io) +- [GitHub ›](https://github.com/Infisical/infisical?utm_source=coolify.io) diff --git a/docs/services/invoice-ninja.md b/docs/services/invoice-ninja.md new file mode 100644 index 00000000..a138990b --- /dev/null +++ b/docs/services/invoice-ninja.md @@ -0,0 +1,16 @@ +--- +title: "Invoice Ninja" +description: "Here you can find the documentation for hosting Invoice Ninja with Coolify." +--- + +# Invoice Ninja + +A self-hosted invoicing platform for small businesses. + +## Screenshots + +![Invoice Ninja Preview](https://invoiceninja.com/wp-content/uploads/2024/01/product-overview-thumbnail.png) + +## Links + +- [The official website ›](https://www.invoiceninja.com/) diff --git a/docs/services/jellyfin.md b/docs/services/jellyfin.md index 59a5d752..9239f6cf 100644 --- a/docs/services/jellyfin.md +++ b/docs/services/jellyfin.md @@ -1,12 +1,16 @@ --- -title: Jellyfin +title: "Jellyfin" +description: "Here you can find the documentation for hosting Jellyfin with Coolify." --- + ![Jellyfin](https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/banner-logo-solid.svg?sanitize=true) ## What is Jellyfin? -Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest! +Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. + +There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest! ## Links diff --git a/docs/services/jenkins.md b/docs/services/jenkins.md new file mode 100644 index 00000000..f056c167 --- /dev/null +++ b/docs/services/jenkins.md @@ -0,0 +1,16 @@ +--- +title: "Jenkins" +description: "Here you can find the documentation for hosting Jenkins with Coolify." +--- + + +![Jenkins](https://www.jenkins.io/images/jenkins-logo-title-dark.svg) + +## What is Jenkins? + +Jenkins is a popular open-source automation server used for continuous integration and continuous delivery (CI/CD). It allows developers to build, test, and deploy software projects reliably. + +## Links + +- [The official website ›](https://www.jenkins.io/) +- [GitHub ›](https://github.com/jenkinsci/jenkins) diff --git a/docs/services/kimai.md b/docs/services/kimai.md new file mode 100644 index 00000000..1bc9f3e4 --- /dev/null +++ b/docs/services/kimai.md @@ -0,0 +1,23 @@ +--- +title: "Kimai" +description: "Here you can find the documentation for hosting Kimai with Coolify." +--- + + +![Kimai](https://raw.githubusercontent.com/kimai/www.kimai.org/refs/heads/main/images/kimai_logo.webp) + +## What is Kimai? + +Kimai makes time-tracking easy. An open-source solution for teams of all sizes. + +## Screenshots + +![Configurable Kimai Dashboard](https://raw.githubusercontent.com/kimai/www.kimai.org/refs/heads/main/images/screenshots/screenshot-dashboard.webp) + + +![Project detail-report screen](https://raw.githubusercontent.com/kimai/www.kimai.org/refs/heads/main/images/screenshots/screenshot-reporting.webp) + +## Links + +- [The official website ›](https://www.kimai.org/?utm_source=coolify.io) +- [GitHub ›](https://github.com/kimai/kimai) diff --git a/docs/services/kuzzle.md b/docs/services/kuzzle.md index 240b4f02..30b29908 100644 --- a/docs/services/kuzzle.md +++ b/docs/services/kuzzle.md @@ -1,8 +1,10 @@ --- -title: Kuzzle +title: "Kuzzle" +description: "Here you can find the documentation for hosting Kuzzle with Coolify." --- -![Kuzzle](https://user-images.githubusercontent.com/7868838/103797784-32337580-5049-11eb-8917-3fcf4487644c.webp) + +![Kuzzle](https://user-images.githubusercontent.com/7868838/103797784-32337580-5049-11eb-8917-3fcf4487644c.png) ## What is Kuzzle? diff --git a/docs/services/labelstudio.md b/docs/services/labelstudio.md new file mode 100644 index 00000000..6c9a3889 --- /dev/null +++ b/docs/services/labelstudio.md @@ -0,0 +1,19 @@ +--- +title: "Label Studio" +description: "Here you can find the documentation for hosting Label Studio with Coolify." +--- + +# What is Label Studio? +Label Studio is an open-source data labeling platform that streamlines the process of annotating and labeling data for machine learning and AI applications. + +## Screenshots + + +
+ +
+ + +## Links + +- [The official website ›](https://labelstud.io/) diff --git a/docs/services/langfuse.md b/docs/services/langfuse.md new file mode 100644 index 00000000..6d8b1ad5 --- /dev/null +++ b/docs/services/langfuse.md @@ -0,0 +1,35 @@ +--- +title: "Langfuse" +description: "Here you can find the documentation for hosting Langfuse with Coolify." +--- + +# What is Langfuse? + +[Langfuse](https://langfuse.com/) is an **[open-source](https://github.com/langfuse/langfuse) LLM engineering platform** that empowers teams to collaboratively **debug**, **analyze**, and **iterate** on their LLM applications. + +It accelerates the development workflow by providing tools for **observability**, **tracing**, **prompt management**, **evaluation**, and **analytics**. + +## Key Features + +### Observability and Tracing + +- **Insights**: Gain a granular understanding of your LLM's behavior with detailed tracing capabilities. +- **Integrations**: Seamlessly integrate with popular frameworks like [LangChain](https://langfuse.com/docs/integrations/langchain), [Llama Index](https://langfuse.com/docs/integrations/llama-index), and [OpenAI](https://langfuse.com/docs/integrations/openai). + +### Prompt Management + +- **Linked Tracing**: Connect prompt versions with tracing data for a holistic view of interactions. +- **Zero Latency**: Experience prompt management without added latency in your applications. +- **Efficient Management**: Organize and version your prompts to optimize model performance. + +### Evaluation and Analytics + +- **Model-Based Evaluations**: Utilize built-in tools or integrate external pipelines like [UpTrain](https://langfuse.com/guides/cookbook/evaluation_with_uptrain) and [Ragas](https://langfuse.com/guides/cookbook/evaluation_of_rag_with_ragas). +- **Custom Metrics**: Define and track custom scores and annotations to measure performance. +- **Analytics Dashboard**: Access visualizations and reports to monitor usage, costs, and model effectiveness. + +## Get Started + +- Visit the [Langfuse docs](https://langfuse.com/docs) to get started. +- + diff --git a/docs/services/listmonk.md b/docs/services/listmonk.md new file mode 100644 index 00000000..49cb89fd --- /dev/null +++ b/docs/services/listmonk.md @@ -0,0 +1,20 @@ +--- +title: "Listmonk" +description: "Here you can find the documentation for hosting Listmonk with Coolify." +--- + + +![Listmonk](https://user-images.githubusercontent.com/547147/231084896-835dba66-2dfe-497c-ba0f-787564c0819e.png) + +## What is Listmonk? + +Self-hosted newsletter and mailing list manager. + +## Screenshots + +![Listmonk Preview](https://user-images.githubusercontent.com/547147/134939475-e0391111-f762-44cb-b056-6cb0857755e3.png) + +## Links + +- [The official website ›](https://listmonk.app/) +- [GitHub ›](https://github.com/knadh/listmonk) diff --git a/docs/services/litellm.md b/docs/services/litellm.md new file mode 100644 index 00000000..29943558 --- /dev/null +++ b/docs/services/litellm.md @@ -0,0 +1,22 @@ +--- +title: "Litellm" +description: "Here you can find the documentation for hosting Litellm with Coolify." +--- + +# What is Litellm? + +LiteLLM is an open-source LLM Gateway to manage authentication, loadbalancing, and spend tracking across 100+ LLMs. All in the OpenAI format. + +## Screenshots + + +
+ +
+ +
+ + +## Links + +- [The official website ›](https://docs.litellm.ai?utm_source=coolify.io) diff --git a/docs/services/logto.md b/docs/services/logto.md index 1b190676..4973500b 100644 --- a/docs/services/logto.md +++ b/docs/services/logto.md @@ -1,8 +1,9 @@ --- -title: Logto +title: "Logto" +description: "Here you can find the documentation for hosting Logto with Coolify." --- -![Logto](https://github.com/logto-io/logto/raw/master/logo.webp) +![Logto](https://github.com/logto-io/logto/raw/master/logo.png) ## What is Logto? diff --git a/docs/services/mailpit.md b/docs/services/mailpit.md new file mode 100644 index 00000000..430b6fba --- /dev/null +++ b/docs/services/mailpit.md @@ -0,0 +1,17 @@ +--- +title: "Mailpit" +description: "Here you can find the documentation for hosting Mailpit with Coolify." +--- + +# What is Mailpit? + +Mailpit is a self-hosted email and SMTP testing tool with a web interface. + +## Screenshots + +![Mailpit preview](https://raw.githubusercontent.com/axllent/mailpit/develop/server/ui-src/screenshot.png) + +## Links + +- [The official website ›](https://mailpit.axllent.org) +- [GitHub ›](https://github.com/axllent/mailpit) \ No newline at end of file diff --git a/docs/services/mediawiki.md b/docs/services/mediawiki.md new file mode 100644 index 00000000..b463ea1d --- /dev/null +++ b/docs/services/mediawiki.md @@ -0,0 +1,27 @@ +--- +title: "Mediawiki" +description: "Here you can find the documentation for hosting Mediawiki with Coolify." +--- + +![Mediawiki](https://www.mediawiki.org/static/images/icons/mediawikiwiki.svg) + +## What is Mediawiki? + +Free and open source collaborative space for managing and sharing knowledge. + +## Installation Steps + +1. Comment out the shared volume for LocalSettings in your configuration. +2. Start the container. +3. Go to `http(s)://your-domain` to access the MediaWiki installation wizard. +4. Configure MediaWiki according to your needs through the wizard. +5. Download the generated `LocalSettings.php` file. +6. Stop the container. +7. Move the downloaded `LocalSettings.php` file to the specified file mount path on your server. +8. Uncomment the shared volume configuration to mount the `LocalSettings.php` file to the specified file mount path on your server. +9. Restart the container. + +## Links + +- [The official website ›](https://www.mediawiki.org/wiki/MediaWiki) +- [GitHub ›](https://github.com/wikimedia/mediawiki) diff --git a/docs/services/meilisearch.md b/docs/services/meilisearch.md index 277d8a1b..7ca6d404 100644 --- a/docs/services/meilisearch.md +++ b/docs/services/meilisearch.md @@ -1,5 +1,6 @@ --- -title: Meilisearch +title: "Meilisearch" +description: "Here you can find the documentation for hosting Meilisearch with Coolify." --- ![Meilisearch](https://github.com/meilisearch/meilisearch/raw/main/assets/meilisearch-logo-light.svg?sanitize=true#gh-light-mode-only) diff --git a/docs/services/metabase.md b/docs/services/metabase.md index fa0e8ded..69b60b14 100644 --- a/docs/services/metabase.md +++ b/docs/services/metabase.md @@ -1,5 +1,6 @@ --- -title: Metabase +title: "Metabase" +description: "Here you can find the documentation for hosting Metabase with Coolify." --- ![Metabase](https://github.com/metabase/metabase/raw/master/docs/images/metabase-product-screenshot.svg) diff --git a/docs/services/metube.md b/docs/services/metube.md index 25a3e519..1dad5f26 100644 --- a/docs/services/metube.md +++ b/docs/services/metube.md @@ -1,5 +1,6 @@ --- -title: Metube +title: "Metube" +description: "Here you can find the documentation for hosting Metube with Coolify." --- ![Metube](https://github.com/alexta69/metube/raw/master/screenshot.gif) diff --git a/docs/services/minecraft.md b/docs/services/minecraft.md new file mode 100644 index 00000000..b74394a6 --- /dev/null +++ b/docs/services/minecraft.md @@ -0,0 +1,15 @@ +--- +title: "Minecraft" +description: "Here you can find the documentation for hosting Minecraft with Coolify." +--- + + +# What is Minecraft? + +Minecraft is a sandbox video game developed by Mojang Studios. The game was created by Markus "Notch" Persson in the Java programming language. + +It is a single-player and multiplayer game that allows players to explore, build, and mine in a procedurally generated world. + +## Links + +- [GitHub ›](https://github.com/itzg/docker-minecraft-server) diff --git a/docs/services/minio.md b/docs/services/minio.md index 3a0877df..681f0787 100644 --- a/docs/services/minio.md +++ b/docs/services/minio.md @@ -1,8 +1,10 @@ --- -title: MinIO +title: "MinIO" +description: "Here you can find the documentation for hosting MinIO with Coolify." --- -![MinIO](https://github.com/minio.webp) + +![MinIO](https://github.com/minio.png) ## What is MinIO? diff --git a/docs/services/mixpost.md b/docs/services/mixpost.md new file mode 100644 index 00000000..0b285af6 --- /dev/null +++ b/docs/services/mixpost.md @@ -0,0 +1,16 @@ +--- +title: "Mixpost" +description: "Here you can find the documentation for hosting Mixpost with Coolify." +--- + + +![Mixpost](https://raw.githubusercontent.com/inovector/mixpost/main/art/logo.svg) + +## What is Mixpost? + +Self-hosted social media management software (Buffer alternative). + +## Links + +- [The official Mixpost website ›](https://mixpost.app/) +- [GitHub ›](https://github.com/inovector/mixpost) diff --git a/docs/services/moodle.md b/docs/services/moodle.md new file mode 100644 index 00000000..2430b0fb --- /dev/null +++ b/docs/services/moodle.md @@ -0,0 +1,16 @@ +--- +title: "Moodle" +description: "Here you can find the documentation for hosting Moodle with Coolify." +--- + + +![Moodle](https://raw.githubusercontent.com/moodle/moodle/main/.github/moodlelogo.svg) + +## What is Moodle? + +Moodle is an open-source learning platform that provides a secure and private alternative to popular cloud storage services like Google Drive and Dropbox. It allows you to store, sync, and share files, photos, and videos across multiple devices, and offers features like file versioning, password-protected sharing, and collaboration tools. + +## Links + +- [The official website ›](https://moodle.com/) +- [GitHub ›](https://github.com/moodle/moodle) diff --git a/docs/services/mosquitto.md b/docs/services/mosquitto.md new file mode 100644 index 00000000..fb9bf5f9 --- /dev/null +++ b/docs/services/mosquitto.md @@ -0,0 +1,15 @@ +--- +title: "Mosquitto" +description: "Here you can find the documentation for hosting Mosquitto with Coolify." +--- + +![Mosquitto](https://raw.githubusercontent.com/eclipse-mosquitto/mosquitto/refs/heads/master/logo/mosquitto-text-below.svg) + +## What is Mosquitto? + +Mosquitto is an open-source MQTT (Message Queuing Telemetry Transport) broker that facilitates communication between IoT devices by implementing the lightweight MQTT protocol. It's designed to provide reliable message delivery in scenarios with limited bandwidth or unstable networks, making it a key component for IoT and home automation systems. + +## Links + +- [The official website ›](https://mosquitto.org/) +- [GitHub ›](https://github.com/eclipse/mosquitto) diff --git a/docs/services/n8n.md b/docs/services/n8n.md new file mode 100644 index 00000000..41d471a7 --- /dev/null +++ b/docs/services/n8n.md @@ -0,0 +1,20 @@ +--- +title: "N8N" +description: "Here you can find the documentation for hosting N8N with Coolify." +--- + + +![N8N](https://user-images.githubusercontent.com/65276001/173571060-9f2f6d7b-bac0-43b6-bdb2-001da9694058.png) + +## What is N8N? + +N8N is an open-source workflow automation tool that allows you to connect different applications and services together. It is an open-source alternative to tools like Zapier or Make. + +## Screenshots + +![N8N Preview](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-screenshot.png) + +## Links + +- [The official website ›](https://n8n.io/) +- [GitHub ›](https://github.com/n8n-io/n8n) diff --git a/docs/services/nextcloud.md b/docs/services/nextcloud.md new file mode 100644 index 00000000..0d0c717f --- /dev/null +++ b/docs/services/nextcloud.md @@ -0,0 +1,19 @@ +--- +title: "NextCloud" +description: "Here you can find the documentation for hosting NextCloud with Coolify." +--- + +![NextCloud](https://nextcloud.com/c/uploads/2022/11/logo_nextcloud_white.svg) + +## What is NextCloud? + +NextCloud is an open-source productivity platform that provides a secure and private alternative to popular cloud storage services like Google Drive and Dropbox. It allows you to store, sync, and share files, photos, and videos across multiple devices, and offers features like file versioning, password-protected sharing, and collaboration tools. + +## Screenshots + +![NextCloud preview](https://raw.githubusercontent.com/nextcloud/screenshots/master/nextcloud-hub-files-25-preview.png) + +## Links + +- [The official website ›](https://nextcloud.com/) +- [GitHub ›](https://github.com/nextcloud/server) diff --git a/docs/services/nexus.md b/docs/services/nexus.md new file mode 100644 index 00000000..c2d575db --- /dev/null +++ b/docs/services/nexus.md @@ -0,0 +1,32 @@ +--- +title: "Sonatype Nexus" +description: "Here you can find the documentation for hosting Sonatype Nexus with Coolify." +--- + + + + +## What is Sonatype Nexus + +Sonatype Nexus is a repository manager that allows you to store, manage, and distribute your software artifacts. +The official container is for x86_64 architecture. The arm64 version is community maintained and synced with the official repository. + +## Setup + +- The setup relies on starting as default user "admin" with password "admin123". +- Once the service is running, login with the default credentials and change the password. +- After that, delete `NEXUS_SECURITY_RANDOMPASSWORD=false` line from the compose file and restart the service to apply the changes. + +Minimum requirements: +- 4 vCPU +- 3 GB RAM + +## Screenshots + + + + +## Links + +- [The official website ›](https://help.sonatype.com/en/sonatype-nexus-repository.html?utm_source=coolify.io) +- [GitHub ›](https://github.com/sonatype/docker-nexus3?utm_source=coolify.io) diff --git a/docs/services/nitropage.md b/docs/services/nitropage.md new file mode 100644 index 00000000..3a9f79d5 --- /dev/null +++ b/docs/services/nitropage.md @@ -0,0 +1,30 @@ +--- +title: "Nitropage" +description: "Here you can find the documentation for hosting Nitropage with Coolify." +--- + + + + + +## What is Nitropage? + +Nitropage is an extensible, drag-and-drop website builder based on SolidStart, completely free and open source. + + +## Video + + + +## Links + +- [The official website ›](https://nitropage.com/?utm_source=coolify.io) +- [GitHub ›](https://codeberg.org/nitropage/nitropage?utm_source=coolify.io) diff --git a/docs/services/nocodb.md b/docs/services/nocodb.md new file mode 100644 index 00000000..38616a52 --- /dev/null +++ b/docs/services/nocodb.md @@ -0,0 +1,21 @@ +--- +title: "NocoDB" +description: "Here you can find the documentation for hosting NocoDB with Coolify." +--- + +# What is NocoDB? + +NocoDB is an open source Airtable alternative. Turns any MySQL, PostgreSQL, SQL Server, SQLite & MariaDB into a smart-spreadsheet. + +## Screenshots + + + + + + + +## Links + +- [The official website ›](https://nocodb.com/) +- [GitHub ›](https://github.com/nocodb/nocodb) diff --git a/docs/services/odoo.md b/docs/services/odoo.md new file mode 100644 index 00000000..e30b87f2 --- /dev/null +++ b/docs/services/odoo.md @@ -0,0 +1,18 @@ +--- +title: "Odoo" +description: "Here you can find the documentation for hosting Odoo with Coolify." +--- + +# What is Odoo? +Odoo is an open source ERP and CRM software. + +## Screenshots + +![Odoo Home](https://odoocdn.com/openerp_website/static/src/img/apps/home/speed_4.webp) + +![Odoo Search](https://odoocdn.com/openerp_website/static/src/img/apps/home/ctrl-k-630.gif) + +## Links + +- [The official website ›](https://www.odoo.com/) +- [GitHub ›](https://github.com/odoo/odoo) diff --git a/docs/services/ollama.md b/docs/services/ollama.md new file mode 100644 index 00000000..42b7ba9c --- /dev/null +++ b/docs/services/ollama.md @@ -0,0 +1,21 @@ +--- +title: "Ollama" +description: "Here you can find the documentation for hosting Ollama with Coolify." +--- + + + + +## What is Ollama? + +Ollama is a lightweight and efficient server for running large language models (LLMs) on your local machine or in the cloud. + +It includes OpenWebUI, a web-based interface for interacting with the models. + +## Screenshots + + +## Links + +- [The official website ›](https://ollama.com/?utm_source=coolify.io) +- [GitHub ›](https://github.com/ollama/ollama?utm_source=coolify.io) diff --git a/docs/services/openblocks.md b/docs/services/openblocks.md new file mode 100644 index 00000000..b94ec901 --- /dev/null +++ b/docs/services/openblocks.md @@ -0,0 +1,17 @@ +--- +title: "OpenBlocks" +description: "Here you can find the documentation for hosting OpenBlocks with Coolify." +--- + +# What is OpenBlocks? + +OpenBlocks is an open source low-code platform. + +## Screenshots + +![OpenBlocks Preview](https://raw.githubusercontent.com/openblocks-dev/openblocks/develop/docs/.gitbook/assets/Bu2fpz1h01.gif) + +## Links + +- [The official website ›](https://www.openblocks.dev/) +- [GitHub ›](https://github.com/openblocks-dev/openblocks) diff --git a/docs/services/outline.md b/docs/services/outline.md new file mode 100644 index 00000000..e46b69f4 --- /dev/null +++ b/docs/services/outline.md @@ -0,0 +1,18 @@ +--- +title: "Outline" +description: "Here you can find the documentation for hosting Outline with Coolify." +--- + +# What is Outline? + +Outline is an open-source collaboration tool that allows you to create and share documents with your team. + +## Screenshots + + + + +## Links + +- [The official website ›](https://getoutline.com/?utm_source=coolify.io) +- [GitHub ›](https://github.com/outline/outline?utm_source=coolify.io) diff --git a/docs/services/overseerr.md b/docs/services/overseerr.md new file mode 100644 index 00000000..6e19a34f --- /dev/null +++ b/docs/services/overseerr.md @@ -0,0 +1,20 @@ +--- +title: "Overseerr" +description: "Here you can find the documentation for hosting Overseerr with Coolify." +--- + + + + +## What is Overseerr? + +Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem. + +## Screenshots + + + +## Links + +- [The official website ›](https://overseerr.dev/) +- [GitHub ›](https://github.com/sct/overseerr) diff --git a/docs/services/overview.md b/docs/services/overview.md index 54f94705..73dc98c2 100644 --- a/docs/services/overview.md +++ b/docs/services/overview.md @@ -4,11 +4,11 @@ title: Overview # Overview - +This list only includes services that are available as one-click services in Coolify. - +::: @@ -16,48 +16,126 @@ You can host ANY service with Coolify that could be containerized. -::: danger Note: + - +- [Stirling PDF](/services/stirling-pdf) - Powerful PDF manipulation tool. +- [Supabase](/services/supabase) - Open source Firebase alternative. +- [Syncthing](/services/syncthing) - Open Source Continuous File Synchronization. +- [Tolgee](/services/tolgee) - Open source localization platform. +- [Trigger](/services/trigger) - Open-source workflow automation tool. +- [Twenty](/services/twenty) - Open-source CRM. +- [Umami](/services/umami) - Simple, fast, privacy-focused alternative to Google Analytics. +- [Unleash](/services/unleash) - Open-source feature management platform. +- [Unstructured](/services/unstructured) - Open-source platform and tools to ingest and process unstructured documents for Retrieval Augmented Generation (RAG) and model fine-tuning. +- [Uptime Kuma](/services/uptime-kuma) - A fancy self-hosted monitoring tool. +- [Vaultwarden](/services/vaultwarden) - Unofficial Bitwarden compatible server. +- [Vikunja](/services/vikunja) - The open-source to-do app. +- [Weaviate](/services/weaviate) - Open source, AI-native vector database. +- [Weblate](/services/weblate) - Web-based translation tool. +- [Whoogle](/services/whoogle) - Self-hosted, ad-free, privacy-respecting metasearch engine. +- [Windmill](/services/windmill) - Open-source developer platform. +- [WordPress](/services/wordpress) - Website and blogging platform. +- [Zipline](/services/zipline) - Next generation ShareX / File upload server \ No newline at end of file diff --git a/docs/services/pairdrop.md b/docs/services/pairdrop.md new file mode 100644 index 00000000..a093e258 --- /dev/null +++ b/docs/services/pairdrop.md @@ -0,0 +1,15 @@ +--- +title: "Pairdrop" +description: "Here you can find the documentation for hosting Pairdrop with Coolify." +--- + +![Pairdrop](https://raw.githubusercontent.com/schlagmichdoch/PairDrop/refs/heads/master/public/images/android-chrome-192x192-maskable.png) + +## What is Pairdrop? + +Pairdrop is a self-hosted file sharing and collaboration platform, offering secure file sharing and collaboration capabilities for efficient teamwork. + +## Links + +- [The official website ›](https://pairdrop.net/) +- [GitHub ›](https://github.com/schlagmichdoch/pairdrop) diff --git a/docs/services/penpot.md b/docs/services/penpot.md new file mode 100644 index 00000000..6cb54626 --- /dev/null +++ b/docs/services/penpot.md @@ -0,0 +1,22 @@ +--- +title: "Penpot" +description: "Here you can find the documentation for hosting Penpot with Coolify." +--- + + +![Penpot](https://camo.githubusercontent.com/119ae16473fdd30f3fa077eb2639e9e2639cb3297c5e50c226c0eb25a82ea00d/68747470733a2f2f70656e706f742e6170702f696d616765732f726561646d652f6769746875622d6461726b2d6d6f64652e706e67) + +## What is Penpot? + +Penpot is an open-source design and prototyping tool that empowers teams to create beautiful, interactive prototypes and collaborate seamlessly. + +## Screenshot + +![Penpot Preview](https://img.plasmic.app/img-optimizer/v1/img?src=https%3A%2F%2Fimg.plasmic.app%2Fimg-optimizer%2Fv1%2Fimg%2F9e922d089997492bca824e935a55437d.png&q=75&f=webp) +![Penpot Preview 2](https://img.plasmic.app/img-optimizer/v1/img?src=https%3A%2F%2Fimg.plasmic.app%2Fimg-optimizer%2Fv1%2Fimg%2Fc57dc0469f1c4c9998c0db050026fa4f.png&q=75&f=webp) +![Penpot Preview 3](https://img.plasmic.app/img-optimizer/v1/img?src=https%3A%2F%2Fimg.plasmic.app%2Fimg-optimizer%2Fv1%2Fimg%2Fc6e0f7625ea89b09cfb548dc470eac1d.png&q=75&f=webp) + +## Links + +- [The official website ›](https://penpot.app/) +- [GitHub ›](https://github.com/penpot/penpot) diff --git a/docs/services/phpmyadmin.md b/docs/services/phpmyadmin.md new file mode 100644 index 00000000..69a083c7 --- /dev/null +++ b/docs/services/phpmyadmin.md @@ -0,0 +1,15 @@ +--- +title: "PhpMyAdmin" +description: "Here you can find the documentation for hosting PhpMyAdmin with Coolify." +--- + +![PhpMyAdmin](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.phpmyadmin.net%2Fstatic%2Fimages%2Flogo-og.png&f=1&nofb=1&ipt=677560c7ab411b6c57023e2b7d1a9c2e4969aed8c4510c9493acea67fc6b16db&ipo=images) + +## What is PhpMyAdmin? + +PhpMyAdmin is a free and open-source administration tool for MySQL and MariaDB. + +## Links + +- [The official website ›](https://www.phpmyadmin.net/) +- [GitHub ›](https://github.com/phpmyadmin/phpmyadmin) diff --git a/docs/services/plane.md b/docs/services/plane.md new file mode 100644 index 00000000..c61f6dbe --- /dev/null +++ b/docs/services/plane.md @@ -0,0 +1,23 @@ +--- +title: "Plane" +description: "Here you can find the documentation for hosting Plane with Coolify." +--- + + +![Plane](https://camo.githubusercontent.com/82feb9c8f8212561ecebe55b26622afa2b11e9943c698d3a28789f0bed77b651/68747470733a2f2f706c616e652d6d61726b6574696e672e73332e61702d736f7574682d312e616d617a6f6e6177732e636f6d2f706c616e652d726561646d652f706c616e655f6c6f676f5f2e77656270) + +## What is Plane? + +Plane is a free and open-source project management tool that empowers teams to collaborate and manage projects efficiently. + +## Screenshots + +![Plane Preview](https://plane.so/_next/image?url=https%3A%2F%2Fimages.plane.so%2Fhome%2Fcycles%2Fdesktop-dark.png&w=1920&q=75) +![Plane Preview 2](https://plane.so/_next/image?url=https%3A%2F%2Fimages.plane.so%2Fhome%2Fmodules%2Fdesktop-dark.png&w=1920&q=75) +![Plane Preview 3](https://plane.so/_next/image?url=https%3A%2F%2Fimages.plane.so%2Fhome%2Fissues%2Fdesktop-dark.webp&w=1920&q=75) +![Plane Preview 4](https://plane.so/_next/image?url=https%3A%2F%2Fimages.plane.so%2Fhome%2Fhero%2Fissues-dark.webp&w=1920&q=75) + +## Links + +- [The official website ›](https://plane.so) +- [GitHub ›](https://github.com/makeplane/plane) diff --git a/docs/services/plausible.md b/docs/services/plausible.md index 56f12bf1..f7653b63 100644 --- a/docs/services/plausible.md +++ b/docs/services/plausible.md @@ -1,26 +1,28 @@ --- -title: Plausible Analytics +title: "Plausible Analytics" +description: "Here you can find the documentation for hosting Plausible Analytics with Coolify." --- -![Plausible Analytics](https://plausible.io/images/ee/logo_light-38aed73a70daced020b53243966ed15e.svg?vsn=d) + + ## What is Plausible Analytics? -Plausible is intuitive, lightweight and open source web analytics. No cookies and fully compliant with GDPR, CCPA and PECR. Made and hosted in the EU, powered by European-owned cloud infrastructure 🇪🇺 +Plausible is intuitive, lightweight and open-source web analytics software. It uses no cookies and is fully compliant with GDPR, CCPA and PECR. ## How to deploy Plausible Analytics with Coolify? -Due to trademark issues, we can't make a fully automated installation for Plausible Analytics. But don't worry, it's still easy to install it. +Due to trademark issues, we can't provide a fully automated one-click Service installation for Plausible Analytics. But don't worry, it's still very easy to install. ## Installation -1. You need to select the `Based on Docker Compose` application type where you can add any docker-compose file you want. -2. Copy the following [file](https://raw.githubusercontent.com/coollabsio/coolify/main/templates/compose/plausible.yaml) to the input box (with the comments). +1. Add a New Resource and select the `Docker Compose Empty` application deployment type. +2. Copy the following [file](https://raw.githubusercontent.com/coollabsio/coolify/main/templates/compose/plausible.yaml) into the input box (with the comments). 3. Click on the `Save` button. -4. Go to the `Plausible` service's settings page (gear icon on the right side). -5. Add your custom domain name to the `FQDN` input box. +4. Go to the `Plausible` service's settings page (`Settings` button on the right side). +5. Add your custom domain to the `Domains` input box (you can also edit the domains by clicking on the edit icon next to the autogenerated domain). 6. Click on the `Save` button. -7. Click on the `Deploy` button. +7. Click on the `Deploy` button and wait for the deployment to finish. ## Links diff --git a/docs/services/plex.md b/docs/services/plex.md new file mode 100644 index 00000000..d1453bd8 --- /dev/null +++ b/docs/services/plex.md @@ -0,0 +1,31 @@ +--- +title: "Plex" +description: "Here you can find the documentation for hosting Plex with Coolify." +--- + + + + +## What is Plex? + +Available on almost any device, Plex is the first-and-only streaming platform to offer free ad-supported movies, shows, and live TV together. + +## Installation + +1. Create the service within Coolify. +2. BEFORE starting the service, set the `PLEX_CLAIM` variable. You can get a claim token here: https://plex.tv/claim +3. If your device supports it, enable hardware transcoding by uncommenting this section in the compose file: + +```yaml +#devices: +# - "/dev/dri:/dev/dri" +``` + +## Screenshots + + + +## Links + +- [The official website ›](https://www.plex.tv/) +- [GitHub ›](https://github.com/plexinc/pms-docker) diff --git a/docs/services/plunk.md b/docs/services/plunk.md new file mode 100644 index 00000000..1daa2d78 --- /dev/null +++ b/docs/services/plunk.md @@ -0,0 +1,22 @@ +--- +title: "Plunk" +description: "Here you can find the documentation for hosting Plunk with Coolify." +--- + + +![Plunk](https://raw.githubusercontent.com/useplunk/plunk/main/assets/card.png) + +## What is Plunk? + +Plunk is an open-source email platform for AWS. + +## Screenshots + +![Plunk Advanced Selector](https://raw.githubusercontent.com/useplunk/docs/refs/heads/main/images/advanced-selector.png) +![Plunk Editor](https://raw.githubusercontent.com/useplunk/docs/refs/heads/main/images/editor.png) +![Plunk Action](https://raw.githubusercontent.com/useplunk/docs/refs/heads/main/images/action.png) + +## Links + +- [The official website ›](https://useplunk.com) +- [GitHub ›](https://github.com/useplunk/plunk) diff --git a/docs/services/pocketbase.md b/docs/services/pocketbase.md new file mode 100644 index 00000000..4dfa9b0a --- /dev/null +++ b/docs/services/pocketbase.md @@ -0,0 +1,16 @@ +--- +title: "PocketBase" +description: "Here you can find the documentation for hosting PocketBase with Coolify." +--- + + +![PocketBase](https://camo.githubusercontent.com/3b198a3ea92b78b9f56f6ec7c2eea0d81ee57ec8b4e2420cde3e1fecedcbc2c7/68747470733a2f2f692e696d6775722e636f6d2f3571696d6e6d352e706e67) + +## What is PocketBase? + +PocketBase is an open-source backend-as-a-service (BaaS) that empowers developers to build web and mobile applications faster and easier. + +## Links + +- [The official website ›](https://pocketbase.io) +- [GitHub ›](https://github.com/pocketbase/pocketbase) diff --git a/docs/services/posthog.md b/docs/services/posthog.md new file mode 100644 index 00000000..1496ed6c --- /dev/null +++ b/docs/services/posthog.md @@ -0,0 +1,16 @@ +--- +title: "PostHog" +description: "Here you can find the documentation for hosting PostHog with Coolify." +--- + + +![PostHog](https://user-images.githubusercontent.com/65415371/205059737-c8a4f836-4889-4654-902e-f302b187b6a0.png) + +## What is PostHog? + +The single platform to analyze, test, observe, and deploy new features + +## Links + +- [The official website ›](https://posthog.com) +- [GitHub ›](https://github.com/PostHog/posthog) diff --git a/docs/services/prefect.md b/docs/services/prefect.md new file mode 100644 index 00000000..aba7ac17 --- /dev/null +++ b/docs/services/prefect.md @@ -0,0 +1,21 @@ +--- +title: "Prefect" +description: "Here you can find the documentation for hosting Prefect with Coolify." +--- + + + + +## What is Prefect? + +Prefect is an orchestration and observability platform that empowers developers to build and scale workflows quickly. + +## Screenshots + + + + +## Links + +- [The official website ›](https://www.prefect.io?utm_source=coolify.io) +- [GitHub ›](https://github.com/PrefectHQ/prefect?utm_source=coolify.io) diff --git a/docs/services/prowlarr.md b/docs/services/prowlarr.md new file mode 100644 index 00000000..d05da80f --- /dev/null +++ b/docs/services/prowlarr.md @@ -0,0 +1,20 @@ +--- +title: "Prowlarr" +description: "Here you can find the documentation for hosting Prowlarr with Coolify." +--- + + + + +## What is Prowlarr? + +Prowlarr is an indexer manager/proxy built on the popular \*arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports management of both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Lidarr, Mylar3, Radarr, Readarr, and Sonarr offering complete management of your indexers with no per app Indexer setup required (we do it all). + +## Screenshots + + + +## Links + +- [The official website ›](https://prowlarr.com/) +- [GitHub ›](https://github.com/Prowlarr/Prowlarr) diff --git a/docs/services/qdrant.md b/docs/services/qdrant.md new file mode 100644 index 00000000..af10a118 --- /dev/null +++ b/docs/services/qdrant.md @@ -0,0 +1,17 @@ +--- +title: "Qdrant" +description: "Here you can find the documentation for hosting Qdrant with Coolify." +--- + + + + +## What is Qdrant? + +Qdrant is an AI-native vector database and a semantic search engine. You can use it to extract meaningful information from unstructured data. + + +## Links + +- [The official website ›](https://qdrant.tech/?utm_source=coolify.io) +- [GitHub ›](https://github.com/qdrant/qdrant?utm_source=coolify.io) diff --git a/docs/services/rabbitmq.md b/docs/services/rabbitmq.md new file mode 100644 index 00000000..e3a29600 --- /dev/null +++ b/docs/services/rabbitmq.md @@ -0,0 +1,16 @@ +--- +title: "RabbitMQ" +description: "Here you can find the documentation for hosting RabbitMQ with Coolify." +--- + + +![RabbitMQ](https://www.rabbitmq.com/img/rabbitmq-logo-with-name.svg) + +## What is RabbitMQ? + +RabbitMQ is an open-source message broker software that implements the Advanced Message Queuing Protocol (AMQP). It provides a messaging system that allows applications to communicate with each other using a messaging protocol. + +## Links + +- [The official website ›](https://rabbitmq.com) +- [GitHub ›](https://github.com/rabbitmq/rabbitmq-server) diff --git a/docs/services/radarr.md b/docs/services/radarr.md new file mode 100644 index 00000000..a66b7669 --- /dev/null +++ b/docs/services/radarr.md @@ -0,0 +1,19 @@ +--- +title: "Radarr" +description: "Here you can find the documentation for hosting Radarr with Coolify." +--- + + + +## What is Radarr? + +See all your upcoming movies in one convenient location. Manual Search Find all the releases, choose the one you want and send it right to your download client. + +## Screenshots + + + +## Links + +- [The official website ›](https://radarr.video/) +- [GitHub ›](https://github.com/Radarr/Radarr) diff --git a/docs/services/reactive-resume.md b/docs/services/reactive-resume.md new file mode 100644 index 00000000..2d6ebec7 --- /dev/null +++ b/docs/services/reactive-resume.md @@ -0,0 +1,16 @@ +--- +title: "Reactive Resume" +description: "Here you can find the documentation for hosting Reactive Resume with Coolify." +--- + + +![Reactive Resume](https://camo.githubusercontent.com/34a172f62213af3abf30c655d1a42744d57019f3866b321aa83d9f4d403d5248/68747470733a2f2f692e696d6775722e636f6d2f464663346e795a2e6a7067) + +## What is Reactive Resume? + +Reactive Resume is an open-source resume builder that allows you to create a professional resume in minutes. It provides a simple and intuitive interface that allows you to create a resume that stands out. + +## Links + +- [The official website ›](https://rxresu.me/) +- [GitHub ›](https://github.com/AmruthPillai/Reactive-Resume) diff --git a/docs/services/rocketchat.md b/docs/services/rocketchat.md new file mode 100644 index 00000000..b92ef057 --- /dev/null +++ b/docs/services/rocketchat.md @@ -0,0 +1,22 @@ +--- +title: "Rocket.Chat" +description: "Here you can find the documentation for hosting Rocket.Chat with Coolify." +--- + + +![Rocket Chat](https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/2020/png/logo-horizontal-red.png) + +## What is Rocket.Chat? + +Rocket.Chat is an open-source team communication platform that allows you to communicate with your team in a secure and private way. It provides a simple and intuitive interface that allows you to communicate with your team in a secure and private way. + +## Screenshots + +![Rocket Chat Preview](https://cdn.prod.website-files.com/611a19b9853b7414a0f6b3f6/66d581308d32c005c08e1d32_emergency%20response.avif) +![Rocket Chat Preview 2](https://cdn.prod.website-files.com/611a19b9853b7414a0f6b3f6/66d6b552743cdc359b7b9fda_Group%205006.avif) +![Rocket Chat Preview 3](https://cdn.prod.website-files.com/611a19b9853b7414a0f6b3f6/6298ae98a2113078342a1c9c_team-collaboration.avif) + +## Links + +- [The official website ›](https://rocket.chat) +- [GitHub ›](https://github.com/RocketChat/Rocket.Chat) diff --git a/docs/services/searxng.md b/docs/services/searxng.md new file mode 100644 index 00000000..84a6a257 --- /dev/null +++ b/docs/services/searxng.md @@ -0,0 +1,15 @@ +--- +title: "SearXNG" +description: "Here you can find the documentation for hosting SearXNG with Coolify." +--- + + + +## What is SearXNG? + +SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled. + +## Links + +- [The official website ›](https://docs.searxng.org/?utm_source=coolify.io) +- [GitHub ›](https://github.com/searxng/searxng?utm_source=coolify.io) diff --git a/docs/services/shlink.md b/docs/services/shlink.md new file mode 100644 index 00000000..0c7449dd --- /dev/null +++ b/docs/services/shlink.md @@ -0,0 +1,15 @@ +--- +title: "Shlink" +description: "Here you can find the documentation for hosting Shlink with Coolify." +--- + +![Shlink](https://raw.githubusercontent.com/shlinkio/shlink.io/main/public/images/shlink-hero.png) + +## What is Shlink? + +Shlink is an open-source URL shortener that allows you to create a short URL for your website. It provides a simple and intuitive interface that allows you to create a short URL for your website. + +## Links + +- [The official website ›](https://shlink.io) +- [GitHub ›](https://github.com/shlinkio/shlink) diff --git a/docs/services/slash.md b/docs/services/slash.md new file mode 100644 index 00000000..cca66776 --- /dev/null +++ b/docs/services/slash.md @@ -0,0 +1,17 @@ +--- +title: "Slash" +description: "Here you can find the documentation for hosting Slash with Coolify." +--- + + +## What is Slash? + +An open source, self-hosted platform for sharing and managing your most frequently used links. Easily create customizable, human-readable shortcuts to streamline your link management. + +## Screenshots + +![Slash Preview](https://raw.githubusercontent.com/yourselfhosted/slash/main/docs/assets/demo.png) + +## Links + +- [GitHub ›](https://github.com/yourselfhosted/slash) diff --git a/docs/services/snapdrop.md b/docs/services/snapdrop.md new file mode 100644 index 00000000..3db5b979 --- /dev/null +++ b/docs/services/snapdrop.md @@ -0,0 +1,13 @@ +--- +title: "Snapdrop" +description: "Here you can find the documentation for hosting Snapdrop with Coolify." +--- + + +# What is Snapdrop? + +A self-hosted file-sharing service for secure and convenient file transfers, whether on a local network or the internet. + +## Links + +- [GitHub ›](https://github.com/RobinLinus/snapdrop) diff --git a/docs/services/sonarr.md b/docs/services/sonarr.md new file mode 100644 index 00000000..d1e83a65 --- /dev/null +++ b/docs/services/sonarr.md @@ -0,0 +1,19 @@ +--- +title: "Sonarr" +description: "Here you can find the documentation for hosting Sonarr with Coolify." +--- + + + +## What is Sonarr? + +Sonarr is an internet PVR for Usenet and Torrents. Features Calendar See all your upcoming episodes in one convenient location. + +## Screenshots + + + +## Links + +- [The official website ›](https://sonarr.tv/) +- [GitHub ›](https://github.com/Sonarr/Sonarr) diff --git a/docs/services/statusnook.md b/docs/services/statusnook.md index eccd7635..5e45243c 100644 --- a/docs/services/statusnook.md +++ b/docs/services/statusnook.md @@ -1,5 +1,6 @@ --- -title: Statusnook +title: "Statusnook" +description: "Here you can find the documentation for hosting Statusnook with Coolify." --- ![Statusnook](https://github.com/goksan/statusnook/assets/17437810/ff2bb1d4-5d75-4b6e-b8d9-a7227d1aee6c) diff --git a/docs/services/stirling-pdf.md b/docs/services/stirling-pdf.md new file mode 100644 index 00000000..c03467dc --- /dev/null +++ b/docs/services/stirling-pdf.md @@ -0,0 +1,16 @@ +--- +title: "Stirling PDF" +description: "Here you can find the documentation for hosting Stirling PDF with Coolify." +--- + + +![Stirling PDF](https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling.png) + +## What is Stirling PDF? + +A self-hosted PDF editor for secure and convenient file transfers, whether on a local network or the internet. + +## Links + +- [Official Website ›](https://stirlingpdf.com) +- [GitHub ›](https://github.com/Stirling-Tools/Stirling-PDF) diff --git a/docs/services/supabase.md b/docs/services/supabase.md new file mode 100644 index 00000000..6e57a9da --- /dev/null +++ b/docs/services/supabase.md @@ -0,0 +1,19 @@ +--- +title: "Supabase" +description: "Here you can find the documentation for hosting Supabase with Coolify." +--- + +![Supabase](https://user-images.githubusercontent.com/8291514/213727225-56186826-bee8-43b5-9b15-86e839d89393.png#gh-dark-mode-only) + +## What is Supabase? + +The open source Firebase alternative. + +## Screenshots + +![Supabase Preview](https://raw.githubusercontent.com/supabase/supabase/master/apps/www/public/images/github/supabase-dashboard.png) + +## Links + +- [Official Website ›](https://supabase.io) +- [GitHub ›](https://github.com/supabase/supabase) diff --git a/docs/services/syncthing.md b/docs/services/syncthing.md new file mode 100644 index 00000000..1926e655 --- /dev/null +++ b/docs/services/syncthing.md @@ -0,0 +1,16 @@ +--- +title: "Syncthing" +description: "Here you can find the documentation for hosting Syncthing with Coolify." +--- + + +![Syncthing](https://raw.githubusercontent.com/syncthing/syncthing/main/assets/logo-text-128.png) + +## What is Syncthing? + +Syncthing synchronizes files between two or more computers in real time. + +## Links + +- [Official Website ›](https://syncthing.net) +- [GitHub ›](https://github.com/syncthing/syncthing) diff --git a/docs/services/tolgee.md b/docs/services/tolgee.md new file mode 100644 index 00000000..0d450037 --- /dev/null +++ b/docs/services/tolgee.md @@ -0,0 +1,17 @@ +--- +title: "Tolgee" +description: "Here you can find the documentation for hosting Tolgee with Coolify." +--- + +# What is Tolgee? + +Tolgee is an open-source translation management platform that allows you to manage your translations in a centralized and collaborative way. + +## Screenshots + +![Tolgee Preview](https://user-images.githubusercontent.com/18496315/188672133-064d2a26-e414-4f5e-ab43-549af8cb2145.gif) + +## Links + +- [Official Website ›](https://tolgee.io) +- [GitHub ›](https://github.com/tolgee/tolgee-platform) diff --git a/docs/services/trigger.md b/docs/services/trigger.md new file mode 100644 index 00000000..b2ced826 --- /dev/null +++ b/docs/services/trigger.md @@ -0,0 +1,16 @@ +--- +title: "Trigger" +description: "Here you can find the documentation for hosting Trigger with Coolify." +--- + + +![Trigger](https://camo.githubusercontent.com/eab9fa8c4faf6ea7b868a38aea57abf375fc43233d257bc52314409f279ce541/68747470733a2f2f696d61676564656c69766572792e6e65742f3354627261666675445a34614566384b574f6d495f772f61343564316661322d306165382d346133392d343430392d6634663933346266616530302f7075626c6963) + +## What is Trigger? + +Trigger is an open source Background Jobs framework for TypeScript. + +## Links + +- [Official Website ›](https://trigger.dev) +- [GitHub ›](https://github.com/triggerdotdev/trigger.dev) diff --git a/docs/services/twenty.md b/docs/services/twenty.md new file mode 100644 index 00000000..94e11a26 --- /dev/null +++ b/docs/services/twenty.md @@ -0,0 +1,19 @@ +--- +title: "Twenty" +description: "Here you can find the documentation for hosting Twenty with Coolify." +--- + +![Twenty](https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-website/public/images/core/logo.svg) + +## What is Twenty? + +Twenty is a CRM designed to fit your unique business needs. + +## Screenshots + +![Twenty CRM](https://framerusercontent.com/images/oclg8rdRgBnzeLnSJOfettLFjI.webp) + +## Links + +- [Official Website ›](https://twenty.com) +- [GitHub ›](https://github.com/twentyhq/twenty) diff --git a/docs/services/umami.md b/docs/services/umami.md new file mode 100644 index 00000000..56d6aadf --- /dev/null +++ b/docs/services/umami.md @@ -0,0 +1,23 @@ +--- +title: "Umami" +description: "Here you can find the documentation for hosting Umami with Coolify." +--- + +![Umami](https://raw.githubusercontent.com/umami-software/umami/refs/heads/master/public/mstile-150x150.png) + +## What is Umami? + +Umami is an open source, privacy-focused alternative to Google Analytics. + +## Screenshots + +![Umami Analytics](https://raw.githubusercontent.com/umami-software/website/refs/heads/master/public/images/preview-website-stats.png) + +![Umami Sessions](https://raw.githubusercontent.com/umami-software/website/refs/heads/master/public/images/preview-session-stats.png) + +![Umami Journey](https://raw.githubusercontent.com/umami-software/website/refs/heads/master/public/images/blog/user-journey.png) + +## Links + +- [Official Website ›](https://umami.is) +- [GitHub ›](https://github.com/umami-software/umami) diff --git a/docs/services/unleash.md b/docs/services/unleash.md new file mode 100644 index 00000000..9a067913 --- /dev/null +++ b/docs/services/unleash.md @@ -0,0 +1,20 @@ +--- +title: "Unleash" +description: "Here you can find the documentation for hosting Unleash with Coolify." +--- + + +![Unleash](https://raw.githubusercontent.com/Unleash/unleash/main/.github/github_header_opaque_landscape.svg) + +## What is Unleash? + +Unleash is an open source feature flagging service. + +## Screenshots + +![Unleash Preview](https://raw.githubusercontent.com/Unleash/unleash/main/.github/github_online_demo.svg) + +## Links + +- [Official Website ›](https://getunleash.io) +- [GitHub ›](https://github.com/unleash/unleash) diff --git a/docs/services/unstructured.md b/docs/services/unstructured.md new file mode 100644 index 00000000..63384c1c --- /dev/null +++ b/docs/services/unstructured.md @@ -0,0 +1,24 @@ +--- +title: "Unstructured" +description: "Here you can find the documentation for hosting Unstructured with Coolify." +--- + +# What is Unstructured? + +Unstructured provides a platform and tools to ingest and process unstructured documents for Retrieval Augmented Generation (RAG) and model fine-tuning. + +## Videos + + + +## Links + +- [GitHub ›](https://github.com/Unstructured-IO/unstructured-api?utm_source=coolify.io) diff --git a/docs/services/uptime-kuma.md b/docs/services/uptime-kuma.md new file mode 100644 index 00000000..54909b21 --- /dev/null +++ b/docs/services/uptime-kuma.md @@ -0,0 +1,16 @@ +--- +title: "Uptime Kuma" +description: "Here you can find the documentation for hosting Uptime Kuma with Coolify." +--- + +# What is Uptime Kuma? + +Uptime Kuma is an easy-to-use, privacy-focused uptime monitoring service. + +## Screenshots + +![Uptime Kuma Preview](https://user-images.githubusercontent.com/1336778/212262296-e6205815-ad62-488c-83ec-a5b0d0689f7c.jpg) + +## Links + +- [GitHub ›](https://github.com/louislam/uptime-kuma?tab=readme-ov-file) diff --git a/docs/services/vaultwarden.md b/docs/services/vaultwarden.md new file mode 100644 index 00000000..80f64ac9 --- /dev/null +++ b/docs/services/vaultwarden.md @@ -0,0 +1,13 @@ +--- +title: "Vaultwarden" +description: "Here you can find the documentation for hosting Vaultwarden with Coolify." +--- + +![Vaultwarden](https://raw.githubusercontent.com/dani-garcia/vaultwarden/040e2a7bb0f2cc5012d46ca99283cf21fa06ed1a/resources/vaultwarden-logo-white.svg) + +## What is Vaultwarden? + +Vaultwarden is an open source, self-hosted password manager. +## Links + +- [GitHub ›](https://github.com/dani-garcia/vaultwarden) diff --git a/docs/services/vikunja.md b/docs/services/vikunja.md new file mode 100644 index 00000000..2eb61656 --- /dev/null +++ b/docs/services/vikunja.md @@ -0,0 +1,20 @@ +--- +title: "Vikunja" +description: "Here you can find the documentation for hosting Vikunja with Coolify." +--- + +![Vikunja](https://vikunja.cloud/images/vikunja-logo.svg) + +## What is Vikunja? + +Vikunja is an open source, self-hosted, task management application. + +## Screenshots + + +![Vikunja Preview](https://vikunja.io/_astro/09-task-detail-dark.ppLbej6M_ZzaSch.avif) + +## Links + +- [Official Website ›](https://vikunja.io) +- [GitHub ›](https://kolaente.dev/vikunja/vikunja) diff --git a/docs/services/weaviate.md b/docs/services/weaviate.md new file mode 100644 index 00000000..d990c298 --- /dev/null +++ b/docs/services/weaviate.md @@ -0,0 +1,15 @@ +--- +title: "Weaviate" +description: "Here you can find the documentation for hosting Weaviate with Coolify." +--- + + + +## What is Weaviate? + +Weaviate (we-vee-eight) is an open source, AI-native vector database. Use this documentation to get started with Weaviate and to learn how to get the most out of Weaviate's features. + +## Links + +- [The official website ›](https://weaviate.io/?utm_source=coolify.io) +- [GitHub ›](https://github.com/weaviate/weaviate?utm_source=coolify.io) diff --git a/docs/services/weblate.md b/docs/services/weblate.md new file mode 100644 index 00000000..fa73c62d --- /dev/null +++ b/docs/services/weblate.md @@ -0,0 +1,20 @@ +--- +title: "Weblate" +description: "Here you can find the documentation for hosting Weblate with Coolify." +--- + + +![Weblate](https://camo.githubusercontent.com/2143626e8516dcee05bd0dab52c5e981bcd79defc10a6a56a7384b747f49a6d3/68747470733a2f2f732e7765626c6174652e6f72672f63646e2f4c6f676f2d4461726b746578742d626f72646572732e706e67) + +## What is Weblate? + +Weblate is an open source, self-hosted, translation management system. + +## Screenshots + +![Weblate Preview](https://weblate.org/static/img/BigScreenshot.png) + +## Links + +- [Official Website ›](https://weblate.org) +- [GitHub ›](https://github.com/WeblateOrg/weblate) diff --git a/docs/services/whoogle.md b/docs/services/whoogle.md new file mode 100644 index 00000000..34814ea9 --- /dev/null +++ b/docs/services/whoogle.md @@ -0,0 +1,15 @@ +--- +title: "Whoogle" +description: "Here you can find the documentation for hosting Whoogle with Coolify." +--- + + +![Whoogle](https://raw.githubusercontent.com/benbusby/whoogle-search/main/docs/banner.png) + +## What is Whoogle? + +Whoogle is an open source, self-hosted, privacy-respecting, ad-free, and de-googled search engine. + +## Links + +- [GitHub ›](https://github.com/benbusby/whoogle-search) diff --git a/docs/services/windmill.md b/docs/services/windmill.md new file mode 100644 index 00000000..cf39a4db --- /dev/null +++ b/docs/services/windmill.md @@ -0,0 +1,23 @@ +--- +title: "Windmill" +description: "Here you can find the documentation for hosting Windmill with Coolify." +--- + +![Windmill](https://raw.githubusercontent.com/windmill-labs/windmill/main/imgs/windmill-banner.png) + +## What is Windmill? + +Windmill is an open-source developer platform to power your entire infra and turn scripts into webhooks, workflows and UIs. Fastest workflow engine (13x vs Airflow). Open-source alternative to Retool and Temporal. + +## Screenshots + +![Windmill Preview](https://raw.githubusercontent.com/windmill-labs/windmill/main/imgs/windmill-editor.png) + +![Windmill Preview 2](https://raw.githubusercontent.com/windmill-labs/windmill/main/imgs/windmill-run.png) + +![Windmill Preview 3](https://raw.githubusercontent.com/windmill-labs/windmill/main/imgs/windmill-flow.png) + +## Links + +- [Official Website ›](https://windmill.dev) +- [GitHub ›](https://github.com/windmill-labs/windmill) diff --git a/docs/services/wordpress.md b/docs/services/wordpress.md new file mode 100644 index 00000000..651d4182 --- /dev/null +++ b/docs/services/wordpress.md @@ -0,0 +1,56 @@ +--- +title: "Wordpress" +description: "Here you can find the documentation for hosting Wordpress with Coolify." +--- + +![Wordpress](https://raw.githubusercontent.com/logo/wordpress/caefc9aa315eafcf8687804564a11a9c5a77a561/images/logo.svg) + +## What is Wordpress? + +Wordpress is a free and open-source content management system written in PHP and paired with a MySQL/MariaDB database. +It is used for creating websites, blogs, and applications. + + +## Links + +- [The official website ›](https://wordpress.org) +- [GitHub ›](https://github.com/WordPress/WordPress) + +## FAQ +### How to increase the upload size limit? + +You can increase the upload size limit by following these steps: + +1. Open the `.htaccess` file through Coolify's Terminal (or through SSH, and docker exec -ti `container_id` /bin/sh) +2. Add the following lines to the end of the file with `vi` or `nano`: + +```php +# END WordPress - this line already exists in the file + +php_value upload_max_filesize 256M +php_value post_max_size 256M +php_value max_execution_time 300 +php_value max_input_time 300 +``` + +3. Save and close the file. +4. Reload the website in your browser. The changes should be applied automatically. + +### How to Fix a Redirection Loop in WordPress? + + +If your WordPress site is stuck in a redirection loop, follow these steps to resolve the issue: + +Access the .htaccess file: + +1. Open the `.htaccess` file through Coolify's Terminal (or through SSH, and docker exec -ti `container_id` /bin/sh) +2. Navigate to the WordPress root directory and locate the .htaccess file. Edit the .htaccess file: + +``` + + SetEnvIf X-Forwarded-Proto "^https$" HTTPS + +``` + +3. Save and close the file. +4. Reload the website in your browser. The changes should be applied automatically. diff --git a/docs/services/zipline.md b/docs/services/zipline.md new file mode 100644 index 00000000..18fc86d5 --- /dev/null +++ b/docs/services/zipline.md @@ -0,0 +1,24 @@ +--- +title: "Zipline" +description: "Here you can find the documentation for hosting Zipline with Coolify." +--- + + +![Zipline](https://raw.githubusercontent.com/diced/zipline/trunk/public/zipline_small.png) + +## What is Zipline? + +The next generation ShareX / File upload server +A ShareX/file upload server that is easy to use, packed with features, and with an easy setup! + +## Screenshots + + +
+ + +## Links + +- [The official website ›](https://zipline.diced.sh/?utm_source=coolify.io) +- [GitHub ›](https://github.com/diced/zipline?utm_source=coolify.io) + From d334306212a3668bdc716ef5c9b2b6e9c45936c2 Mon Sep 17 00:00:00 2001 From: ShadowArcanist Date: Sun, 9 Feb 2025 11:59:28 +0530 Subject: [PATCH 2/2] Removed Bun Lock file --- .gitignore | 1 + bun.lockb | Bin 151852 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100755 bun.lockb diff --git a/.gitignore b/.gitignore index de2278b2..3469fb2f 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ pnpm-global pnpm-lock.yaml TODOs.md *.timestamp-*.mjs +bun.lockb \ No newline at end of file diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index e3f4b1ed729956342193f6a2de5595f5b99817b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151852 zcmeFa2{=_<`v-h*LNb$C3ZXKSlFE=NnF%HHEHY1pBtp_?$WW1#p@B3g%9v0pB}qjQ zl2TF9{N2mh`+4^J{@3HPdttdow)nN;;g2%eU2%rMIyz~Oah6K0)Jr)mjAdNt1y{oCXr%N;2Q^EXo%Zn z*;%N-4S7BgMCE%RkMJVoIROJ8KL>CT9f`yOD1@QgmSC@7FSj5zEFVQCk&u2jpeSHH zpdjE8OwZphDA*+^h@?kPA~8Yv7N;$KUalk(8S;q7!9b}W3H8|_{{ZrAfOUY#AK(T@ z_`8w3!Ry(O5A_P3Y=C=^TPXMv^$0D28kpeuqY)^4EYUj-41bVt4_=;}{0|`S^tR zlSr1}lrYp^4k!dT4^RM*1}lFB&hkUP1#lkVNkDPHU4Zieow2+&c76e%7?l44XHdU9 z2NVIU#V{Wb=_CLmd!AUiA(mGFMExiZi26Us(`&OA^nnUEiTXzqI)fGPHISj{G2>7U zp^mu^c|Jg4$RmH*08zb9P>$N;3r-+@8-^0#Jjw^UdANmxem#_<`XZo@>@HbA83$X# zynq{CP~*vZ-1$=Sy(4)Um7 zXQV0df$Lbt)y>x{2-=49HDxL16#!AYf}lRSeiq76@E9QC2fDku0ELted8iWODNkv) zSCCAYr&BN~8Ol+AZUaO*zFxuL9f{=W=eHU8;p`RYj|7~6jQYU@!%K=3JH>#=A89Cu zp&K&`5cT_0C5qn@FlC`Q`v269?tUFBU*(dQ60quMdh}Fyv7@ z-2stZ8w>;8g8Y0!-AMa1DgMR-qHz!gi0XMd1^I<-A(5K3DDhd0o%i>0k3hOSkmrVa z2AG~YAo5QcL+DozA3tYOi#A1fF_a^HLmi6Vd@TP6^2lH3KqnVB7*xi(lzORv$d3U) zbe;#RuK>1D-q$VA!wvczw|7pD(oTPUN*s=1`6kGtabdBR5>I!hpx^+|2y_bxLQQe; z^xN#^>J+%vfMPEj5RG3LCa$h9=A5=fzF=gB&0HXe}gbqgWTZ`cnKsLzBn^O4x zPQjiso82P9JiX9#MDhx93wHyI1U};JHN)cKwZ+TdDJUoi%2AxO%_%yWfUJ=B#>y2f zD0UYDBLC)DQtE$zJnE-r$RoTCc@)2m>nY>T1Q6Mah4Tp4SW)-~0a5)w>9kl={P=gB zC+jHo8vxP#rLci=-DCoyyb$1AKyO$DK(k4%KA{LmPJteixPXSD%LjgFDTDpo-r`5heOE6CH$ z)fJpW{Z$Ic1-RMCKPUw5C~M(bN9_v&9%_d(AR1SRSU$qZFBsVgbb=KgV2>--pMX42 z&s9k#$i>OWP1BvC5BXp(UpEqshJcCl4!!WhObx8<=5H%JYc_&6T_ z)p6j8W{IwsU7)&T4hygL(9yG@H_cbyTOuUPaq6g`{M83TE*qQ1V?-iPtUq)}?Twgs zN>-vX&-dAEBHZJPIi-|nlKb+W>~z;vNbjnxBaP@u4AE-vef_Fn-lF2x#9*4C`^vYD zkz@6e3Yyg0iR9Cs4je1Oj~7LIk1#I0FRzv5aG9QsR>ko4rM!a|w$}C^DCFYR`#hK) zJesFIUg>pZWuY>???88V^^p?AYpSL`PxRReG!G;OW=lRxT+71N+omA>{nq!`b;mXj z7cm(MZ#ALmk9-)T&S2&qnAq%U*l|AB@Yjm707MeOe3zS80%<6ji%$G(Y4*(CyXAa0Z~YKjZhcE CHs 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 B_LKks