Overview
Discover what makes Wiki-Go powerful
Wiki‑Go is a self‑hosted, flat‑file wiki written entirely in Go. It eliminates the need for an external database by persisting pages, metadata and user accounts as plain Markdown files on disk. The application exposes a lightweight HTTP API for CRUD operations, search, and authentication while rendering the UI with server‑side templating. This design makes it ideal for developers who prefer a minimal runtime footprint, deterministic deployment, and straightforward version control of content.
Language
Web Framework
Templating
Storage
Overview
Wiki‑Go is a self‑hosted, flat‑file wiki written entirely in Go. It eliminates the need for an external database by persisting pages, metadata and user accounts as plain Markdown files on disk. The application exposes a lightweight HTTP API for CRUD operations, search, and authentication while rendering the UI with server‑side templating. This design makes it ideal for developers who prefer a minimal runtime footprint, deterministic deployment, and straightforward version control of content.
Technical Stack & Architecture
- Language: Go 1.22+ – leveraging the language’s static binaries, excellent concurrency model and built‑in HTTP server.
- Web Framework: The standard
net/httppackage with a small router (chi) for routing, middleware and context handling. - Templating: Go’s
html/templatefor server‑side rendering, with optional client‑side JavaScript enhancements (e.g., Mermaid, KaTeX). - Storage: File‑system based. Each page is a Markdown file (
document.md) stored in a hierarchical directory that mirrors the sidebar structure. Metadata (tags, version history) is kept in accompanying JSON/YAML sidecar files. - Authentication: Cookie‑based session management. Sessions are signed with HMAC and optionally encrypted; the
allow_insecure_cookiesflag is required for HTTP‑only setups. - Search: Full‑text indexing powered by
bleveor a custom in‑memory inverted index, enabling instant keyword search with highlighting and advanced filters.
Core Capabilities & APIs
- Markdown Editor: Supports GitHub‑flavored Markdown, emoji shortcodes, Mermaid diagrams and LaTeX math via KaTeX.
- Hierarchical Pages & Versioning: Each edit creates a new revision stored in a
.wikisubfolder; APIs allow retrieval, diffing and rollback. - Link & Asset Management: Uploads are stored in an
assetsdirectory; link collections expose a JSON endpoint for programmatic consumption. - User & Permission System: Role‑based access control (admin, editor, viewer) with optional private wiki mode. API endpoints for user CRUD and password reset.
- Comments & Moderation: Threaded comments stored alongside pages; moderation API to approve or delete.
- Kanban Boards: Optional board feature backed by JSON files; exposes CRUD endpoints for columns and cards.
Deployment & Infrastructure
Wiki‑Go ships as a single static binary, making it trivially deployable on any Linux distribution or Windows. Docker images are available on GitHub Packages, simplifying CI/CD pipelines. The application runs as a single process, so horizontal scaling can be achieved with reverse‑proxy load balancers (NGINX/Traefik) and shared network file storage or distributed filesystems like GlusterFS or Ceph for the content directory. For high‑availability, a stateless deployment can be paired with external authentication providers (OAuth2/OpenID Connect) and a shared session store.
Integration & Extensibility
- Plugins: A minimal plugin interface allows developers to hook into page rendering, search, or authentication. Plugins are Go packages compiled into the binary.
- Webhooks: External services can subscribe to events (page created, updated, deleted) via HTTP callbacks.
- Shortcodes & Customization: The templating system supports custom shortcodes, enabling dynamic content such as embedded charts or API calls.
- CLI & SDK: A command‑line tool can batch import/export pages, and the HTTP API can be consumed by any language. No SDK is required thanks to RESTful JSON endpoints.
Developer Experience
Configuration is YAML‑based (config.yaml) and supports environment variable overrides, making it easy to integrate into existing infrastructure. Documentation is concise with clear endpoint definitions and example payloads. The community is active on GitHub, providing issue tracking, pull requests, and quick response times. Licensing under MIT ensures no vendor lock‑in, encouraging fork‑and‑customize workflows.
Use Cases
- Internal Documentation Hub: Teams can host a lightweight wiki with fine‑grained access control and version history, all under source‑control.
- Knowledge Base for SaaS Products: Deploy a self‑hosted knowledge base that can be extended with custom shortcodes to embed live metrics.
- Project Management: Leverage the Kanban board feature for lightweight task tracking without a separate tool.
- Personal Knowledge Management: Build a local, offline‑first wiki that syncs to a shared drive.
Advantages Over Alternatives
- Zero Database: Eliminates database maintenance, backups and migrations.
- Performance & Simplicity: Go binaries are small; startup time is <200 ms, and memory usage stays under 50 MiB for moderate workloads.
- Deterministic Deployments: Content lives in the repository; CI/CD can publish new versions with a single
docker buildor binary release. - Extensible Architecture: Plugin hooks and webhooks make it straightforward to integrate with CI pipelines, external auth providers or custom analytics.
- Open Source & MIT: Full freedom to modify the core, add features or rebrand without licensing constraints.
In sum, Wiki‑Go offers developers a fast, low‑maintenance wiki solution that blends the familiarity of Markdown with robust access control and extensibility, all packaged in a single Go binary ready for production deployment.
Open SourceReady to get started?
Join the community and start self-hosting Wiki-Go today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Nginx Proxy Manager
Simple reverse proxy with free SSL for home networks
YOURLS
Self-hosted URL shortener with full data control
Linkwarden
Collaborative, self‑hosted bookmark manager with preservation
Plainpad
Secure, self‑hosted note taking for any device
Yarr
Self-hosted other
Gotenberg
Containerized PDF conversion API
