CINXE.COM
farms [DokuWiki]
<!DOCTYPE html> <html lang="en" dir="ltr" class="no-js"> <head> <meta charset="utf-8" /> <title>farms [DokuWiki]</title> <meta name="generator" content="DokuWiki"/> <meta name="theme-color" content="#008800"/> <meta name="robots" content="index,follow"/> <meta name="keywords" content="farms"/> <link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="DokuWiki"/> <link rel="start" href="/"/> <link rel="contents" href="/farms?do=index" title="Sitemap"/> <link rel="manifest" href="/lib/exe/manifest.php"/> <link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/feed.php"/> <link rel="alternate" type="application/rss+xml" title="Current namespace" href="/feed.php?mode=list&ns="/> <link rel="edit" title="Edit this page" href="/farms?do=edit"/> <link rel="alternate" type="text/html" title="Plain HTML" href="/_export/xhtml/farms"/> <link rel="alternate" type="text/plain" title="Wiki Markup" href="/_export/raw/farms"/> <link rel="canonical" href="https://www.dokuwiki.org/farms"/> <link rel="stylesheet" href="/lib/exe/css.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e"/> <link rel="alternate" hreflang="ja" href="https://www.dokuwiki.org/ja:farms"/> <link rel="alternate" hreflang="pt-br" href="https://www.dokuwiki.org/pt-br:farms"/> <link rel="alternate" hreflang="ru" href="https://www.dokuwiki.org/ru:farms"/> <link rel="alternate" hreflang="x-default" href="https://www.dokuwiki.org/farms"/> <script >var NS='';var JSINFO = {"plugins":{"edittable":{"default columnwidth":""}},"id":"farms","namespace":"","ACT":"show","useHeadingNavigation":0,"useHeadingContent":0};(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer="defer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" defer="defer"></script> <script src="/lib/exe/js.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e&lang=en" defer="defer"></script> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="shortcut icon" href="/lib/tpl/dokuwiki/images/favicon.ico" /> <link rel="apple-touch-icon" href="/lib/tpl/dokuwiki/images/apple-touch-icon.png" /> <meta name="verify-v1" content="OVxl3gsCv2MhZqh1cBQyl0JytWXSwXMjyvwc+4w3WtA=" /> <meta name="google-site-verification" content="YhTVK69hW94ZXUtc2zSLPxTkZKbZIn0zK67mz5WQB-E" /> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-83791-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-83791-1', { 'anonymize_ip': true }); </script> </head> <body> <div id="dokuwiki__site"><div id="dokuwiki__top" class="site dokuwiki mode_show tpl_dokuwiki showSidebar hasSidebar"> <!-- ********** HEADER ********** --> <header id="dokuwiki__header"><div class="pad group"> <div class="headings group"> <ul class="a11y skip"> <li><a href="#dokuwiki__content">skip to content</a></li> </ul> <h1 class="logo"><a href="/start" accesskey="h" title="Home [h]"><img src="/lib/tpl/dokuwiki/images/logo.png" width="64" height="64" alt="" /><span>DokuWiki</span></a></h1> <p class="claim">It's better when it's simple</p> </div> <div class="tools group"> <!-- USER TOOLS --> <div id="dokuwiki__usertools"> <h3 class="a11y">User Tools</h3> <ul> <li class="action login"><a href="/farms?do=login&sectok=" title="Log In" rel="nofollow"><span>Log In</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg></a></li> </ul> </div> <!-- SITE TOOLS --> <div id="dokuwiki__sitetools"> <h3 class="a11y">Site Tools</h3> <form action="/start" method="get" role="search" class="search doku_form" id="dw__search" accept-charset="utf-8"><input type="hidden" name="do" value="search" /><input type="hidden" name="id" value="farms" /><div class="no"><input name="q" type="text" class="edit" title="[F]" accesskey="f" placeholder="Search" autocomplete="on" id="qsearch__in" value="" /><button value="1" type="submit" title="Search">Search</button><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form> <div class="mobileTools"> <form action="/doku.php" method="get" accept-charset="utf-8"><div class="no"><input type="hidden" name="id" value="farms" /><select name="do" class="edit quickselect" title="Tools"><option value="">Tools</option><optgroup label="Page Tools"><option value="edit">Edit this page</option><option value="revisions">Old revisions</option><option value="backlink">Backlinks</option></optgroup><optgroup label="Site Tools"><option value="recent">Recent Changes</option><option value="media">Media Manager</option><option value="index">Sitemap</option></optgroup><optgroup label="User Tools"><option value="login">Log In</option></optgroup></select><button type="submit">></button></div></form> </div> <ul> <li class="action recent"><a href="/farms?do=recent" title="Recent Changes [r]" rel="nofollow" accesskey="r">Recent Changes</a></li><li class="action media"><a href="/farms?do=media&ns=" title="Media Manager" rel="nofollow">Media Manager</a></li><li class="action index"><a href="/farms?do=index" title="Sitemap [x]" rel="nofollow" accesskey="x">Sitemap</a></li> </ul> </div> </div> <!-- BREADCRUMBS --> <div class="breadcrumbs"> <div class="trace"><span class="bchead">Trace:</span> <span class="bcsep">•</span> <span class="curid"><bdi><a href="/farms" class="breadcrumbs" title="farms">farms</a></bdi></span></div> </div> <hr class="a11y" /> </div></header><!-- /header --> <div class="wrapper group"> <!-- ********** ASIDE ********** --> <nav id="dokuwiki__aside" aria-label="Sidebar"><div class="pad aside include group"> <h3 class="toggle">Sidebar</h3> <div class="content"><div class="group"> <div class="plugin_translation is-dropdown"><span class="title">Translations of this page<sup><a href="/localization" class="wikilink1" title="localization" data-wiki-id="localization">?</a></sup>: </span><ul><li class="span"><span class="wikilink1" title="English">English (en)</span></li><li class="a"><a class="wikilink2" title="|العربية" href="/ar:farms">|العربية (ar)</a></li><li class="a"><a class="wikilink2" title="Català" href="/ca:farms">Català (ca)</a></li><li class="a"><a class="wikilink2" title="Česky" href="/cs:farms">Česky (cs)</a></li><li class="a"><a class="wikilink2" title="Dansk" href="/da:farms">Dansk (da)</a></li><li class="a"><a class="wikilink2" title="Deutsch" href="/de:farms">Deutsch (de)</a></li><li class="a"><a class="wikilink2" title="Ελληνικά" href="/el:farms">Ελληνικά (el)</a></li><li class="a"><a class="wikilink2" title="Esperanto" href="/eo:farms">Esperanto (eo)</a></li><li class="a"><a class="wikilink2" title="Español" href="/es:farms">Español (es)</a></li><li class="a"><a class="wikilink2" title="فارسی" href="/fa:farms">فارسی (fa)</a></li><li class="a"><a class="wikilink2" title="Français" href="/fr:farms">Français (fr)</a></li><li class="a"><a class="wikilink2" title="עברית" href="/he:farms">עברית (he)</a></li><li class="a"><a class="wikilink2" title="Magyar" href="/hu:farms">Magyar (hu)</a></li><li class="a"><a class="wikilink2" title="Italiano" href="/it:farms">Italiano (it)</a></li><li class="a"><a class="wikilink1" title="日本語" href="/ja:farms">日本語 (ja)</a></li><li class="a"><a class="wikilink2" title="한국어" href="/ko:farms">한국어 (ko)</a></li><li class="a"><a class="wikilink2" title="Lietuvių Kalba" href="/lt:farms">Lietuvių Kalba (lt)</a></li><li class="a"><a class="wikilink2" title="Nederlands" href="/nl:farms">Nederlands (nl)</a></li><li class="a"><a class="wikilink2" title="Norsk" href="/no:farms">Norsk (no)</a></li><li class="a"><a class="wikilink2" title="Polski" href="/pl:farms">Polski (pl)</a></li><li class="a"><a class="wikilink1" title="Português" href="/pt-br:farms">Português (pt-br)</a></li><li class="a"><a class="wikilink2" title="Română" href="/ro:farms">Română (ro)</a></li><li class="a"><a class="wikilink1" title="Русский" href="/ru:farms">Русский (ru)</a></li><li class="a"><a class="wikilink2" title="Српски Језик" href="/sr:farms">Српски Језик (sr)</a></li><li class="a"><a class="wikilink2" title="Svenska" href="/sv:farms">Svenska (sv)</a></li><li class="a"><a class="wikilink2" title="ไทย" href="/th:farms">ไทย (th)</a></li><li class="a"><a class="wikilink2" title="Українська" href="/uk:farms">Українська (uk)</a></li><li class="a"><a class="wikilink2" title="中文" href="/zh:farms">中文 (zh)</a></li><li class="a"><a class="wikilink2" title="繁體中文" href="/zh-tw:farms">繁體中文 (zh-tw)</a></li></ul></div> <p> <strong>Learn about DokuWiki</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/features" class="wikilink1" title="features" data-wiki-id="features">Features</a> & <a href="/blogroll" class="wikilink1" title="blogroll" data-wiki-id="blogroll">reviews</a> </div> </li> <li class="level1"><div class="li"> <a href="/install" class="wikilink1" title="install" data-wiki-id="install">Installation guide</a></div> </li> <li class="level1"><div class="li"> <a href="/manual" class="wikilink1" title="manual" data-wiki-id="manual">User manual</a> & <a href="/wiki:syntax" class="wikilink1" title="wiki:syntax" data-wiki-id="wiki:syntax">syntax</a></div> </li> <li class="level1"><div class="li"> <a href="/changes" class="wikilink1" title="changes" data-wiki-id="changes">Release notes</a></div> </li> <li class="level1"><div class="li"> <a href="/faq" class="wikilink1" title="faq" data-wiki-id="faq">FAQ</a></div> </li> </ul> <p> <strong>Advanced Use</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/extensions" class="wikilink1" title="extensions" data-wiki-id="extensions">Extensions</a></div> </li> <li class="level1"><div class="li"> <a href="/development" class="wikilink1" title="development" data-wiki-id="development">Development manual</a></div> </li> </ul> <p> <strong>Corporate Use</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/faq:support" class="wikilink1" title="faq:support" data-wiki-id="faq:support">Get support</a></div> </li> <li class="level1"><div class="li"> <a href="/donate" class="wikilink1" title="donate" data-wiki-id="donate">Donations</a></div> </li> </ul> <p> <strong>Our Community</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/teams:getting_involved" class="wikilink1" title="teams:getting_involved" data-wiki-id="teams:getting_involved">Get involved</a></div> </li> <li class="level1"><div class="li"> <a href="/dokuinstall" class="wikilink1" title="dokuinstall" data-wiki-id="dokuinstall">Users</a></div> </li> <li class="level1"><div class="li"> <a href="http://forum.dokuwiki.org" class="urlextern" title="http://forum.dokuwiki.org">User forum</a></div> </li> <li class="level1"><div class="li"> <a href="/mailinglist" class="wikilink1" title="mailinglist" data-wiki-id="mailinglist">Development mailinglist</a></div> </li> </ul> <hr /> <p> Follow us on <a href="https://phpc.social/@dokuwiki" class="urlextern" title="https://phpc.social/@dokuwiki">Mastodon</a> and other <a href="/social" class="wikilink1" title="social" data-wiki-id="social">social networks</a>. </p> <p> <a href="/privacy" class="wikilink1" title="privacy" data-wiki-id="privacy">Our Privacy Policy</a> </p> </div></div> </div></nav><!-- /aside --> <!-- ********** CONTENT ********** --> <main id="dokuwiki__content"><div class="pad group"> <div class="pageId"><span>farms</span></div> <div class="page group"> <!-- wikipage start --> <!-- TOC START --> <div id="dw__toc" class="dw__toc"> <h3 class="toggle">Table of Contents</h3> <div> <ul class="toc"> <li class="level1"><div class="li"><a href="#dokuwiki_farms">DokuWiki Farms</a></div> <ul class="toc"> <li class="level2"><div class="li"><a href="#setup_with_farmer_plugin">Setup with Farmer Plugin</a></div></li> <li class="level2"><div class="li"><a href="#manually_setup">Manually Setup</a></div></li> <li class="level2"><div class="li"><a href="#terms">Terms</a></div></li> <li class="level2"><div class="li"><a href="#directory_setup">Directory Setup</a></div></li> <li class="level2"><div class="li"><a href="#two_different_setups">Two different setups</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#virtual_host_based_setup">Virtual host based setup</a></div></li> <li class="level3"><div class="li"><a href="#htaccess_based_setup">.htaccess based setup</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#how_to_create_a_farm">How to create a farm</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#prerequisites">0. Prerequisites</a></div></li> <li class="level3"><div class="li"><a href="#create_the_farm_directory">1. Create the farm directory</a></div></li> <li class="level3"><div class="li"><a href="#activate_the_farm">2. Activate the farm</a></div></li> <li class="level3"><div class="li"><a href="#add_an_animal">3. Add an animal</a></div></li> <li class="level3"><div class="li"><a href="#add_required_server_settings">4. Add required server settings</a></div></li> <li class="level3"><div class="li"><a href="#change_the_admin_password">5. Change the admin password</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#how_to_add_more_animals">How to add more animals</a></div></li> <li class="level2"><div class="li"><a href="#discussion">Discussion</a></div></li> <li class="level2"><div class="li"><a href="#examples">Examples</a></div></li> </ul></li> </ul> </div> </div> <!-- TOC END --> <h1 class="sectionedit1" id="dokuwiki_farms">DokuWiki Farms</h1> <div class="level1"> <p> A wiki farm is a collection of wikis running on the same web server and sharing one parent wiki engine. So, by running just one single parent wiki, you can power hundreds of independent other wikis (aka “animals”). All animals share one set of plugins and templates but each of them can have a different set of enabled plugins, a different template and a different configuration. The concept of farms is also called “multi-site”, “multi-domain” or “sub-sites” in the context of other <abbr title="Content Management System">CMS</abbr>. </p> </div> <div class="secedit editbutton_section editbutton_1"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[DokuWiki Farms] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="dokuwiki_farms" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1-520" /><button type="submit" title="DokuWiki Farms">Edit</button></div></form></div> <h2 class="sectionedit2" id="setup_with_farmer_plugin">Setup with Farmer Plugin</h2> <div class="level2"> <p> There are multiple ways to achieve running a wiki farm. Probably the easiest way is to use the <a href="/plugin:farmer" class="wikilink1" title="plugin:farmer" data-wiki-id="plugin:farmer">Farmer Plugin</a> which will set up the farm for you and provides means to create and manage the animals. </p> </div> <div class="secedit editbutton_section editbutton_2"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[Setup with Farmer Plugin] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="setup_with_farmer_plugin" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="521-775" /><button type="submit" title="Setup with Farmer Plugin">Edit</button></div></form></div> <h2 class="sectionedit3" id="manually_setup">Manually Setup</h2> <div class="level2"> <p> This page describes how to <em>manually</em> set up a farm in the easiest and most straightforward way to run a wiki farm with DokuWiki. More <a href="/farms:advanced" class="wikilink1" title="farms:advanced" data-wiki-id="farms:advanced">advanced setups</a> and tips are described on a separate page. </p> </div> <div class="secedit editbutton_section editbutton_3"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[Manually Setup] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="manually_setup" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="776-1019" /><button type="submit" title="Manually Setup">Edit</button></div></form></div> <h2 class="sectionedit4" id="terms">Terms</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> When talking about a <strong>farm</strong> it describes the whole setup containing all of the below. Usually there is only one farm per server.</div> </li> <li class="level1"><div class="li"> The <strong>farmer</strong> (aka parent wiki) is the actual DokuWiki installation. This is where all the code resides, where you install plugins and templates and what you will update on new releases. You only have one farmer per farm.</div> </li> <li class="level1"><div class="li"> The setup of a <strong>farm directory</strong> is what is needed to start farming. It is the physical parent directory of all the animals on your server. Just one single location on your farm server.</div> </li> <li class="level1"><div class="li"> The <strong>animals</strong> (aka child wikis) are the individual wiki instances. This means you can have plethora of these but each one will only contain the wiki data and animal specific configurations, no more code duplication.</div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_4"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[Terms] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="terms" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1020-1814" /><button type="submit" title="Terms">Edit</button></div></form></div> <h2 class="sectionedit5" id="directory_setup">Directory Setup</h2> <div class="level2"> <p> The following example is the most common directory setup and it is used throughout this document. But you can have a very different setup. </p> <ul> <li class="level1"><div class="li"> <code>/var/www/dokuwiki</code> – the DokuWiki engine, this needs to be accessible from the web</div> </li> <li class="level1"><div class="li"> <code>/var/www/farm</code> – the DokuWiki farm directory which contains all the animals</div> </li> </ul> <p> In your farm directory you can have as many animals as you like, e.g.: </p> <ul> <li class="level1"><div class="li"> <code>/var/www/farm/animal</code> – one wiki</div> </li> <li class="level1"><div class="li"> <code>/var/www/farm/example.com</code> – another wiki</div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_5"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[Directory Setup] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="directory_setup" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1815-2322" /><button type="submit" title="Directory Setup">Edit</button></div></form></div> <h2 class="sectionedit6" id="two_different_setups">Two different setups</h2> <div class="level2"> <p> There are two different setups: <strong>Virtual host</strong> based and <strong>.htaccess</strong> based. </p> <p> The <strong>Virtual host</strong> (or 'virtual web server') method combines features of a web-server and the way names are translated to internet addresses to provide access to different farm animals in the wiki farm based on the hostname used in accessing the wiki. In this case, multiple hostnames end up referring to the same web server – “wiki.mydomain.net” may provide access to the farmer wiki, while “programming.mydomain.net” may provide access to your wiki with programming tutorials, but they both connect to the same physical machine. </p> <p> The <strong>.htaccess</strong> (or 'server script') method only requires features of a webserver to make different file paths refer to distinct wikis. A small script tells the webserver how to handle each wiki's top level directory differently, which allows for independent wikis. In this case, “<a href="http://www.mydomain.net/dokuwiki/" class="urlextern" title="http://www.mydomain.net/dokuwiki/">www.mydomain.net/dokuwiki/</a>” could be the start page for my farmer wiki, and “<a href="http://www.mydomain.net/programming" class="urlextern" title="http://www.mydomain.net/programming">www.mydomain.net/programming</a>” would access the programming tutorial wiki. </p> <p> Regardless, both methods require some sort of server configuration. </p> </div> <div class="secedit editbutton_section editbutton_6"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[Two different setups] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="two_different_setups" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="2323-3481" /><button type="submit" title="Two different setups">Edit</button></div></form></div> <h3 class="sectionedit7" id="virtual_host_based_setup">Virtual host based setup</h3> <div class="level3"> <ul> <li class="level1"><div class="li"> What to configure: <a href="https://en.wikipedia.org/wiki/Virtual_hosting" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/Virtual_hosting">virtual hosts</a> via Apache's httpd.conf or your hosting control panel. </div> </li> <li class="level1"><div class="li"> Resulting URLs: anything, e.g. <code>example.com</code>, <code>subdomain.example.net</code> or <code>test.example.org:8080/foo/bar/</code>.</div> </li> <li class="level1"><div class="li"> Advantages: It can create much more flexible URLs which are independent of the underlying file structure.</div> </li> <li class="level1"><div class="li"> Disadvantages: The possibility to set up virtual hosts is not always available. Some (especially cheap) hosting providers don't allow it.</div> </li> </ul> <p> For systems you will want to access from elsewhere, you will need to publish the new name for the web server's host. When you want to run this setup, you will need to provide the new hostnames to any machine that might want to access your farms usually configuring a <abbr title="Domain Name System">DNS</abbr> server. If unsure, contact your system administrator or service provider for specific instructions. </p> <p> To have access from your local machine, you have to edit the local 'hosts' file to make sure that your computer will know its new names. <img src="/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> This method only works when connecting from the same machine; other systems will not know the machine's additional names. </p> <p> For Windows users, you will need to change the file <code>c:\windows\system32\drivers\etc\hosts</code>. In most setups, you will need to have administrator privilege to edit this file. </p> <p> For Linux and other Unix-like systems, you will need to edit the file <code>/etc/hosts</code>. </p> <p> For either system, you will want to add: </p> <pre class="code">127.0.0.1 farm-animal.mydomain.net</pre> <p> (Where farm-animal is the name of the new wiki, and mydomain.net is appropriate for your system.) </p> </div> <div class="secedit editbutton_section editbutton_7"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[Virtual host based setup] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="virtual_host_based_setup" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="3482-5095" /><button type="submit" title="Virtual host based setup">Edit</button></div></form></div> <h3 class="sectionedit8" id="htaccess_based_setup">.htaccess based setup</h3> <div class="level3"> <ul> <li class="level1"><div class="li"> What to configure: <a href="https://en.wikipedia.org/wiki/.htaccess" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/.htaccess">.htaccess</a>. Apache also needs to permit htaccess configuration.</div> </li> <li class="level1"><div class="li"> Resulting URLs: only “subdirectories” of one domain and farm, e.g. <code>example.com/farm/cat</code> or <code>example.com/farm/dog</code>, but with <a href="/farms:advanced#flexible_htaccess-based_setups" class="wikilink1" title="farms:advanced" data-wiki-id="farms:advanced">a more complex setup</a> nearly the same flexibility as with the other setup is possible</div> </li> <li class="level1"><div class="li"> Advantages: If virtual hosts are not supported by the hosting provider, this is the only possible solution.</div> </li> <li class="level1"><div class="li"> Disadvantages: .htaccess files are not always supported by some hosting providers. But this solution is more likely to be supported than virtual hosts.</div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_8"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[.htaccess based setup] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="htaccess_based_setup" /><input type="hidden" name="codeblockOffset" value="1" /><input type="hidden" name="range" value="5096-5760" /><button type="submit" title=".htaccess based setup">Edit</button></div></form></div> <h2 class="sectionedit9" id="how_to_create_a_farm">How to create a farm</h2> <div class="level2"> </div> <div class="secedit editbutton_section editbutton_9"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[How to create a farm] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="how_to_create_a_farm" /><input type="hidden" name="codeblockOffset" value="1" /><input type="hidden" name="range" value="5761-5794" /><button type="submit" title="How to create a farm">Edit</button></div></form></div> <h3 class="sectionedit10" id="prerequisites">0. Prerequisites</h3> <div class="level3"> <p> In the following steps we assume you have already <a href="/install" class="wikilink1" title="install" data-wiki-id="install">installed a standard DokuWiki</a>. Please make sure to either install it properly, so that it works like a normal wiki, or remove <code>install.php</code> for security reasons. </p> </div> <div class="secedit editbutton_section editbutton_10"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[0. Prerequisites] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="prerequisites" /><input type="hidden" name="codeblockOffset" value="1" /><input type="hidden" name="range" value="5795-6049" /><button type="submit" title="0. Prerequisites">Edit</button></div></form></div> <h3 class="sectionedit11" id="create_the_farm_directory">1. Create the farm directory</h3> <div class="level3"> <p> Create an empty directory named <code>/var/www/farm</code>. That will be your farm directory and needs to be writeable by the web server. That should be protected in the same way you would protect a normal DokuWiki. </p> </div> <div class="secedit editbutton_section editbutton_11"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[1. Create the farm directory] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="create_the_farm_directory" /><input type="hidden" name="codeblockOffset" value="1" /><input type="hidden" name="range" value="6050-6297" /><button type="submit" title="1. Create the farm directory">Edit</button></div></form></div> <h3 class="sectionedit12" id="activate_the_farm">2. Activate the farm</h3> <div class="level3"> <p> In the farmer directory, copy <code>./inc/preload.php.dist</code> to <code>./inc/preload.php</code>, open it and uncomment the two relevant lines and set your farm directory, so that it looks like this: </p> <dl class="code"> <dt><a href="/_export/code/farms?codeblock=1" title="Download Snippet" class="mediafile mf_php">inc/preload.php</a></dt> <dd><pre class="code php"><span class="co1">// set this to your farm directory</span> <span class="kw1">if</span> <span class="br0">(</span><span class="sy0">!</span><a href="http://www.php.net/defined"><span class="kw3">defined</span></a><span class="br0">(</span><span class="st_h">'DOKU_FARMDIR'</span><span class="br0">)</span><span class="br0">)</span> <a href="http://www.php.net/define"><span class="kw3">define</span></a><span class="br0">(</span><span class="st_h">'DOKU_FARMDIR'</span><span class="sy0">,</span> <span class="st_h">'/var/www/farm'</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// include this after DOKU_FARMDIR if you want to use farms</span> <span class="kw1">include</span><span class="br0">(</span>fullpath<span class="br0">(</span><a href="http://www.php.net/dirname"><span class="kw3">dirname</span></a><span class="br0">(</span><span class="kw4">__FILE__</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">.</span> <span class="st_h">'/farm.php'</span><span class="br0">)</span><span class="sy0">;</span></pre> </dd></dl> <p> Note: the path that you enter for <code>DOKU_FARMDIR</code> may need to be based on the “true” path to the server directory (as revealed by the PHP variable <code>$_SERVER['DOCUMENT_ROOT']</code>). Sometimes using a symbolic link does not work. For example, even if you normally access your farm server directory as “/public_html/farm”, you might need to enter something like “/home/<htmlusername>/public_html/farm”. </p> </div> <div class="secedit editbutton_section editbutton_12"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[2. Activate the farm] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="activate_the_farm" /><input type="hidden" name="codeblockOffset" value="1" /><input type="hidden" name="range" value="6298-7170" /><button type="submit" title="2. Activate the farm">Edit</button></div></form></div> <h3 class="sectionedit13" id="add_an_animal">3. Add an animal</h3> <div class="level3"> <p> Extract <a href="/_media/dokuwiki_farm_animal.zip" class="media mediafile mf_zip" title="dokuwiki_farm_animal.zip (47 KB)">this animal template</a> into your farm directory. It is a directory (called <code>_animal</code>) which includes an (as good as) empty <code>data</code> and a pre-filled <code>conf</code> directory. </p> <p> Then you need to rename that extracted directory. But the rules how to name the directory in which your animal stores all its files depends on the setup: </p> <ul> <li class="level1"><div class="li"> The virtual host setup needs animal directory names which reflect their <abbr title="Uniform Resource Locator">URL</abbr>. E.g. <code>subdomain.example.com</code> works with a directory named <code>subdomain.example.com</code>. <sup><a href="#fn__1" id="fnt__1" class="fn_top">1)</a></sup></div> </li> <li class="level1"><div class="li"> The .htaccess setup needs the animal directory names exactly as they are called in the <abbr title="Uniform Resource Locator">URL</abbr>. E.g. <code>example.com/farm/cat</code> would need an animal directory called <code>cat</code>. If you are using a separate .htaccess file for each animal you can specify the animal name there.</div> </li> </ul> <p> In case you're using the .htaccess based setup, you need to uncomment and change your animal's <code>$conf['basedir']</code> in <code>conf/local.protected.php</code> to the path in the <abbr title="Uniform Resource Locator">URL</abbr> under which the animal can be accessed (for example '/animal/' if accessible at <a href="http://example.com/animal" class="urlextern" title="http://example.com/animal">http://example.com/animal</a> – but can be stored in /var/www/farm/animal). </p> </div> <div class="secedit editbutton_section editbutton_13"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[3. Add an animal] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="add_an_animal" /><input type="hidden" name="codeblockOffset" value="2" /><input type="hidden" name="range" value="7171-8434" /><button type="submit" title="3. Add an animal">Edit</button></div></form></div> <h3 class="sectionedit14" id="add_required_server_settings">4. Add required server settings</h3> <div class="level3"> <p> If you're not used to server configuration, this is the only more complicated bit. <img src="/lib/images/smileys/fixme.svg" class="icon smiley" alt="FIXME" /> This and the following needs elaboration. </p> <p> The alternatives are presented in processing order in inc/farm.php. If a .htaccess-based setup is recognized, the virtual server setup is ignored. </p> </div> <h4 id="a_htaccess_based_setup">a. .htaccess Based Setup</h4> <div class="level4"> <p> This <code>.htaccess</code> file needs to be put into the farm directory. Remember to enable .htaccess in the Apache Configuration (AllowOverride All) </p> <dl class="code"> <dt><a href="/_export/code/farms?codeblock=2" title="Download Snippet" class="mediafile mf_htaccess">.htaccess</a></dt> <dd><pre class="code apache"><span class="kw1">RewriteEngine</span> <span class="kw2">On</span> <span class="kw1">RewriteRule</span> ^/?([^/]+)/(.*) /dokuwiki/$2?animal=$1 [QSA] <span class="kw1">RewriteRule</span> ^/?([^/]+)$ /dokuwiki/?animal=$1 [QSA] <span class="kw1">Options</span> +<span class="kw2">FollowSymLinks</span></pre> </dd></dl> <p> Change the <code>/dokuwiki/</code> part to the path to the farmer. </p> </div> <h4 id="b_virtual_host_based_setup">b. Virtual Host Based Setup</h4> <div class="level4"> <p> For this setup you have to configure the <a href="https://en.wikipedia.org/wiki/Virtual_hosting" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/Virtual_hosting">virtual host</a> for each new animal in your web hosting control panel or <code>httpd.conf</code>. Here is the <code>httpd.conf</code> example for <code>subdomain.example.com</code>: </p> <pre class="code apache"><span class="kw1">NameVirtualHost</span> * <<span class="kw3">VirtualHost</span> *> <span class="kw1">ServerName</span> subdomain.example.com <span class="co1"># this is the URL of your wiki animal</span> <span class="kw1">DocumentRoot</span> /var/www/dokuwiki/ <span class="co1"># the document root always needs to be the DokuWiki *farmer* directory</span> </<span class="kw3">VirtualHost</span>></pre> <p> On most shared hosts environments you only need to add the <strong>server name</strong> (your desired domain with or without subdomain) and the <strong>document root</strong> (always pointing to the farmer directory) through their <abbr title="Graphical User Interface">GUI</abbr>. </p> <p> In some cases, a <strong>generic approach</strong> may be applied as well. For this, you don't need modifications in the apache configuration when you add a farm animal. Generic Apache configuration: </p> <pre class="code apache"><<span class="kw3">VirtualHost</span> *:<span class="nu0">80</span>> <span class="kw1">ServerName</span> example.com <span class="kw1">ServerAlias</span> *.example.com <span class="kw1">VirtualDocumentRoot</span> /var/www/%-<span class="nu0">2</span>/%-<span class="nu0">3</span> <span class="kw1">RewriteEngine</span> <span class="kw2">On</span> </<span class="kw3">VirtualHost</span>></pre> <p> Each subdomain is automatically mapped to /var/www/example.com/<subdomain>. This arrangement makes sense when several domains point to the same server. In each of these subdomain directories, a symlink to the dokuwiki code directory must be created. </p> <p> Each individual animal itself is in <code>DOKU_FARMDIR/<subdomain>.example.com</code> (mirrors the original <abbr title="Uniform Resource Locator">URL</abbr>).<br/> This path must be created and the animal template (see above) may be copied herein. </p> </div> <div class="secedit editbutton_section editbutton_14"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[4. Add required server settings] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="add_required_server_settings" /><input type="hidden" name="codeblockOffset" value="2" /><input type="hidden" name="range" value="8435-10813" /><button type="submit" title="4. Add required server settings">Edit</button></div></form></div> <h3 class="sectionedit15" id="change_the_admin_password">5. Change the admin password</h3> <div class="level3"> <p> You're done, you can now simply go to your animal's <abbr title="Uniform Resource Locator">URL</abbr> (either <code>subdomain.example.com</code> or <code>example.com/farm/animal/</code> depending on your setup). </p> <p> <img src="/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> As the animal template includes a default “admin” user account with the password “admin”. Please <strong>change the admin password</strong> as soon as possible. Just login with admin/admin, go to “Admin” > “User Manager”, click on the admin user and change its password below. You should also change the admin's <strong>email</strong> address. </p> </div> <div class="secedit editbutton_section editbutton_15"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[5. Change the admin password] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="change_the_admin_password" /><input type="hidden" name="codeblockOffset" value="5" /><input type="hidden" name="range" value="10814-11325" /><button type="submit" title="5. Change the admin password">Edit</button></div></form></div> <h2 class="sectionedit16" id="how_to_add_more_animals">How to add more animals</h2> <div class="level2"> <p> After the initial setup, you only need to repeat <a href="#add_an_animal" title="farms ↵" class="wikilink1">add an animal</a>, <a href="#add_required_server_settings" title="farms ↵" class="wikilink1">add required server settings</a> (only in case of a virtual host setup) and <a href="#change_the_admin_password" title="farms ↵" class="wikilink1">change the admin password</a> for each new animal. </p> </div> <div class="secedit editbutton_section editbutton_16"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[How to add more animals] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="how_to_add_more_animals" /><input type="hidden" name="codeblockOffset" value="5" /><input type="hidden" name="range" value="11326-11561" /><button type="submit" title="How to add more animals">Edit</button></div></form></div> <h2 class="sectionedit17" id="discussion">Discussion</h2> <div class="level2"> <p> Please use the <a href="https://forum.dokuwiki.org" class="urlextern" title="https://forum.dokuwiki.org">Forum</a> to discuss questions regarding farm setup. Be sure to mention if you did a manual setup or used the farmer plugin. </p> </div> <div class="secedit editbutton_section editbutton_17"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[Discussion] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="discussion" /><input type="hidden" name="codeblockOffset" value="5" /><input type="hidden" name="range" value="11562-11753" /><button type="submit" title="Discussion">Edit</button></div></form></div> <h2 class="sectionedit18" id="examples">Examples</h2> <div class="level2"> <p> One example for setting a farm has been detailed <a href="/farms:example01" class="wikilink1" title="farms:example01" data-wiki-id="farms:example01">here</a>. </p> </div> <div class="secedit editbutton_section editbutton_18"><form class="button btn_secedit" method="post" action="/farms"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1695417108" /><input type="hidden" name="summary" value="[Examples] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="examples" /><input type="hidden" name="codeblockOffset" value="5" /><input type="hidden" name="range" value="11754-" /><button type="submit" title="Examples">Edit</button></div></form></div><div class="footnotes"> <div class="fn"><sup><a href="#fnt__1" id="fn__1" class="fn_bot">1)</a></sup> <div class="content">But it would also work with any other of the following directory names: <code>example</code> or <code>example.com</code></div></div> </div> <!-- wikipage stop --> </div> <div class="docInfo"><bdi>farms.txt</bdi> · Last modified: <time datetime="2023-09-22T23:11:48+0200">2023-09-22 23:11</time> by <bdi>Klap-in</bdi></div> <hr class="a11y" /> </div></main><!-- /content --> <!-- PAGE ACTIONS --> <nav id="dokuwiki__pagetools" aria-labelledby="dokuwiki__pagetools__heading"> <h3 class="a11y" id="dokuwiki__pagetools__heading">Page Tools</h3> <div class="tools"> <ul> <li class="edit"><a href="/farms?do=edit" title="Edit this page [e]" rel="nofollow" accesskey="e"><span>Edit this page</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg></a></li><li class="revs"><a href="/farms?do=revisions" title="Old revisions [o]" rel="nofollow" accesskey="o"><span>Old revisions</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg></a></li><li class="backlink"><a href="/farms?do=backlink" title="Backlinks" rel="nofollow"><span>Backlinks</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"/></svg></a></li><li class="top"><a href="#dokuwiki__top" title="Back to top [t]" rel="nofollow" accesskey="t"><span>Back to top</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg></a></li> </ul> </div> </nav> </div><!-- /wrapper --> <!-- ********** FOOTER ********** --> <footer id="dokuwiki__footer"><div class="pad"> <div class="license">Except where otherwise noted, content on this wiki is licensed under the following license: <bdi><a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license" class="urlextern">CC Attribution-Share Alike 4.0 International</a></bdi></div> <div class="buttons"> <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license"><img src="/lib/images/license/button/cc-by-sa.png" alt="CC Attribution-Share Alike 4.0 International" /></a> <a href="https://www.dokuwiki.org/donate" title="Donate" ><img src="/lib/tpl/dokuwiki/images/button-donate.gif" width="80" height="15" alt="Donate" /></a> <a href="https://php.net" title="Powered by PHP" ><img src="/lib/tpl/dokuwiki/images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a> <a href="//validator.w3.org/check/referer" title="Valid HTML5" ><img src="/lib/tpl/dokuwiki/images/button-html5.png" width="80" height="15" alt="Valid HTML5" /></a> <a href="//jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" ><img src="/lib/tpl/dokuwiki/images/button-css.png" width="80" height="15" alt="Valid CSS" /></a> <a href="https://dokuwiki.org/" title="Driven by DokuWiki" ><img src="/lib/tpl/dokuwiki/images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a> </div> <div style="margin-top: 2em; font-size:90%" class="dokuwiki"><div style="float:right"><a href="http://www.splitbrain.org/personal#imprint" style="float:right; text-decoration: none; color:#333">Imprint</a></div></div><!-- Include for DokuWiki site wide top bar --> <style type="text/css"> @media screen { body { padding-top: 30px; } #global__header { position: absolute; top: 0; left: 0; text-align: left; vertical-align: middle; line-height: 1.5; background-color: #333; box-shadow: 0 0 8px rgba(0,0,0,0.5); width: 100%; margin: 0; padding: 5px 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; white-space: nowrap; overflow: hidden; } #global__header h2 { position: absolute; left: -99999em; top: 0; overflow: hidden; display: inline; } #global__header ul, #global__header li { margin: 0; padding: 0; list-style: none; display: inline; line-height: 1.5; } #global__header a { color: #bbb; text-decoration: none; margin-right: 20px; font-size: 14px; font-weight: normal; } #global__header a:hover, #global__header a:active, #global__header a:focus { color: #fff; text-decoration: underline; } #global__header form { float: right; margin: 0 0 0 20px; } #global__header input { background-color: #333; background-image: none; border: 1px solid #bbb; color: #fff; box-shadow: none; border-radius: 2px; margin: 0; line-height: normal; padding: 1px 0 1px 0; height: auto; } #global__header input.button { border: none; color: #bbb; } #global__header input.button:hover, #global__header input.button:active, #global__header input.button:focus { color: #fff; text-decoration: underline; } } /* /@media */ @media only screen and (min-width: 601px) { /* changes specific for www.dokuwiki.org */ #dokuwiki__header { padding-top: 3em; } #dokuwiki__usertools { top: 3em; } /* changes specific for bugs.dokuwiki.org */ div#container div#showtask { top: 40px; } } /* /@media */ @media only screen and (max-width: 600px) { body { padding-top: 0; } #global__header { position: static; white-space: normal; overflow: auto; } #global__header form { float: none; display: block; margin: 0 0 .4em; } } /* /@media */ @media print { #global__header { display: none; } } /* /@media */ </style> <div id="global__header"> <h2>Global DokuWiki Links</h2> <form method="get" action="https://search.dokuwiki.org/" target="_top"> <input type="text" name="q" title="Search all DokuWiki sites at once" class="input" /> <input type="submit" title="Search all DokuWiki sites at once" value="Search" class="button" /> </form> <ul> <li><a href="https://download.dokuwiki.org" title="Download the latest release" target="_top">Download</a></li> <li><a href="https://www.dokuwiki.org" title="Read the DokuWiki documentation" target="_top">Wiki</a></li> <li><a href="https://forum.dokuwiki.org" title="Ask questions in the DokuWiki forum" target="_top">Forum</a></li> <li><a href="https://irc.dokuwiki.org" title="Check IRC chat logs or join the chat" target="_top">IRC</a></li> <li><a href="https://github.com/splitbrain/dokuwiki/issues" title="Report and track bugs" target="_top">Bugs</a></li> <li><a href="https://translate.dokuwiki.org/" title="Help translating the DokuWiki interface" target="_top">Translate</a></li> <li><a href="https://github.com/splitbrain/dokuwiki" title="Access the most recent git commits" target="_top">Git</a></li> <li><a href="https://xref.dokuwiki.org/reference/dokuwiki/" title="Cross-Reference of the DokuWiki source code" target="_top">XRef</a></li> <li><a href="https://codesearch.dokuwiki.org/" title="Search through the sources of DokuWiki, plugins and templates" target="_top">Code Search</a></li> </ul> </div> <!-- end of DokuWiki top bar include --> </div></footer><!-- /footer --> </div></div><!-- /site --> <div class="no"><img src="/lib/exe/taskrunner.php?id=farms&1732706483" width="2" height="1" alt="" /></div> <div id="screen__mode" class="no"></div></body> </html>