Docs
grovs.io Start for free

Coolify

Deploy Grovs as a Raw Compose application on a Coolify server that uses the Traefik proxy.

Set up Coolify

When to use

You already run Coolify with a Traefik proxy. This guide uses the repository's Compose template in Raw Compose Deployment mode, because Grovs needs explicit routing for its dynamic project-link hostnames. It does not apply to a Coolify server that uses the Caddy proxy.

Prerequisites

RequirementNotes
Coolify server with TraefikMeets the requirements
A domain you controlWith a DNS provider token for DNS-01 validation
A workstation with GitTo generate the environment file

1. Prepare DNS and proxy

  1. Point the Grovs DNS records at the server.
  2. Configure a Traefik certificate resolver with DNS-01 validation for your app, production links and test links domains. Keep the DNS-provider token in the proxy's configuration, not in the Grovs environment.

Follow Coolify's DNS challenge and wildcard certificate guides. A wildcard DNS record alone does not give you a wildcard certificate.

2. Create the app

In Coolify, select New → Public Repository with https://github.com/grovs-io/self-host:

SettingValue
Build PackDocker Compose
Base Directory/
Docker Compose Location/docker-compose.platform.yml
Raw Compose DeploymentEnabled
Automatic deploymentsDisabled; upgrade deliberately

Leave the per-service Domains fields empty. The template supplies its own Traefik labels. It does not start the standalone Caddy proxy or publish database ports.

3. Configure environment

On your workstation, generate the environment file:

Bash
git clone https://github.com/grovs-io/self-host.git
cd self-host
GROVS_RELEASE_URL="$(curl -fsSL -o /dev/null -w '%{url_effective}' https://github.com/grovs-io/self-host/releases/latest)"
GROVS_VERSION="${GROVS_RELEASE_URL##*/}" \
  GROVS_DOMAIN=example.com [email protected] \
  ./scripts/prepare-platform.sh coolify "$HOME/grovs-coolify"

This writes $HOME/grovs-coolify/.env for the latest completed release, generates credentials and prints your admin login. It keeps existing files.

OptionHow
Another releaseSet GROVS_VERSION
Separate short-link domainSet GROVS_LINKS_DOMAIN
Follow moving image tagsChange the generated file to GROVS_VERSION=latest before importing. See Images and releases.

Import the .env into the application's environment editor. Then confirm:

VariableMust match
GROVS_PROXY_NETWORK=coolifyThe actual Traefik Docker network
GROVS_HTTP_ENTRYPOINT=http, GROVS_HTTPS_ENTRYPOINT=httpsYour proxy's entrypoints
GROVS_CERT_RESOLVER=letsencryptThe resolver you configured for DNS-01
GROVS_VERSIONThe same numbered release or latest for both GHCR images

Keep the generated GROVS_ROUTER_PREFIX unique per deployment.

4. Deploy and verify

  1. Select Deploy and watch the service logs. The migration container exits with code 0, then the API, workers and dashboard start.
  2. Open https://dashboard.example.com and log in.
  3. Check https://api.example.com/up.
  4. Create a project and open its link. A working dashboard alone does not prove the wildcard link route or certificate.

Upgrades

Back up the platform environment and persistent volumes (Backups). Then follow Upgrades through Coolify's deployment controls, using the platform Compose file and imported environment.

Platform-specific gotchas

  • If your Coolify version counts one-shot services in aggregate health, exclude migrate from that health check.
  • New customer-owned custom domains need their own proxy routes and certificates. The template covers only the configured Grovs domains.
  • See Troubleshooting and Coolify's Compose guide.
Last updated 2026-10-26
Was this page helpful?