26 Commits

Author SHA1 Message Date
f85e0d6b8e chore: publish 0.3.0+5.82.0-wordpress-php8.1 release 2025-06-18 17:07:46 -04:00
95b028d083 configure openid connect plugin to link existing users by default 2025-06-18 16:55:44 -04:00
a2d725f437 chore: publish 0.2.1+5.82.0-wordpress-php8.1 release 2025-06-11 16:01:10 -04:00
d31244bdd6 Fix regression where not using OpenID would cause the recipe to fail to deploy 2025-06-04 19:15:05 -04:00
bc05150011 chore: publish 0.2.0+5.82.0-wordpress-php8.1 release 2025-05-23 15:51:03 -04:00
58115d9628 Merge pull request 'authentik-support' (#3) from authentik-support into main
Reviewed-on: coop-cloud/civicrm-wordpress#3
Reviewed-by: yksflip <flip@yksflip.de>
2025-05-09 20:31:54 +00:00
603b233823 add authentik secret insert to readme 2025-04-09 16:52:17 -04:00
4ef2ddd223 update readme with authentik integration guide 2025-04-09 16:48:43 -04:00
ddd833b908 work on adding authentik support 2025-04-02 01:52:13 -04:00
35767ce472 chore: publish 0.1.3+5.82.0-wordpress-php8.1 release 2025-02-12 18:01:50 -05:00
e7fbeb6e85 Updated civicrm version 2025-02-12 17:02:34 -05:00
8c137e2c24 Use locale for civicrm as well as wordpress 2025-02-12 16:11:06 -05:00
e5e8f73dd8 Locale release 2025-02-12 15:55:37 -05:00
f0b30e7619 parameterize locale 2025-02-12 14:37:11 -05:00
e1d8880223 fix readme 2025-01-15 17:08:47 -05:00
62866bc869 chore: publish 0.1.2+5.80.0-wordpress-php8.1 release 2025-01-15 16:47:57 -05:00
3af0808350 update readme and recipe version number 2025-01-15 16:40:42 -05:00
89561a5543 Merge pull request 'Added wordpress admin email to env file so SMTP_USER doesn't have to be an email. Also added wordpress admin password secret so this can be defined at deploy time.' (#2) from virtualboys/civicrm-wordpress:image_version_update into main
Reviewed-on: coop-cloud/civicrm-wordpress#2
Reviewed-by: marlon <marlon@riseup.net>
2025-01-15 21:32:52 +00:00
f4186699b2 Added wordpress admin email to env file so SMTP_USER doesn't have to be an email. Also added wordpress admin password secret so this can be defined at deploy time. 2025-01-08 20:53:50 -05:00
8fc484a5b2 Merge pull request 'Updated civicrm image version and replaced default network with internal' (#1) from virtualboys/civicrm-wordpress:image_version_update into main
Reviewed-on: coop-cloud/civicrm-wordpress#1
2025-01-08 22:23:52 +00:00
43e8243a8e Updated civicrm image version and replaced default network with internal 2024-12-18 14:20:45 -05:00
95903d25f4 chore: publish 0.1.1+5.59.4-wordpress-php8.1 release 2023-04-03 10:24:07 +02:00
715a96a376 fix recipe type 2023-03-31 11:42:39 +02:00
c84df17fe0 fix drone 2023-03-31 11:35:28 +02:00
b4491ebe20 fix drone 2023-03-31 11:32:10 +02:00
f09f8f6ab0 add drone 2023-03-31 11:27:10 +02:00
12 changed files with 173 additions and 39 deletions

View File

@ -6,33 +6,27 @@ steps:
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
settings: settings:
host: swarm-test.autonomic.zone host: swarm-test.autonomic.zone
stack: {{ .Name }} stack: civicrm-wordpress
generate_secrets: true generate_secrets: true
purge: true purge: true
deploy_key: deploy_key:
from_secret: drone_ssh_swarm_test from_secret: drone_ssh_swarm_test
networks: networks:
- proxy proxy
environment: environment:
DOMAIN: {{ .Name }}.swarm-test.autonomic.zone DOMAIN: civicrm-wordpress.swarm-test.autonomic.zone
STACK_NAME: {{ .Name }} STACK_NAME: civicrm-wordpress
LETS_ENCRYPT_ENV: production LETS_ENCRYPT_ENV: production
EXTRA_VOLUME: "/dev/null:/tmp/.dummy"
APACHE_SITES_AVAILABLE_CONF_VERSION: v1
CIVICRM_SETTINGS_PHP_VERSION: v1
ENTRYPOINT_VERSION: v1
SECRET_DB_PASSWORD_VERSION: v1
SECRET_DB_ROOT_PASSWORD_VERSION: v1
SECRET_CIVICRM_SITE_KEY_VERSION: 'v1'
SECRET_CIVICRM_CRED_KEY_VERSION: 'v1'
SECRET_CIVICRM_SIGN_KEY_VERSION: 'v1'
CIVICRM_COMPONENTS: 'CiviEvent,CiviContribute,CiviMember,CiviMail,CiviReport'
trigger: trigger:
branch: branch:
- main - 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:
- coop-cloud/auto-recipes-catalogue-json
trigger:
event: tag

View File

@ -1,6 +1,6 @@
TYPE=civicrm TYPE=civicrm-wordpress
DOMAIN=civicrm.example.com DOMAIN=civicrm-wordpress.example.com
## Domain aliases ## Domain aliases
#EXTRA_DOMAINS=', `www.civicrm.example.com`' #EXTRA_DOMAINS=', `www.civicrm.example.com`'
@ -10,12 +10,14 @@ LETS_ENCRYPT_ENV=production
PROJECT_NAME=example PROJECT_NAME=example
CIVICRM_COMPONENTS=CiviEvent,CiviContribute,CiviMember,CiviMail,CiviReport CIVICRM_COMPONENTS=CiviEvent,CiviContribute,CiviMember,CiviMail,CiviReport
# CIVICRM_EXTENSIONS=shoreditch mosaico # CIVICRM_EXTENSIONS=mosaico
CIVICRM_DB_NAME=civicrm CIVICRM_DB_NAME=civicrm
CIVICRM_DB_USER=civicrm CIVICRM_DB_USER=civicrm
CIVICRM_DB_HOST=mysql CIVICRM_DB_HOST=mysql
CIVICRM_DB_PORT=3306 CIVICRM_DB_PORT=3306
WORDPRESS_LOCALE=en_US
WORDPRESS_ADMIN_EMAIL=
WORDPRESS_DB_NAME=wordpress WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wordpress WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_HOST=mysql WORDPRESS_DB_HOST=mysql
@ -34,3 +36,21 @@ SECRET_DB_ROOT_PASSWORD_VERSION=v1
SECRET_CIVICRM_SITE_KEY_VERSION=v1 # length=16 SECRET_CIVICRM_SITE_KEY_VERSION=v1 # length=16
SECRET_CIVICRM_CRED_KEY_VERSION=v1 # length=43 SECRET_CIVICRM_CRED_KEY_VERSION=v1 # length=43
SECRET_CIVICRM_SIGN_KEY_VERSION=v1 # length=43 SECRET_CIVICRM_SIGN_KEY_VERSION=v1 # length=43
SECRET_WORDPRESS_ADMIN_PASSWORD_VERSION=v1
## -- OpenId Connect --
#COMPOSE_FILE="compose.yml:compose.openidconnect.yml"
#OPEN_ID_CLIENT_ID=
#SECRET_OPEN_ID_CLIENT_SECRET_VERSION=v1
# If you are using authentik, just set this
#AUTHENTIK_DOMAIN=authentik.company
# Otherwise, you must set all of these
#OPEN_ID_PROVIDER_LOGIN_URL=https://authentik.company/application/o/authorize/
#OPEN_ID_USERINFO_URL=https://authentik.company/application/o/userinfo/
#OPEN_ID_TOKEN_ENDPOINT_URL=https://authentik.company/application/o/token/
#OPEN_ID_END_SESSION_URL=https://authentik.company/application/o/wordpress/end-session/
## -- OpenId Connect --

View File

@ -1,6 +1,6 @@
# civicrm # civicrm
> One line description of the recipe > CiviCRM Wordpress
<!-- metadata --> <!-- metadata -->
@ -16,9 +16,24 @@
<!-- endmetadata --> <!-- endmetadata -->
## Quick start ## Quick start
* `abra app new civicrm-wordpress`
* `abra app new civicrm --secrets`
* `abra app config <app-name>` * `abra app config <app-name>`
Authentik integration:
* When configuring, uncomment `COMPOSE_FILE`, `OPEN_ID_CLIENT_ID`, `SECRET_OPEN_ID_CLIENT_SECRET_VERSION`, and `AUTHENTIK_DOMAIN`
* To configure your Authentik deployment, follow the guide at [`docs.goauthentik.io/integrations/services/wordpress`](https://docs.goauthentik.io/integrations/services/wordpress/).
* NOTE: at the time of writing the Authentik integration guide incorrectly says to set the redirect URI to `https://wp.company/admin-ajax.php?action=openid-connect-authorize` when it should be `https://wp.company/wp-admin/admin-ajax.php?action=openid-connect-authorize`
* If using a different OpenID provider, leave `AUTHENTIK_DOMAIN` commented and uncomment the other OpenID configuration options
Insert secrets:
* `abra app secret i <app-name> wordpress_admin_password v1 '<temp account password>'`
* `abra app secret i <app-name> smtp_password v1 '<smtp password>'`
* (Authentik) `abra app secret i <app-name> openid_client_secret v1 <openid client secret>`
Generate secrets (be sure to save them):
* `abra app secret g -a <app-name>`
Deploy app:
* `abra app deploy <app-name>` * `abra app deploy <app-name>`
For more, see [`docs.coopcloud.tech`](https://docs.coopcloud.tech). For more, see [`docs.coopcloud.tech`](https://docs.coopcloud.tech).
@ -26,11 +41,11 @@ For more, see [`docs.coopcloud.tech`](https://docs.coopcloud.tech).
### Install extensions ### Install extensions
set them in the env config and run: `abra app cmd civi.dev.local-it.cloud app install_extensions` set them in the env config and run: `abra app cmd civi.example.org app install_extensions`
to install unoffical extension run smth like: to install unoffical extension run smth like:
``` ```
abra app cmd civi.dev.local-it.cloud app install_custom_extension shoreditch https://github.com/civicrm/org.civicrm.shoreditch abra app cmd civi.example.org app install_custom_extension shoreditch https://github.com/civicrm/org.civicrm.shoreditch
abra app cmd civi.dev.local-it.cloud app install_custom_extension shoreditchwpworkarounds https://lab.civicrm.org/extensions/shoreditchwpworkarounds.git abra app cmd civi.example.org app install_custom_extension shoreditchwpworkarounds https://lab.civicrm.org/extensions/shoreditchwpworkarounds.git
``` ```

View File

@ -31,6 +31,7 @@ file_env "SMTP_PASSWORD"
export APACHE_SITES_AVAILABLE_CONF_VERSION=v1 export APACHE_SITES_AVAILABLE_CONF_VERSION=v1
export CIVICRM_SETTINGS_PHP_VERSION=v1 export CIVICRM_SETTINGS_PHP_VERSION=v1
export ENTRYPOINT_VERSION=v1 export ENTRYPOINT_VERSION=v1
export OPENID_SETTINGS_VERSION=v1
change_password(){ change_password(){
echo "Changing password for $1" echo "Changing password for $1"

14
compose.openidconnect.yml Normal file
View File

@ -0,0 +1,14 @@
---
version: "3.8"
services:
app:
environment:
- OPEN_ID_CLIENT_SECRET_FILE=/run/secrets/openid_client_secret
secrets:
- openid_client_secret
secrets:
openid_client_secret:
external: true
name: ${STACK_NAME}_openid_client_secret_${SECRET_OPEN_ID_CLIENT_SECRET_VERSION}

View File

@ -3,7 +3,7 @@ version: "3.8"
services: services:
app: app:
image: michaelmcandrew/civicrm:5.59.4-wordpress-php8.1 image: michaelmcandrew/civicrm:5.82.0-wordpress-php8.1
hostname: civicrm hostname: civicrm
environment: environment:
- PROJECT_NAME - PROJECT_NAME
@ -24,16 +24,18 @@ services:
- SMTP_PORT - SMTP_PORT
- SMTP_USER - SMTP_USER
- SMTP_PASSWORD_FILE=/run/secrets/smtp_password - SMTP_PASSWORD_FILE=/run/secrets/smtp_password
- WORDPRESS_ADMIN_PASSWORD_FILE=/run/secrets/wordpress_admin_password
secrets: secrets:
- db_password - db_password
- civicrm_site_key - civicrm_site_key
- civicrm_cred_key - civicrm_cred_key
- civicrm_sign_key - civicrm_sign_key
- smtp_password - smtp_password
- wordpress_admin_password
volumes: volumes:
- data:/var/www/html/wp-content/uploads - data:/var/www/html/wp-content/uploads
networks: networks:
- default - internal
- proxy - proxy
configs: configs:
- source: apache-sites-available-conf - source: apache-sites-available-conf
@ -43,6 +45,8 @@ services:
mode: 555 mode: 555
- source: civicrm-settings-php - source: civicrm-settings-php
target: /usr/local/etc/civicrm/civicrm.settings.php target: /usr/local/etc/civicrm/civicrm.settings.php
- source: openid-settings
target: /usr/local/etc/civicrm/openid_settings.json
entrypoint: /usr/local/bin/entrypoint.sh entrypoint: /usr/local/bin/entrypoint.sh
deploy: deploy:
restart_policy: restart_policy:
@ -57,7 +61,7 @@ services:
#- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect" #- "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.SSLForceHost=true"
#- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}"
- "coop-cloud.${STACK_NAME}.version=0.1.0+5.59.4-wordpress-php8.1" - "coop-cloud.${STACK_NAME}.version=0.3.0+5.82.0-wordpress-php8.1"
- "backupbot.backup=true" - "backupbot.backup=true"
- "backupbot.backup.path=/var/www/html/wp-content/uploads" - "backupbot.backup.path=/var/www/html/wp-content/uploads"
healthcheck: healthcheck:
@ -90,6 +94,8 @@ services:
timeout: 10s timeout: 10s
retries: 10 retries: 10
start_period: 1m start_period: 1m
networks:
- internal
deploy: deploy:
restart_policy: restart_policy:
condition: on-failure condition: on-failure
@ -114,6 +120,7 @@ services:
networks: networks:
proxy: proxy:
external: true external: true
internal:
volumes: volumes:
mariadb: mariadb:
@ -134,6 +141,10 @@ configs:
name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION} name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION}
file: entrypoint.sh file: entrypoint.sh
template_driver: golang template_driver: golang
openid-settings:
name: ${STACK_NAME}_openid_settings_${OPENID_SETTINGS_VERSION}
file: openid_settings.json
template_driver: golang
secrets: secrets:
db_root_password: db_root_password:
@ -154,3 +165,6 @@ secrets:
civicrm_sign_key: civicrm_sign_key:
external: true external: true
name: ${STACK_NAME}_civicrm_sign_key_${SECRET_CIVICRM_SIGN_KEY_VERSION} name: ${STACK_NAME}_civicrm_sign_key_${SECRET_CIVICRM_SIGN_KEY_VERSION}
wordpress_admin_password:
external: true
name: ${STACK_NAME}_wordpress_admin_password_${SECRET_WORDPRESS_ADMIN_PASSWORD_VERSION}

View File

@ -28,6 +28,8 @@ file_env "CIVICRM_DB_PASS"
file_env "CIVICRM_SITE_KEY" file_env "CIVICRM_SITE_KEY"
file_env "CIVICRM_CRED_KEYS" file_env "CIVICRM_CRED_KEYS"
file_env "SMTP_PASSWORD" file_env "SMTP_PASSWORD"
file_env "WORDPRESS_ADMIN_PASSWORD"
file_env "OPEN_ID_CLIENT_SECRET"
if [[ "${1-default}" == "cron" ]]; then if [[ "${1-default}" == "cron" ]]; then
echo "============ Running cron job ============" echo "============ Running cron job ============"
@ -36,7 +38,7 @@ if [[ "${1-default}" == "cron" ]]; then
exit $? exit $?
fi fi
until mysql -e '\q' -h db -p"${WORDPRESS_DB_PASS}" && mysql -e '\q' -h "${CIVICRM_DB_HOST}" -p"${CIVICRM_DB_PASS}"; do until mysql -e '\q' -h"${WORDPRESS_DB_HOST}" -u"${WORDPRESS_DB_USER}" -p"${WORDPRESS_DB_PASS}" && mysql -e '\q' -h"${CIVICRM_DB_HOST}" -u"${CIVICRM_DB_USER}" -p"${CIVICRM_DB_PASS}"; do
echo "============ Waiting for db container to come up============" echo "============ Waiting for db container to come up============"
sleep 2 sleep 2
done; done;
@ -49,9 +51,9 @@ if su civicrm -c "wp core is-installed"; then
echo "============ Wordpress already installed ============" echo "============ Wordpress already installed ============"
else else
echo "============ Installing Wordpress ============" echo "============ Installing Wordpress ============"
su civicrm -c "wp core install --locale=de_DE --url=$BASE_URL --title=$PROJECT_NAME --admin_user=admin --admin_email=$SMTP_USER" su civicrm -c "wp core install --locale=$WORDPRESS_LOCALE --url=$BASE_URL --title=$PROJECT_NAME --admin_user=admin --admin_email=$WORDPRESS_ADMIN_EMAIL --admin_password='$WORDPRESS_ADMIN_PASSWORD'"
su civicrm -c "wp language core install de_DE" su civicrm -c "wp language core install $WORDPRESS_LOCALE"
su civicrm -c "wp language core activate de_DE" su civicrm -c "wp language core activate $WORDPRESS_LOCALE"
fi fi
# Setup Civicrm L10n # Setup Civicrm L10n
@ -73,7 +75,7 @@ pushd /var/www/html/wp-content/uploads/civicrm/
touch is_installed touch is_installed
rm -rf civicrm.settings.php rm -rf civicrm.settings.php
su civicrm -c "wp plugin activate civicrm" su civicrm -c "wp plugin activate civicrm"
su civicrm -c "cv core:install -vv --keep --db=mysql://$CIVICRM_DB_USER:$CIVICRM_DB_PASS@$CIVICRM_DB_HOST:$CIVICRM_DB_PORT/$CIVICRM_DB_NAME --lang de_DE --comp $CIVICRM_COMPONENTS" su civicrm -c "cv core:install -vv --keep --db=mysql://$CIVICRM_DB_USER:$CIVICRM_DB_PASS@$CIVICRM_DB_HOST:$CIVICRM_DB_PORT/$CIVICRM_DB_NAME --lang $WORDPRESS_LOCALE --comp $CIVICRM_COMPONENTS"
mv civicrm.settings.php civicrm.settings.php.generated mv civicrm.settings.php civicrm.settings.php.generated
cp /usr/local/etc/civicrm/civicrm.settings.php civicrm.settings.php cp /usr/local/etc/civicrm/civicrm.settings.php civicrm.settings.php
chmod a-wx /var/www/html/wp-content/uploads/civicrm/civicrm.settings.php chmod a-wx /var/www/html/wp-content/uploads/civicrm/civicrm.settings.php
@ -87,6 +89,47 @@ pushd /var/www/html/wp-content/uploads/civicrm/
fi fi
popd popd
OPEN_ID_CLIENT_ID="${OPEN_ID_CLIENT_ID:-unused}"
if [ "$OPEN_ID_CLIENT_ID" != "unused" ]; then
# install OpenID Connect Generic plugin
if ! su civicrm -c "wp plugin is-installed daggerhart-openid-connect-generic"; then
echo "============ Running OpenId Connect Install ============"
su civicrm -c "wp plugin install daggerhart-openid-connect-generic --activate"
else
echo "OpenID Connect Generic Plugin already installed"
fi
# if openid connect hasn't been configured, insert default settings
if ! su civicrm -c "wp option get openid_connect_generic_settings"; then
echo "Configuring OpenId Connect Plugin default settings"
su civicrm -c "wp option add openid_connect_generic_settings --format=json < /usr/local/etc/civicrm/openid_settings.json"
else
echo "OpenId Connect Plugin default settings already present"
fi
echo "============ Configuring OpenId Connect ============"
su civicrm -c "wp option patch update openid_connect_generic_settings client_id $OPEN_ID_CLIENT_ID"
su civicrm -c "wp option patch update openid_connect_generic_settings client_secret $OPEN_ID_CLIENT_SECRET"
su civicrm -c "wp option patch update openid_connect_generic_settings link_existing_users 1"
AUTHENTIK_DOMAIN="${AUTHENTIK_DOMAIN:-unused}"
if [ "$AUTHENTIK_DOMAIN" != "unused" ]; then
echo "============ Configuring Authentik ============"
su civicrm -c "wp option patch update openid_connect_generic_settings endpoint_login https://$AUTHENTIK_DOMAIN/application/o/authorize/"
su civicrm -c "wp option patch update openid_connect_generic_settings endpoint_userinfo https://$AUTHENTIK_DOMAIN/application/o/userinfo/"
su civicrm -c "wp option patch update openid_connect_generic_settings endpoint_token https://$AUTHENTIK_DOMAIN/application/o/token/"
su civicrm -c "wp option patch update openid_connect_generic_settings endpoint_end_session https://$AUTHENTIK_DOMAIN/application/o/wordpress/end-session/"
else
echo "============ Configuring Generic OpenId Provider ============"
su civicrm -c "wp option patch update openid_connect_generic_settings endpoint_login $OPEN_ID_PROVIDER_LOGIN_URL"
su civicrm -c "wp option patch update openid_connect_generic_settings endpoint_userinfo $OPEN_ID_USERINFO_URL"
su civicrm -c "wp option patch update openid_connect_generic_settings endpoint_token $OPEN_ID_TOKEN_ENDPOINT_URL"
su civicrm -c "wp option patch update openid_connect_generic_settings endpoint_end_session $OPEN_ID_END_SESSION_URL"
fi
else
echo "not using OpenIdConnect"
fi
echo "============ Setting up cron ============" echo "============ Setting up cron ============"
printenv > /etc/environment printenv > /etc/environment
apt update && apt install -y cron apt update && apt install -y cron

29
openid_settings.json Normal file
View File

@ -0,0 +1,29 @@
{
"login_type":"button",
"client_id":"",
"client_secret":"",
"scope":"email profile openid offline_access",
"endpoint_login":"",
"endpoint_userinfo":"",
"endpoint_token":"",
"endpoint_end_session":"",
"acr_values":"",
"identity_key":"preferred_username",
"no_sslverify":"0",
"http_request_timeout":"5",
"enforce_privacy":"0",
"alternate_redirect_uri":"0",
"nickname_key":"preferred_username",
"email_format":"{email}",
"displayname_format":"",
"identify_with_username":"0",
"state_time_limit":"180",
"token_refresh_enable":"1",
"link_existing_users":"0",
"create_if_does_not_exist":"1",
"redirect_user_back":"0",
"redirect_on_logout":"1",
"enable_logging":"0",
"log_limit":"1000"
}

View File

@ -0,0 +1 @@
Updated CiviCRM and set language to english

View File

@ -0,0 +1 @@
Authentik Support

View File

@ -0,0 +1 @@
Fix bug when not using openid

View File

@ -0,0 +1 @@
openid connect link existing users by default