feat: add template for colanode (#137)

* feat: add template for colanode

- Introduced Colanode Server (v0.1.6), an open-source alternative to Slack and Notion.
- Added relevant details including description, logo, links to GitHub, website, and documentation.
- Tagged with documentation, knowledge-base, and collaboration.

* Update blueprints/colanode/docker-compose.yml

* Update blueprints/colanode/docker-compose.yml

* Update blueprints/colanode/docker-compose.yml

* Update blueprints/colanode/docker-compose.yml

---------

Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
This commit is contained in:
Nhat Bui
2025-05-17 16:15:40 +07:00
committed by GitHub
parent 68bef2b208
commit 258de45d35
4 changed files with 195 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
services:
postgres:
image: pgvector/pgvector:pg17
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- postgres_data:/var/lib/postgresql/data
valkey:
image: valkey/valkey:8.1
restart: always
command: ["valkey-server", "--requirepass", "${VALKEY_PASSWORD}"]
volumes:
- valkey_data:/data
minio:
image: minio/minio:RELEASE.2025-04-08T15-41-24Z
restart: always
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
MINIO_BROWSER: "on"
MINIO_DOMAIN: minio
MINIO_ADDRESS: ":9000"
MINIO_CONSOLE_ADDRESS: ":9001"
volumes:
- minio_data:/data
entrypoint: sh
command: -c 'mkdir -p /data/colanode-avatars /data/colanode-files && minio server /data --address ":9000" --console-address ":9001"'
server:
image: ghcr.io/colanode/server:latest
restart: always
depends_on:
- postgres
- valkey
- minio
environment:
# ---------------------------------------------------------------
# General Node/Server Config
# ---------------------------------------------------------------
NODE_ENV: production
PORT: 3000
# The server requires a name and avatar URL which will be displayed in the desktop app login screen.
SERVER_NAME: ${SERVER_NAME}
SERVER_AVATAR: ${SERVER_AVATAR}
# Possible values for SERVER_MODE: 'standalone', 'cluster'
SERVER_MODE: "standalone"
# ---------------------------------------------------------------
# Account Configuration
# ---------------------------------------------------------------
# Possible values for ACCOUNT_VERIFICATION_TYPE: 'automatic', 'manual', 'email'
ACCOUNT_VERIFICATION_TYPE: "automatic"
ACCOUNT_OTP_TIMEOUT: "600" # in seconds
ACCOUNT_ALLOW_GOOGLE_LOGIN: "false"
# ---------------------------------------------------------------
# User Configuration
# ---------------------------------------------------------------
USER_STORAGE_LIMIT: "10737418240" # 10 GB
USER_MAX_FILE_SIZE: "104857600" # 100 MB
# ---------------------------------------------------------------
# PostgreSQL Configuration
# ---------------------------------------------------------------
# The server expects a PostgreSQL database with the pgvector extension installed.
POSTGRES_URL: "postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}"
# Optional variables for SSL connection to the database
# POSTGRES_SSL_REJECT_UNAUTHORIZED: 'false'
# POSTGRES_SSL_CA: ''
# POSTGRES_SSL_KEY: ''
# POSTGRES_SSL_CERT: ''
# ---------------------------------------------------------------
# Redis Configuration
# ---------------------------------------------------------------
REDIS_URL: "redis://:${VALKEY_PASSWORD}@valkey:6379/0"
REDIS_DB: "0"
# Optional variables:
REDIS_JOBS_QUEUE_NAME: "jobs"
REDIS_JOBS_QUEUE_PREFIX: "colanode"
REDIS_EVENTS_CHANNEL: "events"
# ---------------------------------------------------------------
# S3 Configuration for Avatars
# ---------------------------------------------------------------
S3_AVATARS_ENDPOINT: "http://minio:9000"
S3_AVATARS_ACCESS_KEY: ${MINIO_ROOT_USER}
S3_AVATARS_SECRET_KEY: ${MINIO_ROOT_PASSWORD}
S3_AVATARS_BUCKET_NAME: "colanode-avatars"
S3_AVATARS_REGION: "us-east-1"
S3_AVATARS_FORCE_PATH_STYLE: "true"
# ---------------------------------------------------------------
# S3 Configuration for Files
# ---------------------------------------------------------------
S3_FILES_ENDPOINT: "http://minio:9000"
S3_FILES_ACCESS_KEY: ${MINIO_ROOT_USER}
S3_FILES_SECRET_KEY: ${MINIO_ROOT_PASSWORD}
S3_FILES_BUCKET_NAME: "colanode-files"
S3_FILES_REGION: "us-east-1"
S3_FILES_FORCE_PATH_STYLE: "true"
# ---------------------------------------------------------------
# SMTP configuration
# ---------------------------------------------------------------
SMTP_ENABLED: ${SMTP_ENABLED}
SMTP_HOST: ${SMTP_HOST}
SMTP_PORT: ${SMTP_PORT}
SMTP_USER: ${SMTP_USER}
SMTP_PASSWORD: ${SMTP_PASSWORD}
SMTP_EMAIL_FROM: ${SMTP_EMAIL_FROM}
SMTP_EMAIL_FROM_NAME: ${SMTP_EMAIL_FROM_NAME}
# ---------------------------------------------------------------
# AI Configuration
# ---------------------------------------------------------------
# The AI integration is in experimental mode yet and we don't
# recommend using it.
# ---------------------------------------------------------------
AI_ENABLED: "false"
# ---------------------------------------------------------------
volumes:
postgres_data:
valkey_data:
minio_data:

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1080.000000pt" height="1080.000000pt" viewBox="0 0 1080.000000 1080.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,1080.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M0 5400 l0 -5400 5400 0 5400 0 0 5400 0 5400 -5400 0 -5400 0 0
-5400z m8008 2133 l2 -472 -1637 -4 c-1487 -3 -1645 -5 -1713 -20 -236 -53
-417 -153 -586 -323 -180 -182 -293 -411 -323 -659 -14 -117 -15 -1189 -1
-1305 17 -138 47 -238 110 -365 159 -323 440 -541 800 -622 68 -15 226 -17
1713 -20 l1637 -4 -2 -472 -3 -472 -1635 0 c-1724 0 -1694 -1 -1923 46 -760
154 -1397 770 -1592 1539 -59 230 -60 255 -60 1015 0 624 2 712 18 815 77 496
294 899 671 1249 345 319 793 511 1265 541 64 4 823 7 1686 6 l1570 -1 3 -472z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 982 B

View File

@@ -0,0 +1,31 @@
[variables]
main_domain = "${domain}"
[config]
mounts = []
[[config.domains]]
serviceName = "server"
port = 3000
host = "${main_domain}"
[config.env]
SERVER_NAME = "My Colanode"
SERVER_AVATAR = "https://colanode.com/assets/logo-black.png"
POSTGRES_USER = "colanode_user"
POSTGRES_PASSWORD = "your_postgres_password"
POSTGRES_DB = "colanode_db"
VALKEY_PASSWORD = "your_valkey_password"
MINIO_ROOT_USER = "admin"
MINIO_ROOT_PASSWORD = "your_minio_password"
SMTP_ENABLED = "false"
SMTP_HOST = "smtp.gmail.com"
SMTP_PORT = "587"
SMTP_USER = "your_smtp_username"
SMTP_PASSWORD = "your_smtp_password"
SMTP_EMAIL_FROM = "your_email@example.com"
SMTP_EMAIL_FROM_NAME = "Colanode"

View File

@@ -2132,6 +2132,19 @@
},
"tags": ["documentation", "development", "collaboration"]
},
{
"id": "colanode",
"name": "Colanode Server",
"version": "v0.1.6",
"description": "Open-source and local-first Slack and Notion alternative that puts you in control of your data",
"logo": "logo.svg",
"links": {
"github": "https://github.com/colanode/colanode",
"website": "https://colanode.com",
"docs": "https://colanode.com/docs/"
},
"tags": ["documentation", "knowledge-base", "collaboration"]
},
{
"id": "collabora-office",
"name": "Collabora Office",