Compare commits

..

177 Commits

Author SHA1 Message Date
74282d5658 chore: publish 2.16.0+6.8.1 release 2025-05-27 17:17:23 +02:00
ab7716bf1e chore: publish 2.15.0+6.8.0 release 2025-04-23 09:39:59 -07:00
3wc
b0cc5a49a1 chore: publish 2.14.0+6.7.2 release 2025-02-19 12:38:06 -05:00
3cca5d2cf3 Update .drone.yml 2025-01-08 10:09:13 -08:00
f403648cf6 chore: publish 2.13.3+6.7.1 release 2024-12-17 16:42:36 +01:00
83f724a316 add all possible ftp port compose files to .env 2024-12-17 16:40:40 +01:00
e6b9f8117f chore: publish 2.13.2+6.7.1 release 2024-12-17 15:29:21 +01:00
e7aef38d3b remove 2222 default port binding to avoid port conflicts 2024-12-17 15:28:47 +01:00
e08838561d chore: publish 2.13.1+6.7.1 release 2024-12-17 15:21:10 +01:00
04d26a59a9 add possiblitliy to use other sftp ports per compose overwrite 2024-12-17 15:16:42 +01:00
591019112e chore: publish 2.13.0+6.7.1 release 2024-12-10 19:23:34 +01:00
76e9b80fbd fix uploads.ini templating 2024-12-10 19:23:34 +01:00
f49fa05ded add some more wordpress options for file uploads (#44)
Co-authored-by: Steven Sting
Reviewed-on: coop-cloud/wordpress#44
Reviewed-by: decentral1se <decentral1se@noreply.git.coopcloud.tech>
2024-12-09 14:59:57 +00:00
716e6df3cd move USERS_CONF_VERSION env to abra.sh 2024-11-11 22:51:58 +01:00
457c2defaf update backupbot label 2024-10-24 15:26:10 +02:00
37ff3e9b1b chore: publish 2.12.2+6.6.2 release 2024-10-09 16:58:22 +02:00
c5443cc14b chore: publish 2.12.1+6.6.1 release 2024-08-26 18:21:25 +01:00
34f70889e3 chore: publish 2.12.0+6.6.1 release 2024-08-14 12:02:42 +02:00
af04e30e36 add show_plugins command 2024-08-14 12:02:33 +02:00
17574fd3fe chore: publish 2.11.0+6.6.0 release 2024-07-19 18:45:32 +02:00
8b6983d240 alaconnect: replace 'execute' with 'initial-hooks' 2024-07-15 13:57:23 +02:00
6fb30c5bc1 chore: publish 2.10.0+6.5.5 release 2024-07-06 20:25:45 +02:00
929bfb4239 add redirects 2024-07-06 20:21:05 +02:00
7e4ff5c075 add alakazam integration file alaconnect.yml 2024-05-13 17:34:43 +02:00
3wc
564db5b63f chore: publish 2.9.1+6.5.3 release 2024-05-11 12:18:46 -03:00
cf9b5f529e chore: publish 2.9.0+6.5.2 release 2024-04-15 16:50:18 +02:00
3wc
240b70a967 chore: publish 2.8.0+6.5.0 release 2024-04-07 12:43:44 -03:00
3wc
7f6b6a5ff2 Update metadata 2024-03-30 16:19:49 -03:00
4d99aae234
Updated .drone.yml to use main branch 2024-03-28 14:17:57 +00:00
959484f5e5
Added HTACCESS_CONF_VERSION to drone config 2024-03-28 14:15:37 +00:00
7ef8e5515d chore: publish 2.7.3+6.4.3 release 2024-03-25 12:26:53 +00:00
770ef4932a Add FTP Access 2024-01-29 20:41:59 +01:00
3wc
dcb8a9a3a9 chore: publish 2.7.2+6.4.2 release 2024-01-17 17:47:32 -03:00
3wc
f3a9fad0a1 Bump ENTRYPOINT_CONF_VERSION 2024-01-17 17:46:22 -03:00
3wc
ebbd41e612 chore: publish 2.7.1+6.4.2 release 2024-01-17 17:40:07 -03:00
b45fca4a3f chore: publish 2.7.0+6.4.2 release 2023-12-22 13:36:13 +01:00
1a6b11c95b feat: multisite with sufolders (#35)
With this commit multisite now also works with subpaths instead of subdomains.

It also simpified the multisite deployment in generall by adding a new MULTISITE environment variable. Depending on its value WORDPRESS_CONFIG_EXTRA gets set in the entrypoint. And the correct .htaccess gets deployed.

Closes #34

I am still new to coopcloud and welcome feedback on my approach. The second commit is not required for #34 so I can remove it again.

Reviewed-on: coop-cloud/wordpress#35
Co-authored-by: p4u1 <p4u1_f4u1@riseup.net>
Co-committed-by: p4u1 <p4u1_f4u1@riseup.net>
2023-12-22 12:35:10 +00:00
de5455833e chore: publish 2.6.3+6.4.2 release 2023-12-22 13:26:36 +01:00
81dbeca30d fix COMPOSE_FILE env for remote SMTP relay, it requires the mailrelay 2023-12-05 15:29:45 +01:00
245b800439 Merge pull request 'wordpress 6.4.1' (#37) from p4u1/wordpress:6-4-1 into master
Reviewed-on: coop-cloud/wordpress#37
2023-12-02 15:31:20 +00:00
540d526914 wordpress 6.4.1 and mariadb 11.2 2023-11-27 15:13:58 +01:00
df32ba5141 chore: publish 2.6.1+6.4.0 release 2023-11-15 16:22:57 +01:00
8d8418a6c0 fix disabling update notification settings 2023-11-15 16:21:44 +01:00
a8d67b063c Merge pull request 'fix db backup and restore' (#33) from p4u1/wordpress:dix-db-backup-restore into master
Reviewed-on: coop-cloud/wordpress#33
2023-11-10 14:02:45 +00:00
3wc
da0f503960 chore: publish 2.6.0+6.4.0 release 2023-11-09 17:42:13 +00:00
3wc
6767d5ee65 Improve composer support 2023-11-09 17:41:26 +00:00
d5227cc534 Merge pull request 'update wordpress to 6.4.0' (#36) from p4u1/wordpress:wordpress-6-4 into master
Reviewed-on: coop-cloud/wordpress#36
2023-11-09 17:41:02 +00:00
45a36ba7b4 update wordpress to 6.4.0 2023-11-08 20:11:58 +01:00
ed77855e7d fix db backup and restore 2023-11-06 21:13:53 +01:00
1c70a89ed4 chore: publish 2.5.1+6.3.0 release 2023-10-24 16:54:44 +02:00
3wc
c6be9ecfcf chore: publish 2.5.0+6.3.0 release 2023-10-23 12:51:12 +01:00
3wc
f2867c8359 Tidy up settings a little 2023-10-23 12:50:45 +01:00
3wc
4a7c468806 Add composer support 2023-10-23 12:50:31 +01:00
3wc
40d95417e9 Improve SMTP settings 2023-10-23 12:49:47 +01:00
37aa0649b9 chore: publish 2.4.3+6.3.0 release 2023-10-20 00:06:09 +02:00
5723405e51 fix backup label 2023-10-20 00:05:41 +02:00
3wc
650d531ed1 Add CORS_ALLOW_ALL for dev sites 2023-10-17 22:29:23 +01:00
3wc
9077d0aa86 chore: publish 2.4.2+6.3.0 release 2023-10-17 13:35:18 +01:00
3wc
952044e590 Exciting attempt at public db access 2023-10-17 13:28:42 +01:00
3wc
1c03d854b2 chore: publish 2.4.1+6.3.0 release 2023-10-16 13:51:11 +01:00
3wc
38bc51f516 Set default for WORDPRESS_TABLE_PREFIX instead of requiring it 2023-10-16 13:50:48 +01:00
3wc
40cbb7d689 Set default WORDPRESS_TABLE_PREFIX 2023-10-16 13:45:37 +01:00
16ca5734d7 fix core_install 2023-08-24 11:34:01 +02:00
3wc
91335eac3a chore: publish 2.4.0+6.3.0 release 2023-08-14 13:42:35 +02:00
dfaa04131d fix compose env variable 2023-07-09 15:05:08 +02:00
b508b67752 use standalone authentik secrets 2023-07-08 04:31:03 +02:00
8cc028fc00 set default user role per env 2023-06-08 16:00:19 +02:00
55f00a482a disable core updates, hide notifications, enable automatic plugin updates 2023-06-01 16:59:09 +02:00
df821f5017 bump wordpress version 2023-05-29 15:10:39 +02:00
9b1e36f8c8 chore: publish 2.3.2+6.2.0 release 2023-04-20 20:51:36 +02:00
f624ef2dc6 fix locale: replace deprecated function 2023-04-20 20:44:38 +02:00
40e89c874a fix locale 2023-04-20 20:38:42 +02:00
7c725fbf85 chore: publish 2.3.1+6.2.0 release 2023-04-18 18:49:27 +02:00
ed587cd983 add auto update and timeout env 2023-04-18 18:23:23 +02:00
85d910f7ea fix adding timeout label 2023-04-18 14:48:50 +02:00
bcb911c6e0 add timeout label 2023-04-18 13:02:53 +02:00
7281edfd60 chore: publish 2.3.0+6.2.0 release 2023-04-06 19:35:11 +02:00
87406eb3ab fix authentik sso 2023-04-06 19:34:57 +02:00
db1e7bc88a automatic authentik sso configuration 2023-03-30 16:57:44 +02:00
3wc
7962da376c Switch to self-hosted stack-ssh-deploy image [mass update] 2023-01-21 11:49:56 -08:00
3wc
6c97636698 Update abra syntax in examples (finally) [mass update] 2023-01-19 16:02:28 -08:00
3wc
72ff340927 Fix CI/CD badge link
[ci skip]
2023-01-19 15:47:21 -08:00
3wc
369d962c40 Attempt to fix CI 2023-01-19 15:44:04 -08:00
3wc
5941680738 chore: publish 2.2.1+6.1.1 release 2023-01-19 15:40:48 -08:00
3wc
112c7a8f03 Regenerate recipe catalogue on new releases 2023-01-19 15:40:48 -08:00
3wc
2550098aee chore: delete swapfiles 2022-12-16 18:49:37 -08:00
3wc
ef7bed62dd chore: publish 2.2.0+6.1.1 release 2022-12-15 08:33:52 -08:00
3wc
581cd72a9a feat: add restore labels for DB service 2022-12-15 08:32:38 -08:00
50cd246597
feat: longblob some stuff 2022-12-15 17:26:51 +01:00
a55be09951 chore: publish 2.1.0+6.1.1 release 2022-12-15 17:15:32 +01:00
3wc
5538ce9c3e Add support for WORDPRESS_TABLE_PREFIX 😬 2022-11-16 19:13:27 -08:00
981fe85910 chore: publish 2.0.1+6.0.1 release 2022-07-14 10:44:42 +02:00
3wc
1cedb08e46 fix: make DB backup work 2022-07-05 14:01:03 +02:00
37a6ff8d7a chore: publish 2.0.0+6.0.0 release 2022-06-22 17:28:10 +05:00
98f9a4f4d9 chore: publish 1.1.2+5.9.3 release 2022-05-05 12:45:37 +01:00
3wc
76b698bc30 Fix SMTP_PORT, and container startup 2022-03-31 12:14:25 +02:00
3wc
dcb3b410ff feat: yet another attempt at wp-cli 2022-03-31 12:14:20 +02:00
ceffd9ba5d chore: publish 1.1.1+5.9.2 release 2022-03-28 09:24:44 +02:00
3wc
2d8c149b42 Add SMTP_PORT env variable 2022-03-14 13:23:08 +02:00
08c56a2ad9 fix: inline to avoid multiline errors in abra 2022-03-08 14:08:21 +00:00
2cb9b71e47 chore: publish 1.1.0+5.9.0 release 2022-02-03 17:14:34 +01:00
88ee8ae05e chore: publish 1.0.2+5.8.3 release 2022-01-18 16:11:45 +01:00
57122cd677 chore: publish 1.0.1+5.8.2 release 2022-01-04 12:06:14 +01:00
3wc
ab3361f46d Add backup-bot-two labels 2021-12-09 01:34:01 +02:00
3wc
0771aae91c Goodbye, emojis! 😢
[ci skip]
2021-11-23 12:19:06 +02:00
3wc
101864ce03 chore: fix README bullet formatting
[ci skip]
2021-11-22 13:42:04 +02:00
6ef2f30c0f chore: first release 2021-10-12 08:45:20 +02:00
3wc
26107257bc Update to Wordpress 5.8.1 2021-09-29 19:34:41 +02:00
6b59677976 Update wordpress Docker tag to v5.8.0 2021-07-21 07:03:37 +00:00
3wc
08fc5fe2c6 Fix README formatting 2021-07-11 17:14:52 +02:00
de33fac3d3
Use new image namespace 2021-06-21 12:32:21 +02:00
decentral1se
d6125ba37a
Remove trigger, we make the tags [ci skip] 2021-06-04 00:15:45 +02:00
decentral1se
6551fd8f8c
Fix bad name in batch update script [ci skip] 2021-06-03 23:07:29 +02:00
decentral1se
14d50b851e
Add release logic to CI [ci skip] 2021-06-03 23:01:37 +02:00
decentral1se
acd5e93a4b
Add some docs 2021-06-02 11:26:03 +02:00
decentral1se
f7600b9bc8
Merge commit 'febd250' 2021-06-02 11:23:10 +02:00
decentral1se
febd2500b4
Fix syntax 2021-06-02 11:22:54 +02:00
decentral1se
a330574682
Remove old configs 2021-06-02 11:22:22 +02:00
decentral1se
be6cf302d0
Unbreak mailrelay config 2021-06-02 11:20:24 +02:00
decentral1se
8af9be6a40
Ensure default 2021-06-02 09:57:25 +02:00
decentral1se
a550017071
Add missing from 2021-06-02 08:36:52 +02:00
decentral1se
9fa2b2d1b7
Support SMTP relay configuration
Hopefully this doesn't bork existing relay configs
2021-06-02 08:24:33 +02:00
3wc
8399631c81 Another lap of the Wordpress arms race.. 2021-05-25 09:28:57 +02:00
3wc
e5c41fa027 Version 5.7.2; sync labels 2021-05-15 22:08:17 +02:00
3wordchant
0df2a556e8 Merge pull request 'Update wordpress Docker tag to v5.7.2 (master)' (#24) from renovate/master-docker-wordpress-5.x into master
Reviewed-on: https://git.autonomic.zone/coop-cloud/wordpress/pulls/24
2021-05-15 22:07:11 +02:00
4d4befc9e1 Update wordpress Docker tag to v5.7.2 2021-05-14 07:02:27 +00:00
decentral1se
e8aa34c7e3
Remove unused env vars 2021-05-10 07:12:05 +02:00
decentral1se
421c01e78a
Formatting and remove backup bot docs 2021-05-10 07:09:52 +02:00
decentral1se
c99f35b5d9
Version 5.7.1_1; sync labels 2021-05-03 09:50:15 +02:00
decentral1se
36046c801e Merge pull request 'Update mariadb Docker tag to v10.6 (master)' (#23) from renovate/master-docker-mariadb-10.x into master
Reviewed-on: https://git.autonomic.zone/coop-cloud/wordpress/pulls/23
2021-05-03 09:49:48 +02:00
d20b99b7b4 Update mariadb Docker tag to v10.6 2021-04-30 07:02:49 +00:00
decentral1se
0b8c60c0f3
Version 5.7.1; sync labels 2021-04-16 09:11:46 +02:00
decentral1se
f2fff04c53 Merge pull request 'Update wordpress Docker tag to v5.7.1 (master)' (#22) from renovate/master-docker-wordpress-5.x into master
Reviewed-on: https://git.autonomic.zone/coop-cloud/wordpress/pulls/22
2021-04-16 09:08:42 +02:00
bf4e9323f3 Update wordpress Docker tag to v5.7.1 2021-04-16 07:02:12 +00:00
3wc
f28b9d69f6 Version 5.7.0; sync labels 2021-04-05 00:25:16 +02:00
decentral1se
8fc4c37e68
Remove old version handling 2021-04-02 21:18:17 +02:00
decentral1se
60b4398e92
Add versions and label 2021-03-16 09:37:42 +01:00
decentral1se
08d9ac6e2f
Remove experimental package file 2021-03-16 09:37:12 +01:00
3wc
fb632799c9 Fix wp
Closes #21
2021-03-14 14:28:11 +02:00
3wordchant
f6dc0243f7 Merge pull request 'Update wordpress Docker tag to v5.7.0 (master)' (#19) from renovate/master-docker-wordpress-5.x into master
Reviewed-on: https://git.autonomic.zone/coop-cloud/wordpress/pulls/19
2021-03-12 10:53:00 +01:00
94459b7077 Update wordpress Docker tag to v5.7.0 2021-03-11 08:02:34 +00:00
3wc
d27c4ed6f3 compose-stacks → coop-cloud
[ci skip]
2021-03-02 19:58:26 +02:00
3wc
f2225be233 Follow new exciting README standard
See coop-cloud/organising#31
2021-03-02 18:41:31 +02:00
3wc
aae6b22d53 Use shared abra backup functions 2021-03-02 18:41:31 +02:00
decentral1se
4eaa4de5ae Merge pull request 'Update wordpress Docker tag to v5.6.2 (master)' (#18) from renovate/master-docker-wordpress-5.x into master
Reviewed-on: https://git.autonomic.zone/coop-cloud/wordpress/pulls/18
2021-02-23 09:12:57 +01:00
064af9c04c Update wordpress Docker tag to v5.6.2 2021-02-23 08:02:28 +00:00
3wc
38c4fe0246 Move config to abra.sh
Ref coop-cloud/abra#43
2021-02-08 16:54:23 +02:00
decentral1se
990a58be81 Merge pull request 'Update wordpress Docker tag to v5.6.1' (#17) from renovate/docker-wordpress-5.x into master
Reviewed-on: https://git.autonomic.zone/coop-cloud/wordpress/pulls/17
2021-02-08 14:07:36 +01:00
923295aa91 Update wordpress Docker tag to v5.6.1 2021-02-05 08:02:06 +00:00
3wc
479d061879 Add restore commands, see coop-cloud/abra#70 2021-01-01 22:29:16 +02:00
3wc
c28bb98e23 App & db backup commands, see coop-cloud/abra#70 2021-01-01 18:58:55 +02:00
3wc
83130a482e Fix embarrassing mass-typo 😳 2020-12-31 23:02:29 +02:00
3wc
925d5703a9 APP → TYPE
Ref coop-cloud/abra#47
2020-12-31 22:54:44 +02:00
3wc
5d351b1ede Switch from envrc → env format
Ref coop-cloud/abra#40
2020-12-30 13:23:06 +02:00
3wc
5488d04c92 Update wp subcommand for new abra argument processing 2020-12-27 15:57:22 +02:00
3wc
997707189e Add custom abra command to run WP-CLI
Closes #2
2020-12-14 12:31:17 +02:00
3wc
5c81094a82 Update README for new abra UI 2020-12-14 12:28:46 +02:00
3wc
26fa0bdfd3 Update for new SECRET_ naming 2020-12-14 11:56:31 +02:00
3wordchant
ebb2036510 Merge pull request 'Update wordpress Docker tag to v5.6.0' (#16) from renovate/docker-wordpress-5.x into master
Reviewed-on: https://git.autonomic.zone/coop-cloud/wordpress/pulls/16
2020-12-14 10:54:09 +01:00
b0055f587d Update wordpress Docker tag to v5.6.0 2020-12-11 08:01:49 +00:00
3wc
a8d5e0553f Bridge backend network, not overlay
Fixes #14
2020-11-17 22:57:36 +02:00
decentral1se
6124c36f42 Merge pull request 'Update wordpress Docker tag to v5.5.3' (#13) from renovate/docker-wordpress-5.x into master
Reviewed-on: https://git.autonomic.zone/coop-cloud/wordpress/pulls/13
2020-11-03 17:22:42 +01:00
0e486d395d Update wordpress Docker tag to v5.5.3 2020-11-03 08:01:54 +00:00
3wc
61bdd21085 SERVICE -> APP 2020-10-29 19:42:08 +02:00
3wc
21babc7bca Various un-breaking 2020-10-24 20:13:56 +02:00
3wc
0ac4c51b3b Add new vars to Drone 2020-10-23 04:15:35 +02:00
3wc
43cbfafb8a Enable additional PHP extensions 2020-10-23 04:15:35 +02:00
c6039c3b54
Remove singlesite config 2020-10-22 10:13:48 +02:00
3wc
bdabcce977 Rejig .envrc.sample
[ci skip]
2020-10-06 01:48:03 +02:00
3wc
42c822f819 Minor .envrc tweak
[ci skip]
2020-10-06 01:41:16 +02:00
3wc
b5ac06c0cf Fix Multisite instructions
[ci skip]
2020-10-05 13:10:54 +02:00
3wc
6f10b0f3cc Add EXTRA_DOMAINS support 2020-10-05 13:07:50 +02:00
3wc
03bbf527fe Rename services
See compose-stacks/organising#19
2020-10-05 13:07:49 +02:00
25a98e6298
Update hosts to match new names 2020-10-02 09:38:54 +02:00
c5beea3114
Apply @3wordchant patch
Didn't bring over "depends_on" because I think it is ignored?
2020-10-02 09:37:36 +02:00
50a11700b4
Use generic naming 2020-10-02 09:11:40 +02:00
65742d663d
Remove test file 2020-10-02 09:06:12 +02:00
35 changed files with 608 additions and 325 deletions

View File

@ -3,7 +3,7 @@ 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: wordpress
@ -11,12 +11,33 @@ steps:
purge: true
deploy_key:
from_secret: drone_ssh_swarm_test
networks:
- proxy
environment:
DOMAIN: wordpress.swarm-test.autonomic.zone
STACK_NAME: wordpress
LETS_ENCRYPT_ENV: production
DB_PASSWORD_VERSION: v1
DB_ROOT_PASSWORD_VERSION: v1
SECRET_DB_PASSWORD_VERSION: v1
SECRET_DB_ROOT_PASSWORD_VERSION: v1
PHP_UPLOADS_CONF_VERSION: v1
ENTRYPOINT_CONF_VERSION: v1
HTACCESS_CONF_VERSION: v1
trigger:
branch:
- master
- 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

90
.env.sample Normal file
View File

@ -0,0 +1,90 @@
TYPE=wordpress
TIMEOUT=300
ENABLE_AUTO_UPDATE=true
COMPOSE_FILE="compose.yml"
ENABLE_BACKUPS=true
DOMAIN=wordpress.example.com
## Domain aliases
#EXTRA_DOMAINS=', `www.wordpress.example.com`'
# Redirects
# All redirect domains have to be added to EXTRA_DOMAINS as well)
# multiple redirects can be added by seperating them with a | character
#REDIRECTS=www.wordpress.example.com
LETS_ENCRYPT_ENV=production
# Setup Wordpress settings on each deploy:
#POST_DEPLOY_CMDS="app core_install"
# Optional settings, otherwise can be set in the installer
# (Required for `app core_install`
#TITLE="My Example Blog"
#LOCALE="en_US" # de_DE
#ADMIN_EMAIL=admin@example.com
# Every new user is per default subscriber, uncomment to change it
#DEFAULT_USER_ROLE=administrator
# PHP composer for plugin installation
#COMPOSE_FILE="$COMPOSE_FILE:compose.composer.yml"
#WORDPRESS_DEBUG=true
## Additional extensions
#PHP_EXTENSIONS="calendar"
SECRET_DB_ROOT_PASSWORD_VERSION=v1
SECRET_DB_PASSWORD_VERSION=v1
# Mostly for compatibility with existing database dumps...
#WORDPRESS_TABLE_PREFIX=wp_
# Multisite (see README)
#MULTISITE=enable # either 'enable', 'subdomain' or 'subfolder'
# File upload settings
#UPLOAD_MAX_SIZE=256M
#UPLOAD_MAX_TIME=30
# Local SMTP relay
#COMPOSE_FILE="$COMPOSE_FILE:compose.mailrelay.yml"
#SMTP_HOST="postfix_relay_app"
#MAIL_FROM="wordpress@example.com"
# Remote SMTP relay
#COMPOSE_FILE="$COMPOSE_FILE:compose.mailrelay.yml:compose.smtp.yml"
#SMTP_HOST="mail.example.com"
#MAIL_FROM="wordpress@example.com"
#SMTP_USER="wordpress@example.com" # optional, defaults to MAIL_FROM
#SMTP_OVERRIDE_FROM=on # force "From" to MAIL_FROM, usually necessary
#SMTP_PORT=587
#SMTP_AUTH=on
#SMTP_TLS=on
#SECRET_SMTP_PASSWORD_VERSION=v1
# Authentik SSO
#COMPOSE_FILE="$COMPOSE_FILE:compose.authentik.yml"
#AUTHENTIK_DOMAIN=authentik.example.com
#SECRET_AUTHENTIK_SECRET_VERSION=v1
#SECRET_AUTHENTIK_ID_VERSION=v1
#LOGIN_TYPE='auto'
# Allow remote connections to db
# 🚩🚩 dangerous, use only for development sites!
#COMPOSE_FILE="$COMPOSE_FILE:compose.public-db.yml
# Wide-open CORS
# 🚩🚩 dangerous, use only for development sites!
#CORS_ALLOW_ALL=1
# FTP
#COMPOSE_FILE="$COMPOSE_FILE:compose.ftp.yml"
#SECRET_FTP_PASS_VERSION=v1
# You can use a Port between 2220-2225
#COMPOSE_FILE="$COMPOSE_FILE:compose.ftp-2220.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.ftp-2221.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.ftp-2222.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.ftp-2223.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.ftp-2224.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.ftp-2225.yml"

View File

@ -1,38 +0,0 @@
export DOMAIN=wordpress.example.com
## Domain aliases
#export EXTRA_DOMAINS=', `www.wordpress.example.com`'
export STACK_NAME=wordpress
export LETS_ENCRYPT_ENV=production
export DB_ROOT_PASSWORD_VERSION=v1
export DB_PASSWORD_VERSION=v1
# Multisite
#export WORDPRESS_CONFIG_EXTRA="\
# define('WP_CACHE', false);\
# define('WP_ALLOW_MULTISITE', true );"
# Multisite phase 2 (see README)
#export WORDPRESS_CONFIG_EXTRA="\
# define('WP_CACHE', false);\
# define('WP_ALLOW_MULTISITE', true );\
# define('MULTISITE', true);\
# define('SUBDOMAIN_INSTALL', true);\
# define('DOMAIN_CURRENT_SITE', '${DOMAIN}');\
# define('PATH_CURRENT_SITE', '/');\
# define('SITE_ID_CURRENT_SITE', 1);\
# define('BLOG_ID_CURRENT_SITE', 1);\
# define('FORCE_SSL_ADMIN', true );\
# define('COOKIE_DOMAIN', \$_SERVER['HTTP_HOST']);"
# Backups
#export COMPOSE_FILE="compose.yml:compose.backup.yml"
# SMTP
#export COMPOSE_FILE="compose.yml:compose.mailrelay.yml"
#export SMTP_HOST="postfix_relay_app"
#export MAIL_FROM="wordpress@example.com"
#
#export MSMTP_CONF_VERSION=v1
#export ENTRYPOINT_MAILRELAY_CONF_VERSION=v1

102
README.md
View File

@ -1,59 +1,79 @@
# wordpress
# Wordpress
[![Build Status](https://drone.autonomic.zone/api/badges/compose-stacks/wordpress/status.svg)](https://drone.autonomic.zone/compose-stacks/wordpress)
[![Build Status](https://build.coopcloud.tech/api/badges/coop-cloud/wordpress/status.svg)](https://build.coopcloud.tech/coop-cloud/wordpress)
Coöp Cloud + [Wordpress](https://wordpress.org) = 🥳
1. Set up Docker Swarm and [`abra`][abra]
2. Deploy [`compose-stacks/traefik`][compose-traefik]
3. `cp .envrc.sample .envrc`
4. Edit `.envrc` - be sure to change `$DOMAIN` to something that resolves to
your Docker swarm box
5. `direnv allow` (or `. .envrc`)
6. Generate secrets:
<!-- metadata -->
* **Category**: Apps
* **Status**: 4
* **Image**: [`wordpress`](https://hub.docker.com/_/wordpress), 4, upstream
* **Healthcheck**: Yes
* **Backups**: Yes
* **Email**: 3
* **Tests**: 2
* **SSO**: No
<!-- endmetadata -->
## Quick start
* `abra app new wordpress`
* `abra app config <app-name>`
* `abra app secret generate -a <app-name>`
* `abra app deploy <app-name>`
* `abra app cmd <app-name> app core_install`
### Authentik Integration
`abra app config <app-name>`
Configure the following envs:
```
abra secret_generate db_password v1
abra secret_generate db_root_password v1
COMPOSE_FILE="$COMPOSE_FILE:compose.authentik.yml"
AUTHENTIK_DOMAIN=authentik.example.com
AUTHENTIK_SECRET_NAME=authentik_example_com_wordpress_secret_v1 # the same as in authentik
AUTHENTIK_ID_NAME=authentik_example_com_wordpress_id_v1 # the same as in authentik
```
7. `abra deploy`
8. Open the configured domain in your browser to finish set-up
9. `abra run wordpress chown www-data:www-data /var/www/html/wp-content` to fix
file permissions (see #3)
`abra app cmd <app-name> app set_authentik`
## Running WP-CLI
`abra app cmd <app-name> app wp -- core check-update --major`
## Network (Multi-site)
_(Only tested using subdomains)_
1. Set up as above
2. Uncomment the first `# Multisite` section in `.envrc`
3. `direnv allow` (or re-run `source .envrc`)
4. `abra deploy`
5. Log into the Wordpress admin dashboard, go to Tools » Network Setup
6. Don't worry about the suggested file changes
7. Comment out the first `# Multisite` section in `.envrc` and uncomment the
`# Multisite phase 2` section
8. `direnv allow` (or re-run `source .envrc`)
9. `abra deploy`
10. FIXME setting up SSL / routing
2. `abra app config <app-name>`, and uncomment `#MULTISITE=enable`
3. `abra app deploy <app-name>`
4. Log into the Wordpress admin dashboard, go to Tools » Network Setup
5. Don't worry about the suggested file changes
6. `abra app config <app-name>` again and set `MULTISITE` to either `subdomain` or `subfolder` depending on your setup.
7. `abra app deploy <app-name>`
## Installing a custom theme
`abra cp ~/path/to/local/theme wordpress:/var/www/html/wp-content/themes/`
## Backups
1. Edit `.envrc` and uncomment the `export COMPOSE_FILE="compose.yml:compose.backup.yml"` line
2. `direnv allow`
3. `abra deploy`
`abra app cp <app-name> ~/path/to/local/theme wordpress:/var/www/html/wp-content/themes/`
## Email
1. Deploy `postfix-relay`
2. Edit `.envrc` and uncomment the email lines; change `MAIL_FROM` to make sure
the domain is the same as `postfix-relay`'s `$DOMAIN` or in its
`$EXTRA_SENDER_DOMAINS`
3. `direnv allow` (or `source .envrc`)
7. `abra deploy`
There is a local or remote SMTP relay configuration available.
* **local**: `COMPOSE_FILE=compose.yml:compose.mailrelay.yml`
* **remote**: `COMPOSE_FILE=compose.yml:compose.mailrelay.yml:compose.smtp.yml`
Below are the instructions for the local relay.
1. Deploy [`postfix-relay`][cc-postfix-relay]
2. `abra app config <app-name>`, and uncomment the email lines; change
`MAIL_FROM` to make sure the domain is the same as `postfix-relay`'s
`$DOMAIN` or in its `$EXTRA_SENDER_DOMAINS`
3. `abra app deploy <app-name>`
[abra]: https://git.autonomic.zone/autonomic-cooperative/abra
[compose-traefik]: https://git.autonomic.zone/compose-stacks/traefik
[cc-traefik]: https://git.autonomic.zone/coop-cloud/traefik
[cc-postfix-relay]: https://git.autonomic.zone/coop-cloud/traefik

96
abra.sh Normal file
View File

@ -0,0 +1,96 @@
export PHP_UPLOADS_CONF_VERSION=v4
export ENTRYPOINT_CONF_VERSION=v7
export ENTRYPOINT_MAILRELAY_CONF_VERSION=v2
export MSMTP_CONF_VERSION=v4
export HTACCESS_CONF_VERSION=v2
export USERS_CONF_VERSION=v1
wp() {
su -p www-data -s /bin/bash -c "/usr/local/bin/wp $@"
}
update() {
wp "core update-db"
wp "plugin update --all"
wp "plugin auto-updates enable --all"
wp "theme update --all"
wp "theme auto-updates enable --all"
wp "language core update"
wp "language plugin update --all"
wp "language theme update --all"
}
core_install(){
ADMIN=admin
if [ -n "$AUTHENTIK_DOMAIN" ]
then
ADMIN=akadmin
fi
chown www-data:www-data -R /var/www/html/wp-content
wp "core install --url=$DOMAIN --title=\"$TITLE\" --admin_user=$ADMIN --admin_email=$ADMIN_EMAIL --locale=$LOCALE --skip-email"
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"
else
wp "option set default_role subscriber"
fi
wp "theme auto-updates enable --all"
wp 'plugin auto-updates enable --all' || exit 0
}
set_authentik(){
AUTHENTIK_SECRET=$(cat /run/secrets/authentik_secret)
AUTHENTIK_ID=$(cat /run/secrets/authentik_id)
if [ -z $LOGIN_TYPE ]
then
LOGIN_TYPE='button'
fi
wp "user create akadmin admin@example.com --role=administrator"
wp "plugin install --activate daggerhart-openid-connect-generic"
wp 'plugin auto-updates enable daggerhart-openid-connect-generic'
wp "option update --format=json openid_connect_generic_settings '
{
\"login_type\":\"$LOGIN_TYPE\",
\"client_id\":\"$AUTHENTIK_ID\",
\"client_secret\":\"$AUTHENTIK_SECRET\",
\"scope\":\"email profile openid\",
\"endpoint_login\":\"https://$AUTHENTIK_DOMAIN/application/o/authorize/\",
\"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/\",
\"acr_values\":\"\",
\"identity_key\":\"preferred_username\",
\"no_sslverify\":\"0\",
\"http_request_timeout\":\"30\",
\"enforce_privacy\":\"0\",
\"alternate_redirect_uri\":\"1\",
\"nickname_key\":\"preferred_username\",
\"email_format\":\"{email}\",
\"displayname_format\":\"\",
\"identify_with_username\":\"1\",
\"state_time_limit\":\"\",
\"token_refresh_enable\":\"1\",
\"link_existing_users\":\"1\",
\"create_if_does_not_exist\":\"1\",
\"redirect_user_back\":\"0\",
\"redirect_on_logout\":\"1\",
\"enable_logging\":\"0\",
\"log_limit\":\"1000\"
}'"
wp "rewrite flush"
wp "cache flush"
}
fix_mysql() {
echo "ALTER TABLE mysql.column_stats MODIFY histogram longblob; ALTER TABLE mysql.column_stats MODIFY hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB');" | mysql -u root -p$(cat /run/secrets/db_root_password)
}
show_plugins() {
wp "plugin list --fields=name,status,wporg_status,version,update_version,auto_update,tested_up_to,wporg_last_updated"
}

12
alaconnect.yml Normal file
View File

@ -0,0 +1,12 @@
authentik:
uncomment:
- compose.authentik.yml
- AUTHENTIK_DOMAIN
- SECRET_AUTHENTIK_SECRET_VERSION
- SECRET_AUTHENTIK_ID_VERSION
- LOGIN_TYPE
inital-hooks:
- app set_authentik
shared_secrets:
wordpress_secret: authentik_secret
wordpress_id: authentik_id

View File

@ -1,3 +0,0 @@
# Notes
- The only thing different between [fr_singlesite_wordpress.yml](./fr_singlesite_wordpress.yml) and [fr_microsites_wordpress.yml](./fr_microsites_wordpress.yml) is the `BORGBASE_REPO` environment variable and the `backup_bot_singlesite_passwd_v1`/`backup_bot_multisite_passwd_v1` secret. These are the two details which are needed for Borgmatic to know how to differentiate between each repository on the Borgbase side (where our backups are stored). Sooo, there could most definitely be a reduction in boilerplate here but I was just moving super fast and wanted to get the backup work done.

View File

@ -1,36 +0,0 @@
location:
source_directories:
- /var/www/html/wp-content
repositories:
- {{ env "BORGBASE_REPO" }}
storage:
compression: auto,zstd
encryption_passphrase: {{ secret "backup_bot_password" }}
archive_name_format: "{hostname}-{now}"
ssh_command: "ssh -o 'StrictHostKeyChecking no' -i /run/secrets/backup_bot_ssh_key"
retention:
keep_daily: 3
keep_weekly: 4
keep_monthly: 12
keep_yearly: 2
prefix: "{hostname}-"
consistency:
checks:
- disabled
check_last: 3
prefix: "{hostname}-"
hooks:
before_backup:
- echo "`date` - Starting backup"
after_backup:
- echo "`date` - Finished backup"
mysql_databases:
- name: {{ env "DB_TABLE" }}
hostname: {{ env "DB_HOST" }}
port: 3306
username: {{ env "DB_USER" }}
password: {{ secret "db_password" }}

View File

@ -1,47 +0,0 @@
---
version: "3.8"
services:
backupbot:
image: "decentral1se/backup-bot:latest"
networks:
- backend
volumes:
- "wordpress_content:/var/www/html/wp-content/"
secrets:
- source: backup_bot_ssh_key
mode: 0400
- backup_bot_password
- db_password
configs:
- source: borgmatic_config_yml
target: /etc/borgmatic/config.yaml
environment:
- BORGBASE_REPO="bp5oj726@bp5oj726.repo.borgbase.com:repo"
- DB_HOST=mariadb
- DB_TABLE=wordpress
- DB_USER=wordpress
deploy:
mode: replicated
replicas: 0
labels:
- "swarm.cronjob.enable=true"
- "swarm.cronjob.schedule=0 2 * * *" # At 02:00
restart_policy:
condition: none
networks:
- backend
configs:
borgmatic_config_yml:
name: borgmatic_config_yml_v1
file: backup.d/borgmatic.yml
template_driver: golang
secrets:
backup_bot_ssh_key:
name: backup_bot_ssh_key_v1
external: true
backup_bot_password:
name: backup_bot_multisite_passwd_v1
external: true

View File

@ -1,47 +0,0 @@
---
version: "3.8"
services:
backupbot:
image: "decentral1se/backup-bot:latest"
networks:
- backend
volumes:
- "wordpress_content:/var/www/html/wp-content/"
secrets:
- source: backup_bot_ssh_key
mode: 0400
- backup_bot_password
- db_password
configs:
- source: borgmatic_config_yml
target: /etc/borgmatic/config.yaml
environment:
- BORGBASE_REPO="l32s99em@l32s99em.repo.borgbase.com:repo"
- DB_HOST=mariadb
- DB_TABLE=wordpress
- DB_USER=wordpress
deploy:
mode: replicated
replicas: 0
labels:
- "swarm.cronjob.enable=true"
- "swarm.cronjob.schedule=0 2 * * *" # At 02:00
restart_policy:
condition: none
networks:
- backend
configs:
borgmatic_config_yml:
name: borgmatic_config_yml_v1
file: backup.d/borgmatic.yml
template_driver: golang
secrets:
backup_bot_ssh_key:
name: backup_bot_ssh_key_v1
external: true
backup_bot_password:
name: backup_bot_singlesite_passwd_v1
external: true

View File

@ -1,65 +0,0 @@
# #############################################################################
# NOTE(decentral1se): this is a test compose.yml to test abra based deployments
# #############################################################################
---
version: "3.8"
services:
wordpress:
image: "wordpress:5.5.1"
networks:
- backend
- proxy
environment:
- WORDPRESS_DB_HOST=mariadb
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD_FILE=/run/secrets/db_password
- WORDPRESS_DB_NAME=wordpress
secrets:
- db_password
deploy:
update_config:
failure_action: rollback
order: start-first
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.${NAME}.tls=true"
- "traefik.http.services.${NAME}.loadbalancer.server.port=80"
- "traefik.http.routers.${NAME}.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${NAME}.tls.certresolver=production"
- "traefik.http.routers.${NAME}.entrypoints=web-secure"
mariadb:
image: "mariadb:10.5"
volumes:
- "mariadb:/var/lib/mysql"
networks:
- backend
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD_FILE=/run/secrets/db_password
secrets:
- db_password
- db_root_password
networks:
backend:
driver: overlay
proxy:
external: true
volumes:
mariadb:
wordpress_content:
secrets:
db_root_password:
external: true
name: ${DB_ROOT_PASSWD}
db_password:
external: true
name: ${DB_PASSWD}

14
compose.authentik.yml Normal file
View File

@ -0,0 +1,14 @@
version: "3.8"
services:
app:
secrets:
- authentik_secret
- authentik_id
secrets:
authentik_secret:
external: true
name: ${STACK_NAME}_authentik_secret_${SECRET_AUTHENTIK_SECRET_VERSION}
authentik_id:
external: true
name: ${STACK_NAME}_authentik_id_${SECRET_AUTHENTIK_ID_VERSION}

14
compose.composer.yml Normal file
View File

@ -0,0 +1,14 @@
---
version: "3.8"
services:
app:
volumes:
- "composer:/var/www/html/composer"
environment:
- ENABLE_COMPOSER=1
- COMPOSER=composer/composer.json
- COMPOSER_VENDOR_DIR=composer/vendor
volumes:
composer:

7
compose.ftp-2220.yml Normal file
View File

@ -0,0 +1,7 @@
---
version: "3.8"
services:
ftp:
ports:
- 2220:22

7
compose.ftp-2221.yml Normal file
View File

@ -0,0 +1,7 @@
---
version: "3.8"
services:
ftp:
ports:
- 2221:22

7
compose.ftp-2222.yml Normal file
View File

@ -0,0 +1,7 @@
---
version: "3.8"
services:
ftp:
ports:
- 2222:22

7
compose.ftp-2223.yml Normal file
View File

@ -0,0 +1,7 @@
---
version: "3.8"
services:
ftp:
ports:
- 2223:22

7
compose.ftp-2224.yml Normal file
View File

@ -0,0 +1,7 @@
---
version: "3.8"
services:
ftp:
ports:
- 2224:22

7
compose.ftp-2225.yml Normal file
View File

@ -0,0 +1,7 @@
---
version: "3.8"
services:
ftp:
ports:
- 2220:22

24
compose.ftp.yml Normal file
View File

@ -0,0 +1,24 @@
---
version: "3.8"
services:
ftp:
image: atmoz/sftp
secrets:
- ftp_pass
volumes:
- "wordpress_content:/home/ftp_user/wp-content"
configs:
- source: users_conf
target: /etc/sftp/users.conf
secrets:
ftp_pass:
name: ${STACK_NAME}_ftp_pass_${SECRET_FTP_PASS_VERSION}
external: true
configs:
users_conf:
name: ${STACK_NAME}_users_conf_${USERS_CONF_VERSION}
file: users.conf.tmpl
template_driver: golang

View File

@ -3,29 +3,24 @@ version: "3.8"
services:
app:
entrypoint: /docker-entrypoint.sh
entrypoint: /docker-entrypoint.mailrelay.sh
environment:
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT:-25}
- MAIL_FROM=${MAIL_FROM}
networks:
- mail
configs:
- source: mstmp_conf
target: /etc/msmtprc
- source: entrypoint_conf
target: /docker-entrypoint.sh
- source: entrypoint_mailrelay_conf
target: /docker-entrypoint.mailrelay.sh
mode: 0555
networks:
mail:
external: true
configs:
mstmp_conf:
name: ${STACK_NAME}_mstmp_conf_${MSMTP_CONF_VERSION}
file: msmtp.conf.tmpl
template_driver: golang
entrypoint_conf:
entrypoint_mailrelay_conf:
name: ${STACK_NAME}_entrypoint_mailrelay_${ENTRYPOINT_MAILRELAY_CONF_VERSION}
file: entrypoint.mailrelay.sh.tmpl
template_driver: golang

9
compose.public-db.yml Normal file
View File

@ -0,0 +1,9 @@
---
version: "3.8"
services:
db:
ports:
- target: 3306
published: 3306
mode: host

19
compose.smtp.yml Normal file
View File

@ -0,0 +1,19 @@
---
version: "3.8"
services:
app:
secrets:
- smtp_password
environment:
- SMTP_HOST
- SMTP_PORT=${SMTP_PORT:-25}
- SMTP_AUTH
- SMTP_TLS
- MAIL_FROM
- SMTP_OVERRIDE_FROM
secrets:
smtp_password:
name: ${STACK_NAME}_smtp_password_${SECRET_SMTP_PASSWORD_VERSION}
external: true

View File

@ -3,20 +3,37 @@ version: "3.8"
services:
app:
image: "wordpress:5.5.1"
image: "wordpress:6.8.1"
volumes:
- "wordpress_content:/var/www/html/wp-content/"
networks:
- backend
- proxy
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD_FILE=/run/secrets/db_password
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_CONFIG_EXTRA=${WORDPRESS_CONFIG_EXTRA}
WORDPRESS_CONFIG_EXTRA: |
define( 'AUTOMATIC_UPDATER_DISABLED', false );
define( 'WP_AUTO_UPDATE_CORE', false );
${WORDPRESS_CONFIG_EXTRA}
PAGER: more
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD_FILE: /run/secrets/db_password
WORDPRESS_DB_NAME: wordpress
WORDPRESS_TABLE_PREFIX: ${WORDPRESS_TABLE_PREFIX:-wp_}
PHP_EXTENSIONS: ${PHP_EXTENSIONS}
CORS_ALLOW_ALL:
COMPOSER:
secrets:
- db_password
configs:
- source: php_uploads_conf
target: /usr/local/etc/php/conf.d/uploads.ini
- source: entrypoint_conf
target: /docker-entrypoint.sh
mode: 0555
- source: htaccess_conf
target: /var/www/html/.htaccess
entrypoint: /docker-entrypoint.sh
depends_on:
- db
healthcheck:
@ -36,13 +53,19 @@ services:
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
# 3wc: this rule works for routing, but not for generating certificates
# see https://git.autonomic.zone/compose-stacks/planning/issues/14
# see https://git.autonomic.zone/coop-cloud/planning/issues/14
#- "traefik.http.routers.${STACK_NAME}.rule=HostRegexp(`{subdomain:.+}.${DOMAIN}`, `${DOMAIN}`)"
- "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.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.16.0+6.8.1"
db:
image: "mariadb:10.5"
image: "mariadb:11.7"
volumes:
- "mariadb:/var/lib/mysql"
networks:
@ -55,10 +78,15 @@ services:
secrets:
- db_password
- db_root_password
deploy:
labels:
backupbot.backup: "${ENABLE_BACKUPS:-true}"
backupbot.backup.pre-hook: "mariadb-dump --single-transaction -u root -p\"$$(cat /run/secrets/db_root_password)\" wordpress | gzip > /var/lib/mysql/dump.sql.gz"
backupbot.backup.volumes.mariadb.path: "dump.sql.gz"
backupbot.restore.post-hook: "gzip -d /var/lib/mysql/dump.sql.gz && mariadb -u root -p\"$$(cat /run/secrets/db_root_password)\" wordpress < /var/lib/mysql/dump.sql && rm -f /var/lib/mysql/dump.sql"
networks:
backend:
driver: overlay
proxy:
external: true
@ -69,7 +97,21 @@ volumes:
secrets:
db_root_password:
external: true
name: ${STACK_NAME}_db_root_password_${DB_ROOT_PASSWORD_VERSION}
name: ${STACK_NAME}_db_root_password_${SECRET_DB_ROOT_PASSWORD_VERSION}
db_password:
external: true
name: ${STACK_NAME}_db_password_${DB_PASSWORD_VERSION}
name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}
configs:
entrypoint_conf:
name: ${STACK_NAME}_entrypoint_conf_${ENTRYPOINT_CONF_VERSION}
file: entrypoint.sh.tmpl
template_driver: golang
php_uploads_conf:
name: ${STACK_NAME}_php_uploads_conf_${PHP_UPLOADS_CONF_VERSION}
file: uploads.ini.tmpl
template_driver: golang
htaccess_conf:
name: ${STACK_NAME}_htaccess_conf_${HTACCESS_CONF_VERSION}
file: htaccess.tmpl
template_driver: golang

View File

@ -4,6 +4,4 @@ apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y msmtp && rm
echo "sendmail_path = /usr/bin/msmtp -t -i" > /usr/local/etc/php/conf.d/sendmail.ini
# Upstream ENTRYPOINT
# https://github.com/docker-library/wordpress/blob/master/php7.4/apache/Dockerfile#L120
/usr/local/bin/docker-entrypoint.sh apache2-foreground "$@"
/docker-entrypoint.sh

51
entrypoint.sh.tmpl Normal file
View File

@ -0,0 +1,51 @@
#!/bin/bash
{{ if (env "PHP_EXTENSIONS") }}
docker-php-ext-install {{ env "PHP_EXTENSIONS" }}
{{ end }}
curl -z /usr/local/bin/wp -o /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x /usr/local/bin/wp
{{ if eq (env "ENABLE_COMPOSER") "1" }}
mkdir -p /var/www/.composer
chown www-data:www-data /var/www/.composer /var/www/html/composer
curl https://getcomposer.org/installer -o /tmp/composer-setup.php
php -r "if (hash_file('sha384', '/tmp/composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php /tmp/composer-setup.php
rm /tmp/composer-setup.php
mv /var/www/html/composer.phar /usr/local/bin/composer
{{ end }}
{{ if eq (env "CORS_ALLOW_ALL") "1" }}
a2enmod headers
sed -ri -e 's/^([ \t]*)(<\/VirtualHost>)/\1\tHeader set Access-Control-Allow-Origin "*"\n\1\2/g' /etc/apache2/sites-available/*.conf
{{ end }}
{{ if eq (env "MULTISITE") "enable" }}
export WORDPRESS_CONFIG_EXTRA="$WORDPRESS_CONFIG_EXTRA
define('WP_CACHE', false);
define('WP_ALLOW_MULTISITE', true );"
{{ end }}
{{ if or (eq (env "MULTISITE") "subdomain") (eq (env "MULTISITE") "subfolder") }}
export WORDPRESS_CONFIG_EXTRA="$WORDPRESS_CONFIG_EXTRA
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', '${DOMAIN}');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('FORCE_SSL_ADMIN', true );
define('COOKIE_DOMAIN', \$_SERVER['HTTP_HOST']);"
{{ end }}
if [ -n "$@" ]; then
"$@"
fi
# Upstream ENTRYPOINT
# https://github.com/docker-library/wordpress/blob/master/php7.4/apache/Dockerfile#L120
/usr/local/bin/docker-entrypoint.sh apache2-foreground

57
htaccess.tmpl Normal file
View File

@ -0,0 +1,57 @@
{{ if eq (env "MULTISITE") "" -}}
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
{{- end -}}
{{- if eq (env "MULTISITE") "subfolder" -}}
# BEGIN WordPress Multisite
# Using subfolder network type: https://wordpress.org/documentation/article/htaccess/#multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress Multisite
{{- end -}}
{{- if eq (env "MULTISITE") "subdomain" -}}
# BEGIN WordPress Multisite
# Using subdomain network type: https://wordpress.org/documentation/article/htaccess/#multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress Multisite
{{- end }}

View File

@ -1,3 +1,19 @@
account default
host {{ env "SMTP_HOST" }}
from {{ env "MAIL_FROM" }}
user {{ or (env "SMTP_USER") (env "MAIL_FROM") }}
port {{ env "SMTP_PORT" }}
{{ if eq (env "SMTP_OVERRIDE_FROM") "on" }}
set_from_header on
{{ end }}
{{ if eq (env "SMTP_AUTH") "on" }}
auth {{ env "SMTP_AUTH" }}
passwordeval "cat /run/secrets/smtp_password"
{{ end }}
{{ if eq (env "SMTP_TLS") "on" }}
tls {{ env "SMTP_TLS" }}
tls_trust_file /etc/ssl/certs/ca-certificates.crt
{{ end }}

View File

@ -1,17 +0,0 @@
---
name: Wordpress
description: Open source software you can use to create a beautiful website, blog, or app
arguments:
name:
description: The name of your Wordpress application
example: my-cool-project
domain:
description: The domain name where your Wordpress will be available on the web
example: my-cool-project.com
secrets:
db_passwd:
description: The normal user database password
length: 8
db_root_passwd:
description: The root user database password
length: 8

1
release/2.10.0+6.5.5 Normal file
View File

@ -0,0 +1 @@
Adds redirects and alakazam integration

1
release/2.13.2+6.7.1 Normal file
View File

@ -0,0 +1 @@
Breaking change for ftp container: you need to uncomment COMPOSE_FILE="$COMPOSE_FILE:compose.ftp-2222.yml" to open port 2222 again. You can also select between port 2220-2225.

1
release/2.4.0+6.3.0 Normal file
View File

@ -0,0 +1 @@
The authentik secrets need to be inserted again, as wordpress is not sharing the secret with authentik any more.

1
release/2.7.0+6.4.2 Normal file
View File

@ -0,0 +1 @@
Multisite now also works with subpaths instead of subdomains. Also Multisite support was simplified. If you are using a subdomain multisite setup you can remove the `WORDPRESS_CONFIG_EXTRA="define('MULTISITE', true);...` from your config and instead set MULTISITE=subdomain.

11
uploads.ini.tmpl Normal file
View File

@ -0,0 +1,11 @@
{{ $upload_max_size := "256M" }}
{{ if ne (env "UPLOAD_MAX_SIZE") "" }} {{ $upload_max_size = env "UPLOAD_MAX_SIZE" }} {{ end }}
{{ $upload_max_time := "30" }}
{{ if ne (env "UPLOAD_MAX_TIME") "" }} {{ $upload_max_time = env "UPLOAD_MAX_TIME" }} {{ end }}
file_uploads = On
upload_max_filesize = {{ $upload_max_size }}
post_max_size = {{ $upload_max_size }}
memory_limit = {{ $upload_max_size }}
max_execution_time = {{ $upload_max_time }}
max_input_time = {{ $upload_max_time }}

1
users.conf.tmpl Normal file
View File

@ -0,0 +1 @@
ftp_user:{{ secret "ftp_pass" }}:33:33