MediaWiki: Difference between revisions

From NixOS Wiki
imported>Nix
m (add Software/Applications subcategory)
 
(17 intermediate revisions by 10 users not shown)
Line 1: Line 1:
[https://www.mediawiki.org/wiki/MediaWiki MediaWiki] is available in [[NixOS]].
[https://mediawiki.org/ {{PAGENAME}}] ([[wikipedia:en:{{PAGENAME}}]]) is available as a [[module]].


https://search.nixos.org/packages?query=mediawiki
== Configuration Examples ==
=== Small Configuration ===


https://search.nixos.org/options?query=mediawiki
<syntaxhighlight lang="nix">
services.mediawiki = {
  enable = true;
  name = "Sample MediaWiki";
  httpd.virtualHost = {
    hostName = "example.com";
    adminAddr = "admin@example.com";
  };
  # Administrator account username is admin.
  # Set initial password to "cardbotnine" for the account admin.
  passwordFile = pkgs.writeText "password" "cardbotnine";
  extraConfig = ''
    # Disable anonymous editing
    $wgGroupPermissions['*']['edit'] = false;
  '';


<s>
  extensions = {
== Overview ==
    # some extensions are included and can enabled by passing null
    VisualEditor = null;


At the time of writing the mediawiki expression exists as an apache subservice. In the future this the build part of the expression will need to move to its own package. This will require a change in the future and we will endeavor to have a deprecation message inform you of the syntax changes required to migrate when the time comes.
    # https://www.mediawiki.org/wiki/Extension:TemplateStyles
    TemplateStyles = pkgs.fetchzip {
      url = "https://extdist.wmflabs.org/dist/extensions/TemplateStyles-REL1_40-c639c7a.tar.gz";
      hash = "sha256-YBL0Cs4hDSNnoutNJSJBdLsv9zFWVkzo7m5osph8QiY=";
    };
  };
};
</syntaxhighlight>


===installation===
== Web Server ==


There are a few things you need to configure in order to use the existing tooling. Install your database of choice and create the database user and password as required.
By default, the <code>services.mediawiki</code> module creates a <code>services.httpd.virtualHost</code> which can be configured via the <code>services.mediawiki.httpd.virtualHost</code> submodule.


For the simplest default configuration, in <code>configuration.nix</code>, add: <syntaxhighlight lang=nix>{
If you are using another web server (like Nginx), you can configure MediaWiki for a reverse proxy with the <code>services.mediawiki.virtualHost.listen</code> option:
  ...
  services.httpd.extraSubservices =
    [ { serviceType = "mediawiki";
        siteName = "your.sitename.here";
        id = "unique_identifier";
        dbName = "dbname";
        dbUser = "dbusername";
        dbPassword = "redacted";
        defaultSkin = "MonoBook";
        extraConfig = ''
          wfLoadSkin( 'MonoBook' );
          wfLoadExtension( 'WikiEditor' );
          $wgDefaultUserOptions['usebetatoolbar'] = 1;
        '';
      }
    ];
  ...
}</syntaxhighlight>


<syntaxhighlight lang="nix">
services.mediawiki.httpd.virtualHost.listen = [
  {
    ip = "127.0.0.1";
    port = 8080;
    ssl = false;
  }
];
</syntaxhighlight>


=== Known Issues ===
Alternatively, <code>services.mediawiki.webserver</code> can be set to <code>"nginx"</code> to use nginx instead of apache.


There are several known issues with the package which will be remediated when we re-factor it out of a subService. To name a few:
== Troubleshooting ==
=== Edit php.ini ===
An fpm pool is automatically created when Mediawiki is enabled. The <code>php.ini</code> file can be modified by using <code>phpOptions</code>. The following example shows how to increase the allowed file upload size.
 
<syntaxhighlight lang="nix">
services.phpfpm.pools.mediawiki.phpOptions = ''
    upload_max_filesize = 10M
    post_max_size = 15M
'';
</syntaxhighlight>
 
== See Also ==
 
* [https://github.com/NixOS/nixos-wiki-infra Configuration of the NixOS wiki]
* [https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/mediawiki.nix nixos/tests/mediawiki.nix]
* [[Dokuwiki]], simple PHP- and web-based wiki software which uses file based storage for its content.
* [[Outline]], a modern web based wiki and knowledge base for teams.


# The database creation scripts run as 'root' for postgresql and fail.  To fix this you can temporarily grant root dba access, run your first installation and revoke.
# It is ideal if we can have a working, secure, default installation without having to fall-back to extraConfig.  We're not there yet.
</s>


[[Category:Guide]]
[[Category:Guide]]
[[Category:Applications]]
[[Category:Server]]
[[Category:Web Applications]]

Latest revision as of 19:16, 24 April 2024

MediaWiki (wikipedia:en:MediaWiki) is available as a module.

Configuration Examples

Small Configuration

services.mediawiki = {
  enable = true;
  name = "Sample MediaWiki";
  httpd.virtualHost = {
    hostName = "example.com";
    adminAddr = "admin@example.com";
  };
  # Administrator account username is admin.
  # Set initial password to "cardbotnine" for the account admin.
  passwordFile = pkgs.writeText "password" "cardbotnine";
  extraConfig = ''
    # Disable anonymous editing
    $wgGroupPermissions['*']['edit'] = false;
  '';

  extensions = {
    # some extensions are included and can enabled by passing null
    VisualEditor = null;

    # https://www.mediawiki.org/wiki/Extension:TemplateStyles
    TemplateStyles = pkgs.fetchzip {
      url = "https://extdist.wmflabs.org/dist/extensions/TemplateStyles-REL1_40-c639c7a.tar.gz";
      hash = "sha256-YBL0Cs4hDSNnoutNJSJBdLsv9zFWVkzo7m5osph8QiY=";
    };
  };
};

Web Server

By default, the services.mediawiki module creates a services.httpd.virtualHost which can be configured via the services.mediawiki.httpd.virtualHost submodule.

If you are using another web server (like Nginx), you can configure MediaWiki for a reverse proxy with the services.mediawiki.virtualHost.listen option:

services.mediawiki.httpd.virtualHost.listen = [
  {
    ip = "127.0.0.1";
    port = 8080;
    ssl = false;
  }
];

Alternatively, services.mediawiki.webserver can be set to "nginx" to use nginx instead of apache.

Troubleshooting

Edit php.ini

An fpm pool is automatically created when Mediawiki is enabled. The php.ini file can be modified by using phpOptions. The following example shows how to increase the allowed file upload size.

services.phpfpm.pools.mediawiki.phpOptions = ''
    upload_max_filesize = 10M
    post_max_size = 15M
'';

See Also