LeoMoon Wiki-Go solves a persistent problem for self-hosting enthusiasts: how to run a full-featured wiki without the operational overhead of installing and maintaining a database. It’s a flat-file wiki written in Go that stores all content as Markdown files on disk — no external database needed. This means it’s easy to deploy, lightweight, and fits neatly into homelab setups.
what wiki-go does and how it’s built
Wiki-Go is a self-hosted wiki platform written in Go, designed around a databaseless architecture. Instead of relying on a traditional database backend, all wiki content lives as Markdown files in a directory hierarchy on disk. This approach keeps the footprint minimal and simplifies deployment.
The platform supports rich Markdown features including emoji shortcodes, Mermaid diagrams for flowcharts and graphs, LaTeX math rendering, and syntax highlighting for code blocks. The UI is web-based and served directly from the compiled Go binary or the Docker container.
Beyond basic wiki functionality, Wiki-Go includes user management with role-based access control, allowing you to define which users can edit or moderate content. It also features a commenting system with moderation capabilities.
A standout feature is the integration of interactive Kanban boards directly inside wiki pages — useful for project management or personal task tracking without leaving the wiki environment.
Configuration is handled through a YAML file, and the project bundles built-in TLS support for HTTPS. Deployment options range from running a single Go binary to using Docker or Docker Compose with reverse proxies like Nginx, Traefik, or Caddy.
technical strengths and design tradeoffs
The core technical strength of Wiki-Go lies in its databaseless design. By using Markdown files on disk, it avoids the complexity and resource demands of database servers. This aligns well with homelab users who want minimal dependencies and easy backups (just copy files).
The Go-based single binary approach means the entire server can be started with minimal fuss — no runtime dependencies or complex environment setup.
Supporting advanced Markdown features like Mermaid and LaTeX math is not trivial. Wiki-Go integrates these rendering capabilities nicely, making it more than just a text wiki. The inclusion of emoji shortcodes and syntax highlighting improves user experience and content richness.
User management with role-based access control adds necessary security for multi-user environments, though the system depends on proper configuration and HTTPS for cookie security. The README explicitly notes the need to set allow_insecure_cookies: true when running without SSL/HTTPS, which is a tradeoff between convenience and security. In production, HTTPS is essential to protect user sessions.
The commenting system with moderation is a useful addition, making the wiki more interactive.
One architectural tradeoff is the flat-file storage which may not scale well for very large wikis or high-concurrency editing scenarios compared to database-backed systems. However, for many personal or small team wikis, this tradeoff is acceptable.
The integrated Kanban boards are a nice touch, embedding task management right into documentation pages. This reduces context switching but adds some complexity to the wiki engine.
Overall, the codebase is pragmatic and focused on simplicity and minimal dependencies. The Docker Compose examples and reverse proxy configs show attention to real-world deployment.
quick start with docker-compose
The README provides a straightforward Docker Compose setup to get started quickly.
# Start Wiki-Go on plain HTTP (port 8080) using the supplied docker-compose file
docker-compose -f docker-compose-http.yml up -d
This launches the wiki accessible at http://localhost:8080, suitable for local testing or behind a reverse proxy.
For production, the README includes an example Nginx reverse-proxy config with HTTPS termination using Let’s Encrypt certificates. The proxy forwards requests to the Wiki-Go container running on HTTP, with recommended headers for real IP forwarding and protocol handling.
A key configuration detail for non-HTTPS setups is to set allow_insecure_cookies: true in config.yaml to avoid login issues caused by secure cookie flags in browsers.
verdict
Wiki-Go is a practical choice for homelab enthusiasts and small teams looking for a markdown-based wiki with minimal operational overhead. Its databaseless design and single-binary deployment make it appealing for users who want to avoid managing databases or complex stacks.
It balances simplicity with useful features like role-based access, commenting, and embedded Kanban boards. The tradeoff is that it might not scale to large enterprise use cases or handle extremely high traffic and concurrent edits as well as database-backed solutions.
If your wiki use case fits a personal or small team environment and you appreciate straightforward deployment with Docker or a single Go binary, Wiki-Go deserves a look. Just be mindful of HTTPS requirements for secure login and plan for backups by copying your Markdown files.
Its codebase and architecture reflect a solid, no-nonsense approach to self-hosted wiki software in Go, focused on practicality rather than bells and whistles.
Related Articles
- Gogs: a lightweight, cross-platform self-hosted Git service in Go — Gogs is a self-hosted Git service built in Go, notable for its low resource footprint and cross-platform support, runnin
- Memos: a self-hosted note-taking tool with radical simplicity in Go — Memos is a Go-based self-hosted note-taking app with a single binary and lightweight Docker image. It supports Markdown
- Luna: a self-hosted Go calendar aggregator unifying CalDav, iCal, and Google Calendar — Luna is a Go-based self-hosted calendar aggregator that unifies CalDav, iCal, and Google Calendar into a single customiz
- Inside the golang/go repository: The source of Go’s simplicity and efficiency — Explore the golang/go repo, the official source for the Go language, its architecture, design tradeoffs, and how to get
- Smithereen: A Java-based ActivityPub server that rejects fediverse conventions for authentic social connections — Smithereen is a self-hosted ActivityPub server in Java that rejects common fediverse features like hashtags and public f
→ GitHub Repo: leomoon-studios/wiki-go ⭐ 570 · JavaScript