目录

Wordpress

安装

wordpress 配置

创建项目文件夹 mkdir -p ~/services/bits && cd ~/services/bits

创建配置文件 nano .env

内容为

  1. MYSQL_DATABASE=wordpress
  2. MYSQL_USER=wordpress
  3. MYSQL_PASSWORD=数据库密码
  4. MYSQL_ROOT_PASSWORD=数据库root密码

创建 docker copmose.yml 文件,包含 wordpress 容器 bits-wordpress 和数据库容器 bits-db

  1. services:
  2.   wordpress:
  3.   image: wordpress:latest
  4.   container_name: bits-wordpress
  5.   restart: unless-stopped
  6.   environment:
  7.   WORDPRESS_DB_HOST: db:3306
  8.   WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
  9.   WORDPRESS_DB_USER: ${MYSQL_USER}
  10.   WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
  11.   volumes:
  12. - ./wordpress:/var/www/html
  13.   networks:
  14. - web
  15. - bits-net-int
  16.  
  17.   db:
  18.   image: mariadb:11
  19.   container_name: bits-db
  20.   restart: unless-stopped
  21.   environment:
  22.   MARIADB_DATABASE: ${MYSQL_DATABASE}
  23.   MARIADB_USER: ${MYSQL_USER}
  24.   MARIADB_PASSWORD: ${MYSQL_PASSWORD}
  25.   MARIADB_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
  26.   volumes:
  27. - ./db:/var/lib/mysql
  28.   networks:
  29. - bits-net-int
  30.  
  31. networks:
  32.   web:
  33.   external: true
  34.   bits-net-int:
  35.   internal: true

运行

docker compose up -d

caddy 配置

nano ~/services/caddy/Caddyfile

在文件中添加

bits.xiaobenmao.win {
  reverse_proxy bits-wordpress:80
}

重启 caddy

cd ~/services/caddy && docker compose restart

大功告成

可以进入网页配置默认账号了

连接 Authentik

搜索安装 OpenID Connect Generic Client 插件并启用。

在 Authentik 管理页面中添加 provider 和 application

在 WordPress 设置 - OpenID Connect Client 里对应配置 login type、client ID、client secret、openID scope、login endpoint、userinfo endpoint、token validation endpoint、end session endpoint、JKWS URI、issuer、identity key、nickname key、email formatting。也可以通过 discovery URL 自动填入,只需将 Authentik provider 的 OpenID Configuration URL 粘贴进 Discovery URL 一栏即可。

插件

OpenID Connect Generic

用于连接 OpenID 认证服务。

欲想直接透过 OpenID 认证登录而不使用 WordPress 内置登录方式,可设置登录方式为 Auto Login - SSO。此时 WordPress 内置登录方式将完全被禁用,原生账号(含 admin)无法登录。

亦可在 WPCode Lite 中添加如下代码片段(务必将上方设置恢复为默认)以便使用 /wp-login.php?local_login=1 链接访问 WordPress 内置登录页面。

  1. add_action('login_init', function () {
  2. if (isset($_GET['local_login']) && $_GET['local_login'] === '1') {
  3. return;
  4. }
  5.  
  6. if (isset($_GET['force_redirect'])) {
  7. return;
  8. }
  9.  
  10. if (
  11. isset($_GET['code']) ||
  12. isset($_GET['state']) ||
  13. isset($_GET['login-error']) ||
  14. isset($_GET['message'])
  15. ) {
  16. return;
  17. }
  18.  
  19. $action = $_REQUEST['action'] ?? 'login';
  20.  
  21. if (in_array($action, ['logout', 'lostpassword', 'retrievepassword', 'rp', 'resetpass', 'postpass'], true)) {
  22. return;
  23. }
  24.  
  25. if ($action !== 'login') {
  26. return;
  27. }
  28.  
  29. wp_safe_redirect(add_query_arg('force_redirect', '1', wp_login_url()));
  30. });

W3 Total Cache

通过缓存提高网页性能。推荐配置页面缓存及延迟加载。除非数据库支持 Redis 或 Memcached,否则不建议配置数据库缓存。

WP Statistics

窥视每一位来访者。

记得勾选“绕过广告拦截器”~

WPCode Lite

可在任意地方执行任意代码。

Media File Renamer: Rename for better SEO (AI-Powered)

方便地重命名已上传的文件。