RESTBase/Installation

Download RESTbase source
You can do this operation from any folder where you have permissions.

Download from git:

Alternatively, download the zip [ https://github.com/wikimedia/restbase from the project repository] and extract it.

From the restbase project directory, install the Node dependencies using npm (part of nodejs):

Configuration
Copy the sample configuration:

Edit the config.yaml file in these parts:


 * You don't need to change anything nor worry about this section unless you run a private wiki ([ https://discourse-mediawiki.wmflabs.org/t/x-sub-request-filters-in-restbase-configuration/221/2 see question]).


 * is the base domain of your wiki (or identifier if you have several wikis at different paths of the same domain). For example, MediaWiki's base URL is  .  It's used as an identifier path in case you use the same server for multiple wikis.  For use with Parsoid in MediaWiki 1.35+, the domain must match exactly the host portion of your wiki's  configuration.


 * is the location of your wiki's .  For example, MediaWiki's API endpoint is mediawiki.org/w/api.php .  See.
 * is the endpoint as it can be accessed from the Internet. If you proxy the traffic directly from apache/nginx to this service, you may use a URL like  .  This is recommended, to avoid problems for people that can't access non-standard ports.


 * For MediaWiki 1.35 and later,  is the location of your wiki's  .  For example, MediaWiki's REST endpoint is mediawiki.org/w/rest.php .  See.
 * In MediaWiki 1.34 and earlier, using, the  entry must correspond to the URL and port of your Parsoid server.  If your Parsoid and RESTBase servers are on the same machine, then  is a valid URL, but you will typically need to add the appropriate port number.  Parsoid/JS used  as its default.


 * dbname: RESTBase will use by default a sqlite database for storing cached data. The file in the example script is named db.sqlite3 and is located in the same directory of the RESTBase folder.  If you later want to run RESTBase as a service, you'll want to put the database on a different folder where the user running the service would have write permissions.  For this you can change the line to:  (and ensuring the user account running the service has permissions to write on it).  Please note: You must manually add  parameter since they introduced storage groups for SQLite (see 225579 ).


 * In MediaWiki 1.35 and later you need to call Parsoid via your file in case the  is not installed for the wiki:

If you want to serve requests from multiple wikis on the same RESTBase server, you should copy and replicate the entire section, changing configurations as needed.

Run the server and Test
To test that it runs, from the RESTBase folder run:

For testing, while it's running, on another terminal execute:

You should see the HTML content of the Main_Page. In a browser you can also test by navigating to and you should see a page titled Wikimedia REST API. On this page you can test all manner of RESTBase methods and variables.

For other testing refer to [ https://github.com/wikimedia/restbase GitHub].

If Restbase Port is blocked
If you do not see the page (your browser says it can't connect), your restbase server port may be blocked. Do the following:


 * If you get, your restbase server port is ok.
 * If you did not get, then do:
 * If you get the restbase server is not bad, but you cannot access the port.

To bypass the block, you can set proxypass to your Apache httpd configuration. See the Proxy requests to RESTBase from your webserver section for instructions.

Starting RESTBase Server automatically
Create a new user for the RESTBase service (optional, but recommended to avoid running it as root) and create a home folder for that user:

For installing the RESTBase server as a service with systemd, create this file in the directory (  for CentOS 7 and  for openSUSE) and name it.

Replace  with the path to your restbase project directory.

To automatically start the RESTBase server at system startup,

To control the RESTBase server,

If you ever change the script, you need to reload it with,

Proxy requests to RESTBase from your webserver
RESTBase must be accessible from the visitors of your site for some functions to work properly. Having RESTBase on a non-standard http port is problematic for some users behind a corporate proxy or firewall. To solve this, and specially to serve requests to RESTBase through HTTPS, you should set up a reverse-proxy on your webserver that would route requests at a given path of your wiki to the RESTBase server.

Apache
If you use apache, you can make a file like this, and put on  of.

Nginx
On the general configuration:

Inside the block: {{#tag:syntaxhighlight| {{tmpl|0= location /$1/v1/ {
 * 1) Alternate configuration like WMF to have URLS like //example.com/api/rest_v1/
 * 2) location /api/rest_v1/ {

proxy_pass http://restbase/$1/v1/$restbasequery; } }} }}
 * 1 = YOUR_WIKI_WEBSITE
 * lang = "nginx"

Configuring config.yaml for WMF like URLS
If you don't want to get a fetch error when using WMF like URLS, you should add to the  module like so:

Testing
You should restart httpd (by or some means). In a browser you can now navigate to:

(alternate url like WMF setup):

and you should see a page titled Wikimedia REST API. And in this setting, you should add below to for.