diff --git a/.claude/skills/adding-service-documentation/CATALOG.md b/.claude/skills/adding-service-documentation/CATALOG.md index 21b25373f..199f2fc4f 100644 --- a/.claude/skills/adding-service-documentation/CATALOG.md +++ b/.claude/skills/adding-service-documentation/CATALOG.md @@ -207,9 +207,34 @@ const services = [ - Keep entries alphabetically sorted - Use an existing category when possible +## All Services Directory (`docs/services/all.md`) + +In addition to List.vue, add the service to `docs/services/all.md`. This is a manually maintained, categorized list of all services. + +### Entry Format + +```markdown +- [ServiceName](/services/service-slug) - Brief description +``` + +### Placement + +- Find the correct **category heading** (e.g., `## AI`, `## Development`) +- Insert **alphabetically by name** within that category +- Use the same description as the List.vue entry + +### Example + +Under `## AI`: +```markdown +- [Ollama](/services/ollama) - A lightweight and efficient server for running LLMs +- [OpenClaw](/services/openclaw) - AI-powered coding assistant with multi-provider support and browser automation +- [Open WebUI](/services/open-webui) - User-friendly WebUI for LLMs +``` + ## Testing -After adding a service to List.vue: +After adding a service to List.vue and all.md: ```bash # Start dev server diff --git a/.claude/skills/adding-service-documentation/SKILL.md b/.claude/skills/adding-service-documentation/SKILL.md index ec53d97d8..11fdec041 100644 --- a/.claude/skills/adding-service-documentation/SKILL.md +++ b/.claude/skills/adding-service-documentation/SKILL.md @@ -22,7 +22,8 @@ This skill guides you through documenting a new service in the Coolify documenta 3. **Download the logo** from GitHub and save to `docs/public/images/services/` 4. **Create documentation** at `docs/services/{service-slug}.md` 5. **Update services list** in `docs/.vitepress/theme/components/Services/List.vue` -6. **Test locally** with `bun run dev` +6. **Update all services directory** in `docs/services/all.md` +7. **Test locally** with `bun run dev` ## File Structure @@ -39,7 +40,8 @@ https://github.com/coollabsio/coolify/tree/main/public/svgs Documentation Repository: ├── docs/ │ ├── services/ -│ │ └── service-name.md # Service documentation page +│ │ ├── service-name.md # Service documentation page +│ │ └── all.md # All services directory (categorized list) │ ├── public/images/services/ │ │ └── service-logo.svg # Copied logo │ └── .vitepress/theme/components/Services/ @@ -48,11 +50,12 @@ Documentation Repository: ## Required Files -Every service requires these 3 files: +Every service requires these 4 updates: 1. **Service documentation** (`docs/services/{slug}.md`) 2. **Service logo** (`docs/public/images/services/{name}-logo.{ext}`) 3. **List entry** (in `docs/.vitepress/theme/components/Services/List.vue`) +4. **All services directory** (`docs/services/all.md`) — add entry alphabetically under the correct category ## Detailed Instructions diff --git a/.claude/skills/disabling-services/SKILL.md b/.claude/skills/disabling-services/SKILL.md index 385e2ce5d..f87149ce6 100644 --- a/.claude/skills/disabling-services/SKILL.md +++ b/.claude/skills/disabling-services/SKILL.md @@ -123,14 +123,20 @@ If you were using this service, please [migration instructions or alternative]. ::: ``` +### 5. Remove from All Services Directory + +Edit `docs/services/all.md` and remove the service entry from its category section. + ## Verification Checklist After disabling, verify: - [ ] `disabled: true` added to service entry in List.vue - [ ] Warning callout added to markdown file +- [ ] Entry removed from `docs/services/all.md` - [ ] Documentation file still exists (NOT deleted) - [ ] Service no longer appears in listing at http://localhost:5173/docs/services/ +- [ ] Service no longer appears at http://localhost:5173/docs/services/all - [ ] Direct URL still works: http://localhost:5173/docs/services/service-name - [ ] Warning is visible at top of page diff --git a/.claude/skills/renaming-services/SKILL.md b/.claude/skills/renaming-services/SKILL.md index a43d8880b..6109660c7 100644 --- a/.claude/skills/renaming-services/SKILL.md +++ b/.claude/skills/renaming-services/SKILL.md @@ -15,15 +15,16 @@ This skill guides you through renaming a service in the Coolify documentation, e - Consolidating duplicate service documentation - Correcting typos in service slugs -## Critical: Three Locations Must Be Updated +## Critical: Four Locations Must Be Updated -When renaming a service, you **MUST** update all three locations: +When renaming a service, you **MUST** update all four locations: 1. **Documentation file** (`docs/services/`) 2. **Services list** (`docs/.vitepress/theme/components/Services/List.vue`) -3. **Nginx redirects** (`nginx/redirects.conf`) +3. **All services directory** (`docs/services/all.md`) +4. **Nginx redirects** (`nginx/redirects.conf`) -Failing to update all three will cause broken links or 404 errors. +Failing to update all four will cause broken links or 404 errors. ## Step-by-Step Process @@ -69,7 +70,15 @@ location = /knowledge-base/services/old-name { return 301 /docs/services/new-nam **Important:** Keep redirects even for deleted pages to prevent 404 errors from search engines and bookmarks. -### 4. Update Internal Links +### 4. Update All Services Directory + +Edit `docs/services/all.md` and update the service entry under its category: + +```markdown +- [New Service Name](/services/new-name) - Service description +``` + +### 5. Update Internal Links Search for any internal links referencing the old name: @@ -80,7 +89,7 @@ grep -r "old-name" docs/ Update any found references in other documentation files. -### 5. Rename Logo File (If Needed) +### 6. Rename Logo File (If Needed) If the logo filename also needs updating: @@ -99,6 +108,7 @@ After renaming, verify: - [ ] Old file removed or redirected - [ ] List.vue `slug` matches new filename - [ ] List.vue `icon` path is correct +- [ ] Entry updated in `docs/services/all.md` - [ ] Redirect added to `nginx/redirects.conf` - [ ] No broken internal links (run `grep -r "old-name" docs/`) - [ ] Service appears correctly at http://localhost:5173/docs/services/new-name diff --git a/docs/.vitepress/theme/components/Services/List.vue b/docs/.vitepress/theme/components/Services/List.vue index 54eac201c..8f3b05a1f 100644 --- a/docs/.vitepress/theme/components/Services/List.vue +++ b/docs/.vitepress/theme/components/Services/List.vue @@ -309,6 +309,13 @@ const services = [ description: 'Open-source knowledge base and workspace combining docs, whiteboards, and databases.', category: 'Productivity' }, + { + name: 'Alexandrie', + slug: 'alexandrie', + icon: '/docs/images/services/alexandrie-logo.svg', + description: 'Markdown note-taking app focused on performance, local data, and knowledge graph navigation.', + category: 'Productivity' + }, { name: 'AppFlowy', slug: 'appflowy', @@ -379,6 +386,13 @@ const services = [ description: 'It helps parents track their baby\'s daily activities, growth, and health with ease.', category: 'Health' }, + { + name: 'BentoPDF', + slug: 'bento-pdf', + icon: '/docs/images/services/bento-pdf.png', + description: 'Process PDFs entirely in your browser. No uploads. No servers. Complete privacy.', + category: 'Productivity' + }, { name: 'Beszel', slug: 'beszel', @@ -877,6 +891,13 @@ const services = [ description: 'DevOps lifecycle tool.', category: 'Development' }, + { + name: 'GoatCounter', + slug: 'goatcounter', + icon: '/docs/images/services/goatcounter.svg', + description: 'Web analytics platform offering easy to use and meaningful privacy-friendly web analytics.', + category: 'Analytics' + }, { name: 'Gotify', slug: 'gotify', @@ -1116,6 +1137,13 @@ const services = [ description: 'Open source LLM engineering platform.', category: 'AI' }, + { + name: 'Langflow', + slug: 'langflow', + icon: '/docs/images/services/langflow.svg', + description: 'Open source Python-based framework for building AI applications.', + category: 'AI' + }, { name: 'Linkding', slug: 'linkding', @@ -1453,6 +1481,13 @@ const services = [ category: 'Development', disabled: true }, + { + name: 'OpenClaw', + slug: 'openclaw', + icon: '/docs/images/services/openclaw-logo.svg', + description: 'AI-powered coding assistant with multi-provider support and browser automation.', + category: 'AI' + }, { name: 'Organizr', slug: 'organizr', @@ -1721,6 +1756,13 @@ const services = [ description: 'Open source team chat software.', category: 'Communication' }, + { + name: 'Satisfactory', + slug: 'satisfactory', + // No icon available on the codebase yet. + description: 'Game server for Satisfactory open-world factory building game with a dash of exploration and combat.', + category: 'Search' + }, { name: 'SearXNG', slug: 'searxng', @@ -2526,3 +2568,4 @@ const { preloadServices, handleImageError, hasImageError, isImageLoading, getFal + diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css index 797b1bd7b..81cd902dd 100644 --- a/docs/.vitepress/theme/style.css +++ b/docs/.vitepress/theme/style.css @@ -1075,7 +1075,8 @@ pre[class*='language-'] *:hover { .vp-doc table { border-collapse: collapse; border-spacing: 0; - width: 100%; + width: fit-content; + max-width: 100%; margin: 1.5rem 0; font-size: 0.875rem; line-height: 1.5; @@ -1102,7 +1103,7 @@ pre[class*='language-'] *:hover { .vp-doc th:first-child, .vp-doc td:first-child { - width: 200px; + width: 240px; min-width: 200px; vertical-align: middle; } diff --git a/docs/api-reference/authorization.md b/docs/api-reference/authorization.md index 3ff8af417..cdbd05d86 100644 --- a/docs/api-reference/authorization.md +++ b/docs/api-reference/authorization.md @@ -9,9 +9,9 @@ API request requires a `Bearer` token in `Authorization` header, which could be ## Access -The API can be accesed through `http://:8000/api`. +The API can be accessed through `http://:8000/api`. -With the exception of `/health` and `/feedback`, all routes are additionally prefixed with `/v1` resulting in the base rouce `http://:8000/api/v1`. +With the exception of `/health` and `/feedback`, all routes are additionally prefixed with `/v1` resulting in the base route `http://:8000/api/v1`. ## Generate diff --git a/docs/applications/build-packs/nixpacks.md b/docs/applications/build-packs/nixpacks.md index 7cfb530df..14e5fac4d 100644 --- a/docs/applications/build-packs/nixpacks.md +++ b/docs/applications/build-packs/nixpacks.md @@ -56,7 +56,7 @@ First, follow the previous section in this documentation: [How to use Nixpacks]( -1. **Branch:** Coolify will automatically detect the branch from your Repostiory. +1. **Branch:** Coolify will automatically detect the branch from your Repository. 2. **Base Directory:** Enter the directory Nixpacks should use as the root (for example, `/` if your files are at the root, or a subfolder if applicable). @@ -100,7 +100,7 @@ First, follow the previous section in this documentation: [How to use Nixpacks]( -1. **Branch:** Coolify will automatically detect the branch from your Repostiory. +1. **Branch:** Coolify will automatically detect the branch from your Repository. 2. **Base Directory:** Enter the directory Nixpacks should use as the root (for example, `/` if your files are at the root, or a subfolder if applicable). diff --git a/docs/applications/build-packs/nixpacks/node-versioning.md b/docs/applications/build-packs/nixpacks/node-versioning.md index f733d86c9..611f17360 100644 --- a/docs/applications/build-packs/nixpacks/node-versioning.md +++ b/docs/applications/build-packs/nixpacks/node-versioning.md @@ -64,7 +64,7 @@ These hashes are provided for reference only. They have not been verified for ac ### Node.js 20.x | Version | SHA256 | -| ------- | ------------------------------------------------------------------ | +| ------- | :------------------------------------------------------------------ | | 20.0.0 | `sha256-dFDnV5Vo99HLOYGFz85HLaKDeyqjbFliCyLOS5d7XLU=` | | 20.1.0 | `sha256-YA+eEYYJlYFLkSKxrFMY9q1WQnR4Te7ZjYqSBmSUNrU=` | | 20.2.0 | `sha256-IlI98jFsNVaXFP8fabBTwuKGztRgiYQX3uRpRe/N+Yk=` | @@ -105,7 +105,7 @@ These hashes are provided for reference only. They have not been verified for ac ### Node.js 22.x | Version | SHA256 | -| ------- | ------------------------------------------------------------------ | +| ------- | :------------------------------------------------------------------ | | 22.0.0 | `sha256-IuKPv/MfaQc7gCTLQnReUQX4QEHzR1smC5fVoUEDnRo=` | | 22.1.0 | `sha256-nX1fQNnb1iYMmbXklLX5vHVejw/6xw4SGtzl+0QvI8s=` | | 22.2.0 | `sha256-iJkIqIKNFISRDX5lm2qlet6NUo/w45Dpp372WadihHQ=` | @@ -135,7 +135,7 @@ These hashes are provided for reference only. They have not been verified for ac ### Node.js 24.x | Version | SHA256 | -| ----------- | ------------------------------------------------------------------ | +| ----------- | :------------------------------------------------------------------ | | 24.0.0-rc.2 | `729fca42bb7266031dd020f3935423ea8d4b4e2d119b34b608f1d079e5c1621a` | | 24.0.0-rc.3 | `9bbca08fba05f075a20f734ea80b195a4a39218476b60b32db79e1d393fda20b` | | 24.0.0 | `914f3f1b03f84a0994d7357f190ff13c038800c693b6c06da2290eb588c82761` | @@ -159,5 +159,5 @@ These hashes are provided for reference only. They have not been verified for ac ### Node.js 25.x | Version | SHA256 | -| ------- | ------------------------------------------------------------------ | +| ------- | :------------------------------------------------------------------ | | 25.2.1 | `aa7c4ac1076dc299a8949b8d834263659b2408ec0e5bba484673a8ce0766c8b9` | diff --git a/docs/applications/ci-cd/github/setup-app.md b/docs/applications/ci-cd/github/setup-app.md index 039840965..e02cd38ab 100644 --- a/docs/applications/ci-cd/github/setup-app.md +++ b/docs/applications/ci-cd/github/setup-app.md @@ -4,7 +4,7 @@ description: "Set up a GitHub App in Coolify to access and deploy from private G --- # GitHub App -Github app allows you to grant access to a single or mulitple private repositories from your either personal github account or your organization on github. +Github app allows you to grant access to a single or multiple private repositories from your either personal github account or your organization on github. ### Why use github app with Coolify? @@ -183,7 +183,7 @@ Creating apps on github slightly varies for personal accounts and organizations 4. Enter Setup URL: `https://coolboxy.shadowarcanist.internal/webhooks/source/github/install?source=a8000cg0g0ogcc0ggkk8ow4k` 5. Enable the option `Redirect on Update` -6. Enter Webhook URL: `https://coolboxy.shadowarcanist.internal/source/github/events` +6. Enter Webhook URL: `https://coolboxy.shadowarcanist.internal/webhooks/source/github/events` ::: info You have to replace `https://coolboxy.shadowarcanist.internal` with your Coolify dashboard url and replace `a8000cg0g0ogcc0ggkk8ow4k` with the Source ID [Step 1](#_1-create-a-github-app-on-coolify-1) diff --git a/docs/get-started/installation.md b/docs/get-started/installation.md index 8b1f040c4..62f3d2bfe 100644 --- a/docs/get-started/installation.md +++ b/docs/get-started/installation.md @@ -59,7 +59,7 @@ If you haven't picked a server provider yet, consider using [Hetzner](https://co Coolify supports several Linux distributions: - Debian-based (e.g., Debian, Ubuntu - all versions supported, but non-LTS Ubuntu requires manual installation) -- Redhat-based (e.g., CentOS, Fedora, Redhat, AlmaLinux, Rocky, Asahi) +- Redhat-based (e.g., CentOS, TencentOS, Fedora, Redhat, AlmaLinux, Rocky, Asahi) - SUSE-based (e.g., SLES, SUSE, openSUSE) - Arch Linux (Note: Not all Arch derivatives are supported) - Alpine Linux diff --git a/docs/integrations/cloudflare/tunnels/all-resource.md b/docs/integrations/cloudflare/tunnels/all-resource.md index 9c0b21876..26dc1903f 100644 --- a/docs/integrations/cloudflare/tunnels/all-resource.md +++ b/docs/integrations/cloudflare/tunnels/all-resource.md @@ -11,7 +11,7 @@ Accessing All Resource deployed on Coolify using a Cloudflare Tunnel allows you This setup is ideal for people who: -- Don't have a public IP for their server (could be a laptop, rasberry pi etc..). +- Don't have a public IP for their server (could be a laptop, raspberry pi etc..). - Are unable to port forward (e.g., using home internet or on a private network). - Want to keep their server’s IP address private and avoid exposing it to the public internet. - Have an resource already deployed on Coolify and need an external method to access it securely. @@ -26,7 +26,7 @@ To follow this guide, you'll need: ## Before We Start - We assume you have Coolify running on your server. -- If your app requires HTTPS for functionality like cookies or login, then you need to follow the [Full TLS HTTPS guide](/knowledge-base/cloudflare/tunnels/full-tls) after following this guide. This is because in this guide, Cloudflare will manage HTTPS externally, while your app will run over HTTP within Coolify. +- If your app requires HTTPS for functionality like cookies or login, then you need to follow the [Full TLS HTTPS guide](/integrations/cloudflare/tunnels/full-tls) after following this guide. This is because in this guide, Cloudflare will manage HTTPS externally, while your app will run over HTTP within Coolify. ## How It Works? @@ -43,7 +43,7 @@ A simple high-level overview diagram to give you a visual idea of how this works - [Setup Cloudflare Tunnel on Coolify](#_3-setup-cloudflare-tunnel-on-coolify) - [Start Coolify Proxy](#_4-start-coolify-proxy) - [Configure Your Resource to Use the Tunnel Domain](#_5-configure-your-resource-to-use-the-tunnel-domain) -- [How to use Mutiple Different Domains](#how-to-use-mutiple-different-domains) +- [How to use Multiple Different Domains](#how-to-use-multiple-different-domains) - [Known issues and Solutions](#known-issues-and-solutions) --- @@ -149,12 +149,12 @@ Enter the domain you want to use for your resource/app and deploy your resource. ::: warning HEADS UP! You should enter the domain as **HTTP** because Cloudflare handles **HTTPS** and TLS terminations. If you use **HTTPS** for your resource, you may encounter a **TOO_MANY_REDIRECTS** error. -If your app requires **HTTPS** for features like cookies or login, follow the [Full TLS HTTPS Guide](/knowledge-base/cloudflare/tunnels/full-tls) after completing this guide. +If your app requires **HTTPS** for features like cookies or login, follow the [Full TLS HTTPS Guide](/integrations/cloudflare/tunnels/full-tls) after completing this guide. ::: **Congratulations**! You've successfully set up a resource that can be accessed by anyone on the internet your domain. -## How to use Mutiple Different Domains? +## How to use Multiple Different Domains? You don't need to create new tunnels for each domain, just create a new hostname with the new domain and point it to the `localhost:80`. diff --git a/docs/integrations/cloudflare/tunnels/full-tls.md b/docs/integrations/cloudflare/tunnels/full-tls.md index 1c3135c8d..c5c049db4 100644 --- a/docs/integrations/cloudflare/tunnels/full-tls.md +++ b/docs/integrations/cloudflare/tunnels/full-tls.md @@ -15,7 +15,7 @@ This guide solves that issue by configuring your resources to run fully on HTTPS This guide is ideal for users who: -- Have followed our [Tunnel All Resources Using Cloudflare Tunnel](/knowledge-base/cloudflare/tunnels/all-resource) or [Tunnel Specific Resources Using Cloudflare Tunnel](/knowledge-base/cloudflare/tunnels/single-resource) guide. +- Have followed our [Tunnel All Resources Using Cloudflare Tunnel](/integrations/cloudflare/tunnels/all-resource) or [Tunnel Specific Resources Using Cloudflare Tunnel](/integrations/cloudflare/tunnels/single-resource) guide. - Need their resources deployed with Coolify to run on HTTPS for applications requiring HTTPS for JWT issuance, callback functions, or similar features. ## Setup Requirements @@ -94,12 +94,15 @@ Your certificate will now be generated. Next, you'll add these to your server running Coolify and configure Coolify to use this certificate. ## 2. Add Origin Certificate to Your Server + SSH into your server or use Coolify's terminal feature. For this guide, I’m using SSH: + ```sh ssh shadowarcanist@203.0.113.1 ``` Once logged in, navigate to the Coolify proxy directory: + ```sh $ cd /data/coolify/proxy ``` @@ -110,90 +113,108 @@ Adding certificates slightly varies for Caddy and Traefik proxy so choose the co == Traefik Create the `certs` directory: + ```sh $ mkdir certs ``` Verify it was created: + ```sh $ ls > acme.json certs docker-compose.yml dynamic ``` Now, navigate into the **certs** directory: + ```sh $ cd certs ``` Create two new files for the certificate and private key: + ```sh $ touch shadowarcanist.cert shadowarcanist.key ``` Verify the files were created: + ```sh $ ls > shadowarcanist.cert shadowarcanist.key ``` Open the **shadowarcanist.cert** file and paste the certificate from the Cloudflare dashboard: + ```sh -$ nano shadowarcanist.cert +$ nano shadowarcanist.cert ``` + Save and exit after pasting the certificate. Do the same for the **shadowarcanist.key** file and paste the private key: + ```sh -$ nano shadowarcanist.key +$ nano shadowarcanist.key ``` + Save and exit. == Caddy Create the `caddy/data/certs` directory: + ```sh $ mkdir -p caddy/data/certs ``` Verify it was created: + ```sh $ ls caddy/data > certs ``` Now, navigate into the **certs** directory: + ```sh $ cd caddy/data/certs ``` Create two new files for the certificate and private key: + ```sh $ touch shadowarcanist.cert shadowarcanist.key ``` Verify the files were created: + ```sh $ ls > shadowarcanist.cert shadowarcanist.key ``` Open the **shadowarcanist.cert** file and paste the certificate from the Cloudflare dashboard: + ```sh -$ nano shadowarcanist.cert +$ nano shadowarcanist.cert ``` + Save and exit after pasting the certificate. Do the same for the **shadowarcanist.key** file and paste the private key: + ```sh -$ nano shadowarcanist.key +$ nano shadowarcanist.key ``` + Save and exit. ::: Now the origin certificate is installed on your server. - ## 3. Configure Coolify to Use the Origin Certificate + 1. Go to the **Server** section in the sidebar. @@ -213,6 +234,7 @@ Adding Dynamic Configuration slightly varies for Caddy and Traefik proxy so choo 1. Choose a name for your configuration (must end with `.yaml`). 2. Enter the following details in the configuration field: + ```sh tls: certificates: @@ -222,8 +244,11 @@ tls: ``` 3. Save the configuration + --- + If you want to add multiple certificates and keys, you can do it like this: + ```sh tls: certificates: @@ -243,6 +268,7 @@ tls: 1. Choose a name for your configuration (must end with `.caddy`). 2. Enter the following details in the configuration field: + ```sh *.shadowarcanist.com, shadowarcanist.com { tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key @@ -256,6 +282,7 @@ tls: --- If you want to add multiple certificates and keys, you can do it like this: + ```sh *.shadowarcanist.com, shadowarcanist.com { tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key @@ -269,8 +296,8 @@ If you want to add multiple certificates and keys, you can do it like this: tls /data/certs/name3.cert /data/certs/name3.key } ``` -::: +::: From now on, Coolify will use the origin certificate for requests matching the hostname. diff --git a/docs/integrations/cloudflare/tunnels/overview.md b/docs/integrations/cloudflare/tunnels/overview.md index 99c3b64dd..92769a7f2 100644 --- a/docs/integrations/cloudflare/tunnels/overview.md +++ b/docs/integrations/cloudflare/tunnels/overview.md @@ -29,14 +29,14 @@ This makes them a great option for hosting projects on devices like old laptops You can set up Cloudflare Tunnels with Coolify in several ways, depending on your needs. Below are the available options, each linked to a detailed guide for easy setup: -1. [All Resources](/knowledge-base/cloudflare/tunnels/all-resource) -> Use a tunnel for all resources deployed through Coolify. This is the **easiest** and **most recommended** way for beginners. +1. [All Resources](/integrations/cloudflare/tunnels/all-resource) -> Use a tunnel for all resources deployed through Coolify. This is the **easiest** and **most recommended** way for beginners. -2. [Single Resource](/knowledge-base/cloudflare/tunnels/single-resource) -> Use a tunnel for a single resource deployed through Coolify. +2. [Single Resource](/integrations/cloudflare/tunnels/single-resource) -> Use a tunnel for a single resource deployed through Coolify. -3. [Server SSH Access](/knowledge-base/cloudflare/tunnels/server-ssh) -> Securely connect your server to Coolify using a domain through Cloudflare Tunnel. +3. [Server SSH Access](/integrations/cloudflare/tunnels/server-ssh) -> Securely connect your server to Coolify using a domain through Cloudflare Tunnel. -4. [Full HTTPS/TLS](/knowledge-base/cloudflare/tunnels/full-tls) -> Setup always-on **HTTPS** for all domains and subdomains. Normally, Coolify uses **HTTP** while Cloudflare manages **HTTPS**. If certain apps require **HTTPS** directly on Coolify. +4. [Full HTTPS/TLS](/integrations/cloudflare/tunnels/full-tls) -> Setup always-on **HTTPS** for all domains and subdomains. Normally, Coolify uses **HTTP** while Cloudflare manages **HTTPS**. If certain apps require **HTTPS** directly on Coolify. ::: success Tip: -It’s highly recommended to go with the first option [All Resources](/knowledge-base/cloudflare/tunnels/all-resource) if you're new to Coolify and Cloudflare Tunnels, as it’s much easier to set up and manage. +It’s highly recommended to go with the first option [All Resources](/integrations/cloudflare/tunnels/all-resource) if you're new to Coolify and Cloudflare Tunnels, as it’s much easier to set up and manage. ::: diff --git a/docs/integrations/cloudflare/tunnels/single-resource.md b/docs/integrations/cloudflare/tunnels/single-resource.md index e8bbbe244..2918d4ff9 100644 --- a/docs/integrations/cloudflare/tunnels/single-resource.md +++ b/docs/integrations/cloudflare/tunnels/single-resource.md @@ -11,7 +11,7 @@ Accessing an Resource deployed on Coolify using a Cloudflare Tunnel allows you t This setup is ideal for people who: -- Don't have a public IP for their server (could be a laptop, rasberry pi etc..). +- Don't have a public IP for their server (could be a laptop, raspberry pi etc..). - Are unable to port forward (e.g., using home internet or on a private network). - Want to keep their server’s IP address private and avoid exposing it to the public internet. - Have an app already deployed on Coolify and need an external method to access it securely. @@ -27,7 +27,7 @@ To follow this guide, you'll need: ## Before We Start - We assume you have Coolify running and an app already deployed. -- If your app requires HTTPS for functionality like cookies or login, then you need to follow the [Full TLS HTTPS guide](/knowledge-base/cloudflare/tunnels/full-tls) after following this guide. This is because in this guide, Cloudflare will manage HTTPS externally, while your app will run over HTTP within Coolify. +- If your app requires HTTPS for functionality like cookies or login, then you need to follow the [Full TLS HTTPS guide](/integrations/cloudflare/tunnels/full-tls) after following this guide. This is because in this guide, Cloudflare will manage HTTPS externally, while your app will run over HTTP within Coolify. ## How It Works? @@ -42,7 +42,7 @@ A simple high-level overview diagram to give you a visual idea of how this works - [Setup your app for tunneling](#_1-setup-your-app-for-tunneling) - [Create a Cloudflare Tunnel](#_2-create-a-cloudflare-tunnel) - [Setup Cloudflare Tunnel on Coolify](#_3-setup-cloudflare-tunnel-on-coolify) -- [Expose Mutiple Resource on Different Domains](#expose-mutiple-resource-on-different-domains) +- [Expose Multiple Resource on Different Domains](#expose-multiple-resource-on-different-domains) - [Known issues and Solutions](#known-issues-and-solutions) --- @@ -131,7 +131,7 @@ Go to the **Environment Variables** page, enter your tunnel token, and deploy th ## Tunnel Multiple Resources -The easiest way to tunnel multiple resources is by following our [Tunnel All Resources](/knowledge-base/cloudflare/tunnels/all-resource) guide, which uses Coolify's built-in proxy. However, if you prefer not to use the proxy, there are two alternative methods: +The easiest way to tunnel multiple resources is by following our [Tunnel All Resources](/integrations/cloudflare/tunnels/all-resource) guide, which uses Coolify's built-in proxy. However, if you prefer not to use the proxy, there are two alternative methods: - [Tunnel Multiple Single Resources](#tunnel-multiple-single-resources) - [Tunnel Coolify](#tunnel-coolify) @@ -140,7 +140,7 @@ Tunneling multiple single resources is straightforward, but tunneling Coolify it ## Tunnel Multiple Single Resources -If you want to expose different apps individually, you can follow our [Tunnel All Resources](/knowledge-base/cloudflare/tunnels/all-resource), or take an alternate approach: +If you want to expose different apps individually, you can follow our [Tunnel All Resources](/integrations/cloudflare/tunnels/all-resource), or take an alternate approach: @@ -160,7 +160,6 @@ Follow [Step 2](#_2-create-a-cloudflare-tunnel) from the main guide to create pu - **Hostnames**: - 1. `app.shadowarcanist.com/terminal/ws` → `localhost:6002` (WebSocket terminal) 2. `realtime.shadowarcanist.com` → `localhost:6001` (Realtime server) 3. `app.shadowarcanist.com` → `localhost:8000` (Coolify dashboard) diff --git a/docs/knowledge-base/change-localhost-key.md b/docs/knowledge-base/change-localhost-key.md index 72c162e9a..78f560935 100644 --- a/docs/knowledge-base/change-localhost-key.md +++ b/docs/knowledge-base/change-localhost-key.md @@ -48,5 +48,5 @@ After the key has been deleted from the database, you need to add the new keys i - Make sure the Database\Seeders\PopulateSshKeysDirectorySeeder does not error. ::: info Note - If you recieve an output of "SSH key found for the Coolify host machine (localhost)", the operation completed successfully and unless you get any other output, your new key shall now be working. + If you receive an output of "SSH key found for the Coolify host machine (localhost)", the operation completed successfully and unless you get any other output, your new key shall now be working. ::: diff --git a/docs/knowledge-base/commands.md b/docs/knowledge-base/commands.md index 8a70b168b..9a512a03d 100644 --- a/docs/knowledge-base/commands.md +++ b/docs/knowledge-base/commands.md @@ -23,7 +23,7 @@ docker exec -ti coolify sh -c "php artisan root:change-email" ``` ## Delete a stuck service - You can easily delete a stucked service. + You can easily delete a stuck service. Login to your server through SSH and execute the following command: diff --git a/docs/knowledge-base/domains.md b/docs/knowledge-base/domains.md index 3da0d3023..9bd85ab10 100644 --- a/docs/knowledge-base/domains.md +++ b/docs/knowledge-base/domains.md @@ -1,6 +1,6 @@ --- title: Domains -description: "Add custom domains to Coolify with FQDN format, multiple domain support, port mapping, wildcard domains, and custom DNS server validation." +description: "Add custom domains to Coolify with FQDN format, multiple domain support, port mapping, path-based routing, wildcard domains, and custom DNS server validation." --- # Domains @@ -39,6 +39,44 @@ If automatic certificate issuance from [Let's Encrypt](https://letsencrypt.org?u If you see a certificate warning in your browser or your application shows a self-signed certificate, see the [Let's Encrypt Not Working](/troubleshoot/dns-and-domains/lets-encrypt-not-working) troubleshooting guide for detailed solutions. ::: +## Path-Based Routing + +You can route traffic to different applications and services based on URL paths by appending a path to your domain. This allows multiple applications to share the same domain while being accessible at different paths. + +**Format**: `https://domain.com/path` or with a custom port: `https://domain.com:3000/path` + +::: warning PORT PLACEMENT +When using both a port and a path, the port must come **after** the domain but **before** the path. + +- Correct: `https://coolify.io:3000/api` +- Incorrect: `https://coolify.io/api:3000` +::: + +### How Path Priority Works + +Coolify automatically applies priority rules to path-based routing. More specific paths take precedence over less specific ones: + +- `/api/v2/users` → highest priority +- `/api/v2` → medium priority +- `/api` → lower priority +- `/` → lowest priority (root/fallback) + +This means you can safely deploy multiple applications on the same domain without worrying about routing conflicts. + +### Health Requirements + +For path-based routing to function correctly, the application serving a specific path must be **running and healthy**. If an application becomes unhealthy or stops responding, traffic to that path will fall back to the application serving the root domain (`/`). + +::: tip EXAMPLE +If you have: +- App A serving `https://coolify.io/` (root) +- App B serving `https://coolify.io/api` + +And App B becomes unhealthy, requests to `/api` will be routed to App A instead. +::: + +Read more about how Coolifys proxies read and intepret the health of your resources in our [Health Checks page](/knowledge-base/health-checks). + ## Catch Multiple Domains Multitenancy is supported with Coolify. When using [Traefik](/knowledge-base/proxy/traefik/overview), you can automatically catch multiple domains, by editing the `Container Labels` of your Application or Service and define a [`HostRegexp`](https://doc.traefik.io/traefik/reference/routing-configuration/http/routing/rules-and-priority/#host-and-hostregexp) rule. diff --git a/docs/knowledge-base/how-to/hetzner-loadbalancing.md b/docs/knowledge-base/how-to/hetzner-loadbalancing.md index 131d74dbb..9ade8b306 100644 --- a/docs/knowledge-base/how-to/hetzner-loadbalancing.md +++ b/docs/knowledge-base/how-to/hetzner-loadbalancing.md @@ -129,7 +129,7 @@ The whole infrastructure costs around ~15€ per month. As the load balancer communicates with your servers over the private network, we only need to add rules for the public IP addresses. - The `Inbound` rules includes everything that is allowed. Everyting else is blocked by default. + The `Inbound` rules includes everything that is allowed. Everything else is blocked by default. 1. Go to the Hetzner Cloud Console and click on `Firewalls` in the left sidebar. 2. Click on the `Create Firewall` button. diff --git a/docs/knowledge-base/internal/scalability.md b/docs/knowledge-base/internal/scalability.md index cf9d2e714..188f21fb2 100644 --- a/docs/knowledge-base/internal/scalability.md +++ b/docs/knowledge-base/internal/scalability.md @@ -66,7 +66,7 @@ We also recommend to use [Hetzner](https://coolify.io/hetzner) (referral link) f - Requires a proxy on the servers - Coolify automatically configures the proxy for you, but it is +1 component that can fail. - "Less expensive" (as one server can host multiple applications). - **Cons**: - - As a plus proxy is added, there is a small performance hit as the proxy needs to be initialized on each server - not noticable for most use cases. + - As a plus proxy is added, there is a small performance hit as the proxy needs to be initialized on each server - not noticeable for most use cases. - You need bigger servers to host more applications, as more applications will be running on the same server. - Healthcheck are not available for each application, only for the server. diff --git a/docs/knowledge-base/notifications.md b/docs/knowledge-base/notifications.md index ef2a48299..abd76d999 100644 --- a/docs/knowledge-base/notifications.md +++ b/docs/knowledge-base/notifications.md @@ -124,7 +124,7 @@ Email notifications can be configured using either SMTP or Resend. - Make sure the bot is an admin in the group/channel - Include the minus sign (-) in the chat ID if present - If `getUpdates` returns an empty response, send another message and try again -- if you can not acces `getUpdates` make sure you have the correct bot token and you have replace the `{YOUR_BOT_TOKEN}` with your actual bot token (replace everything including the quotes) +- if you can not access `getUpdates` make sure you have the correct bot token and you have replace the `{YOUR_BOT_TOKEN}` with your actual bot token (replace everything including the quotes) ::: ### Discord diff --git a/docs/knowledge-base/proxy/traefik/custom-ssl-certs.md b/docs/knowledge-base/proxy/traefik/custom-ssl-certs.md index 938357474..7f206e51b 100644 --- a/docs/knowledge-base/proxy/traefik/custom-ssl-certs.md +++ b/docs/knowledge-base/proxy/traefik/custom-ssl-certs.md @@ -10,15 +10,13 @@ On each server, `/data/coolify/proxy` is mounted into the Coolify Proxy (Traefik You can add your custom SSL certificates in the `/data/coolify/proxy/certs` directory. -1. Generate or request an SSL certificate - Generate or request an SSL certificate for your domain. It can be a +1. **Generate or request an SSL certificate** for your domain. It can be a self-signed certificate, a certificate from a public CA, or a certificate from Let's Encrypt. Read more [here](https://certbot.eff.org/instructions) about certbot and Let's Encrypt. -2. Copy the key and cert files to the server - Copy the key and cert files to the server where your resource that will use the certificate is running. +2. **Copy the key and cert files to the server** where your resource that will use the certificate is running. Use `scp` or any other method to copy the files. It should be placed under `/data/coolify/proxy` directory, for example: @@ -32,8 +30,7 @@ You can add your custom SSL certificates in the `/data/coolify/proxy/certs` dire Make sure the directory `/data/coolify/proxy/certs` exists on the server. ::: -3. Configure Traefik - You can configure Traefik to use the custom SSL certificates by adding a dynamic configuration file through Coolify's UI or directly adding it to `/data/coolify/proxy/dynamic`: +3. You can **configure Traefik** to use the custom SSL certificates by adding a dynamic configuration file through Coolify's UI or directly adding it to `/data/coolify/proxy/dynamic`: ```yaml tls: diff --git a/docs/knowledge-base/proxy/traefik/wildcard-certs.md b/docs/knowledge-base/proxy/traefik/wildcard-certs.md index d8fe74fdf..4da8bd366 100644 --- a/docs/knowledge-base/proxy/traefik/wildcard-certs.md +++ b/docs/knowledge-base/proxy/traefik/wildcard-certs.md @@ -9,10 +9,10 @@ description: "Configure Let's Encrypt wildcard SSL certificates with Traefik DNS - You need to have a domain name and a DNS provider that supports wildcard subdomains. - You need to use [dnsChallenge](https://doc.traefik.io/traefik/https/acme/#dnschallenge) in Traefik to get wildcard certificates from Let's Encrypt. -- You need to use one of the supported DNS [providers](https://doc.traefik.io/traefik/https/acme/#providers). +- You need to use one of the supported DNS [providers](https://go-acme.github.io/lego/dns/index.html#dns-providers). ::: tip Tip -Each provider needs environment variables to be set in the Traefik configuration. You can find the required variables in the [official documentation](https://doc.traefik.io/traefik/https/acme/#providers). +Each provider needs environment variables to be set in the Traefik configuration. You can find the required variables in the [official documentation](https://go-acme.github.io/lego/dns/index.html#dns-providers). If you need fine-grained token, like with [Cloudflare](https://go-acme.github.io/lego/dns/cloudflare/), check the provider configurations. ::: @@ -30,10 +30,10 @@ networks: services: traefik: container_name: coolify-proxy - image: 'traefik:v2.10' + image: 'traefik:v3.6' restart: unless-stopped environment: - - HETZNER_API_KEY= + - HETZNER_API_TOKEN= extra_hosts: - 'host.docker.internal:host-gateway' networks: @@ -82,7 +82,7 @@ services: - traefik.http.middlewares.gzip.compress=true ``` -> You can also set `env_file` instead of `environment` in the example above, but then you need to create a `.env` file with the `HETZNER_API_KEY` variable on the server. +> You can also set `env_file` instead of `environment` in the example above, but then you need to create a `.env` file with the `HETZNER_API_TOKEN` variable on the server. > Change `--certificatesresolvers.letsencrypt.acme.dnschallenge.provider=hetzner` to your provider. diff --git a/docs/knowledge-base/s3/aws.md b/docs/knowledge-base/s3/aws.md index 648ec606d..05ed6c764 100644 --- a/docs/knowledge-base/s3/aws.md +++ b/docs/knowledge-base/s3/aws.md @@ -140,7 +140,7 @@ Once you have entered the name, scroll down till the bottom of the page and clic Once the Policy is created you will be redirected to this page: ::: success Tip -You won't see the policy you just created, you have to search for it's name on the search box. +You won't see the policy you just created, you have to search for its name on the search box. ::: @@ -160,7 +160,7 @@ You’ll be asked to choose a name for the user: 3. Click on **Next** button - - Click on **Create user** button (you don't have to change anything on this page /> + - Click on **Create user** button (you don't have to change anything on this page) Once the Policy is created you will be redirected to this page: @@ -168,7 +168,7 @@ Once the Policy is created you will be redirected to this page: ## 4. Create an Access Key -After you have clicked on the username on previous step, you will be redirect to this page: +After you have clicked on the username on previous step, you will be redirected to this page: - Click on **Create access key** option to setup a new access key. @@ -179,7 +179,7 @@ After you have clicked on the username on previous step, you will be redirect to - Click on **Create access key** button. - - Save the Access Key and Secrete Access Key somewhere safe and click on **Done** button + - Save the Access Key and Secret Access Key somewhere safe and click on **Done** button ::: warning Note You won't able able to see the access key after you click the **Done** button, so make sure to save the keys somewhere safe. ::: diff --git a/docs/public/images/services/alexandrie-logo.svg b/docs/public/images/services/alexandrie-logo.svg new file mode 100644 index 000000000..404fc5e2b --- /dev/null +++ b/docs/public/images/services/alexandrie-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/images/services/alexandrie.webp b/docs/public/images/services/alexandrie.webp new file mode 100644 index 000000000..0cdf6c8b9 Binary files /dev/null and b/docs/public/images/services/alexandrie.webp differ diff --git a/docs/public/images/services/autobase-logo.svg b/docs/public/images/services/autobase-logo.svg index 1ae0493c0..83ab88f68 100644 --- a/docs/public/images/services/autobase-logo.svg +++ b/docs/public/images/services/autobase-logo.svg @@ -1,3 +1,9 @@ - - - + + + + + data, seo, marketing, business, web, internet, website, optimization, technology, search, engine, co + + + \ No newline at end of file diff --git a/docs/public/images/services/bento-pdf.png b/docs/public/images/services/bento-pdf.png new file mode 100644 index 000000000..7926d09bb Binary files /dev/null and b/docs/public/images/services/bento-pdf.png differ diff --git a/docs/public/images/services/goatcounter.svg b/docs/public/images/services/goatcounter.svg new file mode 100644 index 000000000..9477e0354 --- /dev/null +++ b/docs/public/images/services/goatcounter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/public/images/services/goatcounter.webp b/docs/public/images/services/goatcounter.webp new file mode 100644 index 000000000..510dafbeb Binary files /dev/null and b/docs/public/images/services/goatcounter.webp differ diff --git a/docs/public/images/services/langflow.svg b/docs/public/images/services/langflow.svg new file mode 100644 index 000000000..08bd5557d --- /dev/null +++ b/docs/public/images/services/langflow.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/public/images/services/openclaw-logo.svg b/docs/public/images/services/openclaw-logo.svg new file mode 100644 index 000000000..7bfb7fc4d --- /dev/null +++ b/docs/public/images/services/openclaw-logo.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/services/alexandrie.md b/docs/services/alexandrie.md new file mode 100644 index 000000000..28f968518 --- /dev/null +++ b/docs/services/alexandrie.md @@ -0,0 +1,26 @@ +--- +title: "Alexandrie" +description: "Self-hosted Markdown note-taking app focused on performance, local data, and knowledge graph navigation." +--- + +# Alexandrie + + + +## What is Alexandrie? + +Alexandrie is a self-hosted Markdown note-taking application designed for speed, offline usage, and long-term knowledge management. +It focuses on speed, design, fast navigation in large note collections, and explicit links between documents. + +## Features + +- Markdown editor with live preview +- Fast full-text search, tags based organisation, hierarchy +- Advanced management features for handling hundreds of documents +- Simple Docker-based deployment + +## Links + +- [Website](https://alexandrie-hub.fr?utm_source=coolify.io) +- [GitHub](https://github.com/Smaug6739/Alexandrie?utm_source=coolify.io) +- [Documentation](https://github.com/Smaug6739/Alexandrie/wiki?utm_source=coolify.io) diff --git a/docs/services/all.md b/docs/services/all.md index 35b413286..e57e93e15 100644 --- a/docs/services/all.md +++ b/docs/services/all.md @@ -28,6 +28,7 @@ Complete directory of all one-click services available in Coolify, organized by - [Chroma](/services/chroma) - Open-source, AI-native vector database for building applications with embeddings - [Flowise](/services/flowise) - Drag & drop UI to build your customized LLM flow - [Label Studio](/services/labelstudio) - Open source data labeling platform +- [Langflow](/services/langflow) - Open-source Python-based framework for building AI agents and workflows with visual drag-and-drop interface - [Langfuse](/services/langfuse) - Open source LLM engineering platform - [LibreChat](/services/librechat) - Self-hosted, powerful, and privacy-focused chat UI for multiple AI models - [LibreTranslate](/services/libretranslate) - Free and open-source machine translation API @@ -37,12 +38,14 @@ Complete directory of all one-click services available in Coolify, organized by - [NewAPI](/services/newapi) - The next-generation LLM gateway and AI asset management system supports multiple languages. - [Ollama](/services/ollama) - A lightweight and efficient server for running large language models (LLMs) on your local machine or in the cloud - [Open WebUI](/services/open-webui) - User-friendly WebUI for LLMs, formerly Ollama WebUI +- [OpenClaw](/services/openclaw) - AI-powered coding assistant with multi-provider support and browser automation - [Qdrant](/services/qdrant) - Open source, AI-native vector database - [Unstructured](/services/unstructured) - Open-source platform and tools to ingest and process unstructured documents for Retrieval Augmented Generation (RAG) and model fine-tuning - [Weaviate](/services/weaviate) - Open source, AI-native vector database ## Analytics +- [GoatCounter](/services/goatcounter) - A web analytics platform that aims to offer easy to use and meaningful privacy-friendly web analytics. - [Metabase](/services/metabase) - The simplest, fastest way to share data and analytics inside your company - [OpenPanel](/services/openpanel) - Open source alternative to Mixpanel and Plausible for product analytics - [PostHog](/services/posthog) - Open source product analytics @@ -247,6 +250,7 @@ Complete directory of all one-click services available in Coolify, organized by ## Gaming +- [Satisfactory](/services/satisfactory) - Game server for Satisfactory open-world factory building game with a dash of exploration and combat. - [FoundryVTT](/services/foundryvtt) - Virtual tabletop for tabletop role-playing games - [Minecraft](/services/minecraft) - Minecraft game server - [Palworld](/services/palworld) - Dedicated server for Palworld multiplayer survival game with creature collection and base building @@ -329,10 +333,12 @@ Complete directory of all one-click services available in Coolify, organized by ## Productivity - [Affine](/services/affine) - Open-source knowledge base and workspace combining docs, whiteboards, and databases +- [Alexandrie](/services/alexandrie) - Markdown note-taking app focused on performance, design and productivity. - [AppFlowy](/services/appflowy) - Open-source alternative to Notion with workspaces for docs, wikis, and project management -- [Ente](/services/ente-photos) - A fully open-source, end-to-end encrypted platform for storing data in the cloud +- [BentoPDF](/services/bento-pdf) - Process PDFs entirely in your browser. No uploads. No servers. Complete privacy. - [Cal.com](/services/calcom) - Open-source Calendly alternative for scheduling meetings - [CodiMD](/services/codimd) - Realtime collaborative markdown notes on all platforms +- [Ente](/services/ente-photos) - A fully open-source, end-to-end encrypted platform for storing data in the cloud - [Excalidraw](/services/excalidraw) - Virtual whiteboard for sketching hand-drawn like diagrams - [Grist](/services/grist) - Modern relational spreadsheet combining flexibility and database robustness - [Joplin](/services/joplin) - Open-source note taking and to-do application diff --git a/docs/services/appwrite.md b/docs/services/appwrite.md index 4682aacd2..40361d9d2 100644 --- a/docs/services/appwrite.md +++ b/docs/services/appwrite.md @@ -664,7 +664,7 @@ description: "Deploy Appwrite BaaS on Coolify for authentication, databases, sto # - appwrite-functions:/storage/functions:rw # - /tmp:/tmp:rw # environment: -# - OPR_EXECUTOR_INACTIVE_TRESHOLD=${_APP_FUNCTIONS_INACTIVE_THRESHOLD} +# - OPR_EXECUTOR_INACTIVE_THRESHOLD=${_APP_FUNCTIONS_INACTIVE_THRESHOLD} # - >- # OPR_EXECUTOR_MAINTENANCE_INTERVAL=${_APP_FUNCTIONS_MAINTENANCE_INTERVAL} # - OPR_EXECUTOR_NETWORK=${_APP_FUNCTIONS_RUNTIMES_NETWORK:-runtimes} diff --git a/docs/services/autobase.md b/docs/services/autobase.md index eec1f5d74..c8a117d3a 100644 --- a/docs/services/autobase.md +++ b/docs/services/autobase.md @@ -9,7 +9,21 @@ description: "Autobase for PostgreSQL® is an open-source alternative to cloud-m ## What is Autobase? -Autobase for PostgreSQL® automates the deployment and management of highly available PostgreSQL clusters in production environments. This solution is tailored for use on dedicated physical servers, virtual machines, and within both on-premises and cloud-based infrastructures. +**Autobase for PostgreSQL®** is an open-source alternative to cloud-managed databases (DBaaS) such as Amazon RDS, Google Cloud SQL, Azure Database, and others. + +This automated database platform enables you to create and manage production-ready, highly available PostgreSQL clusters. It simplifies the deployment process, reduces operational costs, and makes database management accessible even for teams without specialized expertise. + +*Automate deployment, failover, backups, restore, upgrades, scaling, and more with ease.* + +Say goodbye to manual database management 👋 + +## Demo + +[https://demo.autobase.tech/](https://demo.autobase.tech/?utm_source=coolify.io) + +Note: use the token *demo* to access. + +![demo](https://autobase.tech/assets/images/autobase_create_cluster_demo-abc3cd3ad60462a275165e625f2a706c.gif) ## Links diff --git a/docs/services/bento-pdf.md b/docs/services/bento-pdf.md new file mode 100644 index 000000000..c7796bf9d --- /dev/null +++ b/docs/services/bento-pdf.md @@ -0,0 +1,36 @@ +--- +title: "BentoPDF" +description: "Process PDFs entirely in your browser. No uploads. No servers. Complete privacy." +--- + +# BentoPDF + + + +## What is BentoPDF? + +The PDF Toolkit built for privacy. + +- No Signup + - Start instantly, no accounts or emails. + +- No Uploads + - 100% client-side, your files never leave your device. + +- Forever Free + - All tools, no trials, no paywalls. + +- No Limits + - Use as much as you want, no hidden caps. + +- Batch Processing + - Handle unlimited PDFs in one go. + +- Lightning Fast + - Process PDFs instantly, without waiting or delays. + +## Links + +- [Official website](https://www.bentopdf.com?utm_source=coolify.io) +- [Documentation](https://bentopdf.com/docs?utm_source=coolify.io) +- [GitHub](https://github.com/alam00000/bentopdf?utm_source=coolify.io) \ No newline at end of file diff --git a/docs/services/bluesky-pds.md b/docs/services/bluesky-pds.md index 006bb7948..c32a008d5 100644 --- a/docs/services/bluesky-pds.md +++ b/docs/services/bluesky-pds.md @@ -17,7 +17,7 @@ Pdsadmin requires you to have https in your Bluesky PDS, make sure you have set ## Creating an account in your PDS -To create an account and start using your PDS, you can use the following pdsadmin commnands in the Terminal tab of the Coolify UI: +To create an account and start using your PDS, you can use the following pdsadmin commands in the Terminal tab of the Coolify UI: ```bash pdsadmin create-invite-code diff --git a/docs/services/calcom.md b/docs/services/calcom.md index b1d6d6434..20ee61ed3 100644 --- a/docs/services/calcom.md +++ b/docs/services/calcom.md @@ -18,7 +18,7 @@ You need to change default docker compose to the following to make cal.com work ```yaml services: calcom: - image: 'calcom/cal.com: + image: 'calcom/cal.com: platform: linux/amd64 (... same ...) ``` diff --git a/docs/services/ente-photos.md b/docs/services/ente-photos.md index a56e5b21d..9002f3059 100644 --- a/docs/services/ente-photos.md +++ b/docs/services/ente-photos.md @@ -19,7 +19,7 @@ Learn more at [help.ente.io](https://help.ente.io/). ### 1. Remote S3 bucket -- For AWS S3 you can create a bucket and allow access via IAM Roles/User Permissions. Which will generate an access key and secrect key for your S3 Bucket. +- For AWS S3 you can create a bucket and allow access via IAM Roles/User Permissions. Which will generate an access key and secret key for your S3 Bucket. - For the S3 bucket, apply the following CORS policy for proper access control from the museum service. diff --git a/docs/services/forgejo.md b/docs/services/forgejo.md index 3040b6391..3f94a48d5 100644 --- a/docs/services/forgejo.md +++ b/docs/services/forgejo.md @@ -51,7 +51,7 @@ Coolify includes Forgejo services with a single runner, using [Docker-in-Docker] 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. +2. After successfully 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. diff --git a/docs/services/goatcounter.md b/docs/services/goatcounter.md new file mode 100644 index 000000000..82aae3079 --- /dev/null +++ b/docs/services/goatcounter.md @@ -0,0 +1,30 @@ +--- +title: "GoatCounter" +description: "Here you can find the documentation for hosting GoatCounter with Coolify." +--- + + + +
+ +# What is GoatCounter? + +GoatCounter is an open source web analytics platform. It aims to offer easy to use and meaningful privacy-friendly web analytics. + +- Privacy-aware; doesn’t track users with unique identifiers and doesn't need a GDPR notice. Fine-grained control over which data is collected. + +- Lightweight and fast; adds just ~3.5K of extra data to your site. Also has JavaScript-free "tracking pixel" option, or you can use it from your application's middleware or import from logfiles. + +- Identify unique visits without cookies using a non-identifiable hash. + +- Keeps useful statistics such as browser information, location, and screen size. Keep track of referring sites and campaigns. + +- Easy; if you've been confused by the myriad of options and flexibility of Google Analytics and Matomo that you don't need then GoatCounter will be a breath of fresh air. + +- Accessibility is a high-priority feature, and the interface works well with assistive technology such as screen readers. + +## Links + +- [The official website](https://www.goatcounter.com?utm_source=coolify.io) +- [Documentation](https://www.goatcounter.com/help/start?utm_source=coolify.io) +- [GitHub](https://github.com/arp242/goatcounter?utm_source=coolify.io) diff --git a/docs/services/langflow.md b/docs/services/langflow.md new file mode 100644 index 000000000..cf36bbc4c --- /dev/null +++ b/docs/services/langflow.md @@ -0,0 +1,29 @@ +--- +title: "Langflow" +description: "Host Langflow on Coolify to build and deploy AI-powered agents and workflows with a visual drag-and-drop interface and Python extensibility." +--- + +# Langflow + + + +## What is Langflow? + +Langflow is an open-source Python-based framework for building AI applications. It combines a visual authoring experience with full programmatic access, enabling teams to prototype, test, and deploy AI-powered agents and workflows. + +It accelerates development by providing a **drag-and-drop interface** while maintaining the flexibility of **custom Python components** for advanced use cases. + +## Credentials + +After deploying Langflow on Coolify you can login to the dashboard with the autogenerated credentials stored in the following environment variables: + +| Variable | Description | +|--------------------------------|----------------------------------| +| `LANGFLOW_SUPERUSER` | Username for the admin account | +| `LANGFLOW_SUPERUSER_PASSWORD` | Password for the admin account | + +## Links + +- [Langflow Website](https://www.langflow.org/?utm_source=coolify.io) +- [Documentation](https://docs.langflow.org/?utm_source=coolify.io) +- [GitHub Repository](https://github.com/langflow-ai/langflow) diff --git a/docs/services/mautic.md b/docs/services/mautic.md index 74fdc0291..15695783f 100644 --- a/docs/services/mautic.md +++ b/docs/services/mautic.md @@ -7,6 +7,10 @@ description: "Deploy Mautic open-source marketing automation platform on Coolify +::: danger SERVICE REMOVED FROM COOLIFY +This service has been removed from Coolify’s one-click service catalog because the official Docker images no longer include AMQP transport, so RabbitMQ integration does not work with our template. More info on https://github.com/coollabsio/coolify/pull/8088 +::: + ## What is Mautic Mautic is the world's largest open-source marketing automation project, trusted by over 200,000 organizations worldwide. It provides a privacy-focused, fully customizable marketing automation platform that gives you complete control over your data and marketing infrastructure. diff --git a/docs/services/openclaw.md b/docs/services/openclaw.md new file mode 100644 index 000000000..cf9708226 --- /dev/null +++ b/docs/services/openclaw.md @@ -0,0 +1,51 @@ +--- +title: "OpenClaw" +description: "Deploy OpenClaw AI-powered coding assistant on Coolify with multi-provider support, browser automation, and chat integrations." +--- + +# OpenClaw + +![OpenClaw](/docs/images/services/openclaw-logo.svg) + +## What is OpenClaw? + +OpenClaw is an AI-powered coding assistant built by coollabsio. It supports over 20 AI providers, includes built-in browser automation, and integrates with chat platforms like Telegram, Discord, Slack, and WhatsApp. + +## Authentication + +OpenClaw uses HTTP Basic Auth. The `AUTH_USERNAME` and `AUTH_PASSWORD` environment variables are auto-generated by Coolify during deployment. + +A gateway token (`OPENCLAW_GATEWAY_TOKEN`) is also generated for API access. + +## AI Providers + +At least one AI provider API key is required. Set the corresponding environment variable for your provider: + +- **Anthropic** — `ANTHROPIC_API_KEY` +- **OpenAI** — `OPENAI_API_KEY` +- **Google Gemini** — `GEMINI_API_KEY` +- **OpenRouter** — `OPENROUTER_API_KEY` +- **Groq** — `GROQ_API_KEY` +- **Mistral** — `MISTRAL_API_KEY` +- **xAI** — `XAI_API_KEY` +- **Cerebras** — `CEREBRAS_API_KEY` +- **Amazon Bedrock** — `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION` +- **Ollama (local)** — `OLLAMA_BASE_URL` + +Use `OPENCLAW_PRIMARY_MODEL` to set the default model. + +For the full list of supported providers and configuration options, see the [GitHub repository](https://github.com/coollabsio/openclaw?utm_source=coolify.io). + +## Browser + +The `/browser` endpoint opens a remote browser controlled by OpenClaw via Chrome DevTools Protocol (CDP). This is useful for OAuth flows, 2FA, captcha solving, and authenticated web scraping. + +Browser sessions are persisted across restarts via a dedicated volume. You can configure the browser with these environment variables: + +- `BROWSER_DEFAULT_PROFILE` — Browser profile name (default: `openclaw`) +- `BROWSER_SNAPSHOT_MODE` — Snapshot mode (default: `efficient`) +- `BROWSER_EVALUATE_ENABLED` — Enable JavaScript evaluation (default: `true`) + +## Links + +- [GitHub](https://github.com/coollabsio/openclaw?utm_source=coolify.io) diff --git a/docs/services/satisfactory.md b/docs/services/satisfactory.md new file mode 100644 index 000000000..4eaaae3c1 --- /dev/null +++ b/docs/services/satisfactory.md @@ -0,0 +1,49 @@ +--- +title: "Satisfactory" +description: "Run Satisfactory server on Coolify for multiplayer gaming." +--- + +# What is Satisfactory? + +Satisfactory is a first-person, open-world factory simulation game focused on building, automation, and exploration on an alien planet. Players, as "Capital Pioneers" for FICSIT Inc., explore, gather resources, and build massive, multi-story factories interconnected by conveyor belts to automate production. + +## Info + +The server may run on less than 8GB of RAM, though 8GB - 16GB is still recommended per the the [official wiki](https://satisfactory.wiki.gg/wiki/Dedicated_servers#Requirements?utm_source=coolify.io). You may need to increase the container's defined `--memory` restriction as you approach the late game (or if you're playing with many 4+ players) + +### Updating + +The game automatically updates when the container is started or restarted (unless you set `SKIPUPDATE=true`). + +### Environment Variables + +| Parameter | Default | Function | +|-------------------------|:---------:|:-----------------------------------------------------------| +| `AUTOSAVENUM` | `5` | number of rotating autosave files | +| `DEBUG` | `false` | for debugging the server | +| `DISABLESEASONALEVENTS` | `false` | disable the FICSMAS event (you miserable bastard) | +| `LOG` | `false` | disable Satisfactory log pruning | +| `MAXOBJECTS` | `2162688` | set the object limit for your server | +| `MAXPLAYERS` | `4` | set the player limit for your server | +| `MAXTICKRATE` | `30` | set the maximum sim tick rate for your server | +| `MULTIHOME` | `::` | set the server's listening interface (usually not needed) | +| `PGID` | `1000` | set the group ID of the user the server will run as | +| `PUID` | `1000` | set the user ID of the user the server will run as | +| `SERVERGAMEPORT` | `7777` | set the game's server port | +| `SERVERMESSAGINGPORT` | `8888` | set the game's messaging port (internally and externally) | +| `SERVERSTREAMING` | `true` | toggle whether the game utilizes asset streaming | +| `SKIPUPDATE` | `false` | avoid updating the game on container start/restart | +| `STEAMBETA` | `false` | set experimental game version | +| `STEAMBETAID` | - | set a custom beta game version (for testing) | +| `STEAMBETAKEY` | - | set password for the beta game version (for testing) | +| `TIMEOUT` | `30` | set client timeout (in seconds) | +| `VMOVERRIDE` | `false` | skips the CPU model check (should not ordinarily be used) | + +## Modding + +This game server allows modding +> Please refer to the github link below to know more about modding + +## Links + +- [GitHub](https://github.com/wolveix/satisfactory-server) \ No newline at end of file diff --git a/docs/services/signoz.md b/docs/services/signoz.md index c90741409..a6d85e7f2 100644 --- a/docs/services/signoz.md +++ b/docs/services/signoz.md @@ -90,7 +90,7 @@ To enable email alerts, you need to set the following variables from the Environ More environment variables are [available to use](https://signoz.io/docs/manage/administrator-guide/configuration/alertmanager/) to authenticate via Identity / Secret or use TLS instead of SmartTLS. Read [Passing environment variables not included in the template](passing-environment-variables-not-included-in-the-template) to learn how to add them. -## Permision issue while using non root user +## Permission issue while using non root user The issue is mostly due to Coolify re-apply its user' ownership & chmod to the files mounted in the container. diff --git a/docs/troubleshoot/applications/failed-to-get-token.md b/docs/troubleshoot/applications/failed-to-get-token.md index 1204405c6..082ce874b 100644 --- a/docs/troubleshoot/applications/failed-to-get-token.md +++ b/docs/troubleshoot/applications/failed-to-get-token.md @@ -11,7 +11,7 @@ The error is usually related to NTP time synchronization issue. ## Error -`'Issued at' claim (iat) must be an Integer representing the time that assertation issued.` +`'Issued at' claim (iat) must be an Integer representing the time that assertion issued.` ## Solution diff --git a/docs/troubleshoot/dns-and-domains/lets-encrypt-not-working.md b/docs/troubleshoot/dns-and-domains/lets-encrypt-not-working.md index ae82eb999..318ed6bf2 100644 --- a/docs/troubleshoot/dns-and-domains/lets-encrypt-not-working.md +++ b/docs/troubleshoot/dns-and-domains/lets-encrypt-not-working.md @@ -37,7 +37,7 @@ Sometimes, Let's Encrypt might be having issues on their end. Check the Let's En ## 5. Note on Certificate Validity -Let's Encrypt certificates are valid for 90 days. If your certificate is still valid, your domain may work fine even if requied port 80 is closed or your domain is being proxied. This is because Coolify will continue using the existing valid certificate until it expires. +Let's Encrypt certificates are valid for 90 days. If your certificate is still valid, your domain may work fine even if required port 80 is closed or your domain is being proxied. This is because Coolify will continue using the existing valid certificate until it expires. However, if your domain has been working fine over HTTPS for several months and suddenly fails to generate a new SSL certificate, it’s likely that the existing certificate has expired. At this point, Coolify won’t be able to generate a new certificate due to the issues mentioned earlier (like port 80 being closed or proxy interference).