From 258de45d35a976a1bf3a23e584ab7c0d7acb2df3 Mon Sep 17 00:00:00 2001 From: Nhat Bui <59013407+buiducnhat@users.noreply.github.com> Date: Sat, 17 May 2025 16:15:40 +0700 Subject: [PATCH] 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> --- blueprints/colanode/docker-compose.yml | 133 +++++++++++++++++++++++++ blueprints/colanode/logo.svg | 18 ++++ blueprints/colanode/template.toml | 31 ++++++ meta.json | 13 +++ 4 files changed, 195 insertions(+) create mode 100644 blueprints/colanode/docker-compose.yml create mode 100644 blueprints/colanode/logo.svg create mode 100644 blueprints/colanode/template.toml diff --git a/blueprints/colanode/docker-compose.yml b/blueprints/colanode/docker-compose.yml new file mode 100644 index 00000000..76ed963a --- /dev/null +++ b/blueprints/colanode/docker-compose.yml @@ -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: diff --git a/blueprints/colanode/logo.svg b/blueprints/colanode/logo.svg new file mode 100644 index 00000000..c9913542 --- /dev/null +++ b/blueprints/colanode/logo.svg @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/blueprints/colanode/template.toml b/blueprints/colanode/template.toml new file mode 100644 index 00000000..b6e884e6 --- /dev/null +++ b/blueprints/colanode/template.toml @@ -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" diff --git a/meta.json b/meta.json index 71ce4106..503be5cf 100644 --- a/meta.json +++ b/meta.json @@ -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",