Compare commits

..

40 Commits

Author SHA1 Message Date
decentral1se 1ed15423c3 fix: pass "-p" and use new lines
Closes coop-cloud/hedgedoc#13
2024-04-28 17:57:38 +02:00
decentral1se 0443ffc984 chore: remove tabs 2024-04-28 17:55:55 +02:00
moritz e8f1186965 chore: publish 1.0.1+1.9.9 release 2024-04-17 17:14:23 +02:00
moritz 66c5160812 fix backupbot label 2024-04-17 17:07:53 +02:00
trav c656afb176 chore: publish 1.0.0+1.9.9 release 2023-12-13 07:49:46 -08:00
cas 97f2d94079 chore: publish 0.6.0+1.9.9 release 2023-10-26 11:14:40 -07:00
moritz 4846a09169 add timeout label 2023-10-19 22:50:23 +02:00
knoflook 210a37cd0c fix permissions for real 2023-10-13 17:10:41 +02:00
3wordchant 914ef6b026 Spooky permissions fix?
See https://github.com/hedgedoc/container/issues/463
2023-10-02 19:11:13 +01:00
mayel 5f205c149f Merge pull request 'update outdated readme + add restore hook' (#10) from mayel-patch-1 into main
Reviewed-on: coop-cloud/hedgedoc#10
2023-07-29 11:37:09 +00:00
mayel d2c8993fcc Update compose.yml 2023-07-29 10:42:49 +00:00
mayel 1c93adcf21 add restore hook 2023-07-29 10:42:21 +00:00
mayel 7970e7c61e typo 2023-07-28 23:08:08 +00:00
mayel e14f050ede update outdated readme based on docker compose file 2023-07-28 22:55:38 +00:00
3wordchant 5fd556d358 chore: publish 0.5.1+1.9.8 release 2023-07-08 19:39:01 +01:00
3wordchant 4c2417901e Switch to self-hosted stack-ssh-deploy image [mass update] 2023-01-21 11:49:55 -08:00
3wordchant 6bc2679dee Fix CI by adding networks: [mass update] 2023-01-20 11:58:41 -08:00
3wordchant d2d5b8ceb1 Automatically generate catalogue on release [mass update]
Re: coop-cloud/recipes-catalogue-json#4
2023-01-20 10:27:11 -08:00
3wordchant afd3b03b21 Update abra syntax in examples (finally) [mass update] 2023-01-19 16:02:27 -08:00
decentral1se b43724ecba Merge pull request 'Add configuration option for maximum note length' (#8) from wolcen/hedgedoc:main into main
Reviewed-on: coop-cloud/hedgedoc#8
2022-12-15 20:29:18 +00:00
wolcen 8e973cbed1 Closing `'s seem not required when indented
Otherwise, extra `` prints on README display.
2022-12-15 20:10:29 +00:00
Chris Thompson 7780eb9f13 Bump configuration version 2022-12-15 15:05:13 -05:00
Chris Thompson 9e88945b9b Corrections to get config updating and effective 2022-12-15 15:05:02 -05:00
Chris Thompson 6139cff626 Correct link 2022-12-15 14:39:19 -05:00
Chris Thompson 0c96d5a45f Add config file template for documentMaxLength setting 2022-12-15 14:39:14 -05:00
philippr a896d27542 chore: publish 0.5.0+1.9.6 release 2022-12-02 16:04:10 +01:00
philippr 90d5d3fc18 chore: publish 0.4.0+1.9.3 release 2022-07-05 16:58:09 +02:00
philippr b282386419 update oauth envs 2022-07-05 16:50:01 +02:00
philippr 980cac71d8 chore: publish 0.3.0+1.9.3 release 2022-05-09 14:46:44 +02:00
philippr d277bd9ac1 add backupbot labels 2022-05-09 14:43:57 +02:00
3wordchant 5343ebb076 chore: publish 0.2.0+1.9.3 release 2022-04-13 21:38:04 +02:00
3wordchant f6827630d8 Goodbye, emojis! 😢
[ci skip]
2021-11-23 12:19:05 +02:00
3wordchant 29448933fc New version, sync labels 2021-10-16 17:04:37 +02:00
3wordchant 399f1f718b New .env.sample format, extra OIDC vars 2021-10-16 16:59:32 +02:00
3wordchant 92e554fb5c Update Drone for nüname 2021-08-17 20:42:51 +02:00
3wordchant ccb340b7ff Update for Hedgedoc 🦔 2021-08-17 20:29:07 +02:00
3wordchant 1f1cd735d1 Fix abra app .. run example command 2021-07-30 20:55:38 +02:00
decentral1se fd2c333a54 Merge pull request 'Add selected environment options' (#7) from nicksellen/codimd:add/more-env-options into main
Reviewed-on: coop-cloud/codimd#7
2021-07-30 18:45:57 +00:00
nicksellen a781e47fe2 Set new config options to default values 2021-07-30 19:43:00 +01:00
nicksellen f81b91db99 Add selected environment options 2021-07-30 19:11:32 +01:00
9 changed files with 150 additions and 64 deletions
+17 -9
View File
@@ -3,17 +3,19 @@ kind: pipeline
name: deploy to swarm-test.autonomic.zone
steps:
- name: deployment
image: decentral1se/stack-ssh-deploy:latest
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
settings:
host: swarm-test.autonomic.zone
stack: codimd
stack: hedgedoc
networks:
- proxy
deploy_key:
from_secret: drone_ssh_swarm_test
generate_secrets: true
purge: true
environment:
DOMAIN: codimd.swarm-test.autonomic.zone
STACK_NAME: codimd
DOMAIN: hedgedoc.swarm-test.autonomic.zone
STACK_NAME: hedgedoc
LETS_ENCRYPT_ENV: production
SECRET_DB_PASSWORD_VERSION: v1
ENTRYPOINT_CONF_VERSION: v1
@@ -22,11 +24,17 @@ trigger:
- main
---
kind: pipeline
name: recipe release
name: generate recipe catalogue
steps:
- name: release a new version
image: thecoopcloud/drone-abra:latest
image: plugins/downstream
settings:
command: recipe codimd release
deploy_key:
from_secret: abra_bot_deploy_key
server: https://build.coopcloud.tech
token:
from_secret: drone_abra-bot_token
fork: true
repositories:
- coop-cloud/auto-recipes-catalogue-json
trigger:
event: tag
+34 -7
View File
@@ -1,20 +1,47 @@
TYPE=codimd
TYPE=hedgedoc
TIMEOUT=300
ENABLE_AUTO_UPDATE=true
DOMAIN=codimd.example.com
DOMAIN=hedgedoc.example.com
## Domain aliases
#EXTRA_DOMAINS=', `www.codimd.example.com`'
#EXTRA_DOMAINS=', `www.hedgedoc.example.com`'
LETS_ENCRYPT_ENV=production
SECRET_DB_PASSWORD_VERSION=v1
# OAuth, see https://hackmd.io/@codimd/codimd-generic-oauth-2
COMPOSE_FILE="compose.yml"
#COMPOSE_FILE="compose.yml:compose.oauth.yml"
# OAuth, see https://docs.hedgedoc.org/guides/auth/keycloak/
#COMPOSE_FILE="$COMPOSE_FILE:compose.oauth.yml"
#CMD_OAUTH2_PROVIDERNAME="Keycloak"
#CMD_OAUTH2_BASEURL="https://keycloak.example.com/realms/realmname/protocol/openid-connect/"
#CMD_OAUTH2_CLIENT_ID="codimd"
#CMD_OAUTH2_CLIENT_ID="hedgedoc"
#CMD_OAUTH2_AUTHORIZATION_URL="https://keycloak.example.com/auth/realms/realmname/protocol/openid-connect/auth"
#CMD_OAUTH2_TOKEN_URL="https://keycloak.example.com/auth/realms/realmname/protocol/openid-connect/token"
#CMD_OAUTH2_USER_PROFILE_URL="https://keycloak.example.com/auth/realms/realmname/protocol/openid-connect/userinfo"
#CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=ocs.data.id
#CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=ocs.data.display-name
#CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR=ocs.data.email
#CMD_OAUTH2_PROVIDERNAME=Keycloak
#CMD_OAUTH2_SCOPE="openid email profile"
#
#SECRET_OAUTH_KEY_VERSION=v1
# Options, see https://docs.hedgedoc.org/configuration/
# CMD_ALLOW_ANONYMOUS=true
# CMD_ALLOW_ANONYMOUS_EDITS=false
# CMD_ALLOW_EMAIL_REGISTER=true
# CMD_ALLOW_FREEURL=false
# CMD_ALLOW_GRAVATAR=true
# CMD_ALLOW_ORIGIN=localhost
# CMD_COOKIE_POLICY=lax
# CMD_CSP_ADD_DISQUS=false
# CMD_CSP_ADD_GOOGLE_ANALYTICS=false
# CMD_CSP_ENABLE=true
# CMD_CSP_REPORTURI=undefined
# CMD_DEFAULT_PERMISSION=editable
# CMD_EMAIL=true
# CMD_SESSION_LIFE=1209600000
# Only present in config.json (no equivalent env var):
# DOCUMENT_MAX_LENGTH=100000
+14 -15
View File
@@ -1,35 +1,34 @@
# CodiMD
# Hedgedoc
[![Build Status](https://drone.autonomic.zone/api/badges/coop-cloud/codimd/status.svg)](https://drone.autonomic.zone/coop-cloud/codimd)
[![Build Status](https://drone.autonomic.zone/api/badges/coop-cloud/hedegedoc/status.svg)](https://drone.autonomic.zone/coop-cloud/hedegedoc)
[CodiMD][codimd] using Coöp Cloud ♥
[Hedgedoc][hedegedoc] using Coöp Cloud ♥
<!-- metadata -->
* **Category**: Apps
* **Status**: ❷💛
* **Image**: [`hackmdio/hackmd`](https://hub.docker.com/r/hackmdio/hackmd/), ❶💚, upstream
* **Status**: 2, beta
* **Image**: [`quay.io/hedgedoc/hedgedoc`](https://quay.io/hedgedoc/hedgedoc), 4, upstream
* **Healthcheck**: Yes
* **Backups**: No
* **Backups**: Yes
* **Email**: No
* **Tests**: ❷💛
* **SSO**: ❶💚 (OAuth)
* **Tests**: 2
* **SSO**: 3 (OAuth)
<!-- endmetadata -->
## Basic usage
1. Set up Docker Swarm and [`abra`][abra]
2. Deploy [`coop-cloud/traefik`][compose-traefik]
3. `abra app new codimd`
4. `abra app YOURAPPDOMAIN config` - be sure to change `$DOMAIN` to something that resolves to
3. `abra app new hedgedoc`
4. `abra app config YOURAPPDOMAIN` - be sure to change `$DOMAIN` to something that resolves to
your Docker swarm box
5. `abra app YOURAPPDOMAIN deploy`
5. `abra app deploy YOURAPPDOMAIN`
6. Create initial user:
```
abra run YOURAPPDOMAIN app bash
abra app YOURAPPDOMAIN run app bash
. /docker-entrypoint2.sh -e
bin/manage_users
```
[codimd]: https://github.com/hackmdio/codimd
[hedegedoc]: https://github.com/hedgedoc/hedgedoc
[abra]: https://git.autonomic.zone/autonomic-cooperative/abra
[compose-traefik]: https://git.autonomic.zone/coop-cloud/traefik
[compose-traefik]: https://git.autonomic.zone/coop-cloud/traefik
+1 -1
View File
@@ -1,4 +1,4 @@
export ENTRYPOINT_CONF_VERSION=v1
export ENTRYPOINT_CONF_VERSION=v9
abra_backup_app() {
_abra_backup_dir "app:/home/hackmd/app/public/uploads/"
+3 -1
View File
@@ -5,13 +5,15 @@ services:
app:
environment:
- CMD_OAUTH2_PROVIDERNAME
- CMD_OAUTH2_BASEURL
- CMD_OAUTH2_CLIENT_ID
- CMD_OAUTH2_CLIENT_SECRET_FILE=/run/secrets/oauth_key
- CMD_OAUTH2_AUTHORIZATION_URL
- CMD_OAUTH2_TOKEN_URL
- CMD_OAUTH2_USER_PROFILE_URL
- CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR
- CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR
- CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR
- CMD_OAUTH2_SCOPE
secrets:
- oauth_key
+38 -6
View File
@@ -1,14 +1,32 @@
version: "3.8"
services:
app:
image: hackmdio/hackmd:2.4.1
image: quay.io/hedgedoc/hedgedoc:1.9.9
environment:
- CMD_USECDN=false
- CMD_URL_ADDPORT=false
- CMD_DOMAIN=$DOMAIN
- CMD_PROTOCOL_USESSL=true
- CMD_HSTS_ENABLE=false
- CMD_DB_NAME=codimd
- CMD_DB_USER=codimd
- CMD_DB_HOST=db
- CMD_DB_PASSWORD_FILE=/run/secrets/db_password
- CMD_EMAIL # Email login enabled?
- CMD_ALLOW_ANONYMOUS
- CMD_ALLOW_ANONYMOUS_EDITS
- CMD_ALLOW_EMAIL_REGISTER
- CMD_ALLOW_FREEURL
- CMD_ALLOW_GRAVATAR
- CMD_ALLOW_ORIGIN
- CMD_COOKIE_POLICY
- CMD_CSP_ADD_DISQUS
- CMD_CSP_ADD_GOOGLE_ANALYTICS
- CMD_CSP_ENABLE
- CMD_CSP_REPORTURI
- CMD_DEFAULT_PERMISSION
- CMD_EMAIL
- CMD_SESSION_LIFE
- DOCUMENT_MAX_LENGTH
depends_on:
- db
networks:
@@ -23,6 +41,9 @@ services:
- source: entrypoint_conf
target: /docker-entrypoint.sh
mode: 0555
- source: config_json
target: /files/config.json
mode: 0555
deploy:
restart_policy:
condition: on-failure
@@ -36,15 +57,16 @@ services:
- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect"
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true"
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}"
- coop-cloud.${STACK_NAME}.app.version=2.4.1-e93929f3
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
- "coop-cloud.${STACK_NAME}.version=1.0.1+1.9.9"
healthcheck:
test: ["CMD", "wget", "-qO", "-", "http://localhost:3000"]
test: "nodejs -e \"http.get('http://localhost:3000', (res) => { console.log('status: ', res.statusCode); if (res.statusCode == 200) { process.exit(0); } else { process.exit(1); } });\""
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
db:
image: postgres:11.12-alpine
image: postgres:16.1-alpine
environment:
- POSTGRES_USER=codimd
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
@@ -56,7 +78,13 @@ services:
networks:
- internal
deploy:
labels: ['coop-cloud.${STACK_NAME}.db.version=11.12-alpine-09c7c402']
labels:
backupbot.backup: "true"
backupbot.backup.pre-hook: "PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /var/lib/postgresql/data/backup.sql"
backupbot.backup.post-hook: "rm -f /var/lib/postgresql/data/backup.sql"
backupbot.backup.path: "/var/lib/postgresql/data/backup.sql"
backupbot.restore: "true"
backupbot.restore.post-hook: "sh -c 'psql -U $${POSTGRES_USER} -d $${POSTGRES_DB} < /var/lib/postgresql/data/backup.sql && rm -f /var/lib/postgresql/data/backup.sql'"
volumes:
postgres:
codimd_uploads:
@@ -69,6 +97,10 @@ networks:
external: true
internal:
configs:
config_json:
name: ${STACK_NAME}_config_${ENTRYPOINT_CONF_VERSION}
file: config.json.tmpl
template_driver: golang
entrypoint_conf:
name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_CONF_VERSION}
file: entrypoint.sh.tmpl
+7
View File
@@ -0,0 +1,7 @@
{
{{ if (env "DOCUMENT_MAX_LENGTH") }}
"production": {
"documentMaxLength": {{ env "DOCUMENT_MAX_LENGTH" }}
}
{{ end }}
}
+29 -25
View File
@@ -1,46 +1,50 @@
#!/usr/bin/env bash
file_env() {
# 3wc: Load $VAR_FILE into $VAR - useful for secrets. See
# https://medium.com/@adrian.gheorghe.dev/using-docker-secrets-in-your-environment-variables-7a0609659aab
local var="$1"
local fileVar="${var}_FILE"
local def="${2:-}"
# 3wc: Load $VAR_FILE into $VAR - useful for secrets. See
# https://medium.com/@adrian.gheorghe.dev/using-docker-secrets-in-your-environment-variables-7a0609659aab
local var="$1"
local fileVar="${var}_FILE"
local def="${2:-}"
if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
echo >&2 "error: both $var and $fileVar are set (but are exclusive)"
exit 1
fi
local val="$def"
if [ "${!var:-}" ]; then
val="${!var}"
elif [ "${!fileVar:-}" ]; then
val="$(< "${!fileVar}")"
fi
export "$var"="$val"
unset "$fileVar"
if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
echo >&2 "error: both $var and $fileVar are set (but are exclusive)"
exit 1
fi
local val="$def"
if [ "${!var:-}" ]; then
val="${!var}"
elif [ "${!fileVar:-}" ]; then
val="$(< "${!fileVar}")"
fi
export "$var"="$val"
unset "$fileVar"
}
load_vars() {
file_env "CMD_DB_PASSWORD"
file_env "CMD_OAUTH2_CLIENT_SECRET"
file_env "CMD_DB_PASSWORD"
file_env "CMD_OAUTH2_CLIENT_SECRET"
}
main() {
set -eu
set -eu
load_vars
load_vars
mkdir -p "/hedgedoc/.npm" && \
chown -R 10000:65534 "/hedgedoc/.npm" && \
chmod "u+rwx" "/hedgedoc/.npm"
}
main
export CMD_DB_URL=postgres://$CMD_DB_USER:$CMD_DB_PASSWORD@$CMD_DB_HOST/$CMD_DB_NAME
export CMD_DB_URL=postgres://$CMD_DB_USER:$CMD_DB_PASSWORD@$CMD_DB_HOST:5432/$CMD_DB_NAME
# 3wc: `source /docker-entrypoint2.sh -e` to load CMD_DB_URL for CLI scripts
if [ ! "${1-}" == "-e" ]; then
# 3wc: upstream ENTRYPOINT
# https://github.com/hackmdio/codimd/blob/develop/deployments/Dockerfile
/home/hackmd/app/docker-entrypoint.sh
# 3wc: upstream ENTRYPOINT
# https://github.com/hedgedoc/container/blob/master/alpine/Dockerfile
mkdir -p "/hedgedoc/.npm" && chown -R 10000:65534 "/hedgedoc/.npm"
/usr/local/bin/docker-entrypoint.sh npm start
fi
set +eu
+7
View File
@@ -0,0 +1,7 @@
WARNING WARNING WARNING 🚨
This release includes a major Postgres database upgrade, but does not yet include tools to automatically upgrade from older Postgres releases.
PLEASE DO NOT UPGRADE EXISTING INSTANCES TO THIS VERSION.
This should be fixed soon.