Compare commits

...
This repository has been archived on 2021-07-22. You can view files and clone it, but cannot push or open issues or pull requests.

94 Commits

Author SHA1 Message Date
Renovate Bot 6b59677976 Update wordpress Docker tag to v5.8.0
continuous-integration/drone/pr Build is failing Details
continuous-integration/drone/push Build is failing Details
2021-07-21 07:03:37 +00:00
3wc 08fc5fe2c6 Fix README formatting
continuous-integration/drone/push Build is failing Details
2021-07-11 17:14:52 +02:00
decentral1se de33fac3d3
Use new image namespace
continuous-integration/drone/push Build is failing Details
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
continuous-integration/drone/push Build is passing Details
2021-06-02 11:26:03 +02:00
decentral1se f7600b9bc8
Merge commit 'febd250'
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
2021-06-02 11:20:24 +02:00
decentral1se 8af9be6a40
Ensure default
continuous-integration/drone/push Build is passing Details
2021-06-02 09:57:25 +02:00
decentral1se a550017071
Add missing from
continuous-integration/drone/push Build is passing Details
2021-06-02 08:36:52 +02:00
decentral1se 9fa2b2d1b7
Support SMTP relay configuration
continuous-integration/drone/push Build is passing Details
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..
continuous-integration/drone/push Build is passing Details
2021-05-25 09:28:57 +02:00
3wc e5c41fa027 Version 5.7.2; sync labels
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
Reviewed-on: #24
2021-05-15 22:07:11 +02:00
Renovate Bot 4d4befc9e1 Update wordpress Docker tag to v5.7.2
continuous-integration/drone/pr Build is failing Details
2021-05-14 07:02:27 +00:00
decentral1se e8aa34c7e3
Remove unused env vars
continuous-integration/drone/push Build is failing Details
2021-05-10 07:12:05 +02:00
decentral1se 421c01e78a
Formatting and remove backup bot docs
continuous-integration/drone/push Build is passing Details
2021-05-10 07:09:52 +02:00
decentral1se c99f35b5d9
Version 5.7.1_1; sync labels
continuous-integration/drone/push Build is failing Details
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
continuous-integration/drone/push Build is passing Details
Reviewed-on: #23
2021-05-03 09:49:48 +02:00
Renovate Bot d20b99b7b4 Update mariadb Docker tag to v10.6
continuous-integration/drone/pr Build is failing Details
2021-04-30 07:02:49 +00:00
decentral1se 0b8c60c0f3
Version 5.7.1; sync labels
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
Reviewed-on: #22
2021-04-16 09:08:42 +02:00
Renovate Bot bf4e9323f3 Update wordpress Docker tag to v5.7.1
continuous-integration/drone/pr Build is failing Details
2021-04-16 07:02:12 +00:00
3wc f28b9d69f6 Version 5.7.0; sync labels
continuous-integration/drone/push Build is passing Details
2021-04-05 00:25:16 +02:00
decentral1se 8fc4c37e68
Remove old version handling
continuous-integration/drone/push Build is passing Details
2021-04-02 21:18:17 +02:00
decentral1se 60b4398e92
Add versions and label
continuous-integration/drone/push Build is passing Details
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`
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
Reviewed-on: #19
2021-03-12 10:53:00 +01:00
Renovate Bot 94459b7077 Update wordpress Docker tag to v5.7.0
continuous-integration/drone/pr Build is failing Details
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
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
Reviewed-on: #18
2021-02-23 09:12:57 +01:00
Renovate Bot 064af9c04c Update wordpress Docker tag to v5.6.2
continuous-integration/drone/pr Build is failing Details
2021-02-23 08:02:28 +00:00
3wc 38c4fe0246 Move config to abra.sh
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
Reviewed-on: #17
2021-02-08 14:07:36 +01:00
Renovate Bot 923295aa91 Update wordpress Docker tag to v5.6.1
continuous-integration/drone/pr Build is failing Details
2021-02-05 08:02:06 +00:00
3wc 479d061879 Add restore commands, see coop-cloud/abra#70
continuous-integration/drone/push Build is passing Details
2021-01-01 22:29:16 +02:00
3wc c28bb98e23 App & db backup commands, see coop-cloud/abra#70
continuous-integration/drone/push Build is passing Details
2021-01-01 18:58:55 +02:00
3wc 83130a482e Fix embarrassing mass-typo 😳
continuous-integration/drone/push Build is passing Details
2020-12-31 23:02:29 +02:00
3wc 925d5703a9 APP → TYPE
continuous-integration/drone/push Build is passing Details
Ref coop-cloud/abra#47
2020-12-31 22:54:44 +02:00
3wc 5d351b1ede Switch from envrc → env format
continuous-integration/drone/push Build is passing Details
Ref coop-cloud/abra#40
2020-12-30 13:23:06 +02:00
3wc 5488d04c92 Update `wp` subcommand for new abra argument processing
continuous-integration/drone/push Build is passing Details
2020-12-27 15:57:22 +02:00
3wc 997707189e Add custom abra command to run WP-CLI
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
Reviewed-on: #16
2020-12-14 10:54:09 +01:00
Renovate Bot b0055f587d Update wordpress Docker tag to v5.6.0
continuous-integration/drone/pr Build is failing Details
2020-12-11 08:01:49 +00:00
3wc a8d5e0553f Bridge backend network, not overlay
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
Reviewed-on: #13
2020-11-03 17:22:42 +01:00
Renovate Bot 0e486d395d Update wordpress Docker tag to v5.5.3
continuous-integration/drone/pr Build is failing Details
2020-11-03 08:01:54 +00:00
3wc 61bdd21085 SERVICE -> APP
continuous-integration/drone/push Build is passing Details
2020-10-29 19:42:08 +02:00
3wc 21babc7bca Various un-breaking
continuous-integration/drone/push Build is passing Details
2020-10-24 20:13:56 +02:00
3wc 0ac4c51b3b Add new vars to Drone
continuous-integration/drone/push Build is passing Details
2020-10-23 04:15:35 +02:00
3wc 43cbfafb8a Enable additional PHP extensions 2020-10-23 04:15:35 +02:00
Luke Murphy c6039c3b54
Remove singlesite config
continuous-integration/drone/push Build is passing Details
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
continuous-integration/drone/push Build is passing Details
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
Luke Murphy 25a98e6298
Update hosts to match new names
continuous-integration/drone/push Build is passing Details
2020-10-02 09:38:54 +02:00
Luke Murphy c5beea3114
Apply @3wordchant patch
continuous-integration/drone/push Build is passing Details
Didn't bring over "depends_on" because I think it is ignored?
2020-10-02 09:37:36 +02:00
Luke Murphy 50a11700b4
Use generic naming
continuous-integration/drone/push Build is passing Details
2020-10-02 09:11:40 +02:00
Luke Murphy 65742d663d
Remove test file
continuous-integration/drone/push Build is passing Details
2020-10-02 09:06:12 +02:00
3wc d48bb92dda Fix SMTP relay entrypoint config name
continuous-integration/drone/push Build is passing Details
2020-10-01 12:29:23 +02:00
Luke Murphy 2e489025d4
Back to using name because we have a test file
continuous-integration/drone/push Build is passing Details
2020-10-01 01:21:47 +02:00
Luke Murphy 2e8c910e00
Use stack_name for now 2020-10-01 01:18:15 +02:00
Luke Murphy 1e711e73de
Lower case those secrets
continuous-integration/drone/push Build is passing Details
2020-10-01 01:10:16 +02:00
Luke Murphy 4da5951874
Add descriptions
continuous-integration/drone/push Build is passing Details
2020-10-01 00:34:46 +02:00
Luke Murphy 61e637a05a
Make that uppercase
continuous-integration/drone/push Build is passing Details
2020-09-30 23:19:05 +02:00
Luke Murphy 41f7bc27a8
Spoof out further this package yml
continuous-integration/drone/push Build is passing Details
2020-09-30 23:18:08 +02:00
Luke Murphy c9ebc5508a
Add initial package schema for _abra
continuous-integration/drone/push Build is passing Details
2020-09-29 00:33:06 +02:00
Luke Murphy 19e306ce68
Fix secret version name 2020-09-29 00:32:52 +02:00
3wc 87324459b0 Add MAIL_FROM to example .envrc
[ci skip]
2020-09-28 00:55:04 +02:00
3wc e6dc753365 Improve email set-up
continuous-integration/drone/push Build is passing Details
2020-09-27 21:27:26 +02:00
3wc 5f2697c0c9 Optional SMTP relay 2020-09-27 21:27:26 +02:00
Luke Murphy 349feac543
Add secret generation
continuous-integration/drone/push Build is passing Details
2020-09-25 21:04:25 +02:00
Luke Murphy b9e081b84e
Try purging
continuous-integration/drone/push Build is failing Details
2020-09-25 20:15:49 +02:00
3wc ca4a0b97fb Add build status to README
[ci skip]
2020-09-25 15:07:06 +02:00
3wc e8ce5ac444 Rename deploy_key again..
continuous-integration/drone/push Build is passing Details
2020-09-25 15:04:46 +02:00
3wc 0e851024fc Use latest stack-ssh-deploy, change SSH key name
continuous-integration/drone/push Build is failing Details
2020-09-25 14:25:29 +02:00
Luke Murphy ea532c19ee
Use latest tags
continuous-integration/drone/push Build is passing Details
2020-09-25 13:24:09 +02:00
3wc 0a3a72789b Use stack-ssh-deploy instead
continuous-integration/drone/push Build is passing Details
2020-09-25 02:43:23 +02:00
3wc 95e6ba0080 Run Drone on master branch
continuous-integration/drone/push Build is failing Details
2020-09-25 02:32:02 +02:00
3wc 18420b4b7b Add .drone.yml 2020-09-25 02:32:02 +02:00
Luke Murphy dd526ec4cf
Add notes 2020-09-24 10:21:49 +02:00
Luke Murphy 59b62ce14c
Fix borgmatic path 2020-09-24 10:13:22 +02:00
Luke Murphy 2a4a1ad320
Fix path to borgmatic 2020-09-24 10:10:01 +02:00
Luke Murphy 5c35be0aa7
Move multiple backup configs to backup.d 2020-09-24 09:55:41 +02:00
14 changed files with 330 additions and 161 deletions

34
.drone.yml Normal file
View File

@ -0,0 +1,34 @@
---
kind: pipeline
name: deploy to swarm-test.autonomic.zone
steps:
- name: deployment
image: decentral1se/stack-ssh-deploy:latest
settings:
host: swarm-test.autonomic.zone
stack: wordpress
generate_secrets: true
purge: true
deploy_key:
from_secret: drone_ssh_swarm_test
environment:
DOMAIN: wordpress.swarm-test.autonomic.zone
STACK_NAME: wordpress
LETS_ENCRYPT_ENV: production
SECRET_DB_PASSWORD_VERSION: v1
SECRET_DB_ROOT_PASSWORD_VERSION: v1
PHP_UPLOADS_CONF_VERSION: v1
ENTRYPOINT_CONF_VERSION: v1
trigger:
branch:
- master
---
kind: pipeline
name: recipe release
steps:
- name: release a new version
image: thecoopcloud/drone-abra:latest
settings:
command: recipe wordpress release
deploy_key:
from_secret: abra_bot_deploy_key

44
.env.sample Normal file
View File

@ -0,0 +1,44 @@
TYPE=wordpress
DOMAIN=wordpress.example.com
## Domain aliases
#EXTRA_DOMAINS=', `www.wordpress.example.com`'
LETS_ENCRYPT_ENV=production
## Additional extensions
#PHP_EXTENSIONS="calendar"
SECRET_DB_ROOT_PASSWORD_VERSION=v1
SECRET_DB_PASSWORD_VERSION=v1
# Multisite
#WORDPRESS_CONFIG_EXTRA="\
# define('WP_CACHE', false);\
# define('WP_ALLOW_MULTISITE', true );"
# Multisite phase 2 (see README)
#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']);"
# Local SMTP relay
#COMPOSE_FILE="compose.yml:compose.mailrelay.yml"
#SMTP_HOST="postfix_relay_app"
#MAIL_FROM="wordpress@example.com"
# Remote SMTP relay
#COMPOSE_FILE="compose.yml:compose.mailrelay.yml:compose.smtp.yml"
#SMTP_HOST="mail.example.com"
#MAIL_FROM="wordpress@example.com"
#SMTP_PORT=587
#SMTP_AUTH=on
#SMTP_TLS=on
#SECRET_SMTP_PASSWORD_VERSION=v1

View File

@ -1,28 +0,0 @@
export DOMAIN=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"

View File

@ -1,49 +1,75 @@
# wordpress
# Wordpress
[![Build Status](https://drone.autonomic.zone/api/badges/coop-cloud/wordpress/status.svg)](https://drone.autonomic.zone/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:
```
abra secret_generate db_password v1
abra secret_generate db_root_password v1
```
<!-- metadata -->
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
- **Category**: Apps
- **Status**: ❶💚
- **Image**: [`wordpress`](https://hub.docker.com/_/wordpress), ❶💚, upstream
- **Healthcheck**: Yes
- **Backups**: Yes
- **Email**: ❶💚
- **Tests**: ❷💛
- **SSO**: No
<!-- endmetadata -->
## Basic usage
1. Set up Docker Swarm and [`abra`][abra]
2. Deploy [`coop-cloud/traefik`][cc-traefik]
3. `abra app new wordpress --secrets` (optionally with `--pass` if you'd like
to save secrets in `pass`)
4. `abra app YOURAPPDOMAIN config` - be sure to change `$DOMAIN` to something that resolves to
your Docker swarm box
5. `abra app YOURAPPDOMAIN deploy`
6. Open the configured domain in your browser to finish set-up
7. `abra app YOURAPPDOMAIN run app chown www-data:www-data /var/www/html/wp-content` to fix
file permissions (see #3)
## Running WP-CLI
`abra app YOURAPPDOMAIN wp 'core check-update --major'`
(the WP-CLI arguments need to be quoted, because of how `abra` handles
command-line arguments)
## 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 YOURAPPDOMAIN config`, and uncomment the first `# Multisite` section
3. `abra app YOURAPPDOMAIN deploy`
4. Log into the Wordpress admin dashboard, go to Tools » Network Setup
5. Don't worry about the suggested file changes
6. `abra app YOURAPPDOMAIN config` again - comment out the first `# Multisite`
section in `.envrc`, uncomment the `# Multisite phase 2` section, and add
your multisite subdomain(s) to `EXTRA_DOMAINS` (beware the weird syntax..)
7. `abra app YOURAPPDOMAIN deploy`
## Installing a custom theme
`abra cp ~/path/to/local/theme wordpress:/var/www/html/wp-content/themes/`
`abra app YOURAPPDOMAIN cp ~/path/to/local/theme wordpress:/var/www/html/wp-content/themes/`
## Email
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 YOURAPPDOMAIN config`, 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 YOURAPPDOMAIN deploy`
[abra]: https://git.autonomic.zone/autonomic-cooperative/abra
[compose-traefik]: https://git.autonomic.zone/compose-stacks/traefik
## Backups
1. Edit `.envrc` and uncomment the `export COMPOSE_FILE="compose.yml:compose.backup.yml"` line
2. `direnv allow`
3. `abra deploy`
[cc-traefik]: https://git.autonomic.zone/coop-cloud/traefik
[cc-postfix-relay]: https://git.autonomic.zone/coop-cloud/traefik

78
abra.sh Normal file
View File

@ -0,0 +1,78 @@
export PHP_UPLOADS_CONF_VERSION=v3
export ENTRYPOINT_CONF_VERSION=v2
export ENTRYPOINT_MAILRELAY_CONF_VERSION=v1
export MSMTP_CONF_VERSION=v3
sub_wp() {
CONTAINER=$(docker container ls -f "Name=${STACK_NAME}_app" --format '{{ .ID }}')
if [ -z "$CONTAINER" ]; then
error "Can't find a container for ${STACK_NAME}_app"
exit
fi
debug "Using Container ID ${CONTAINER}"
# FIXME 3wc: we're fighting the Wordpress image, which recommends a named
# volume for /var/www/html -- this used to work fine using --volumes-from
# because the actual MySQL password was inserted into the generated
# wp-config.php -- but as of Wordpress 5.7.0, wp-config loads data straight
# from the environment, which requires Docker secrets to work, which only work
# in swarm services (not one-off `docker run` commands). Defining a `cli`
# service in compose.yml almost works, but there's no volumes_from: in Compose
# V3, and without it then the `cli` service can't access Wordpress core.
# See https://git.autonomic.zone/coop-cloud/wordpress/issues/21
warning "Slowly looking up MySQL password..."
silence
abra__service_="app"
DB_PASSWORD="$(sub_app_run cat "/run/secrets/db_password")"
unsilence
# shellcheck disable=SC2154,SC2086
docker run -it \
--volumes-from "$CONTAINER" \
--network "container:$CONTAINER" \
-u xfs:xfs \
-e WORDPRESS_DB_HOST=db \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_PASSWORD="${DB_PASSWORD}" \
-e WORDPRESS_DB_NAME=wordpress \
-e WORDPRESS_CONFIG_EXTRA="${WORDPRESS_CONFIG_EXTRA}" \
wordpress:cli wp ${abra__args_[*]}
}
abra_backup_app() {
_abra_backup_dir "app:/var/www/html/wp-content"
}
abra_backup_db() {
_abra_backup_mysql "db" "wordpress"
}
abra_backup() {
abra_backup_app && abra_backup_db
}
abra_restore_app() {
# shellcheck disable=SC2034
{
abra__src_="-"
abra__dst_="app:/var/www/html/"
}
zcat "$@" | sub_app_cp
success "Restored 'app'"
}
abra_restore_db() {
# 3wc: unlike abra_backup_db, we can assume abra__service_ will be 'db' if we
# got this far..
# shellcheck disable=SC2034
abra___no_tty="true"
DB_ROOT_PASSWORD=$(sub_app_run cat /run/secrets/db_root_password)
zcat "$@" | sub_app_run mysql -u root -p"$DB_ROOT_PASSWORD" wordpress
success "Restored 'db'"
}

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:0.0.1"
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="g067e243@g067e243.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_v7
file: borgmatic.yml
template_driver: golang
secrets:
backup_bot_ssh_key:
name: backup_bot_ssh_key_v1
external: true
backup_bot_password:
name: backup_bot_password_v1
external: true

25
compose.mailrelay.yml Normal file
View File

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

18
compose.smtp.yml Normal file
View File

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

View File

@ -1,22 +1,36 @@
---
version: "3.8"
services:
wordpress:
image: "wordpress:5.5.1"
app:
image: "wordpress:5.8.0"
volumes:
- "wordpress_content:/var/www/html/wp-content/"
networks:
- backend
- proxy
environment:
- WORDPRESS_DB_HOST=mariadb
- 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}
- PHP_EXTENSIONS
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
entrypoint: /docker-entrypoint.sh
depends_on:
- db
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
deploy:
update_config:
failure_action: rollback
@ -26,15 +40,15 @@ services:
- "traefik.docker.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(`ch.${DOMAIN}`, `${DOMAIN}`)"
- "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"
mariadb:
image: "mariadb:10.5"
- coop-cloud.${STACK_NAME}.app.version=5.7.2-92fac7ac
db:
image: "mariadb:10.6"
volumes:
- "mariadb:/var/lib/mysql"
networks:
@ -47,22 +61,27 @@ services:
secrets:
- db_password
- db_root_password
deploy:
labels: ['coop-cloud.${STACK_NAME}.db.version=10.6-718cb856']
networks:
backend:
driver: overlay
proxy:
external: true
volumes:
mariadb:
wordpress_content:
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_ROOT_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

View File

@ -0,0 +1,5 @@
#!/bin/bash
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y msmtp && rm -rf /var/lib/apt/lists/*
echo "sendmail_path = /usr/bin/msmtp -t -i" > /usr/local/etc/php/conf.d/sendmail.ini

13
entrypoint.sh.tmpl Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
{{ if (env "PHP_EXTENSIONS") }}
docker-php-ext-install {{ env "PHP_EXTENSIONS" }}
{{ 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

15
msmtp.conf.tmpl Normal file
View File

@ -0,0 +1,15 @@
account default
host {{ env "SMTP_HOST" }}
from {{ env "MAIL_FROM" }}
user {{ env "MAIL_FROM" }}
port {{ env "SMTP_PORT" }}
{{ 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 }}

3
uploads.ini Normal file
View File

@ -0,0 +1,3 @@
file_uploads = On
upload_max_filesize = 256M
post_max_size = 256M