Compare commits

..

18 Commits

11 changed files with 37 additions and 55 deletions

BIN
.abra.sh.swp Normal file

Binary file not shown.

BIN
.compose.yml.swo Normal file

Binary file not shown.

BIN
.compose.yml.swp Normal file

Binary file not shown.

View File

@ -5,18 +5,14 @@ DOMAIN=wordpress.example.com
#EXTRA_DOMAINS=', `www.wordpress.example.com`' #EXTRA_DOMAINS=', `www.wordpress.example.com`'
LETS_ENCRYPT_ENV=production LETS_ENCRYPT_ENV=production
# Necessary for optional features, leave this alone:
COMPOSE_FILE="compose.yml"
## Additional extensions ## Additional extensions
#PHP_EXTENSIONS="calendar" #PHP_EXTENSIONS="calendar"
SECRET_DB_ROOT_PASSWORD_VERSION=v1 SECRET_DB_ROOT_PASSWORD_VERSION=v1
SECRET_DB_PASSWORD_VERSION=v1 SECRET_DB_PASSWORD_VERSION=v1
# SSH access # Mostly for compatibility with existing database dumps...
#COMPOSE_FILE="$COMPOSE_FILE:compose.ssh.yml" #WORDPRESS_TABLE_PREFIX=wp_
#SSH_PUBLIC_KEY=<your pubkey here>
# Multisite # Multisite
#WORDPRESS_CONFIG_EXTRA="\ #WORDPRESS_CONFIG_EXTRA="\
@ -24,25 +20,15 @@ SECRET_DB_PASSWORD_VERSION=v1
# define('WP_ALLOW_MULTISITE', true );" # define('WP_ALLOW_MULTISITE', true );"
# Multisite phase 2 (see README) # Multisite phase 2 (see README)
#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']);"
# 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 # Local SMTP relay
#COMPOSE_FILE="$COMPOSE_FILE:compose.mailrelay.yml" #COMPOSE_FILE="compose.yml:compose.mailrelay.yml"
#SMTP_HOST="postfix_relay_app" #SMTP_HOST="postfix_relay_app"
#MAIL_FROM="wordpress@example.com" #MAIL_FROM="wordpress@example.com"
# Remote SMTP relay # Remote SMTP relay
#COMPOSE_FILE="$COMPOSE_FILE:compose.smtp.yml" #COMPOSE_FILE="compose.yml:compose.mailrelay.yml:compose.smtp.yml"
#SMTP_HOST="mail.example.com" #SMTP_HOST="mail.example.com"
#MAIL_FROM="wordpress@example.com" #MAIL_FROM="wordpress@example.com"
#SMTP_PORT=587 #SMTP_PORT=587

View File

@ -32,10 +32,7 @@ Coöp Cloud + [Wordpress](https://wordpress.org) = 🥳
## Running WP-CLI ## Running WP-CLI
`abra app YOURAPPDOMAIN wp 'core check-update --major'` `abra app cmd YOURAPPDOMAIN app wp -- core check-update --major`
(the WP-CLI arguments need to be quoted, because of how `abra` handles
command-line arguments)
## Network (Multi-site) ## Network (Multi-site)

12
abra.sh
View File

@ -1,8 +1,16 @@
export PHP_UPLOADS_CONF_VERSION=v3 export PHP_UPLOADS_CONF_VERSION=v3
export ENTRYPOINT_CONF_VERSION=v2 export ENTRYPOINT_CONF_VERSION=v3
export ENTRYPOINT_MAILRELAY_CONF_VERSION=v1 export ENTRYPOINT_MAILRELAY_CONF_VERSION=v2
export MSMTP_CONF_VERSION=v3 export MSMTP_CONF_VERSION=v3
wp() {
/usr/local/bin/wp $@
}
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)
}
sub_wp() { sub_wp() {
CONTAINER=$(docker container ls -f "Name=${STACK_NAME}_app" --format '{{ .ID }}') CONTAINER=$(docker container ls -f "Name=${STACK_NAME}_app" --format '{{ .ID }}')
if [ -z "$CONTAINER" ]; then if [ -z "$CONTAINER" ]; then

View File

@ -6,6 +6,7 @@ services:
entrypoint: /docker-entrypoint.mailrelay.sh entrypoint: /docker-entrypoint.mailrelay.sh
environment: environment:
- SMTP_HOST=${SMTP_HOST} - SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT:-25}
- MAIL_FROM=${MAIL_FROM} - MAIL_FROM=${MAIL_FROM}
configs: configs:
- source: mstmp_conf - source: mstmp_conf

View File

@ -1,27 +0,0 @@
---
version: "3.8"
services:
ssh:
image: lscr.io/linuxserver/openssh-server
environment:
- PUID=33
- PGID=33
- PUBLIC_KEY=${SSH_PUBLIC_KEY}
- USER_NAME=wordpress
- PASSWORD_ACCESS=false
networks:
- proxy
deploy:
update_config:
failure_action: rollback
order: start-first
labels:
- "traefik.enable=true"
- "traefik.tcp.routers.${STACK_NAME}-ssh.rule=HostSNI(`*`)"
- "traefik.tcp.routers.${STACK_NAME}-ssh.entrypoints=gitea-ssh"
- "traefik.tcp.services.${STACK_NAME}-ssh.loadbalancer.server.port=2222"
networks:
proxy:
external: true

View File

@ -3,18 +3,20 @@ version: "3.8"
services: services:
app: app:
image: "wordpress:5.8.1" image: "wordpress:6.1.1"
volumes: volumes:
- "wordpress_content:/var/www/html/wp-content/" - "wordpress_content:/var/www/html/wp-content/"
networks: networks:
- backend - backend
- proxy - proxy
environment: environment:
- PAGER=more
- WORDPRESS_DB_HOST=db - WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress - WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD_FILE=/run/secrets/db_password - WORDPRESS_DB_PASSWORD_FILE=/run/secrets/db_password
- WORDPRESS_DB_NAME=wordpress - WORDPRESS_DB_NAME=wordpress
- WORDPRESS_CONFIG_EXTRA=${WORDPRESS_CONFIG_EXTRA} - WORDPRESS_CONFIG_EXTRA=${WORDPRESS_CONFIG_EXTRA}
- WORDPRESS_TABLE_PREFIX
- PHP_EXTENSIONS - PHP_EXTENSIONS
secrets: secrets:
- db_password - db_password
@ -48,10 +50,12 @@ services:
#- "traefik.http.routers.${STACK_NAME}.rule=HostRegexp(`{subdomain:.+}.${DOMAIN}`, `${DOMAIN}`)" #- "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}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "coop-cloud.${STACK_NAME}.version=1.0.0+5.8.1" - "coop-cloud.${STACK_NAME}.version=2.2.0+6.1.1"
- "backupbot.backup=true"
- "backupbot.backup.path=/var/www/html"
db: db:
image: "mariadb:10.6" image: "mariadb:10.8"
volumes: volumes:
- "mariadb:/var/lib/mysql" - "mariadb:/var/lib/mysql"
networks: networks:
@ -64,6 +68,14 @@ services:
secrets: secrets:
- db_password - db_password
- db_root_password - db_root_password
deploy:
labels:
backupbot.backup: "true"
backupbot.backup.path: "/tmp/dump.sql.gz"
backupbot.backup.pre-hook: "sh -c 'mysqldump --single-transaction -u root -p\"$$(cat /run/secrets/db_root_password)\" wordpress | gzip > /tmp/dump.sql.gz'"
backupbot.backup.post-hook: "rm -f /tmp/dump.sql.gz"
backupbot.restore: "true"
backupbot.restore.post-hook: "sh -c 'mysql -u root -p\"$$(cat /run/secrets/db_root_password)\" wordpress < /tmp/dbdump.sql && rm -f /tmp/dbdump.sql'"
networks: networks:
backend: backend:

View File

@ -3,3 +3,5 @@
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y msmtp && rm -rf /var/lib/apt/lists/* 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 echo "sendmail_path = /usr/bin/msmtp -t -i" > /usr/local/etc/php/conf.d/sendmail.ini
/docker-entrypoint.sh

View File

@ -4,6 +4,9 @@
docker-php-ext-install {{ env "PHP_EXTENSIONS" }} docker-php-ext-install {{ env "PHP_EXTENSIONS" }}
{{ end }} {{ 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 [ -n "$@" ]; then if [ -n "$@" ]; then
"$@" "$@"
fi fi