Compare commits

...

25 Commits

Author SHA1 Message Date
cf54575187 restricts ownership changes to files still owned by root (e.g., from the image build). On subsequent restarts, files already owned by www-data are skipped entirely, avoiding a full recursive write cycle.
Some checks failed
continuous-integration/drone/pr Build is failing
2026-06-02 16:24:48 +01:00
b4db12f09c Added ignores for .env, *.log, .DS_Store, Thumbs.db, and common editor/IDE files
Some checks failed
continuous-integration/drone/pr Build is failing
2026-06-02 16:23:11 +01:00
e4b87c8ab9 chown entire wp-content to ensure correct permissions
Some checks failed
continuous-integration/drone/pr Build is failing
2026-06-02 16:11:39 +01:00
7e170adbb4 Merge pull request 'Added xtra chown to ensure correct perms on every container start' (#57) from kawaiipunk/wordpress:main into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #57
2026-05-26 17:10:01 +00:00
66e0687456 Removed redundant chown
Some checks failed
continuous-integration/drone/pr Build is failing
2026-05-26 17:05:24 +01:00
9209f007cb revert 69cf451b98
Some checks failed
continuous-integration/drone/push Build is failing
revert Merge pull request 'chore(deps): update wordpress docker tag to v7' (#55) from renovate/wordpress-7.x into main

Reviewed-on: #55

Sorry this was done by mistake!
2026-05-26 14:08:49 +00:00
69cf451b98 Merge pull request 'chore(deps): update wordpress docker tag to v7' (#55) from renovate/wordpress-7.x into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #55
2026-05-26 13:59:35 +00:00
73a2e98d2e Added xtra chown to ensure correct perms on every container start
Some checks failed
continuous-integration/drone/pr Build is failing
2026-05-26 14:10:22 +01:00
0e229168fc chore(deps): update wordpress docker tag to v7
Some checks failed
continuous-integration/drone/pr Build is failing
2026-05-22 00:34:30 +00:00
332ab0b97d chore: publish 2.19.2+6.9.4 release
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2026-04-28 02:25:26 +02:00
3b598e82dd harden htaccess 2026-04-28 01:57:52 +02:00
8e81f3f81c selfmanaged wordpress 2026-04-28 01:54:50 +02:00
a09bd166ad chore: publish 2.19.1+6.9.4 release
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2026-03-17 17:11:56 +01:00
b4c5d04382 chore: replace depricated traefik.docker.* with traefik.swarm.* 2026-03-17 17:11:07 +01:00
3c013d39fd chore: publish 2.19.0+6.9.4 release
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2026-03-17 16:11:37 +01:00
285bc01bef Merge pull request 'chore(config): migrate Renovate config' (#52) from renovate/migrate-config into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #52
2026-03-10 19:34:45 +00:00
2ca12bff9c chore(config): migrate config renovate.json
Some checks failed
continuous-integration/drone/pr Build is failing
2026-03-10 19:33:29 +00:00
da2e62b618 chore: publish 2.18.0+6.9.1 release
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2026-03-07 09:39:38 +01:00
364b5c8b8a chore: update image tags 2026-03-07 09:39:16 +01:00
306b348961 chore: publish 2.17.1+6.9.0 release
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is passing
2026-02-16 10:58:29 +01:00
3c1121b7ce remove default TIMEOUT (abra #596)
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-30 14:02:39 +01:00
3wc
b0eb1756a3 chore: publish 2.17.0+6.9.0 release
Some checks failed
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is failing
2025-12-07 17:27:49 -05:00
97b9b99e93 chore: publish 2.16.2+6.8.3 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-10-15 11:30:23 -04:00
cf2a5077c9 chore: publish 2.16.1+6.8.1 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-07-01 19:16:41 +02:00
74282d5658 chore: publish 2.16.0+6.8.1 release
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-05-27 17:17:23 +02:00
12 changed files with 109 additions and 14 deletions

View File

@ -1,5 +1,5 @@
TYPE=wordpress
TIMEOUT=300
#TIMEOUT=300
ENABLE_AUTO_UPDATE=true
COMPOSE_FILE="compose.yml"
ENABLE_BACKUPS=true
@ -28,6 +28,9 @@ LETS_ENCRYPT_ENV=production
# PHP composer for plugin installation
#COMPOSE_FILE="$COMPOSE_FILE:compose.composer.yml"
# Self managed Wordpress for automatic updates
#COMPOSE_FILE="$COMPOSE_FILE:compose.selfmanaged.yml"
#WORDPRESS_DEBUG=true
## Additional extensions
@ -69,6 +72,10 @@ SECRET_DB_PASSWORD_VERSION=v1
#SECRET_AUTHENTIK_ID_VERSION=v1
#LOGIN_TYPE='auto'
# Matrix .well-known redirect
#COMPOSE_FILE="$COMPOSE_FILE:compose.matrix.yml"
#MATRIX_DOMAIN=matrix.example.com
# Allow remote connections to db
# 🚩🚩 dangerous, use only for development sites!
#COMPOSE_FILE="$COMPOSE_FILE:compose.public-db.yml
@ -77,7 +84,6 @@ SECRET_DB_PASSWORD_VERSION=v1
# 🚩🚩 dangerous, use only for development sites!
#CORS_ALLOW_ALL=1
# FTP
#COMPOSE_FILE="$COMPOSE_FILE:compose.ftp.yml"
#SECRET_FTP_PASS_VERSION=v1

21
.gitignore vendored
View File

@ -1 +1,22 @@
# direnv
/.envrc
# Environment files (may contain secrets)
.env
# Logs
*.log
# OS metadata
.DS_Store
Thumbs.db
# Editor/IDE
*.swp
*.swo
*~
*.bak
.idea/
.vscode/
.project
.classpath

23
abra.sh
View File

@ -1,8 +1,8 @@
export PHP_UPLOADS_CONF_VERSION=v4
export ENTRYPOINT_CONF_VERSION=v7
export ENTRYPOINT_CONF_VERSION=v8
export ENTRYPOINT_MAILRELAY_CONF_VERSION=v2
export MSMTP_CONF_VERSION=v4
export HTACCESS_CONF_VERSION=v2
export HTACCESS_CONF_VERSION=v3
export USERS_CONF_VERSION=v1
wp() {
@ -31,8 +31,6 @@ core_install(){
wp "language core install $LOCALE"
wp "site switch-language $LOCALE"
wp "rewrite structure '/%year%/%monthnum%/%day%/%postname%/'"
wp "plugin install --activate disable-update-notifications"
wp "option update disable_notification_setting --format=json '{\"dpun_setting\":false,\"dwtu_setting\":false,\"dwcun_setting\":true}'"
if [ -n "$DEFAULT_USER_ROLE" ]
then
wp "option set default_role $DEFAULT_USER_ROLE"
@ -40,7 +38,20 @@ core_install(){
wp "option set default_role subscriber"
fi
wp "theme auto-updates enable --all"
wp 'plugin auto-updates enable --all' || exit 0
wp 'plugin auto-updates enable --all' || true
}
enable_auto_updates(){
wp "plugin deactivate disable-update-notifications --allow-root"
wp "plugin uninstall disable-update-notifications --allow-root"
wp "option delete disable_notification_setting --allow-root"
wp "plugin auto-updates enable --all --allow-root"
wp "theme auto-updates enable --all --allow-root"
}
disable_auto_updates(){
wp "plugin install --activate disable-update-notifications"
wp "option update disable_notification_setting --format=json '{\"dpun_setting\":false,\"dwtu_setting\":false,\"dwcun_setting\":true}'"
}
set_authentik(){
@ -63,6 +74,8 @@ set_authentik(){
\"endpoint_userinfo\":\"https://$AUTHENTIK_DOMAIN/application/o/userinfo/\",
\"endpoint_token\":\"https://$AUTHENTIK_DOMAIN/application/o/token/\",
\"endpoint_end_session\":\"https://$AUTHENTIK_DOMAIN/application/o/wordpress/end-session/\",
\"endpoint_jwks\":\"https://$AUTHENTIK_DOMAIN/application/o/wordpress/jwks/\",
\"issuer\":\"https://$AUTHENTIK_DOMAIN/application/o/wordpress/\",
\"acr_values\":\"\",
\"identity_key\":\"preferred_username\",
\"no_sslverify\":\"0\",

View File

@ -10,3 +10,7 @@ authentik:
shared_secrets:
wordpress_secret: authentik_secret
wordpress_id: authentik_id
matrix:
uncomment:
- compose.matrix.yml
- MATRIX_DOMAIN

View File

@ -3,7 +3,7 @@ version: "3.8"
services:
ftp:
image: atmoz/sftp
image: atmoz/sftp:alpine
secrets:
- ftp_pass
volumes:

10
compose.matrix.yml Normal file
View File

@ -0,0 +1,10 @@
---
version: "3.8"
services:
app:
deploy:
labels:
- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect-matrix-well-known"
- "traefik.http.middlewares.${STACK_NAME}-redirect-matrix-well-known.redirectregex.regex=^https://(.*)/.well-known/matrix/(.*)"
- "traefik.http.middlewares.${STACK_NAME}-redirect-matrix-well-known.redirectregex.replacement=https://${MATRIX_DOMAIN}/.well-known/matrix/$$2"

21
compose.selfmanaged.yml Normal file
View File

@ -0,0 +1,21 @@
---
version: "3.8"
services:
app:
image: "wordpress:latest"
volumes:
- "wordpress:/var/www/html/"
environment:
WORDPRESS_CONFIG_EXTRA: |
define( 'AUTOMATIC_UPDATER_DISABLED', false );
define( 'WP_AUTO_UPDATE_CORE', true );
define( 'FS_METHOD', 'direct' );
${WORDPRESS_CONFIG_EXTRA}
ftp:
volumes:
- "wordpress:/home/ftp_user/"
volumes:
wordpress:

View File

@ -3,7 +3,7 @@ version: "3.8"
services:
app:
image: "wordpress:6.8.0"
image: "wordpress:6.9.4"
volumes:
- "wordpress_content:/var/www/html/wp-content/"
networks:
@ -48,7 +48,7 @@ services:
order: start-first
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.swarm.network=proxy"
- "traefik.http.routers.${STACK_NAME}.tls=true"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
@ -61,11 +61,11 @@ services:
- "traefik.http.middlewares.${STACK_NAME}-redirect.redirectregex.regex=^https://(${REDIRECTS})/(.*)"
- "traefik.http.middlewares.${STACK_NAME}-redirect.redirectregex.replacement=https://${DOMAIN}/$${2}"
- "traefik.http.middlewares.${STACK_NAME}-redirect.redirectregex.permanent=true"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
- "coop-cloud.${STACK_NAME}.version=2.15.0+6.8.0"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT}"
- "coop-cloud.${STACK_NAME}.version=2.19.2+6.9.4"
db:
image: "mariadb:11.7"
image: "mariadb:12.2"
volumes:
- "mariadb:/var/lib/mysql"
networks:

View File

@ -42,6 +42,20 @@ define('FORCE_SSL_ADMIN', true );
define('COOKIE_DOMAIN', \$_SERVER['HTTP_HOST']);"
{{ end }}
UPLOADS_HTACCESS=/var/www/html/wp-content/uploads/.htaccess
if [ ! -f "$UPLOADS_HTACCESS" ]; then
mkdir -p /var/www/html/wp-content/uploads
cat > "$UPLOADS_HTACCESS" <<'EOF'
# Prevent PHP execution in uploads directory
<FilesMatch "\.(?i:php|phtml|phar)$">
Require all denied
</FilesMatch>
EOF
fi
chown -R --from=root:root www-data:www-data /var/www/html/wp-content/
if [ -n "$@" ]; then
"$@"
fi

View File

@ -1,3 +1,8 @@
# Protect sensitive files from direct access
<FilesMatch "^(wp-config\.php|\.htaccess|\.htpasswd|readme\.html|license\.txt)$">
Require all denied
</FilesMatch>
{{ if eq (env "MULTISITE") "" -}}
# BEGIN WordPress

1
release/2.17.1+6.9.0 Normal file
View File

@ -0,0 +1 @@
Breaking change for openid plugin: The issuer must be provided, thus the set_authentik function now includes issuer and endpoint_jwks.

View File

@ -1,6 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
"config:recommended"
]
}