Colanode logo

Colanode

Open-source and local-first Slack and Notion alternative

Alternative to: notion, slack


Colanode is an all-in-one platform for team collaboration that combines chat, wiki-style pages, and customizable databases into a single workspace. It's built local-first with CRDTs, so teams keep working offline and data syncs in the background, with everything stored under your own control instead of a vendor's cloud.

Colanode Docker Compose example

Self-host Colanode on your own server, homelab, or VPS starting from this Docker Compose example. It runs Colanode in Docker containers using the official pgvector/pgvector:pg17, valkey/valkey:8.1, ghcr.io/colanode/server:latest, ghcr.io/colanode/web:latest images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  postgres:
    image: pgvector/pgvector:pg17
    restart: unless-stopped
    environment:
      # Database user created on first boot.
      POSTGRES_USER: "colanode_user"
      # Database password (internal to the compose network).
      POSTGRES_PASSWORD: "postgrespass123"
      # Database name created on first boot.
      POSTGRES_DB: "colanode_db"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U colanode_user -d colanode_db"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

  valkey:
    image: valkey/valkey:8.1
    restart: unless-stopped
    # Password protecting the cache (internal to the compose network).
    command: ["valkey-server", "--requirepass", "your_valkey_password"]
    volumes:
      - valkey_data:/data
    healthcheck:
      test: ["CMD-SHELL", "valkey-cli -a your_valkey_password ping | grep -q PONG"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s

  server:
    image: ghcr.io/colanode/server:latest
    restart: unless-stopped
    environment:
      # Runtime environment.
      NODE_ENV: "production"
      # PostgreSQL connection string (internal service).
      POSTGRES_URL: "postgres://colanode_user:postgrespass123@postgres:5432/colanode_db"
      # Valkey/Redis connection string (internal service).
      REDIS_URL: "redis://:your_valkey_password@valkey:6379/0"
    volumes:
      - server_storage:/var/lib/colanode/storage
    depends_on:
      postgres:
        condition: service_healthy
      valkey:
        condition: service_healthy

  web:
    image: ghcr.io/colanode/web:latest
    restart: unless-stopped
    depends_on:
      - server

volumes:
  postgres_data:
  valkey_data:
  server_storage:

Prefer a managed setup? WinterFlow installs, configures, and updates Colanode for you using this same Docker Compose configuration.