Wikibase/Suite

Introduction
A Wikibase install often consists of the following elements:


 * An RDBMS (MariaDB/MySQL or SQLite) [ required ]
 * MediaWiki [ required ]
 * The Wikibase extension [ required ]
 * Other related extensions [ optional ]
 * The Wikidata query service (WDQS) [ optional ]
 * The WDQS proxy
 * The WDQS frontend
 * QuickStatements [ optional ]
 * Elasticsearch [ optional ]

The [https://www.mediawiki.org/wiki/Wikibase/Docker Docker install] contains all these components and can be started with a single   command. This install meets the needs of many Wikibase users, especially those just starting out.

However, for those not wanting to run Docker (because of additional administrative overhead, scaling issues in production, or a desire to understand the components better), here's how to install each component manually.

Network configuration
Consult the network description and diagram: https://www.mediawiki.org/wiki/Wikibase/Maintaining#Architecture_overview

Before you dive in
There's a large amount of technical documentation to be read and enjoyed at the [https://doc.wikimedia.org/Wikibase/master/php/index.html Wikibase technical doc site].

To successfully navigate this process, you should probably have:


 * Familiarity with Linux and web server software
 * One or more servers on which you have permissions to install software

Instructions
The MediaWiki install linked in the next step relies on a running RDBMS with a database and user already created.

We recommend using MariaDB, and though a full installation guide is outside of the scope of this document, start with [https://mariadb.com/kb/en/documentation/ this excellent collection of documentation] and [https://www.mariadbtutorial.com/mariadb-basics/ this tutorial].


 * Create a database
 * User account management

Instructions
Working MediaWiki nginx config

Optional sidebar
If you'd like to add some Wikibase-related links to your main page sidebar, you can add [https://phab.wmfusercontent.org/file/data/6753kdd4tue235lhxwoe/PHID-FILE-5n4sat6x3amjjhdnuz4f/raw-paste-data.txt these configuration stanzas] to your LocalSettings.php.

OAuth
Wikibase needs the OAuth extension for the 1>#Wikidata Query Service|Wikidata query service, as you'll see below.

Installation
The 1>Special:MyLanguage/Extension:OAuth|OAuth install instructions are comprehensive. Note that you'll benefit from a working understanding of <tvar|1></> to finish this install.

Native and non-native data types
Extending Wikibase's functionality beyond its native data types may require the installation of additional extensions.

Native data types

 * commonsMedia = "string"
 * entity-schema = "string"
 * external-id = "string"
 * geo-shape = "string"
 * globe-coordinate = "globecoordinate"
 * monolingualtext = "monolingualtext"
 * quantity = "quantity"
 * string = "string"
 * tabular-data = "string"
 * time = "time"
 * url = "string"
 * wikibase-item = "wikibase-entityid"
 * wikibase-property = "wikibase-entityid"

Non-native data types
Many other data types exist and are implemented in some instances of Wikibase, such as Wikidata. Because these other instances are frequently highly customized, below is a list of officially supported data types and the extensions they require:


 * mathematical expression ("string") -- requires Extension:Math
 * musical notation ("string") -- requires Extension:Score
 * lexeme ("wikibase-entityid") -- requires Extension:WikibaseLexeme
 * local media ("string") -- requires Extension:Wikibase_Local_Media

Wikidata Query Service
The Wikidata Query Service (WDQS), which consists of the Blazegraph SPARQL query backend and its updater, can be and often is used in conjunction with Wikibase.

Instructions
While intrepid users may wish to 1>Special:MyLanguage/Wikidata Query Service/Implementation#Labs Deployment</>|compile their own instance of WDQS, we recommend using the precompiled version.


 * Download the desired version from [<tvar|url>https://archiva.wikimedia.org/repository/releases/org/wikidata/query/rdf/service</> Archiva].
 * <tvar|1>0.3.42 </> is the recommended version as of September 2020. However, expect this information to be updated with the 1>Special:MyLanguage/MediaWiki 1.36</>|impending MediaWiki release.
 * You can see the changes in each version in the [<tvar|url>https://gerrit.wikimedia.org/r/plugins/gitiles/wikidata/query/rdf/+log</> WDQS code repository browser].
 * To configure the query service, consult both the [<tvar|url>https://wikitech.wikimedia.org/wiki/Wikidata_query_service#Notes_about_running_the_service_on_non-WMF_infrastructure Wikitech</> WDQS guide] and the 1>Special:MyLanguage/Wikidata Query Service/User Manual|</>WDQS user manual.
 * In particular, configure <tvar|1>RWstore.properties</> as noted here:.
 * See also these [<tvar|url>https://github.com/wmde/wikibase-docker/blob/master/wdqs/README.md</> WDQS Docker image configuration tips].

Overview
[<tvar|url>https://www.elastic.co/</> Elasticsearch] is a Lucene-based search engine. To get it working with MediaWiki/Wikibase, you'll need the following software:


 * Elasticsearch 6.5.4
 * OpenJDK


 * Three MediaWiki extensions:
 * Two Elasticsearch plugins:
 * search-extra
 * search-highlighter
 * Two Elasticsearch plugins:
 * search-extra
 * search-highlighter

Instructions

 * Install Elasticsearch 6.5.4 (refer to [<tvar|url>https://www.elastic.co/guide/en/elasticsearch/reference/6.5/install-elasticsearch.html</> its install instructions] ).
 * ES's install process will prompt you to install [<tvar|url>http://jdk.java.net/archive/</> OpenJDK].
 * Install the aforementioned extensions on your MediaWiki instance:
 * Add the following lines to <tvar|1> </>:
 * Add the following lines to <tvar|1> </>:
 * Add the following lines to <tvar|1> </>:
 * Add the following lines to <tvar|1> </>:
 * Install the aforementioned [<tvar|url>https://www.elastic.co/guide/en/elasticsearch/plugins/6.5/plugin-management.html</> Elasticsearch plugins] using these commands:
 * Modify <tvar|1> </> as needed:
 * Name your cluster with the <tvar|1></> directive.
 * Make a single-node cluster:
 * Set <tvar|1></> as needed
 * Modify <tvar|1></> as needed (above all, set <tvar|2> </> and <tvar|3> </> based on the amount of memory available to your host)
 * Note the "flood stage" settings for your disk size.
 * You can either ensure that at least 5% of the disk is available at all times, or you can alter the <tvar|1> </> setting. For more information, consult [<tvar|url>https://stackoverflow.com/questions/50609417/elasticsearch-error-cluster-block-exception-forbidden-12-index-read-only-all</> this StackOverflow article].
 * Run <tvar|1> </> for CirrusSearch:
 * Start jobs running in the background:
 * Run <tvar|1> </>:

Instructions

 * Using Git, clone the two repositories into your web root (hereafter ):
 * [<tvar|url>https://github.com/magnusmanske/quickstatements</> QuickStatements].
 * [<tvar|url>https://bitbucket.org/magnusmanske/magnustools.git</> MagnusTools].
 * In, run.
 * For the files that follow, determine the appropriate values in your installation for the following environment variables, and set them. They can also be easily substituted in place using [<tvar|url>https://www.gnu.org/software/gettext/manual/html_node/envsubst-Invocation.html</> envsubst].
 * For the files that follow, determine the appropriate values in your installation for the following environment variables, and set them. They can also be easily substituted in place using [<tvar|url>https://www.gnu.org/software/gettext/manual/html_node/envsubst-Invocation.html</> envsubst].
 * Create the following files with the contents specified.
 * Set these environment variables according to your installation:
 * : MediaWiki username with administrator rights
 * : External IP of your query service instance
 * With the variables set, create an OAuth consumer by executing the following php script on your MediaWiki installation where OAuth is installed:
 * A successful response will have the "created" flag set to "true", as in this example:

For more information, consult the [<tvar|url>https://github.com/wmde/wikibase-docker/blob/master/quickstatements/README.md</> Docker image README].

Reference

 * Wikibase Docker repo on GitHub
 * Docker install instructions