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.