├── .art ├── logo.png ├── wordpress-18.2-dashboard.png ├── wordpress-18.2-landing.png ├── wordpress-18.2-login.png ├── wordpress-18.2-new-post.png ├── wordpress-18.2-webmin-dashboard.png ├── wordpress-18.2-webmin-landing-tklbam.png └── wordpress-18.2-webmin-login.png ├── .gitignore ├── Makefile ├── README.rst ├── changelog ├── conf.d └── main ├── overlay ├── etc │ ├── apache2 │ │ └── sites-available │ │ │ └── wordpress.conf │ └── cron.d │ │ └── wordpress-cron └── usr │ ├── lib │ └── inithooks │ │ ├── bin │ │ └── wordpress.py │ │ └── firstboot.d │ │ ├── 20regen-wordpress-secrets │ │ └── 40wordpress │ └── local │ └── bin │ └── turnkey-wp └── plan └── main /.art/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turnkeylinux-apps/wordpress/343b36c9a535c78a7b3c5197e3c5b868a876bb8e/.art/logo.png -------------------------------------------------------------------------------- /.art/wordpress-18.2-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turnkeylinux-apps/wordpress/343b36c9a535c78a7b3c5197e3c5b868a876bb8e/.art/wordpress-18.2-dashboard.png -------------------------------------------------------------------------------- /.art/wordpress-18.2-landing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turnkeylinux-apps/wordpress/343b36c9a535c78a7b3c5197e3c5b868a876bb8e/.art/wordpress-18.2-landing.png -------------------------------------------------------------------------------- /.art/wordpress-18.2-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turnkeylinux-apps/wordpress/343b36c9a535c78a7b3c5197e3c5b868a876bb8e/.art/wordpress-18.2-login.png -------------------------------------------------------------------------------- /.art/wordpress-18.2-new-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turnkeylinux-apps/wordpress/343b36c9a535c78a7b3c5197e3c5b868a876bb8e/.art/wordpress-18.2-new-post.png -------------------------------------------------------------------------------- /.art/wordpress-18.2-webmin-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turnkeylinux-apps/wordpress/343b36c9a535c78a7b3c5197e3c5b868a876bb8e/.art/wordpress-18.2-webmin-dashboard.png -------------------------------------------------------------------------------- /.art/wordpress-18.2-webmin-landing-tklbam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turnkeylinux-apps/wordpress/343b36c9a535c78a7b3c5197e3c5b868a876bb8e/.art/wordpress-18.2-webmin-landing-tklbam.png -------------------------------------------------------------------------------- /.art/wordpress-18.2-webmin-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turnkeylinux-apps/wordpress/343b36c9a535c78a7b3c5197e3c5b868a876bb8e/.art/wordpress-18.2-webmin-login.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | *.pyc 3 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | COMMON_CONF = apache-credit 2 | 3 | PHP_MEMORY_LIMIT = 128M 4 | PHP_UPLOAD_MAX_FILESIZE = 16M 5 | PHP_POST_MAX_SIZE = 48M 6 | 7 | CREDIT_ANCHORTEXT = WordPress Appliance 8 | define CREDIT_STYLE_EXTRA 9 | body.wp-admin #turnkey-credit, body#image #turnkey-credit, body#media-upload #turnkey-credit { 10 | display: none; 11 | } 12 | endef 13 | 14 | include $(FAB_PATH)/common/mk/turnkey/lamp.mk 15 | include $(FAB_PATH)/common/mk/turnkey.mk 16 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | WordPress - Blog Publishing Platform 2 | ==================================== 3 | 4 | `WordPress`_ is a state-of-the-art publishing platform with a focus on 5 | aesthetics, web standards, and usability. It is one of the worlds most 6 | popular blog publishing applications, includes tons of powerful core 7 | functionality, extendable via literally thousands of plugins, and 8 | supports full theming. 9 | 10 | This appliance includes all the standard features in `TurnKey Core`_, 11 | and on top of that: 12 | 13 | - WordPress configurations: 14 | 15 | - Installed from upstream source code to /var/www/wordpress 16 | - Integrated upgrade mechanism: get WordPress updates straight from 17 | WordPress' creator Automattic. 18 | - Uploading of media such as images, videos, etc. 19 | - Permalinks configuration supported through admin console 20 | (convenience) 21 | - Automatic minor updates are supported (convenience). 22 | - **Security note**: Major updates to wordpress may require 23 | supervision so they **ARE NOT** configured to install automatically. 24 | See upstream documentation for updating Wordpress major releases. 25 | 26 | - Landing page provides links to `WordPress plugin search`_, plus a number of 27 | useful and popular Wordpress plugins (none pre-installed): 28 | 29 | - `Yost SEO`_: Optimizes your WordPress blog for search engines and XML 30 | sitemaps. 31 | - `NextGEN Gallery`_: Easy to use image gallery with thumbnail & slideshow 32 | options. 33 | - `JetPack by WordPress.com`_: Jetpack adds powerful features previously 34 | only available to WordPress.com users including customization, 35 | traffic, mobile, content, and performance tools. 36 | - `WP Super Cache`_: Accelerates your blog by serving 99% of your 37 | visitors via static HTML files. 38 | - `Social Media Share Buttons & Icons`_: Promote your content by adding 39 | links to social sharing and bookmarking sites. 40 | - `Simple Tags`_: automatically adds tags and related posts to your 41 | content. 42 | - `BackupWordPress`_: easily backup your core WordPress tables. 43 | - `Google Analytics Dashboard for WordPress`_: track visitors, AdSense 44 | clicks, outgoing links, and search queries. 45 | - `WP-Polls`_: Adds an easily customizable AJAX poll system to your 46 | blog. 47 | - `WP-PageNavi`_: Adds more advanced paging navigation. 48 | - `Ozh admin dropdown menu`_: Creates a drop down menu with all admin 49 | links. 50 | - `Contact Form 7`_: Customizable contact forms supporting AJAX, 51 | CAPTCHA and Akismet integration. 52 | - `Seriously Simple Podcasting`_: Simple Podcasting from your WordPress 53 | site. 54 | 55 | - SSL support out of the box. 56 | - `Adminer`_ administration frontend for MySQL (listening on port 57 | 12322 - uses SSL). 58 | - Postfix MTA (bound to localhost) to allow sending of email (e.g., 59 | password recovery). 60 | - Webmin modules for configuring Apache2, PHP, MySQL (MariaDB) and Postfix. 61 | 62 | See the `WordPress docs`_ for further details (including multisite 63 | howto). 64 | 65 | Credentials *(passwords set at first boot)* 66 | ------------------------------------------- 67 | 68 | - Webmin, SSH, MySQL: username **root** 69 | - Adminer: username **adminer** 70 | - Wordpress: username **admin** 71 | 72 | 73 | .. _WordPress: https://wordpress.org 74 | .. _TurnKey Core: https://www.turnkeylinux.org/core 75 | .. _WordPress plugin search: https://wordpress.org/plugins/ 76 | .. _Yost SEO: https://wordpress.org/plugins/wordpress-seo/ 77 | .. _NextGEN Gallery: https://wordpress.org/plugins/nextgen-gallery/ 78 | .. _JetPack by WordPress.com: https://wordpress.org/plugins/jetpack/ 79 | .. _WP Super Cache: https://wordpress.org/plugins/wp-super-cache/ 80 | .. _Social Media Share Buttons & Icons: https://wordpress.org/plugins/ultimate-social-media-icons/ 81 | .. _Simple Tags: https://wordpress.org/plugins/simple-tags/ 82 | .. _BackupWordPress: https://wordpress.org/plugins/backupwordpress/ 83 | .. _Google Analytics Dashboard for WordPress: https://wordpress.org/plugins/google-analytics-for-wordpress/ 84 | .. _WP-Polls: https://wordpress.org/plugins/wp-polls/ 85 | .. _WP-PageNavi: http://wordpress.org/plugins/wp-pagenavi/ 86 | .. _Ozh admin dropdown menu: https://wordpress.org/plugins/ozh-admin-drop-down-menu/ 87 | .. _Contact Form 7: https://wordpress.org/plugins/contact-form-7/ 88 | .. _Seriously Simple Podcasting: https://wordpress.org/plugins/seriously-simple-podcasting/ 89 | .. _Adminer: https://www.adminer.org/ 90 | .. _WordPress docs: https://www.turnkeylinux.org/docs/wordpress 91 | -------------------------------------------------------------------------------- /changelog: -------------------------------------------------------------------------------- 1 | turnkey-wordpress-18.2 (1) turnkey; urgency=low 2 | 3 | * Update WordPress to latest upstream - v6.6.1. 4 | 5 | * Fix wp admin login - set email and password properly on firstboot - closes 6 | #1976. 7 | [Andrew Yu ] 8 | 9 | -- Jeremy Davis Thu, 15 Aug 2024 22:33:08 +0000 10 | 11 | turnkey-wordpress-18.1 (1) turnkey; urgency=low 12 | 13 | * Update WordPress to latest upstream - v6.5.4. 14 | 15 | * Require WordPress domain to be set - resolves some weird asset loading 16 | problems. 17 | 18 | * Improve turnkey-wp wp-cli wrapper/helper script to resolve some edge case 19 | failures. 20 | 21 | * Rebuild for v18.1 - including more recent v18.0 common bugfixes & latest 22 | Debian packages. 23 | 24 | * Configuration console (confconsole) - v2.1.6: 25 | - Bugfix broken DNS-01 Let's Encrypt challenge - closes #1876 & #1895. 26 | Fixed in v2.1.5. 27 | - Let's Encrypt/Dehydrated - bugfix cron failure - closes #1962. 28 | - General dehydrated-wrapper code cleanup - now passes shellcheck 29 | 30 | * Ensure hashfile includes URL to public key - closes #1864. 31 | 32 | * Web management console (webmin): 33 | - Include webmin-logviewer module by default - closes #1866. 34 | - Upgraded webmin to v2.105. 35 | - Replace webmin-shell with webmin-xterm module by default - closes #1904. 36 | 37 | * Includes new 'tkl-upgrade-php' helper script - to allow easy update/change 38 | of PHP version - closes #1892. 39 | [Marcos Méndez @ POPSOLUTIONS ] 40 | 41 | * DEV: Add support for setting max_execution_time & max_input_vars in 42 | php.ini via appliance Makefile (PHP_MAX_EXECUTION_TIME & 43 | PHP_MAX_INPUT_VARS). 44 | 45 | -- Jeremy Davis Sat, 06 Jul 2024 13:13:55 +0000 46 | 47 | turnkey-wordpress-18.0 (1) turnkey; urgency=low 48 | 49 | * Ensure hashfile includes URL to public key - closes #1864. 50 | 51 | * Include webmin-logviewer module by default - closes #1866. 52 | 53 | * Updated to latest upstream WordPress - v6.3.2. 54 | [ Stefan Davis ] 55 | 56 | * Debian default PHP updated to v8.2. 57 | 58 | * Use MariaDB (MySQL replacement) v10.11.3 (from debian repos). 59 | 60 | * Upgraded base distribution to Debian 12.x/Bookworm. 61 | 62 | * Configuration console (confconsole): 63 | - Support for DNS-01 Let's Encrypt challenges. 64 | [ Oleh Dmytrychenko github: @NitrogenUA ] 65 | - Support for getting Let's Encrypt cert via IPv6 - closes #1785. 66 | - Refactor network interface code to ensure that it works as expected and 67 | supports more possible network config (e.g. hotplug interfaces & wifi). 68 | - Show error message rather than stacktrace when window resized to 69 | incompatable resolution - closes #1609. 70 | [ Stefan Davis ] 71 | - Bugfix exception when quitting configuration of mail relay. 72 | [ Oleh Dmytrychenko github: @NitrogenUA ] 73 | - Improve code quality: implement typing, fstrings and make (mostly) PEP8 74 | compliant. 75 | [Stefan Davis & Jeremy Davis 76 | 77 | * Firstboot Initialization (inithooks): 78 | - Refactor start up (now hooks into getty process, rather than having it's 79 | own service). 80 | [ Stefan Davis ] 81 | - Refactor firstboot.d/01ipconfig (and 09hostname) to ensure that hostname 82 | is included in dhcp info when set via inithooks. 83 | - Package turnkey-make-ssl-cert script (from common overlay - now packaged 84 | as turnkey-ssl). Refactor relevant scripts to leverage turnkey-ssl. 85 | - Refactor run script - use bashisms and general tidying. 86 | - Show blacklisted password characters more nicely. 87 | - Misc packaging changes/improvements. 88 | - Support returning output from MySQL - i.e. support 'SELECT'. (Only 89 | applies to apps that include MySQL/MariaDB). 90 | 91 | * Web management console (webmin): 92 | - Upgraded webmin to v2.0.21. 93 | - Removed stunnel reverse proxy (Webmin hosted directly now). 94 | - Ensure that Webmin uses HTTPS with default cert 95 | (/etc/ssl/private/cert.pem). 96 | - Disabled Webmin Let's Encrypt (for now). 97 | 98 | * Web shell (shellinabox): 99 | - Completely removed in v18.0 (Webmin now has a proper interactive shell). 100 | 101 | * Backup (tklbam): 102 | - Ported dependencies to Debian Bookworm; otherwise unchanged. 103 | 104 | * Security hardening & improvements: 105 | - Generate and use new TurnKey Bookworm keys. 106 | - Automate (and require) default pinning for packages from Debian 107 | backports. Also support non-free backports. 108 | 109 | * IPv6 support: 110 | - Adminer (only on LAMP based apps) listen on IPv6. 111 | - Nginx/NodeJS (NodeJS based apps only) listen on IPv6. 112 | 113 | * Misc bugfixes & feature implementations: 114 | - Remove rsyslog package (systemd journal now all that's needed). 115 | - Include zstd compression support. 116 | - Enable new non-free-firmware apt repo by default. 117 | - Improve turnkey-artisan so that it works reliably in cron jobs (only 118 | Laravel based LAMP apps). 119 | 120 | * Include and enable mod_evasive and mod_security2 by default in Apache. 121 | [ Stefan Davis ] 122 | 123 | -- Jeremy Davis Fri, 03 Nov 2023 04:49:07 +0000 124 | 125 | turnkey-wordpress-17.1 (1) turnkey; urgency=low 126 | 127 | * Updated all Debian packages to latest. 128 | [ autopatched by buildtasks ] 129 | 130 | * Patched bugfix release. Closes #1734. 131 | [ autopatched by buildtasks ] 132 | 133 | -- Jeremy Davis Fri, 11 Nov 2022 02:19:00 +0000 134 | 135 | turnkey-wordpress-17.0 (1) turnkey; urgency=low 136 | 137 | * Updating wordpress appliance and its dependencies with tkldev to v17.0. 138 | 139 | * Bumping php version to 7.4 debian default in conf.d/main. 140 | 141 | * Bumping wp-cli release version to v2.6.0 . 142 | 143 | * Updating and removing outdated packages tinymce and php-gettext in 144 | plan/main file. 145 | 146 | * Note: Please refer to turnkey-core's 17.0 changelog for changes common to 147 | all appliances. Here we only describe changes specific to this appliance. 148 | 149 | -- Mattie Darden Wed, 12 Oct 2022 12:40:06 -0400 150 | 151 | turnkey-wordpress-16.1 (1) turnkey; urgency=low 152 | 153 | * Update Wordpress to latest upstream version - 5.6.1. 154 | 155 | * Do most of install via 'wp' CLI tool (aka wp-cli; using 'turnkey-wp' 156 | wrapper script). Still uses our custom php install script for final step 157 | as wp-cli requires a URL. Closes #1437. 158 | 159 | * Include additional (optional/recommended) PHP modules (zip & imagick). 160 | Closes #1466. 161 | 162 | * Reduce cron job interval to 5 minutes - closes #1323. 163 | 164 | * Note: Please refer to turnkey-core's 16.1 changelog for changes common to 165 | all appliances. Here we only describe changes specific to this appliance. 166 | 167 | -- Jeremy Davis Wed, 17 Feb 2021 11:35:04 +1100 168 | 169 | turnkey-wordpress-16.0 (1) turnkey; urgency=low 170 | 171 | * Update Wordpress to latest upstream version - 5.4. 172 | 173 | * Update WordPress inithook to python3. 174 | [ Stefan Davis ] 175 | 176 | * Include wp-cli tool. Closes #293. 177 | 178 | * Include 'turnkey-wp' convenience script (leverages runuser to run as 179 | www-data and sets --path=/var/www/wordpress). 180 | 181 | * Leverage wp-cli (via turnkey-wp) to regenerate salts on firstboot. 182 | 183 | * Enable WP_CACHE by default. 184 | 185 | * Exclude default cache location (/var/www/wordpress/wp-content/cache) from 186 | TKLBAM profile. Closes #1411. 187 | 188 | * Note: Please refer to turnkey-core's v16.0 changelog for changes common to 189 | all appliances. Here we only describe changes specific to this appliance. 190 | 191 | -- Jeremy Davis Thu, 16 Apr 2020 14:16:10 +1000 192 | 193 | turnkey-wordpress-15.3 (1) turnkey; urgency=low 194 | 195 | * Update WordPress to latest upstream version - 5.2. 196 | 197 | * Fixed broken cronjob - closes #1322. 198 | [ Stefan Davis ] 199 | 200 | * Updated landing page and README WordPress plugin links. 201 | 202 | -- Jeremy Davis Thu, 09 May 2019 10:25:52 +1000 203 | 204 | turnkey-wordpress-15.2 (1) turnkey; urgency=low 205 | 206 | * Rebuild to resolve inadvertent removal of mariadb during sec-updates 207 | - part of #1246. 208 | [ Jeremy Davis ] 209 | 210 | * Fixed cronjob 211 | 212 | -- Stefan Davis Mon, 29 Apr 2019 00:17:06 +0000 213 | 214 | turnkey-wordpress-15.1 (1) turnkey; urgency=low 215 | 216 | * Upgraded to lastest WordPress version (v4.9.8). 217 | 218 | -- Jeremy Davis Thu, 18 Oct 2018 13:16:12 +1100 219 | 220 | turnkey-wordpress-15.0 (1) turnkey; urgency=low 221 | 222 | * Latest version of WordPress 223 | 224 | * conf.d script optimizations. 225 | [ Vlad Kuzmenko ] 226 | 227 | * refactored wp-config.php to closer match wp-config-sample.php (closes 228 | #1109). 229 | [ Jeremy Davis ] 230 | 231 | * Install Adminer directly from stretch/main repo 232 | 233 | * Provide "adminer" root-like user for Adminer MySQL access 234 | 235 | * Replace MySQL with MariaDB (drop-in MySQL replacement) 236 | 237 | * Updated version of mysqltuner script 238 | 239 | * Includes PHP7.0 (installed from Debian repos) 240 | 241 | * Updated PHP default settings 242 | 243 | * Remove phpsh (no longer maintained) 244 | 245 | * Note: Please refer to turnkey-core's changelog for changes common to all 246 | appliances. Here we only describe changes specific to this appliance. 247 | 248 | -- Stefan Davis Fri, 15 Jun 2018 17:26:35 +1000 249 | 250 | turnkey-wordpress-14.2 (1) turnkey; urgency=low 251 | 252 | * Upgraded WordPress to latest upstream version (v4.7.4). 253 | 254 | * Install "pristine" WordPress (no default plugins). Previous default plugins 255 | are now recommendations on landing page [closes #664]. 256 | 257 | * Disabled WP-cron; substitute with Linux cron [closes #545]. 258 | 259 | * Updated Adminer to 4.2.5 260 | 261 | * Installed security updates. 262 | 263 | * Note: Please refer to turnkey-core's changelog for changes common to all 264 | appliances. Here we only describe changes specific to this appliance. 265 | 266 | -- Jeremy Davis Wed, 19 Apr 2017 13:12:14 +1000 267 | 268 | turnkey-wordpress-14.1 (1) turnkey; urgency=low 269 | 270 | * WordPress: 271 | 272 | - Latest upstream version of WordPress and plugins 273 | 274 | * Note: Please refer to turnkey-core's changelog for changes common to all 275 | appliances. Here we only describe changes specific to this appliance. 276 | 277 | -- Stefan Davis Wed, 13 Jan 2016 04:15:09 +1100 278 | 279 | turnkey-wordpress-14.0 (1) turnkey; urgency=low 280 | 281 | * WordPress: 282 | 283 | - Latest upstream version of WordPress and plugins 284 | - Increased PHP upload and max_posts size limits 285 | - Made sure all the plugins are downloaded as the latest (stable)upstream version 286 | - WordPress can now update itself and install plugins without asking for FTP credentials 287 | 288 | * Added plugins 289 | 290 | jetpack (new solution for wp.com services, replaces stats) 291 | backupwordpress (replaces wp-db-backup) 292 | seriously-simple-podcasting (replaces podpress) 293 | 294 | * Removed plugins 295 | 296 | podpress (removed from WordPress plugin repo) 297 | socialable (no active maintenance) 298 | stats (is now merged into jetpack) 299 | wp-db-backup (not compatible with WordPress 4) 300 | 301 | * Replaced phpMyAdmin with Adminer 302 | 303 | * Hardened default SSL settings 304 | 305 | * Note: Please refer to turnkey-core's changelog for changes common to all 306 | appliances. Here we only describe changes specific to this appliance. 307 | 308 | -- Jeroen Peters Wed, 13 May 2015 15:00:00 +0100 309 | 310 | turnkey-wordpress-13.0 (1) turnkey; urgency=low 311 | 312 | * WordPress: 313 | 314 | - Latest upstream version of WordPress and plugins (except for those 315 | specified below). 316 | - Increase PHP memory limit [#19]. 317 | 318 | * phpMyAdmin: 319 | 320 | - Configured to allow users preferences stored in database. 321 | - Specified blowfish_secret and regeneration on firstboot (security). 322 | 323 | * Upstream source component versions: 324 | 325 | wp-super-cache 1.2 326 | wp-pagenavi 2.83 327 | wp-db-backup 2.2.3 328 | simple-tags 2.2 329 | sociable 4.3.3 330 | contact-form 7.3.3.3 331 | 332 | * Note: Please refer to turnkey-core's changelog for changes common to all 333 | appliances. Here we only describe changes specific to this appliance. 334 | 335 | -- Alon Swartz Fri, 11 Oct 2013 11:35:02 +0300 336 | 337 | turnkey-wordpress-12.1 (1) turnkey; urgency=low 338 | 339 | * WordPress: 340 | 341 | - Latest wordpress version and plugins will be installed at build 342 | time, except for those specified below. 343 | 344 | - Plugin updates: 345 | - Removed akismet (bundled with wordpress installation) 346 | - Removed maxblogpress-ping-optimizer (deprecated, wp has native support) 347 | 348 | * Added phpsh (interactive shell for PHP) and php5-cli (generically useful). 349 | 350 | * Upstream source component versions: 351 | 352 | wp-super-cache 1.2 353 | wp-pagenavi 2.83 354 | wp-db-backup 2.2.3 355 | simple-tags 2.2 356 | sociable 4.3.3 357 | contact-form 7.3.3.3 358 | podpress 8.8.10.13 359 | 360 | * Note: Please refer to turnkey-core's changelog for changes common to all 361 | appliances. Here we only describe changes specific to this appliance. 362 | 363 | -- Alon Swartz Fri, 05 Apr 2013 08:00:00 +0200 364 | 365 | turnkey-wordpress-12.0 (1) turnkey; urgency=low 366 | 367 | * WordPress: 368 | 369 | - Upgraded to latest upstream archive. 370 | - Upgraded all plugins to latest upstream versions. 371 | - Added wordpress-seo plugin (replaces all-in-one-seo-pack and 372 | google-sitemap-generator). 373 | - Added Multi-Site HowTo link to wp-config (convenience). 374 | - Added "stop editing" line to wp-config (closes LP#973554). 375 | 376 | * Major component versions 377 | 378 | wordpress 3.4.1 (upstream archive) 379 | apache2 2.2.16-6+squeeze7 380 | mysql-server 5.1.63-0+squeeze1 381 | phpmyadmin 4:3.3.7-7 382 | 383 | * Note: Please refer to turnkey-core's changelog for changes common to all 384 | appliances. Here we only describe changes specific to this appliance. 385 | 386 | -- Alon Swartz Wed, 01 Aug 2012 08:00:00 +0200 387 | 388 | turnkey-wordpress-11.3 (1) turnkey; urgency=low 389 | 390 | * Installed security updates. 391 | * Enabled etckeeper garbage collection by default. 392 | * Upgraded to latest inithooks version (adhoc re-initialization via turnkey-init) 393 | 394 | -- Alon Swartz Mon, 05 Dec 2011 10:48:44 +0000 395 | 396 | turnkey-wordpress-11.2 (1) turnkey; urgency=low 397 | 398 | * Installed security updates. 399 | * Added HubDNS package and firstboot configuration. 400 | 401 | -- Alon Swartz Fri, 15 Jul 2011 07:47:08 +0000 402 | 403 | turnkey-wordpress-11.1 (1) turnkey; urgency=low 404 | 405 | * WordPress: 406 | 407 | - Added random salts (security). 408 | - Upgraded all plugins to latest versions. 409 | - Removed cforms plugin (licensing issues). 410 | 411 | * Set Wordpress admin email and password on firstboot (convenience, security). 412 | 413 | * Set MySQL root password on firstboot (convenience, security). 414 | 415 | * Force MySQL to use Unicode/UTF8. 416 | 417 | * Added php-xcache PHP opcode cacher / optimizer (performance). 418 | 419 | * Set postfix MTA myhostname to localhost (bugfix). 420 | 421 | * Enabled tracking in phpMyAdmin. 422 | 423 | * Major component versions: 424 | 425 | wordpress 3.0.3 (upstream tarball) 426 | mysql-server 5.1.41-3ubuntu12.8 427 | apache2 2.2.14-5ubuntu8.4 428 | phpmyadmin 4:3.3.2-1 429 | 430 | * Note: Please refer to turnkey-core's changelog for changes common to all 431 | appliances. Here we only describe changes specific to this appliance. 432 | 433 | -- Alon Swartz Sun, 19 Dec 2010 15:01:05 +0200 434 | 435 | turnkey-wordpress-2009.10 (2) hardy; urgency=low 436 | 437 | * Installed all security updates (see manifest for package versions). 438 | 439 | * Install security updates on firstboot (except when running live). 440 | 441 | * Trick webmin into not checking for upgrades (managed by apt). 442 | 443 | * Updated di-live mysql mechanism and secret regeneration. 444 | 445 | * Included latest version of inithooks and updated scripts. 446 | 447 | * Included wget as per common request. 448 | 449 | -- Alon Swartz Mon, 29 Mar 2010 09:02:11 +0200 450 | 451 | turnkey-wordpress-2009.10 (1) hardy; urgency=low 452 | 453 | * Upgraded to Wordpress 2.8.4 454 | 455 | - Using upstream tarball instead of deb package as it now includes an 456 | integrated upgrade mechanism. 457 | 458 | * added useful/popular wordpress plugins: 459 | 460 | - All in One SEO Pack 461 | - Google XML Sitemaps 462 | - NextGEN Gallery 463 | - WordPress.com Stats 464 | - WP Super Cache 465 | - Contact Form 7 466 | - Sociable 467 | - Viper's Video Quicktags 468 | - Simple Tags 469 | - WP-DB-Backup 470 | - Google Analytics for WordPress 471 | - WP-Polls 472 | - podPress 473 | - WP-PageNavi 474 | - OZH admin dropdown menu 475 | - Cforms 476 | - MaxBlogPress ping optimizer 477 | 478 | * phpMyAdmin improvements: 479 | 480 | - Added pmadb (linked tables) advanced features to phpMyAdmin (LP#426303). 481 | - Pinned phpMyAdmin to update directly from Debian (security). 482 | 483 | * di-live (installer) MySQL component 484 | 485 | - Added support for complex passwords (LP#416515). 486 | - Added CLI options (user/pass/query/chroot). 487 | 488 | * Bugfix: Removed build systems hostname from MySQL user table. 489 | 490 | * Regenerates all secrets during installation / firstboot (security). 491 | 492 | * Major component versions: 493 | 494 | wordpress 2.8.4 (upstream tarball) 495 | mysql-server 5.0.51a-3ubuntu5.4 496 | apache2 2.2.8-1ubuntu0.11 497 | phpmyadmin 2.11.8.1-5+lenny1 498 | 499 | * Note: Please refer to turnkey-core's changelog for changes common to all 500 | appliances. Here we only describe changes specific to this appliance. 501 | 502 | -- Alon Swartz Tue, 29 Sep 2009 15:39:41 +0200 503 | 504 | turnkey-wordpress-2009.03 (1) hardy; urgency=low 505 | 506 | * initial public release of TurnKey Linux WordPress 507 | 508 | * SSL support out of the box 509 | 510 | * wordpress related 511 | 512 | - uploading of media (images, videos, etc.) supported 513 | - permalinks configuration supported through admin console (convenience) 514 | - automatic plugin upgrades supported (convenience) 515 | - fixed password reset link bug (Debian #519798) 516 | - auto-install security updates directly from Debian stable (security) 517 | - suppress annoying new version messages (updated directly from Debian) 518 | - wp_siteurl and wp_home are set automatically using HTTP_HOST 519 | - welcome post includes useful information and login credentials 520 | 521 | * regenerate WP secret key and mysql password during installation (security) 522 | 523 | * mysql-related 524 | 525 | - includes PhpMyAdmin (listening on port 12322 - uses SSL) 526 | - set empty mysql root password in live/demo mode (for convenience) 527 | - support configuring mysql root password during installation 528 | 529 | * includes postfix MTA (bound to localhost) for sending of email from 530 | wordpress (e.g., password recovery). Also includes webmin postfix 531 | module for convenience. 532 | 533 | * major component versions 534 | 535 | wordpress 2.5.1-11 536 | mysql-server 5.0.51a-3ubuntu5.4 537 | apache2 2.2.8-1ubuntu0.5 538 | phpmyadmin 2.11.8.1-5 539 | 540 | * note: please refer to turnkey-core's changelog for changes common to all 541 | appliances. Here we only describe changes specific to this appliance. 542 | 543 | -- Alon Swartz Thu, 12 Mar 2009 10:51:40 +0200 544 | -------------------------------------------------------------------------------- /conf.d/main: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ex 2 | 3 | WPROOT=/var/www/wordpress 4 | USER=www-data 5 | 6 | DB_USER=wordpress 7 | DB_NAME=wordpress 8 | DB_PREFIX=wp_ 9 | #DB_PASS=$(mcookie) 10 | DB_PASS=turnkey 11 | 12 | WP_URL="http://www.example.com" 13 | ADMIN_USER="admin" 14 | ADMIN_PASS=turnkey 15 | ADMIN_MAIL=admin@example.com 16 | 17 | # update php conf - see Makefile for others 18 | sed -i "s|^allow_url_fopen.*|allow_url_fopen = On|" /etc/php/?.?/apache2/php.ini 19 | 20 | # Install wp-cli commandline tool 21 | wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /usr/local/bin/wp 22 | chmod +x /usr/local/bin/wp 23 | wget https://raw.githubusercontent.com/wp-cli/wp-cli/v2.6.0/utils/wp-completion.bash -O ~/.bashrc.d/wp-completion 24 | chmod +x ~/.bashrc.d/wp-completion 25 | 26 | # create the database and user 27 | service mysql start 28 | mysqladmin create $DB_NAME 29 | mysql --batch --execute "grant all privileges on $DB_NAME.* to $DB_USER@localhost identified by '$DB_PASS'; flush privileges;" 30 | 31 | # install wordpress 32 | mkdir -p $WPROOT 33 | chown -R $USER:$USER $WPROOT 34 | turnkey-wp core download --path=$WPROOT 35 | cd $WPROOT 36 | turnkey-wp config create --dbname="$DB_NAME" \ 37 | --dbuser="$DB_NAME" \ 38 | --dbpass="$DB_PASS" \ 39 | --dbprefix="$DB_PREFIX" 40 | turnkey-wp core install --url="$WP_URL" \ 41 | --title="TurnKey Linux" \ 42 | --admin_user="$ADMIN_USER" \ 43 | --admin_password="$ADMIN_PASS" \ 44 | --admin_email="$ADMIN_MAIL" 45 | 46 | cat >> $WPROOT/wp-config.php < 76 |
  • Yoast SEO: Optimizes your WordPress blog for search engines and XML sitemaps.
  • 77 |
  • NextGEN Gallery: Easy to use image gallery with thumbnail & slideshow options.
  • 78 |
  • JetPack by WordPress.com: Jetpack adds powerful features previously only available to WordPress.com users including customization, traffic, mobile, content, and performance tools.
  • 79 |
  • WP Super Cache: Accelerates your blog by serving 99% of your visitors via static HTML files.
  • 80 |
  • Social Media Share Buttons & Icons: Promote your content by adding links to social sharing and bookmarking sites.
  • 81 |
  • Simple Tags: automatically adds tags and related posts to your content.
  • 82 |
  • BackupWordPress: easily backup your core WordPress tables.
  • 83 |
  • Google Analytics Dashboard for WordPress: track visitors, AdSense clicks, outgoing links, and search queries.
  • 84 |
  • WP-Polls: Adds an easily customizable AJAX poll system to your blog.
  • 85 |
  • WP-PageNavi: Adds more advanced paging navigation.
  • 86 |
  • Ozh admin dropdown menu: Creates a drop down menu with all admin links.
  • 87 |
  • Contact Form 7: Customizable contact forms supporting AJAX, CAPTCHA and Akismet integration.
  • 88 |
  • Seriously Simple Podcasting: Simple Podcasting from your WordPress site.
  • 89 | ' WHERE ID = '1'; 90 | EOF 91 | 92 | turnkey-wp plugin update --all 93 | 94 | # fix permissions for updates 95 | chown -R www-data:www-data $WPROOT 96 | find $WPROOT -type d -exec chmod 755 {} \; 97 | find $WPROOT -type f -exec chmod 644 {} \; 98 | 99 | # stop mysql server 100 | service mysql stop 101 | -------------------------------------------------------------------------------- /overlay/etc/apache2/sites-available/wordpress.conf: -------------------------------------------------------------------------------- 1 | ServerName localhost 2 | 3 | 4 | UseCanonicalName Off 5 | ServerAdmin webmaster@localhost 6 | DocumentRoot /var/www/wordpress 7 | 8 | 9 | 10 | SSLEngine on 11 | ServerAdmin webmaster@localhost 12 | DocumentRoot /var/www/wordpress 13 | 14 | 15 | 16 | Options +FollowSymLinks 17 | Options -Indexes 18 | AllowOverride All 19 | order allow,deny 20 | allow from all 21 | 22 | -------------------------------------------------------------------------------- /overlay/etc/cron.d/wordpress-cron: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | */5 * * * * www-data /usr/bin/curl -A 'Mozilla/5.0' 'http://127.0.0.1/wp-cron.php' >/dev/null 2>&1 3 | -------------------------------------------------------------------------------- /overlay/usr/lib/inithooks/bin/wordpress.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | """Set Wordpress admin password and email 3 | 4 | Option: 5 | --pass= unless provided, will ask interactively 6 | --email= unless provided, will ask interactively 7 | --domain= unless provided, will ask interactively 8 | """ 9 | 10 | import sys 11 | import getopt 12 | import hashlib 13 | from typing import Optional, NoReturn 14 | import subprocess 15 | 16 | import inithooks_cache 17 | from libinithooks.dialog_wrapper import Dialog 18 | from mysqlconf import MySQL 19 | 20 | 21 | DEFAULT_DOMAIN = 'http://www.example.com' 22 | 23 | 24 | def usage(s: Optional[str] | getopt.GetoptError = None) -> NoReturn: 25 | std_output = sys.stdout 26 | exit_code = 0 27 | if s: 28 | exit_code = 1 29 | std_output = sys.stderr 30 | print("Error:", s, file=std_output) 31 | print(f"Syntax: {sys.argv[0]} [options]", file=sys.stderr) 32 | print(__doc__, file=std_output) 33 | sys.exit(exit_code) 34 | 35 | 36 | def main(): 37 | opts: list[tuple[str, str]] = [] 38 | 39 | try: 40 | opts, args = getopt.gnu_getopt(sys.argv[1:], "h", 41 | ['help', 'pass=', 'email=', 'domain=']) 42 | except getopt.GetoptError as e: 43 | usage(e) 44 | 45 | password = "" 46 | email = "" 47 | domain = "" 48 | for opt, val in opts: 49 | if opt in ('-h', '--help'): 50 | usage() 51 | elif opt == '--pass': 52 | password = val 53 | elif opt == '--email': 54 | email = val 55 | elif opt == '--domain': 56 | domain = val 57 | 58 | d = Dialog('TurnKey Linux - Configuration') 59 | if 'd' not in locals(): 60 | d = Dialog('TurnKey Linux - First boot configuration') 61 | 62 | if not password: 63 | password = d.get_password( 64 | "Wordpress Password", 65 | "Enter new password for the Wordpress 'admin' account.") 66 | 67 | if not email: 68 | email = d.get_email( 69 | "Wordpress Email", 70 | "Please enter email address for the Wordpress 'admin' account.", 71 | "admin@example.com") 72 | 73 | inithooks_cache.write('APP_EMAIL', email) 74 | 75 | if not domain: 76 | domain = d.get_input( 77 | 'WordPress domain', 78 | "Enter domain to serve WordPress, if no protocol prefix, will" 79 | " assume https.", 80 | DEFAULT_DOMAIN) 81 | 82 | if not (domain.startswith("http://") or domain.startswith("https://")): 83 | domain = f"https://{domain}" 84 | domain = domain.rstrip('/') 85 | old_domain = inithooks_cache.read('APP_DOMAIN') 86 | if not old_domain: 87 | old_domain = DEFAULT_DOMAIN 88 | 89 | subprocess.run(['/usr/local/bin/turnkey-wp', 'search-replace', 90 | old_domain, domain]) 91 | 92 | inithooks_cache.write('APP_DOMAIN', domain) 93 | 94 | assert password is not None 95 | hashpass = hashlib.md5(password.encode('utf8')).hexdigest() 96 | 97 | m = MySQL() 98 | m.execute('UPDATE wordpress.wp_users SET user_pass=%s WHERE user_nicename="admin";', (hashpass,)) 99 | m.execute('UPDATE wordpress.wp_users SET user_email=%s WHERE user_nicename="admin";', (email,)) 100 | 101 | 102 | if __name__ == "__main__": 103 | main() 104 | -------------------------------------------------------------------------------- /overlay/usr/lib/inithooks/firstboot.d/20regen-wordpress-secrets: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # regenerate wordpress secrets and mysql password 3 | 4 | . /etc/default/inithooks 5 | 6 | USER=www-data 7 | WEBROOT=/var/www/wordpress 8 | CONF=$WEBROOT/wp-config.php 9 | 10 | updateconf() { 11 | sed -i "\|^define(.*'$1'|s|,.*|, '$2');|" $CONF 12 | } 13 | 14 | runuser $USER -s /bin/bash -c "wp --path=$WEBROOT config shuffle-salts" 15 | 16 | PASSWORD=$(mcookie) 17 | updateconf DB_PASSWORD "$PASSWORD" 18 | $INITHOOKS_PATH/bin/mysqlconf.py --user=wordpress --pass="$PASSWORD" 19 | -------------------------------------------------------------------------------- /overlay/usr/lib/inithooks/firstboot.d/40wordpress: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # set wordpress admin password and email 3 | 4 | . /etc/default/inithooks 5 | 6 | # shellcheck source=/dev/null 7 | [[ -e $INITHOOKS_CONF ]] && . $INITHOOKS_CONF 8 | 9 | $INITHOOKS_PATH/bin/wordpress.py --pass="$APP_PASS" --email="$APP_EMAIL" \ 10 | --domain="$APP_DOMAIN" 11 | -------------------------------------------------------------------------------- /overlay/usr/local/bin/turnkey-wp: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | [[ -z "$DEBUG" ]] || set -x 4 | 5 | WP_DIR=${WP_DIR:-/var/www/wordpress} 6 | WP_USR=${WP_USR:-www-data} 7 | WP_CACHE=${WP_CACHE:-/var/www/.wp-cli} 8 | 9 | if [[ ! -d "$WP_CACHE" ]]; then 10 | mkdir -p "$WP_CACHE" 11 | fi 12 | chown -R "$WP_USR":"$WP_USR" "$WP_CACHE" 13 | 14 | runuser "$WP_USR" -s /bin/bash \ 15 | -c "/usr/local/bin/wp --path='$WP_DIR' $(printf '%q ' "$@")" 16 | -------------------------------------------------------------------------------- /plan/main: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | libjs-cropper /* wordpress dep */ 5 | libjs-jquery /* wordpress dep */ 6 | libjs-prototype /* wordpress dep */ 7 | libjs-scriptaculous /* wordpress dep */ 8 | libphp-phpmailer /* wordpress dep */ 9 | libphp-snoopy /* wordpress dep */ 10 | php-php-gettext /* wordpress dep */ 11 | php-gd /* wordpress dep */ 12 | php-zip /* wordpress recommends */ 13 | php-imagick /* wordpress recommends */ 14 | w3m /* wordpress recommends */ 15 | 16 | php-curl /* needed by some plugins */ 17 | 18 | unzip /* most wordpress plugins and themes are zip archives */ 19 | --------------------------------------------------------------------------------