Contents
Overview
Canasta is, at heart, a set of two MediaWiki Docker images: CanastaBase, which holds MediaWiki itself, as well as the LAMP stack and all the main code, and the Canasta image, which inherits all of the CanastaBase code and adds on to it a set of extensions and skins. There are other Docker-based MediaWiki distributions, but one big strength of Canasta is all the additional software that is bundled in, including 10 skins and 163 extensions. Below are the list of skins and extensions that come included. By default, only the Vector skin, out of all of these skins and extensions, is actually "installed"; in order to install any of the rest in your container, you just have to add a call to wfLoadSkin() or wfLoadExtension() for it to your LocalSettings.php file.
There are (theoretically) dozens of skins, and over 1,000 extensions, available for MediaWiki. So how was the set of skins and extensions in Canasta decided on?
First, all of the skins and extensions that are bundled in with the official distribution of MediaWiki (5 skins and 30 extensions in all) are included in Canasta; see here for the full list. Beyond this group, the general criteria are that they must work well with Canasta's MediaWiki version (1.43); they must be well-maintained, and be likely to remain well-maintained in the future; and they must provide important functionality that no other extension or skin that's included does.
Administrators who want to add some skin or extension that is not in this list to their wiki can easily do so in the standard way: by downloading it, adding it to either the skins/ or extensions/ directory, and adding the relevant call to either wfLoadSkin() or wfLoadExtension() to LocalSettings.php.
Skins included in Canasta
Extensions included in Canasta
Administrative tools
Admin Links · DeleteBatch · Interwiki
Analytics
Contribution Scores · Editcount · GoogleAnalyticsMetrics · GTag · RottenLinks · UserPageViewTracker · WatchAnalytics · WhoIsWatching · WhosOnline
Automated page creation & modification
Data Transfer · Page Exchange · Replace Text
Communication & notification
CommentStreams · ContactPage · DiscussionTools · DismissableSiteNotice · Echo · GlobalNotice · InlineComments · MassMessage · MassMessageEmail · NewUserMessage · Semantic Watchlist · Thanks
Data storage & display
Cargo · CLDR · Disambiguator · External Data · PageImages · Page Schemas · RelatedArticles · RSS · Semantic Compound Queries · SemanticDependencyUpdater · Semantic Drilldown · Semantic Extra Special Properties · Semantic MediaWiki · Semantic Result Formats · Semantic Scribunto · SimpleChanges · SubPageList
Editing
CharInsert · CodeEditor · CodeMirror · CreateRedirect · InputBox · LinkSuggest · Linter · Page Forms · Paragraph-based Edit Conflict Interface · SaveSpinner · TemplateData · TemplateSandbox · TemplateWizard · VEForAll · VisualEditor · WikiEditor
File upload & handling
AWS · CommonsMetadata · GoogleDocCreator · ImageMap · MediaUploader · MsUpload · MultimediaViewer · PdfHandler · QuickInstantCommons · SimpleBatchUpload · TimedMediaHandler · UploadWizard
HTML & multimedia support
EasyTimeline · EmbedVideo (fork) · Flex Diagrams · HTML Tags · Maps · Math · Mermaid · SimpleMathJax · Widgets
Interface & display customization
BetaFeatures · Display Title · Gadgets · Header Footer · Header Tabs · SkinPerPage · SyntaxHighlight · TemplateStyles · TemplateStylesExtender · Title Icon
Meta tags
Description2 · OpenGraphMeta · WikiSEO
PDF export
Read & write access
Approved Revs · LockAuthor · Lockdown
Search
AdvancedSearch · CirrusSearch · Elastica
Social tools
AJAXPoll · Babel · SocialProfile · VoteNY
Spam control
AbuseFilter · ConfirmEdit · Nuke · SmiteSpam · SpamBlacklist · TitleBlacklist
Translation
User management
CheckUser · EditAccount · LoginNotify · LookupUser · UserMerge
User registration
AntiSpoof · ConfirmAccount · Email Authorization · JWTAuth · LDAPAuthentication2 · LDAPAuthorization · LDAPProvider · OAuth · OATHAuth · OpenID Connect · PluggableAuth · WSOAuth
Other wikitext additions
Arrays · Cite · CiteThisPage · Labeled Section Transclusion · LinkTarget · Lingo · Loops · MagicNoCache · MintyDocs · MyVariables · NumerAlpha · ParserFunctions · Poem · RandomSelection · RegexFunctions · RegularTooltips · Scribunto · UrlGetParameters · UserFunctions · Variables · VariablesLua
Non-wikitext display utilities
Bootstrap · BootstrapComponents · BreadCrumbs2 · CategoryTree · MobileFrontend · Popups · SandboxLink · SecureLinkFixer
Other
CookieWarning · EventLogging · EventStreamConfig · RevisionSlider · TextExtracts
Overall contents
The overall contents of Canasta (via the two Docker images, CanastaBase and Canasta) are as follows:
- Debian Linux v. 12.8 ("Bookworm")
- Apache HTTP Server v. 2.4
- MariaDB v. 11.4
- PHP v. 8.2
- MediaWiki v. 1.43.6, plus many skins and extensions (see above)
- Elasticsearch v. 7.10.2
- Caddy
Additional components include a sitemap auto-generation script (storing sitemaps to /var/www/mediawiki/w/sitemap), and a variety of other utilities: ffmpeg, Git, ImageMagick, iputils-ping, Vim, etc.
Being a Docker image, Canasta places some files and directories in the host operating system as bind mounts — files and directories associated with the image but which are not contained in the Docker image's container itself, and which the administrator can thus modify, because they will not be removed or overwritten if the Docker image is updated. Canasta also stores the database outside of the Docker container, although this is stored as a volume (named "mysql-data-volume") and not a bind mount.
In Canasta, there are six bind mounts, which appear in the host OS as the directories extensions/, skins/, images/, config/, public_assets/ and sitemap/. Besides the database itself, these directories and their contents are the only files or directories that administrators should modify.
An explanation of the relevant parts of the Canasta container:
- LocalSettings.php — The standard main settings file of MediaWiki. In Canasta it is hidden from administrators, and very short: it simply includes the file CanastaDefaultSettings.php.
- CanastaDefaultSettings.php — Holds a set of Canasta-specific default settings for many MediaWiki variables like $wgScriptPath.
- canasta-extensions/ — A directory that holds all of Canasta's 150+ bundled extensions.
- canasta-skins/ — A directory that holds all of Canasta's 10 bundled skins.
- user-extensions/ — A directory that holds any locally-installed extensions.
- user-skins/ — A directory that holds any locally-installed skins.
- extensions/ — A directory that holds automatically-generated symlinks to extensions in both the canasta-extensions/ and user-extensions/ directories.
- skins/ — A directory that holds automatically-generated symlinks to skins in both the canasta-skins/ and user-skins/ directories.
- images/ — Simply MediaWiki's standard images/ directory. This the one part of core MediaWiki that is directly exposed to administrators.
- config/ — A directory that holds all the files and directories related to this Canasta instance's configuration. Specifically:
- wikis.yaml — A YAML file that holds the settings (ID, name, URL) associated with each of the one or more wikis in this Canasta installation.
- composer.local.json — A Composer file, meant for installing the additional libraries required by some skins and extensions (both those included in Canasta and those added locally).
- Caddyfile.global — A Caddy configuration file used for general web server configuration.
- Caddyfile.site — A Caddy configuration file used specifically for MediaWiki-related configuration.
- settings/ — A directory that, via its subdirectories, can optionally hold any additional PHP settings files that admins want to provide. Any such files will be called in alphabetical order, within their specific directory.
- global/ — Holds files that will be loaded for all wikis, if the Canasta instance is structured as a wiki farm that holds more than one wiki.
- wikis/ — Holds subdirectories for each wiki, for settings that should only apply to a single wiki.
- public_assets/ — A directory that can hold assets such as each wiki's logo, favicon and sitemap. It holds a separate subdirectory for each wiki in this installation; a single subdirectory might look like:
- books-wiki/
- books-wiki-logo.png — The wiki's custom logo.
- books-wiki-favicon.png — The wiki's custom favicon.
- sitemap/
- sitemap-index-books-wiki.xml — The wiki's sitemap file, meant for use by search engines, generated (optionally) via the script generateSitemap.php.
- books-wiki/
