diff --git a/astro.config.mjs b/astro.config.mjs
index 1ef0634..556fcd7 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -342,6 +342,7 @@ export default defineConfig({
{ label: "Emby Stat", link: "/services/emby-stat" },
{ label: "Fider", link: "/services/fider" },
{ label: "Filebrowser", link: "/services/filebrowser" },
+ { label: "FileFlows", link: "/services/fileflows" },
{ label: "Firefly III", link: "/services/firefly-iii" },
{ label: "Formbricks", link: "/services/formbricks" },
{ label: "Forgejo", link: "/services/forgejo" },
@@ -378,6 +379,7 @@ export default defineConfig({
{ label: "Mosquitto", link: "/services/mosquitto" },
{ label: "N8N", link: "/services/n8n" },
{ label: "Nextcloud", link: "/services/nextcloud" },
+ { label: "Nexus", link: "/services/nexus" },
{ label: "Nitropage", link: "/services/nitropage" },
{ label: "NocoDB", link: "/services/nocodb" },
{ label: "Odoo", link: "/services/odoo" },
diff --git a/openapi.yaml b/openapi.yaml
index 2a22c73..8627c6a 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -3871,7 +3871,7 @@ paths:
type:
description: 'The one-click service type'
type: string
- enum: [activepieces, appsmith, appwrite, authentik, babybuddy, budge, changedetection, chatwoot, classicpress-with-mariadb, classicpress-with-mysql, classicpress-without-database, cloudflared, code-server, dashboard, directus, directus-with-postgresql, docker-registry, docuseal, docuseal-with-postgres, dokuwiki, duplicati, emby, embystat, fider, filebrowser, firefly, formbricks, ghost, gitea, gitea-with-mariadb, gitea-with-mysql, gitea-with-postgresql, glance, glances, glitchtip, grafana, grafana-with-postgresql, grocy, heimdall, homepage, jellyfin, kuzzle, listmonk, logto, mediawiki, meilisearch, metabase, metube, minio, moodle, n8n, n8n-with-postgresql, next-image-transformation, nextcloud, nocodb, odoo, openblocks, pairdrop, penpot, phpmyadmin, pocketbase, posthog, reactive-resume, rocketchat, shlink, slash, snapdrop, statusnook, stirling-pdf, supabase, syncthing, tolgee, trigger, trigger-with-external-database, twenty, umami, unleash-with-postgresql, unleash-without-database, uptime-kuma, vaultwarden, vikunja, weblate, whoogle, wordpress-with-mariadb, wordpress-with-mysql, wordpress-without-database]
+ enum: [activepieces, appsmith, appwrite, authentik, babybuddy, budge, changedetection, chatwoot, classicpress-with-mariadb, classicpress-with-mysql, classicpress-without-database, cloudflared, code-server, dashboard, directus, directus-with-postgresql, docker-registry, docuseal, docuseal-with-postgres, dokuwiki, duplicati, emby, embystat, fider, filebrowser, firefly, formbricks, ghost, gitea, gitea-with-mariadb, gitea-with-mysql, gitea-with-postgresql, glance, glances, glitchtip, grafana, grafana-with-postgresql, grocy, heimdall, homepage, jellyfin, kuzzle, listmonk, logto, mediawiki, meilisearch, metabase, metube, minio, moodle, n8n, n8n-with-postgresql, next-image-transformation, nextcloud, nexus, nocodb, odoo, openblocks, pairdrop, penpot, phpmyadmin, pocketbase, posthog, reactive-resume, rocketchat, shlink, slash, snapdrop, statusnook, stirling-pdf, supabase, syncthing, tolgee, trigger, trigger-with-external-database, twenty, umami, unleash-with-postgresql, unleash-without-database, uptime-kuma, vaultwarden, vikunja, weblate, whoogle, wordpress-with-mariadb, wordpress-with-mysql, wordpress-without-database]
name:
type: string
maxLength: 255
diff --git a/src/assets/images/screenshots/fileflows_screenshot.webp b/src/assets/images/screenshots/fileflows_screenshot.webp
new file mode 100644
index 0000000..95c590f
Binary files /dev/null and b/src/assets/images/screenshots/fileflows_screenshot.webp differ
diff --git a/src/assets/images/services/fileflows.svg b/src/assets/images/services/fileflows.svg
new file mode 100644
index 0000000..ee37e9b
--- /dev/null
+++ b/src/assets/images/services/fileflows.svg
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/services/nexus0.png b/src/assets/images/services/nexus0.png
new file mode 100644
index 0000000..3756744
Binary files /dev/null and b/src/assets/images/services/nexus0.png differ
diff --git a/src/assets/images/services/nexus1.png b/src/assets/images/services/nexus1.png
new file mode 100644
index 0000000..05a43ae
Binary files /dev/null and b/src/assets/images/services/nexus1.png differ
diff --git a/src/assets/images/services/nexus2.png b/src/assets/images/services/nexus2.png
new file mode 100644
index 0000000..74c86e8
Binary files /dev/null and b/src/assets/images/services/nexus2.png differ
diff --git a/src/content/docs/knowledge-base/docker/custom-commands.mdx b/src/content/docs/knowledge-base/docker/custom-commands.mdx
index a6c4e4b..9fb1ca8 100644
--- a/src/content/docs/knowledge-base/docker/custom-commands.mdx
+++ b/src/content/docs/knowledge-base/docker/custom-commands.mdx
@@ -3,13 +3,12 @@ title: "Custom Commands"
head:
- tag: "meta"
attrs:
- property: "og:title"
- content: "How to use custom commands for your Docker deployments with Coolify."
+ property: "og:title"
+ content: "How to use custom commands for your Docker deployments with Coolify."
description: "A guide on how to use custom commands for your Docker deployments with Coolify."
---
-import { Aside, Steps } from '@astrojs/starlight/components';
-
+import { Aside, Steps } from "@astrojs/starlight/components";
For deploying your resources, you can add custom options to the final docker command, which is used to run your container.
@@ -33,6 +32,7 @@ For deploying your resources, you can add custom options to the final docker com
- `--init`
- `--ulimit`
- `--privileged`
+- `--gpus`
## Usage
diff --git a/src/content/docs/knowledge-base/notifications.mdx b/src/content/docs/knowledge-base/notifications.mdx
index 20d3d5a..c5617a0 100644
--- a/src/content/docs/knowledge-base/notifications.mdx
+++ b/src/content/docs/knowledge-base/notifications.mdx
@@ -5,45 +5,220 @@ head:
attrs:
property: "og:title"
content: "How the built-in notification system works in Coolify"
-description: "A guide on how the built-in notification system works in Coolify"
+description: "A comprehensive guide on setting up and using notifications in Coolify"
+tableOfContents:
+ minHeadingLevel: 2
+ maxHeadingLevel: 4
---
-## Notifications
+import { Steps, Aside } from '@astrojs/starlight/components';
-You can set up several types of notifications. Each team could have different notification settings.
+Coolify provides a robust notification system that supports multiple channels. You can configure notifications in the **Notifications** tab of your Coolify dashboard.
-### Email
-
-Email notifications requires you to set up an SMTP server or supported service (Resend).
-
-#### System Wide (transactional)
+## Notification Providers
-If you self-host Coolify, you can set up a system-wide SMTP server in the **Settings** menu.
+Below are guides for setting up supported notification providers in Coolify.
-#### Team Wide
-
-To setup notifications, go to the **Team** tab and click on **Notifications** and then **Email**.
+### Email
-If you have a System Wide Email settings, you can enable to use it for the team. Otherwise, you can set up a custom SMTP server/Resend for the team.
+
+
+
+1. Navigate to **Notifications** → **Email**
+
+2. Choose your email provider:
+ - Use system wide (transactional) email settings (if you self-host Coolify, you can set this up in the Instance Settings - If you use Coolify Cloud, this is set up for you)
+ - SMTP
+ - Resend
+
+3. Configure your chosen provider:
+
+ #### System-Wide Email Settings
+ - Enable the `Use system wide (transactional) email settings` checkbox
+
+ #### SMTP Configuration
+ - Fill in the following fields:
+ - `From Name` - Display name for the sender
+ - `From Address` - Email address notifications will come from
+ - `Host` - SMTP server hostname (e.g., smtp.mail.com)
+ - `Port` - SMTP port (typically 587 or 465)
+ - `Username` - SMTP authentication username
+ - `Password` - SMTP authentication password
+ - `Encryption` - TLS, SSL, or None (None is not recommended as it is highly insecure)
+ - `Timeout` - Connection timeout in seconds
+ - Enable the `SMTP` checkbox
+
+ #### Resend Configuration
+ - Enter your `Resend API Key`
+ - Enable the `Resend` checkbox
+
+4. Click `Send Test Email` to verify your setup
+
### Telegram
-You need to create a bot token on Telegram. You can do that by talking to the [BotFather](https://t.me/botfather).
-
-More information on how to create a bot token can be found [here](https://core.telegram.org/bots/tutorial).
-
-> You can add your new bot to a group chat, so you can share these notifications with your team.
+
+1. Initial Setup (Setup only possible on phone)
+ - Create a Telegram account using your phone number
+ - Open the Telegram app on your phone
+ - Go to **Settings** → **Profile**
+ - Set up a username (recommended)
+
+2. Create Your Bot
+ - Message [@BotFather](https://t.me/botfather)
+ - Send the `/newbot` command
+ - Follow BotFather's instructions to create your bot
+ - Copy the `Bot Token` when displayed
+
+
+
+3. Create and add your bot to a group
+ - Create a new group in Telegram
+ - Add your bot to the group (you can add it by using the bot name chosen while creating the bot)
+
+4. Make the bot an admin of the group
+ - Click on the group name
+ - Locate the members list
+ - Click on the bot name
+ - Click on **Add to group or channel**
+ - Choose the group
+ - Enable the `admin` toggle
+ - Click on **Add bot as admin**
+
+5. Enable Topics (Optional, Setup only possible on phone)
+ - Open the group on your phone
+ - Tap the group name
+ - Tap the pencil icon (edit)
+ - Find and enable **Topics** (this enables threads for the group)
+ - You can now create topics using the 3-dot menu in the group (also works on desktop)
+
+6. Get Required IDs
+ - Visit: `https://api.telegram.org/bot{YOUR_BOT_TOKEN}/getUpdates` (Replace `{YOUR_BOT_TOKEN}` with your actual bot token)
+ - Send a test message in your group or thread/topic
+ - Find these values in the response:
+ - `Chat ID`: Look for `"chat": {"id": -100XXXXXXXXX,` (for groups/channels, the chat ID usually starts with `-100`)
+ - `Thread/Topic ID` (if using threads): Look for `"message_thread_id":XXXXX,`
+
+7. Configure Coolify
+ - Go to **Notifications** → **Telegram**
+ - Enter your `bot token` (from step 2)
+ - Enter the `chat ID` (include the `-` minus sign if present)
+ - Enter the `thread/topic ID` (only if you are using threads)
+ - Save settings
+ - Enable the Telegram channel
+ - Send a `Test notification`
+
+
+
### Discord
-You only need to add a Discord webhook endpoint to receive notifications.
-
-More information on how to create a webhook can be found [here](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks).
-
-### Events
-
-You can subscribe to the following events:
-
-- Container Status Changed (Stopped, Started, Restarted).
-- Application Deployments (Finished, Failed).
-- Backup Status (Finished, Failed).
+
+1. Create a Discord Server and Channel
+ - Create a new server or use an existing one
+ - Create a new text channel for Coolify notifications
+
+2. Create a webhook
+ - Open Discord server settings
+ - Go to **Integrations** → **Webhooks**
+ - Click **New Webhook**
+ - Choose the channel you created for Coolify notifications
+ - Copy the `webhook URL`
+
+3. Configure in Coolify:
+ - Go to **Notifications** → **Discord**
+ - Paste the `webhook URL` in the Webhook URL field
+ - Save the settings
+ - Enable the Discord channel
+ - Send a `Test notification`
+
+
+
+
+### Slack
+
+
+1. Create a Slack App
+ - Visit [Slack API](https://api.slack.com/apps)
+ - Click **Create New App** → **From scratch**
+ - Choose your workspace
+
+2. Enable webhooks:
+ - Go to **Incoming Webhooks**
+ - Toggle **Activate Incoming Webhooks**
+ - Click **Add New Webhook to Workspace**
+ - Choose a channel for Coolify notifications
+ - Copy the `webhook URL`
+
+3. Configure in Coolify:
+ - Go to **Notifications** → **Slack**
+ - Paste the `webhook URL` in the Webhook URL field
+ - Save the settings
+ - Enable the Slack channel
+ - Send a `Test notification`
+
+
+### Pushover (Push Notifications)
+
+
+1. Get User Key
+ - Log in or sign up at [Pushover](https://pushover.net)
+ - Copy your `User Key` from the top right of the page
+
+2. Create an Application
+ - Visit [Create Application](https://pushover.net/apps/build)
+ - Fill in application details
+ - Create the application
+ - Copy the `API Token/Key` from the top left of the page
+
+3. Configure in Coolify:
+ - Go to **Notifications** → **Pushover**
+ - Enter your `User Key` (from step 1)
+ - Enter the `API Key` from your created application (from step 2)
+ - Save the settings
+ - Enable the Pushover channel
+ - Send a `Test notification`
+
+
+
+
+## Notification Events
+
+You can configure which events trigger notifications in your notification settings:
+
+### Deployments
+ - Deployment Success
+ - Deployment Failure
+ - Container Status changes
+
+### Backups
+ - Backup Success
+ - Backup Failure
+
+### Scheduled Tasks
+ - Task Success
+ - Task Failure
+
+### Server Events
+ - Docker Cleanup Success
+ - Docker Cleanup Failure
+ - High Disk Usage Alerts
+ - Server Status Updates
+
+
diff --git a/src/content/docs/services/fileflows.mdx b/src/content/docs/services/fileflows.mdx
new file mode 100644
index 0000000..ca4a315
--- /dev/null
+++ b/src/content/docs/services/fileflows.mdx
@@ -0,0 +1,36 @@
+---
+title: FileFlows
+head:
+ - tag: "meta"
+ attrs:
+ property: "og:title"
+ content: "How to host FileFlows with Coolify"
+description: "Here you can find the documentation for hosting FileFlows with Coolify."
+---
+
+![FileFlows](../../../assets/images/services/fileflows.svg)
+
+## 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
+
+![FileFlows](/src/assets/images/screenshots/fileflows_screenshot.webp)
+
+## Links
+
+- [The official website ›](https://fileflows.com/)
+- [Doc ›](https://fileflows.com/docs)
diff --git a/src/content/docs/services/nexus.mdx b/src/content/docs/services/nexus.mdx
new file mode 100644
index 0000000..8cfa964
--- /dev/null
+++ b/src/content/docs/services/nexus.mdx
@@ -0,0 +1,40 @@
+---
+title: Sonatype Nexus
+head:
+ - tag: "meta"
+ attrs:
+ property: "og:title"
+ content: How to host Sonatype Nexus with Coolify
+description: "Here you can find the documentation for hosting Sonatype Nexus with Coolify."
+---
+
+import { Badge } from '@astrojs/starlight/components';
+
+
+
+![Nexus](../../../assets/images/services/nexus0.png)
+
+## 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
+
+![Repository](../../../assets/images/services/nexus1.png)
+![System](../../../assets/images/services/nexus2.png)
+
+## 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)