====== Dokuwiki Startup Guide ====== ===== install and setup 2021 ===== - install dokuwiki web app - initial setup - disable register: login wiki with your Admin > Configuration Manager: find "Register", check the box for "Disable Dokuwiki actions" - delete all default page: in sitemap, go each default page and empty the page content to delete - set wiki site wide permission: admin page > Access Control List Management * @ALL Read (change from default upload to Read to prevent spam) * @user Create (allow other reg user to create page) * userA Delete (allow some power user to delete page) categoryNameSpace:* @ALL None (to limit public access on some sub folder content) categoryNameSpace:* @user Upload (free reg user to access sub folder content) ===== Customize ===== ** hide sitemap index from non-login user ** * check on Configuration Manager > sneaky_index **start page customize** * admin panel > Configuration manager: Basic panel, starting point: change from "start" to "Welcome" as example, then create the page * (outdated way) /wiki/conf/dokuwiki.php $conf['start'] = 'Welcome'; //name of start page ** change wiki page width ** * method 0 - Toggle Page Width with Javascript, CSS and Side Tool customize on "/lib/tpl/dokuwiki/main.php" - step 1: edit main.php head part to add css and javascript function (jquery no need) - step 2: edit main.php page action part
  • Full Page Width
  • * method 1 with css: /* find css file in default template folder with class dokuwiki__site #dokuwiki__site { max-width: 100% !important; } * method 2 with style.ini in default template folder ([[https://www.dokuwiki.org/template:dokuwiki|ref]]) __site_width__ = "100%" ; @ini_site_width #defaut __site_width__ = "75em" ; @ini_site_width **change "doku.php" in URL (you need repeat steps if you update dokuwiki)** - (updated 2021) - copy the file "wiki/doku.php" into "wiki/newName.php" (such as "page.php"; but can not be "index.php", as it is reserved for default) - edit wiki/index.php, replace all "doku.php" with "newName.php" - create wiki/inc/preload.php - for link in some page that still link to doku.php, you may need to edit that page and update the page cache **change wiki URL format** * edit wiki/conf/local.php part$conf['userewrite'] = 2; * 0 : dokuwiki/doku.php?id=wiki:syntax (default) * 1 : dokuwiki/wiki:syntax (server side control) * 2 : http://example.com/dokuwiki/doku.php/wiki:syntax (doku side control) **change 2013 or later DokuWiki homepage logo (further if you want to change the favicon)** * method 1: use media manager, under wiki namespace, upload new logo to replace old one (:wiki:logo.png). ([[http://www.inmotionhosting.com/support/edu/dokuwiki/change-dokuwiki-appearance/change-dokuwiki-logo|ref]]) * method 2: go dokuwiki\lib\tpl\dokuwiki\images, swap out the image with your same correct size one * apple-touch-icon.png * favicon.ico * logo.png **DokuWiki Favicon** * generate favicon from logo: http://www.favicon-generator.org/ * loading priority sequence - $DokuWiki/data/media/favicon.ico - $DokuWiki/lib/tpl/dokuwiki/images/favicon.ico - $DokuWiki root/favicon.ico - web root/favicon.ico **change 2013 or later DokuWiki theme, top "Media Manager" link for non-user (repeat after each update)** * need to edit lib/tpl/dokuwiki/tpl_header.php file * then in the display "Media Manager" link part, add a user login condition check tpl_action('recent', 1, 'li'); if(!empty($INFO['userinfo']['name'])){ tpl_action('media', 1, 'li'); tpl_action('index', 1, 'li'); } // note: $INFO['client'] will give ip or username // ref: $INFO variable in dokuwiki: https://www.dokuwiki.org/devel:environment * for new wiki check this # change tpl_toolsevent('sitetools', array( tpl_action('recent', true, 'li', true), tpl_action('media', true, 'li', true), tpl_action('index', true, 'li', true) )); # into if(!empty($INFO['userinfo']['name'])){ tpl_toolsevent('sitetools', array( tpl_action('recent', true, 'li', true), tpl_action('media', true, 'li', true), tpl_action('index', true, 'li', true) )); } else{ tpl_toolsevent('sitetools', array( tpl_action('recent', true, 'li', true) )); } * ref: http://stackoverflow.com/questions/15589912/dokuwiki-how-can-i-hide-media-manager-link-from-non-logged-in-users ===== DokuWiki plugins ===== * [[https://www.dokuwiki.org/plugin:clearhistory|Clear and Merge history]]: remove small change history * [[http://danjer.doudouke.org/tech/dokutexit|Doku TeX it]]: a TeX and PDF output plugin for DokuWiki page * [[http://www.dokuwiki.org/plugin:cronojob|CronoJob]]: script schedule job for Dokuwiki * [[https://www.dokuwiki.org/plugin:move|Move]]: a plugin helping on moving page and media while maintaining the links * [[https://www.dokuwiki.org/plugin:hidden|hidden plugin]]: like create spoiler in page syntax * [[https://www.dokuwiki.org/plugin:vshare|Video Share Plugin]]: embed video site videdo (youtube, vimeo) * [[https://www.dokuwiki.org/plugin:html5video|HTML5 video plugin]]: embed local or url video * [[https://www.dokuwiki.org/plugin:edittable|EditTable Plugin]]: easy to edit table * other option: [[https://www.dokuwiki.org/plugin:dtable|DTable]]: gui to edit table * [[https://www.dokuwiki.org/plugin:filelist|file list]] * menubar: http://www.inmotionhosting.com/support/edu/dokuwiki/working-with-menus * video: * [[https://www.dokuwiki.org/plugin:html5video|html5video embed]] * addition config * [[https://www.dokuwiki.org/plugin:advanced|advanced config plugin for addition configure file creation]] * good for file type support config, and user css config * ref:https://www.dokuwiki.org/config ===== DokuWiki Templates Install ===== - go Admin > Extension Manager: Search and Install tab, search the theme you want to install. - then, go to admin > Configuration Manager, Basic: Template to choose the installed template ====== Dokuwiki operation life-cycle maintain guide ====== ===== compare to other wiki ===== * ref: http://www.wikimatrix.org/ ===== install and setup ===== - download dokuwiki at: http://www.dokuwiki.org/dokuwiki - extract the file structure to your Website Wiki folder - start your web server, and browser to the "install.php" in wiki folder; (for me, no permission problem by guide) - Then, create users, - login wiki with your Admin account, click "Admin" button at the right bottom corner; - then, click "User Manager", create other user for writing and admining in Group of "user" or "admin" - Then, authorize user rights - click "admin" button at the bottom after login as admin - click "Access Control List Management" to define page or namespace (directory) level control - Create page - create page by a internal link: %%[[techwiki:macfix|Mac Fix tech page]]%% - create page by entering a new URL: %%http://mysite/wiki/doku.php?id=techwiki:macfix %% - delete page - delete page by empty the content of that page - insert media like image and video - use the toolbar in page editing panel ===== maintain ===== * clean up trash in dokuwiki #!/bin/bash cleanup() { # $1 ... full path to data directory of wiki # $2 ... number of days after which old files are to be removed # purge files older than $2 days from the attic (old revisions) find "$1"/attic/ -type f -mtime +$2 -print0 | xargs -0r rm -f # remove stale lock files (files which are 1-2 days old) find "$1"/locks/ -name '*.lock' -type f -mtime +1 -print0 | xargs -0r rm -f # remove empty directories find "$1"/{attic,cache,index,locks,media,meta,pages,tmp}/ \ -mindepth 1 -type d -empty -print0 | xargs -0r rmdir # remove files older than $2 days from the cache find "$1"/cache/?/ -type f -mtime +$2 -print0 | xargs -0r rm -f } # cleanup DokuWiki installations (path to datadir, number of days) # some examples: cleanup /home/user1/htdocs/doku/data 256 cleanup /home/user2/htdocs/mywiki/data 180 cleanup /var/www/superwiki/data 180 ===== backup ===== * **for normal personal or author-free article type wiki, then you just need to backup these 2 folder** - /wiki/data/media - this is for images used in wiki - /wiki/data/pages - this is for all the pages * **for large user base free type wiki, then you may like to backup** - /wiki/data/media - /wiki/data/pages - /wiki/data/meta - version and activity tracking; * (wiki can re-generate new version tracks if you don't want to keep old ones) - /wiki/data/attic - old things of each edit; * (suggest to delete it, or don't backup it if you never undo old changes) * **for community based tracking type wiki** * in addition, backup the users and group configuration file and rights configuration - /wiki/conf - wiki configuration and user database * **not sure what to do** - /wiki - backup whole wiki to a zip file - best to tar the wiki folder with permission info as well # back inside wiki folder cd /path/to/folder/to/copy tar cvpzf put_your_name_here.tar.gz . # restore inside wiki folder cd /path/to/destination/folder tar xpvzf put_your_name_here.tar.gz ===== move to new server ===== * zip the wiki, download, update to new server, extract * for server with strict ModSecurity, you need server side whitelist setup to get embeded code part working, and avoid 406 error (ref: https://www.dokuwiki.org/faq:mod_security) * run fix date php script to fix external edit and date issue (ref: https://www.dokuwiki.org/tips:fixmtime) * Run it from within DokuWiki installation directory. * last modified: 2008-09-05 4:15:00 */ function WalkDirectory($parentDirectory) { global $_weeds; foreach(array_diff(scandir($parentDirectory), $_weeds) as $directory) { $path = $parentDirectory . '/'. $directory; if(is_dir($path)) { WalkDirectory($path); } else { // Calculate changes file path. $path_parts = pathinfo($path); // Remove pages path. global $_pagesPath; $relativePath = substr($path_parts['dirname'], strlen($_pagesPath), strlen($path_parts['dirname'])); // Add .changes $filename = $path_parts['filename']; // Requires PHP 5.2.0 (http://gr2.php.net/manual/en/function.pathinfo.php) $relativePath .= '/' . $filename . '.' . 'changes'; global $_metaPath; $changelog = $_metaPath . '/' . $relativePath; if (is_file($changelog)) { $handle = @fopen($changelog, "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle); preg_match('/(?\d+)/', $buffer, $matches); if ($matches['timestamp'] != '') $timestamp = $matches['timestamp']; } fclose($handle); } // At this point we have our timestamp. echo 'Updating ' . $path . '
    '; echo '    Timestamp in changelog: ' . $timestamp . '
    '; echo '    Old modification time: ' . filemtime($path) . '
    '; if (touch($path, $timestamp)) { // In my host, although the timestamp had changed successfully (checked manually), running filemtime($path) at this point // did not return the correct timestamp, so use I use $timestamp instead of filemtime($path) to avoid confusing the user. echo '    New modification time: ' . $timestamp . '
    '; } else { echo '    Could not change modification time for page ' . $filename; } } else { echo 'Changelog not found: ' . $changelog . '
    '; } } } } $_weeds = array('.', '..'); $_pagesPath = getcwd() . '/data/pages'; $_metaPath = getcwd() . '/data/meta'; WalkDirectory($_pagesPath); ?>
    ===== Update and Install Plugin ===== * the easiest way to update DokuWiki to latest version is to use "Upgrade" plugin - go to Admin page > plugin manager - check the "Upgrade" plugin from this page, and right click on download to copy the download link url: https://www.dokuwiki.org/plugin:upgrade - paste the url on plugin manager's url text field, and click Download - once finished, in Admin page, there will be a upgrade plugin link, and click it to go through the auto-download-dokuwiki-upgrade system * these 2 image shows how to install plugin using plugin manager in admin panel * {{:appwiki:doku_add_plugin_step_01_copy_plugin_download_url.png?400|}} * {{:appwiki:doku_add_plugin_step_02_paste_url_in_admin_manage_plugin_page.png?400|}} ===== Google Analytics Plugin ===== Google Side - go: analytics.google.com - login google - create track account * choose info sharing or not * choose web to monitor * enter site name and info * get the tracking id dokuwiki side: - dokuwiki admin page > extension: install https://www.dokuwiki.org/plugin:googletagmanager - dokuwiki admin page: google analytics plugin link * add its referred code into head section of: wiki/lib/tpl/your_current_doku_template_folder/main.php * note: some of template already have google analytics feature built-in, you may like to check config page to see * then, back to dokuwiki admin config page: plugin: google analytics, put tracking id there ====== Problem and Solution ====== ===== Dokuwiki Upload Image Failed ===== * **Problem description**: * when I use XAMPP to setup my local server, and put the dokuwiki in the htdocs folder, I can write wiki page, but upload image just saying "fail" * **Problem analysis**: * It can be caused by several things, maybe your folder permission is set wrong, but most likely a fresh copy of dokuwiki folder should have everything set default correctly; * It can be caused by your server upload setting, like allow upload in PHP setting, but default XAMPP should have everything setup correctly already * **Solution**: - for my case, I just grab a fresh latest copy of XAMPP from https://sourceforge.net/projects/xampp/files/, the 7z portable version, so I can extract the XAMPP out and put where I want exactly myself - then I run the setup_xampp.bat from the XAMPP folder to tell it where the location it sits - then I just run xampp_control.exe with admin to start the server and mysql properly - put fresh latest copy of dokuwiki in the XAMPP htdocs folder, and browser it from browser, like your machine name and /, following the dokuwiki folder name. - it should all be all right, test by upload a image using dokuwiki image icon ===== Wiki Folder Permission and Security ===== * **Problem description** * when move to new server, it sometimes can have file and folder permission lost problem, cause whole wiki has security issues * ref doc: * https://www.dokuwiki.org/install:permissions * https://www.dokuwiki.org/install:permissions#which_permissions_to_set * https://www.dokuwiki.org/security#web_access_security * **Solution** * when migrating, make sure wiki compressed with file permission info cd /path/to/folder/to/copy tar cvpzf put_your_name_here.tar.gz . cd /path/to/destination/folder tar xpvzf put_your_name_here.tar.gz * after migration, check and fix permission * if visit page error, then fix with chmod: fix file permission with chmod # check existing htdoc file the_same_user:the_same_group info ls -l # then for wiki folder, fix own and permission # ref: https://www.dokuwiki.org/install:permissions cd wiki/ chmod -R 775 data/ sudo chown -R the_same_user:the_same_group data/ cd data/ chmod 2775 {attic,cache,index,locks,media,meta,pages,tmp} chown the_same_user:the_same_group {attic,cache,index,locks,media,meta,pages,tmp} * if inside Admin page, the Extension Manager says "Extension directory is not writable", and each plugin doesn't show (uninstall/re-install/update) buttons, it means the ./lib/plugins folder permission need to check owner/group // if you just need to change and match the group name, then this way // cd to the plugins's parent folder and do sudo chown -R :the_group_name_that_works ./plugins/* // if you need user name change as well sudo chown -R the_user_name_that_works:the_group_name_that_works ./plugins/* // and check now permission with ls -l // you can check all user name by cat /etc/passwd * check wiki security by visit a page txt file like , http://your_site.com/wiki/data/pages/subFolder/pageName.txt * if accessible, then fix with apache htaccess in httpd.conf (its location vary based on what linux creator you use): * put data, conf, bin, inc folder in deny mode, example as for data order allow,deny deny from allow satisfy all * also prevent file access Require all denied ===== dokuwiki config can't be saved problem ===== * it is under wiki/conf/local.php, so check the file permission in terminal. * change local.php file permisison, chmod 775 local.php chmod 775 local.php.bak * ref article: * https://www.dokuwiki.org/plugin:config * https://www.dokuwiki.org/install:permissions * ref: https://www.dokuwiki.org/config ===== old dokuwiki php 7.4 above error ===== * Problem: .\inc\init.php line 564 array error: * solution: "if($path{0} == '/'){" change to if($path[0] == '/'){ * since new array will use [] instead {} * Problem: other plugin error like "A PCRE internal error occured. This might be caused by a faulty plugin." * solution: backup page and media folder under data, and move to new fresh copy of dokuwiki. (like in backup guide) ====== Basic Syntax ====== more syntax at http://www.dokuwiki.org/syntax \\ edit bar at http://www.dokuwiki.org/toolbar \\ page creation at http://www.dokuwiki.org/page \\ comparison of wiki http://www.wikimatrix.org/compare/DokuWiki+PmWiki+WikkaWiki ===== Text Format and Color ===== no way but plugin ===== Photo and Image ===== name then size {{wiki:dokuwiki-128.png?20x50}} ===== Links ===== * Use %%[[dir_name_space:pageName|Link_Text]] %%to create internal link; * Just type link as http://google.com to create normal link; * Use %%[[http://google.com|Google]]%% to create title link like [[http://google.com|Google]] * Use %%[[this>./subCustomFolder/myfile.mp4|Video]]%% to link a relative path from wiki root ===== List ===== %%"2 spaces followed by * or -"%% at line start will create unordered or ordered list; \\ "2 extra spaces" in front will indent it to sub-level. ===== New Line & Escape container ===== There are 4 ways to create a line break, or a blank line. * type "2 Enter key" to create 1 blank line * type "%%\\%%" to create
    like link break * type "%% content %%" to create line-keep-as-you-type block * type %%" content "%% to create line-keep-as-you-type block ===== Separator Line ===== * four "-" and more makes a Separator line, like below ---- ===== Code Format ===== type %%" content "%% to create code like block Plain code text here \\ type %%" content "%% to create downloadable code Plain code text here Supported: \\ 4cs, abap, actionscript-french, actionscript, actionscript3, ada, apache, applescript, asm, asp, autoconf, autohotkey, autoit, avisynth, awk, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, ecmascript, eiffel, email, erlang, fo, fortran, freebasic, fsharp, gambas, genero, genie, gdb, glsl, gml, gnuplot, groovy, gettext, gwbasic, haskell, hicest, hq9plus, html, icon, idl, ini, inno, intercal, io, j, java5, java, javascript, jquery, kixtart, klonec, klonecpp, latex, lisp, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, modula2, modula3, mmix, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, ocaml-brief, ocaml, oobas, oracle8, oracle11, oxygene, oz, pascal, pcre, perl, perl6, per, pf, php-brief, php, pike, pic16, pixelbender, plsql, postgresql, povray, powerbuilder, powershell, progress, prolog, properties, providex, purebasic, python, q, qbasic, rails, rebol, reg, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, vala, vbnet, vb, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, winbatch, whois, xbasic, xml, xorg_conf, xpp, z80 ===== special page ===== * :sidebar for sidebar content ====== Dokuwiki user group setup and security control ====== Method: - use dokuwiki admin page control - use text config of dokuwiki: [[http://www.dokuwiki.org/auth:plain|official guide]] ====== DokuWiki Theme and Customize ====== * cool theme: * https://www.dokuwiki.org/template:writr * https://www.dokuwiki.org/template:ghw * https://www.dokuwiki.org/template:20cones * https://www.dokuwiki.org/template:bootstrap3 ===== Bootstrap3 template for Dokuwiki ===== * author page guide page: * http://www.lotar.altervista.org/dokuwiki/wiki/template/bootstrap3/start * http://www.lotar.altervista.org/dokuwiki/wiki/plugin/bootswrapper * config: http://www.lotar.altervista.org/dokuwiki/wiki/template/bootstrap3/config * step for setup - install bootstrap3 template: https://www.dokuwiki.org/template:bootstrap3 - ref: https://github.com/LotarProject/dokuwiki-template-bootstrap3 - install related plugin: - Bootstrap Wrapper Plugin: https://www.dokuwiki.org/plugin:bootswrapper - icons plugin: https://www.dokuwiki.org/plugin:icons * custom Bootstrap3 - admin > Configuration Setting, go bottom bootstrap3 part - bootstrap them, choose Bootswatch.com theme - select a theme : superhero - check show theme switcher (next, check hide them in switch list, recommend hide all except lumen,slate,superhero,yeti,darkly) - Navbar part: - display tools in navbar: when logged in - enable disable indivdual menu in navbar: check user - Layout part: - uncheck full width - table style: check all except condensed - uncheck display doku link on footer - TOC part - uncheck collapse for 2 option - Page part: - check AnchorJs - and uncheck collapse 2nd section level on mobile * navbar page for navbar: * https://github.com/LotarProject/dokuwiki-template-bootstrap3/issues/91 * code * [[:start|Home]] * DokuWiki * [[:wiki:welcome]] * [[:wiki:syntax]] * [[:wiki:welcome]] * [[:playground:playground]] ~~NOCACHE~~