User:MeowyCats2/Install CreateWiki and ManageWiki on your wiki: Difference between revisions

TODO
 
todo
Line 39: Line 39:
     }
     }


    location ~ ^/cw_cache/ {
        deny all;
    }
   
     error_log /var/log/nginx/mediawiki_error.log;
     error_log /var/log/nginx/mediawiki_error.log;
     access_log /var/log/nginx/mediawiki_access.log;
     access_log /var/log/nginx/mediawiki_access.log;
}
}
</syntaxhighlight>
</syntaxhighlight>
<li>Remember to open port 80 if you are using a firewall.</li>
<li>Go to Cloudflare and add the following to your DNS.</li>
<li>Go to Cloudflare and add the following to your DNS.</li>
:'''Type:''' <code>A</code> '''Name''': <code>*</code> '''IPv4 address''': Your VPS IP '''Proxy status''': <code>Proxied</code>
:'''Type:''' <code>A</code> '''Name''': <code>*</code> '''IPv4 address''': Your VPS IP '''Proxy status''': <code>Proxied</code>
Line 49: Line 54:
<li>Click "set up the wiki", set up the wiki as usual, but install the extensions AbuseFilter, Interwiki and Echo. Set the database name to "testwiki" created earlier and leave the table prefix blank.</li>
<li>Click "set up the wiki", set up the wiki as usual, but install the extensions AbuseFilter, Interwiki and Echo. Set the database name to "testwiki" created earlier and leave the table prefix blank.</li>
<li>After setup is complete and the downloaded LocalSettings.php is in place, verify that MediaWiki starts properly.</li>
<li>After setup is complete and the downloaded LocalSettings.php is in place, verify that MediaWiki starts properly.</li>
<li>Install [[mw:Extension:AntiSpoof]].</li>
<li>Install [[mw:Extension:AntiSpoof]]. Follow the guide on the MediaWiki Extension page.</li>
<li>Install [[mw:Extension:CheckUser]]. Follow the guide on the MediaWiki Extension page.</li>
<li>[[mw:Extension:CentralAuth]].</li>
<ol>
<li>Download and extract.</li>
<li>Enter MySQL and create a database named <code>centralauth</code>.</li>
<li>Put this to your LocalSettings.</li>
<syntaxhighlight lang="php">
wfLoadExtension( 'CentralAuth' );
$wgCentralAuthDatabase = 'centralauth';
</syntaxhighlight>
<li>Run <code>php maintenance/run.php sql --wikidb centralauth extensions/CentralAuth/schema/mysql/tables-generated.sql</code></li>
<li>Run <code>php maintenance/run.php sql --wikidb centralauth extensions/AntiSpoof/sql/mysql/tables-generated.sql</code></li>
<li>Run <code>php maintenance/run.php CentralAuth:migratePass0.php</code></li>
<li>Run <code>php maintenance/run.php CentralAuth:migratePass1.php</code></li>
</ol>
<li>Have a cup of coffee.</li>
<li>Install [[mw:Extension:CreateWiki]].</li>
<ol>
<li>Download and extract.</li>
<li>Enter MySQL and create a database named <code>wikidb</code>.</li>
<li>Put this to your LocalSettings.</li>
<syntaxhighlight lang="php">
#wfLoadExtension( 'CreateWiki' );
$wgCreateWikiDatabase = 'wikidb';
</syntaxhighlight>
<li>Make <code>cw_cache</code> directory and give 777 permission.</li>
<li>Put <code>$wgCreateWikiCacheDirectory = 'cw_cache';</code> to your LocalSettings.</li>
<li>Run these commands.</li>
<syntaxhighlight lang="bash">
php maintenance/run sql --wikidb wikidb extensions/CreateWiki/sql/cw_wikis.sql
php maintenance/run sql --wikidb wikidb extensions/CreateWiki/sql/cw_comments.sql
php maintenance/run sql --wikidb wikidb extensions/CreateWiki/sql/cw_requests.sql
</syntaxhighlight>
<li>Remove # from <code>#wfLoadExtension( 'CreateWiki' );</code>.</li>
<li>Create <code>SetupCreateWiki.php</code> and paste this, and change wiki_url and database password. {{note}} This script is copied and edited by https://github.com/miraheze/ci-scripts/blob/master/mediawiki/globals/setup-CreateWiki.php </li>
<syntaxhighlight lang="php">
<?php
 
# Protect against web entry
if ( !defined( 'MEDIAWIKI' ) ) {
        exit;
}
 
use MediaWiki\MediaWikiServices;
use Miraheze\CreateWiki\WikiInitialize;
use Wikimedia\Rdbms\DBQueryError;
 
$wgWikimediaJenkinsCI = true;
 
define( 'CW_DB', 'wikidb' );
 
require_once "$IP/extensions/CreateWiki/includes/WikiInitialize.php";
 
$wgHooks['MediaWikiServices'][] = 'insertWiki';
 
function insertWiki( MediaWikiServices $services ) {
wfLoadConfiguration();
try {
if ( getenv( 'WIKI_CREATION_SQL_EXECUTED' ) ) {
return;
}
 
$db = wfInitDBConnection();
 
$db->selectDomain( 'wikidb' );
$db->newInsertQueryBuilder()
->insertInto( 'cw_wikis' )
->ignore()
->row( [
'wiki_dbname' => 'testwiki',
'wiki_dbcluster' => 'c1',
'wiki_sitename' => 'TestWiki',
'wiki_language' => 'en',
'wiki_private' => (int)0,
'wiki_creation' => $db->timestamp(),
'wiki_category' => 'uncategorised',
'wiki_closed' => (int)0,
'wiki_deleted' => (int)0,
'wiki_locked' => (int)0,
'wiki_inactive' => (int)0,
'wiki_inactive_exempt' => (int)0,
'wiki_url' => 'https://test.yourdomain.tld', # CHANGE THIS
] )
->caller( __METHOD__ )
->execute();
 
putenv( 'WIKI_CREATION_SQL_EXECUTED=true' );
} catch ( DBQueryError $e ) {
return;
}
}
 
function wfLoadConfiguration() {
global $wgCreateWikiGlobalWiki, $wgCreateWikiDatabase,
$wgCreateWikiCacheDirectory, $wgConf;
 
$wgCreateWikiGlobalWiki = 'wikidb';
$wgCreateWikiDatabase = 'wikidb';
$wgCreateWikiCacheDirectory = MW_INSTALL_PATH . '/cache';
 
$wi = new WikiInitialize();
 
$wi->setVariables(
MW_INSTALL_PATH . '/cache',
[
''
],
[
'127.0.0.1' => ''
]
);
 
$wi->config->settings += [
'cwClosed' => [
'default' => false,
],
'cwInactive' => [
'default' => false,
],
'cwPrivate' => [
'default' => false,
],
'cwExperimental' => [
'default' => false,
],
];
 
$wi->readCache();
$wi->config->extractAllGlobals( $wi->dbname );
$wgConf = $wi->config;
}
 
function wfInitDBConnection() {
return MediaWikiServices::getInstance()->getDatabaseFactory()->create( 'mysql', [
'host' => $GLOBALS['wgDBserver'],
'user' => 'root',
'password' => 'y0ur p@$$w0rd' # CHANGE THIS
] );
}
 
?>
</syntaxhighlight>
<li>Insert <code>require_once "$IP/SetupCreateWiki.php";</code> TOP of LocalSettings.php (below <code><?php</code>)</li>
<li>Visit tets.yourdomain.tld. You will get an MediaWiki error message. Ignore it and check if TestWiki exists in wikidb.cw_wikis using e.g. phpMyAdmin.</li>
<li>Remove <code>require_once "$IP/SetupCreateWiki.php";</code></li>.
</ol>
<li>Get MirahezeFunctions.php from https://github.com/miraheze/mw-config/blob/master/initialise/MirahezeFunctions.php and paste it to /var/www/mediawiki/MirahezeFunctions.php</li>
<li>Modify <code>MirahezeFunctions.php</code>. Please change <code>default</code>. Not sure if you need to remove <code>beta</code> on all of the following. I did not remove it.</li>
<ol>
<li>Change ALLOWED_DOMAINS and DEFAULT_SERVER to yourdomain.tld</li>
<li>Change CACHE_DIRECTORY to /var/www/mediawiki/cw_cache</li>
<li>Change CENTRAL_DATABASE to testwiki</li>
<li>Change GLOBAL_DATABASE to wikidb</li>
<li>Change MEDIAWIKI_DIRECTORY to /var/www/mediawiki/</li>
<li>Change path to correct path for <code>LocalSettings.php</code>, <code>ManageWikiExtensions.php</code>, <code>ManageWikiNamespaces.php</code>, <code>ManageWikiSettings.php</code>. For Example: '/../LocalSettings.php' → '/LocalSettings.php', '/../ManageWikiExtensions.php' → '/ManageWikiExtensions.php'</li>
</ol>
<li>Add this to LocalSettings. Put BEFORE loading extensions</li>
<syntaxhighlight lang="php">
require_once "$IP/MirahezeFunctions.php";
$wi = new MirahezeFunctions();
</syntaxhighlight>
<li>Add this to LocalSettings.php Put JUST UNDER <code>$wi = new MirahezeFunctions();</code>. Remember to change yourdomain.tld</li>
<syntaxhighlight lang="php">
$wgConf->settings += [
'wgCentralAuthDatabase' => [
'default' => 'centralauth',
],
 
'wgCreateWikiUseJobQueue' => [
'default' => true,
],
'wgCreateWikiSubdomain' => [
'default' => 'yourdomain.tld',
],
'wgCreateWikiUseClosedWikis' => [
'default' => true,
],
'wgCreateWikiUseCustomDomains' => [
'default' => true,
],
'wgCreateWikiUseEchoNotifications' => [
'default' => true,
],
'wgCreateWikiUseExperimental' => [
'default' => true,
],
'wgCreateWikiUseInactiveWikis' => [
'default' => true,
],
'wgCreateWikiUsePrivateWikis' => [
'default' => true,
],
'wgCreateWikiCacheDirectory' => [
'default' => 'cw_cache',
],
'wgCreateWikiDatabaseSuffix' => [
'default' => 'wiki',
],
'wgCreateWikiDisableRESTAPI' => [
'default' => true,
'metawiki' => false,
],
'wgCreateWikiGlobalWiki' => [
'default' => 'testwiki',
],
'wgCreateWikiEmailNotifications' => [
'default' => true,
],
 
'wgFileExtensions' => [
'default' => [
'djvu',
'gif',
'ico',
'jpg',
'jpeg',
'ogg',
'pdf',
'png',
'svg',
'webp',
],
],
'wgArticlePath' => [
'default' => '/wiki/$1',
],
'wgScriptPath' => [
'default' => '',
],
'wgUsePathInfo' => [
'default' => true,
],
'wgResourceBasePath' => [
'default' => '',
],
'wgCreateWikiSQLfiles' => [
'default' => [
"$IP/maintenance/tables-generated.sql",
"$IP/extensions/AbuseFilter/db_patches/mysql/tables-generated.sql",
"$IP/extensions/AntiSpoof/sql/mysql/tables-generated.sql",
#"$IP/extensions/BetaFeatures/sql/tables-generated.sql",
#"$IP/extensions/CheckUser/schema/mysql/tables-generated.sql",
#"$IP/extensions/DataDump/sql/data_dump.sql",
"$IP/extensions/Echo/sql/mysql/tables-generated.sql",
#"$IP/extensions/GlobalBlocking/sql/mysql/tables-generated-global_block_whitelist.sql",
"$IP/extensions/OATHAuth/sql/mysql/tables-generated.sql",
#"$IP/extensions/RottenLinks/sql/rottenlinks.sql",
#"$IP/extensions/UrlShortener/schemas/tables-generated.sql",
],
],
'wgManageWikiPermissionsAdditionalAddGroups' => [
'default' => [],
],
'wgManageWikiPermissionsAdditionalRights' => [
'default' => [
'*' => [
'autocreateaccount' => true,
'read' => true,
'oathauth-enable' => true,
'viewmyprivateinfo' => true,
'editmyoptions' => true,
'editmyprivateinfo' => true,
'editmywatchlist' => true,
'writeapi' => true,
],
'checkuser' => [
'checkuser' => true,
'checkuser-log' => true,
'abusefilter-privatedetails' => true,
'abusefilter-privatedetails-log' => true,
],
'suppress' => [
'abusefilter-hidden-log' => true,
'abusefilter-hide-log' => true,
'browsearchive' => true,
'deletedhistory' => true,
'deletedtext' => true,
'deletelogentry' => true,
'deleterevision' => true,
'hideuser' => true,
'suppressionlog' => true,
'suppressrevision' => true,
'viewsuppressed' => true,
],
'steward' => [
'userrights' => true,
],
'user' => [
'mwoauthmanagemygrants' => true,
'user' => true,
],
],
'+metawiki' => [
'steward' => [
'abusefilter-modify-global' => true,
'centralauth-lock' => true,
'centralauth-suppress' => true,
'centralauth-rename' => true,
'centralauth-unmerge' => true,
'createwiki' => true,
'createwiki-deleterequest' => true,
'globalblock' => true,
'handle-import-request-interwiki' => true,
'handle-import-requests' => true,
'managewiki-core' => true,
'managewiki-extensions' => true,
'managewiki-namespaces' => true,
'managewiki-permissions' => true,
'managewiki-settings' => true,
'managewiki-restricted' => true,
'noratelimit' => true,
'oathauth-verify-user' => true,
'userrights' => true,
'userrights-interwiki' => true,
'globalgroupmembership' => true,
'globalgrouppermissions' => true,
'view-private-import-requests' => true,
],
]
],
'wgManageWikiPermissionsAdditionalRemoveGroups' => [
'default' => [],
],
'wgManageWikiPermissionsDisallowedRights' => [
'default' => [
'any' => [
'abusefilter-hide-log',
'abusefilter-hidden-log',
'abusefilter-modify-global',
'abusefilter-private',
'abusefilter-private-log',
'abusefilter-privatedetails',
'abusefilter-privatedetails-log',
'aft-oversighter',
'autocreateaccount',
'bigdelete',
'centralauth-createlocal',
'centralauth-lock',
'centralauth-suppress',
'centralauth-rename',
'centralauth-unmerge',
'checkuser',
'checkuser-log',
'createwiki',
'createwiki-deleterequest',
'createwiki-suppressionlog',
'createwiki-suppressrequest',
'editincidents',
'editothersprofiles-private',
'flow-suppress',
'generate-random-hash',
'globalblock',
'globalblock-exempt',
'globalgroupmembership',
'globalgrouppermissions',
'handle-import-request-interwiki',
'handle-import-requests',
'handle-pii',
'hideuser',
'investigate',
'ipinfo',
'ipinfo-view-basic',
'ipinfo-view-full',
'ipinfo-view-log',
'managewiki-restricted',
'managewiki-editdefault',
'moderation-checkuser',
'mwoauthmanageconsumer',
'mwoauthmanagemygrants',
'mwoauthsuppress',
'mwoauthviewprivate',
'mwoauthviewsuppressed',
'oathauth-api-all',
'oathauth-enable',
'oathauth-disable-for-user',
'oathauth-verify-user',
'oathauth-view-log',
'renameuser',
'request-import',
'requestwiki',
'siteadmin',
'securepoll-view-voter-pii',
'smw-admin',
'smw-patternedit',
'smw-viewjobqueuewatchlist',
'stopforumspam',
'suppressionlog',
'suppressrevision',
'themedesigner',
'titleblacklistlog',
'updatepoints',
'userrights',
'userrights-interwiki',
'view-private-import-requests',
'viewglobalprivatefiles',
'viewpmlog',
'viewsuppressed',
'writeapi',
],
'user' => [
'autoconfirmed',
'noratelimit',
'skipcaptcha',
'managewiki-core',
'managewiki-extensions',
'managewiki-namespaces',
'managewiki-permissions',
'managewiki-settings',
'globalblock-whitelist',
'ipblock-exempt',
'interwiki',
],
'*' => [
'read',
'skipcaptcha',
'torunblocked',
'centralauth-merge',
'generate-dump',
'editsitecss',
'editsitejson',
'editsitejs',
'editusercss',
'edituserjson',
'edituserjs',
'editmyoptions',
'editmyprivateinfo',
'editmywatchlist',
'globalblock-whitelist',
'interwiki',
'ipblock-exempt',
'viewmyprivateinfo',
'viewmywatchlist',
'managewiki-core',
'managewiki-extensions',
'managewiki-namespaces',
'managewiki-permissions',
'managewiki-settings',
'noratelimit',
'autoconfirmed',
],
],
],
'wgManageWikiPermissionsDisallowedGroups' => [
'default' => [
'checkuser',
'smwadministrator',
'oversight',
'steward',
'staff',
'suppress',
'techteam',
'trustandsafety',
],
],
'wgManageWikiPermissionsDefaultPrivateGroup' => [
'default' => 'member',
],
 
'wgWhitelistRead' => [
'default' => [
'Special:UserLogin',
'Special:UserLogout',
'Special:CreateAccount',
'Main Page',
],
],
'wgWhitelistReadRegexp' => [
'default' => [
'/^(Special):CentralAutoLogin.*/',
'/^(Special):CentralLogin.*/',
],
],
 
'wgManageWikiExtensionsDefault' => [
'default' => [
'categorytree',
'cite',
'citethispage',
'codeeditor',
'codemirror',
'darkmode',
'globaluserpage',
'minervaneue',
'mobilefrontend',
'syntaxhighlight_geshi',
'textextracts',
'urlshortener',
'wikiseo',
],
],
 
'wgUseImageMagick' => [
'default' => true,
],
'wgImageMagickConvertCommand' => [
'default' => '/usr/bin/convert',
],
 
'wgSharedTables' => [
'default' => [],
],
 
'wgEnableUploads' => [
'default' => true,
],
 
];
</syntaxhighlight>
 
<li>TODO</li>
<li>TODO</li>
</ol>
</ol>