From ba51f7eb6fff491c9017153b396940d65ac42893 Mon Sep 17 00:00:00 2001 From: Manaf941 Date: Thu, 15 May 2025 19:02:56 +0200 Subject: [PATCH] feat(service): add CodiMD service (#4867) --- public/svgs/codimd.png | Bin 0 -> 4837 bytes templates/compose/codimd.yaml | 68 ++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 public/svgs/codimd.png create mode 100644 templates/compose/codimd.yaml diff --git a/public/svgs/codimd.png b/public/svgs/codimd.png new file mode 100644 index 0000000000000000000000000000000000000000..eebdcf78495b91997fe1b86eda124cb8abe6f8f0 GIT binary patch literal 4837 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 FzW|Y-AUFU3 literal 0 HcmV?d00001 diff --git a/templates/compose/codimd.yaml b/templates/compose/codimd.yaml new file mode 100644 index 000000000..3004fa4b6 --- /dev/null +++ b/templates/compose/codimd.yaml @@ -0,0 +1,68 @@ +# documentation: https://hackmd.io/c/codimd-documentation +# slogan: Realtime collaborative markdown notes on all platforms +# tags: markdown, md, editor, opensource, collaborative, realtime-collaboration, notes +# logo: svgs/codimd.png +# port: 3000 + +services: + codimd: + image: "nabo.codimd.dev/hackmdio/hackmd:latest" + environment: + # Port setup for Coolify/Traefik + - SERVICE_FQDN_CODIMD_3000 + - CMD_DOMAIN=$SERVICE_URL_CODIMD + - CMD_PROTOCOL_USESSL=true + # This forces the use of https in return urls (for oauth2 ? if used) + + # Session secret, autogenerated by coolify + - CMD_SESSION_SECRET=$SERVICE_PASSWORD_SESSIONSECRET + + # Force resources to be loaded without any external CDN (privacy, security, and isolation) + - CMD_USECDN=false + + # DB url + - "CMD_DB_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB:-codimd}" + + # GitHub Configuration + # - CMD_GITHUB_CLIENTID=$GITHUB_CLIENTID + # - CMD_GITHUB_CLIENTSECRET=$GITHUB_CLIENTSECRET + # If you're planning to use it, uncomment and provide GITHUB_CLIENTID and GITHUB_CLIENTSECRET environment variables + # I ran into some issues where nothing would happen after login, so you should test it first + + # Email Configuration + # https://hackmd.io/c/codimd-documentation/%2Fs%2Fcodimd-configuration#Authentication + # Warning: CodiMD does *not* verify emails + - CMD_EMAIL=true + - CMD_ALLOW_EMAIL_REGISTER=true + # You're forced to have CMD_ALLOW_EMAIL_REGISTER=true at least once for the first time you create an account + # However, can be safely disabled afterwards + # You can also use the manage_users script to create users: https://github.com/hackmdio/codimd/blob/master/bin/manage_users + # Example: docker exec -t codimd-fgcgkg8gsc8ocww004o0k8g8 node bin/manage_users --add user@example.com + depends_on: + postgresql: + condition: service_healthy + healthcheck: + test: + - CMD-SHELL + - "curl -f http://localhost:3000/ || exit 1" + interval: 5s + timeout: 20s + retries: 5 + volumes: + - "upload-data:/home/hackmd/app/public/uploads" + restart: always + postgresql: + image: "postgres:16-alpine" + volumes: + - "postgresql-data:/var/lib/postgresql/data" + environment: + - POSTGRES_USER=$SERVICE_USER_POSTGRES + - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES + - "POSTGRES_DB=${POSTGRES_DB:-codimd}" + healthcheck: + test: + - CMD-SHELL + - "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}" + interval: 5s + timeout: 20s + retries: 10