commit ead10cd9bba20970637a68a0a95c201dd0bba9f6 Author: Direction Date: Fri Aug 14 17:01:37 2026 -0500 Blank canvas diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..8139990 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,39 @@ +--- +kind: pipeline +name: deploy to swarm-test.autonomic.zone +steps: + - name: deployment + image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest + settings: + host: swarm-test.autonomic.zone + stack: example_com # UPDATE ME + generate_secrets: true + purge: true + deploy_key: + from_secret: drone_ssh_swarm_test + networks: + - proxy + environment: + DOMAIN: example.swarm-test.autonomic.zone # UPDATE ME + STACK_NAME: example_com # UPDATE ME + LETS_ENCRYPT_ENV: staging + # Also set any config versions from abra.sh +trigger: + branch: + - main +--- +kind: pipeline +name: generate recipe catalogue +steps: + - name: release a new version + image: plugins/downstream + settings: + server: https://build.coopcloud.tech + token: + from_secret: drone_abra-bot_token + fork: true + repositories: + - toolshed/auto-recipes-catalogue-json + +trigger: + event: tag diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000..16b0f7b --- /dev/null +++ b/.env.sample @@ -0,0 +1,9 @@ +TYPE=openproject + +DOMAIN=openproject.example.com + +## Domain aliases +#EXTRA_DOMAINS=', `www.openproject.example.com`' + +LETS_ENCRYPT_ENV=production +SECRET_KEY_BASE=changeme diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7a6353d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.envrc diff --git a/README.md b/README.md new file mode 100644 index 0000000..be6e088 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# openproject + +> One line description of the recipe + + + +* **Category**: Apps +* **Status**: 0 +* **Image**: [`openproject`](https://hub.docker.com/r/openproject), 4, upstream +* **Healthcheck**: No +* **Backups**: No +* **Email**: No +* **Tests**: No +* **SSO**: No + + + +## Quick start + +* `abra app new openproject --secrets` +* `abra app config ` +* `abra app deploy ` + +For more, see [`docs.coopcloud.tech`](https://docs.coopcloud.tech). diff --git a/abra.sh b/abra.sh new file mode 100755 index 0000000..13b5452 --- /dev/null +++ b/abra.sh @@ -0,0 +1,2 @@ +# Set any config versions here +# Docs: https://docs.coopcloud.tech/maintainers/handbook/#manage-configs diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..4db0ee4 --- /dev/null +++ b/compose.yml @@ -0,0 +1,144 @@ +networks: + proxy: + external: true + backend: + +volumes: + pgdata: + opdata: + +x-op-image: &image + image: openproject/openproject:17-slim +x-op-app: &app + <<: [*image] + environment: + OPENPROJECT_HTTPS: "false" + OPENPROJECT_HOST__NAME: "${DOMAIN}" + OPENPROJECT_ADDITIONAL__HOST__NAMES: '["127.0.0.1:8080", "app", "localhost:8080"]' # to allow access from hocuspocus directly + OPENPROJECT_HSTS: "${OPENPROJECT_HSTS:-true}" + OPENPROJECT_RAILS__CACHE__STORE: "memcache" + OPENPROJECT_LOG__LEVEL: "debug" + OPENPROJECT_CACHE__MEMCACHE__SERVER: "cache:11211" + OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}" + OPENPROJECT_COLLABORATIVE__EDITING__HOCUSPOCUS__URL: "${COLLABORATIVE_SERVER_URL:-wss://${OPENPROJECT_HOST__NAME}/hocuspocus}" + OPENPROJECT_COLLABORATIVE__EDITING__HOCUSPOCUS__SECRET: "${COLLABORATIVE_SERVER_SECRET:-OVERRIDE_ME_PLEASE}" + DATABASE_URL: "${DATABASE_URL:-postgres://postgres:p4ssw0rd@db/openproject?pool=20&encoding=unicode&reconnect=true}" + RAILS_MIN_THREADS: ${RAILS_MIN_THREADS:-4} + RAILS_MAX_THREADS: ${RAILS_MAX_THREADS:-16} + # set to true to enable the email receiving feature. See ./docker/cron for more options + IMAP_ENABLED: "${IMAP_ENABLED:-false}" + SECRET_KEY_BASE: "${SECRET_KEY_BASE:-OVERWRITE_ME}" + volumes: + - "opdata:/var/openproject/assets" + +services: + db: + # The default here should really be 17 but is still 13 as to not break existing setups. + # New installations using the provided .env.example will use 17 to begin with. + # The default here will change to 17 as well with the next major update (18). + # + # Refer to the docs on how to upgrade to postgres 17 before then: + # https://www.openproject.org/docs/installation-and-operations/misc/migration-to-postgresql17/ + image: postgres:17 + stop_grace_period: "3s" + volumes: + - "pgdata:/var/lib/postgresql/data" + environment: + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-p4ssw0rd} + POSTGRES_DB: openproject + networks: + - backend + + cache: + image: memcached + networks: + - backend + + #proxy: + #build: + #context: ./proxy + #args: + #APP_HOST: web + #image: openproject/proxy + #<<: *restart_policy + #ports: + #- "${PORT:-8080}:80" + #depends_on: + #- web + # networks: + # - frontend + + app: + <<: *app + command: "./docker/prod/web" + networks: + - proxy + - backend + depends_on: + - db + - cache + - seeder + deploy: + labels: + - "traefik.enable=true" + - "traefik.docker.network=proxy" + - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=8080" + - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})" + - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" + - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" + - "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}.version=0.1.0+4.3.1" + #- autoheal=true +# healthcheck: +# test: ["CMD", "curl", "-f", "http://localhost:8080${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}/health_checks/default"] +# interval: 10s +# timeout: 3s +# retries: 3 +# start_period: 30s + + # autoheal: + #image: willfarrell/autoheal:1.2.0 + #volumes: + #- "/var/run/docker.sock:/var/run/docker.sock" + #environment: + #AUTOHEAL_CONTAINER_LABEL: autoheal + #AUTOHEAL_START_PERIOD: 600 + #AUTOHEAL_INTERVAL: 30 + + worker: + <<: *app + command: "./docker/prod/worker" + networks: + - backend + depends_on: + - db + - cache + - seeder + + cron: + <<: *app + command: "./docker/prod/cron" + networks: + - backend + depends_on: + - db + - cache + - seeder + + seeder: + <<: *app + command: "./docker/prod/seeder" + networks: + - backend + + hocuspocus: + image: openproject/hocuspocus:17.7.2 + environment: + SECRET: ${COLLABORATIVE_SERVER_SECRET:-OVERRIDE_ME_PLEASE} + OPENPROJECT_URL: "${OPENPROJECT_URL:-http://web:8080}" + OPENPROJECT_HTTPS: "${OPENPROJECT_HTTPS:-true}" + networks: + - backend + - proxy diff --git a/release/.git-keep-me b/release/.git-keep-me new file mode 100644 index 0000000..e69de29