> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# DokuWiki

> Ready-to-run DokuWiki container template for simple, versatile, and standards-compliant wiki software.

## Overview

This template provides a production‑ready DokuWiki instance as a Monk runnable. You can:

* Run it directly to get a managed wiki for documentation and knowledge management
* Inherit it in your own projects to add collaborative documentation capabilities

DokuWiki is a simple to use and highly versatile wiki software that doesn't require a database. It's loved by users for its clean and readable syntax, ease of maintenance, and built-in access controls.

## What this template manages

* DokuWiki container (PHP-based)
* File-based storage (no database required)
* Web server (Apache or Nginx)
* Plugin and template system
* Web UI on port 80

## Quick start (run directly)

1. Load templates

```bash theme={null}
monk load MANIFEST
```

2. Run DokuWiki with defaults

```bash theme={null}
monk run dokuwiki/dokuwiki
```

3. Customize configuration (recommended via inheritance)

Running directly uses the defaults defined in this template's `variables`. Secrets added with `monk secrets add` will not affect this runnable unless you inherit it and reference those secrets.

* Preferred: inherit and replace variables with `secret("...")` as shown below.
* Alternative: fork/clone and edit the `variables` in `dokuwiki/dokuwiki.yaml`, then `monk load MANIFEST` and run.

Once started, access DokuWiki at `http://localhost:80` (or the runnable hostname inside Monk networks) and complete the initial setup.

Default wiki is publicly viewable. Configure access control in the admin panel.

## Configuration

Key variables you can customize in this template:

```yaml theme={null}
variables:
  dokuwiki-image-tag: "latest"        # DokuWiki image tag
  dokuwiki-port: "80"                 # HTTP port
  wiki-title: "My Wiki"               # wiki title
  admin-username: "admin"             # admin username
  admin-password: "..."               # admin password
```

Data is persisted under `${monk-volume-path}/dokuwiki` on the host.

## Use by inheritance (recommended for teams)

Inherit DokuWiki for team documentation. Example:

```yaml theme={null}
namespace: myteam
docs:
  defines: runnable
  inherits: dokuwiki/dokuwiki
  variables:
    wiki-title: "Team Documentation"
    admin-password: <- secret("dokuwiki-admin-password")
```

Then set the secrets once and run:

```bash theme={null}
monk secrets add -g dokuwiki-admin-password="STRONG_PASSWORD"
monk run myteam/docs
```

## Ports and connectivity

* Service: `dokuwiki` on TCP port `80`
* Web UI accessible at `http://\<host>/`
* Admin panel: `http://\<host>/doku.php?do=admin`
* From other runnables in the same process group, use `connection-hostname("\<connection-name>")` to resolve the host.

## Persistence and configuration

* Wiki data: `${monk-volume-path}/dokuwiki/data:/dokuwiki/data`
* Config: `${monk-volume-path}/dokuwiki/conf:/dokuwiki/conf`
* Plugins: `${monk-volume-path}/dokuwiki/plugins:/dokuwiki/lib/plugins`
* Templates: `${monk-volume-path}/dokuwiki/templates:/dokuwiki/lib/tpl`

## Features

* **No Database**: File-based storage is simple and portable
* **Clean Syntax**: Easy-to-learn wiki markup
* **Access Control**: Granular permissions per page and namespace
* **Version Control**: Built-in revision history
* **Media Manager**: Upload and organize images and files
* **Extensible**: 1000+ plugins available
* **Search**: Built-in full-text search
* **Namespaces**: Organize pages hierarchically
* **Templates**: Customizable appearance

## Wiki Syntax

DokuWiki uses simple markup:

```
====== Heading 1 ======
===== Heading 2 =====

**bold** //italic// __underlined__

  * Bullet list
  * Another item

  - Numbered list
  - Another item

[[page_link|Link text]]
{{wiki:image.png|Image}}

<code php>
<?php echo "Code block"; ?>
</code>
```

## Popular Plugins

Extend DokuWiki:

* **Markdown**: Write in Markdown instead of wiki syntax
* **TableEdit**: Edit tables visually
* **Discussion**: Add comments to pages
* **Task**: Create todo lists
* **Gallery**: Image galleries
* **Diagram**: Create diagrams with PlantUML, Graphviz

## Access Control

Configure in Admin → Access Control List:

* Set permissions per namespace or page
* Define user groups
* Control read, write, upload, and delete permissions
* Support for LDAP/AD authentication

## Use cases

DokuWiki excels at:

* Technical documentation
* Team knowledge bases
* Project wikis
* API documentation
* Meeting notes and collaboration
* Personal knowledge management
* Software documentation

## Backup and Migration

DokuWiki is easy to backup:

* All data is in flat files
* Simply backup the `/dokuwiki/data` directory
* No database dumps required
* Restore by copying files to new installation

## Related templates

* See other templates in this repository for complementary services
* Combine with monitoring tools (`prometheus-grafana/`) for observability
* Integrate with your application stack as needed

## Troubleshooting

* Access admin panel at `http://localhost/doku.php?do=admin`
* First-time setup runs automatically on first access
* Reset admin password by editing `conf/users.auth.php`
* For permission issues, check file permissions on data directory
* For plugin issues, disable in `conf/plugins.local.php`
* Enable debugging in `conf/local.php` for detailed error messages
* Clear cache: Admin → Configuration Settings → Clear cache
* Check logs:

```bash theme={null}
monk logs -l 500 -f local/dokuwiki/dokuwiki
```
