LeoMoon Wiki-Go

LeoMoon Wiki-Go is a modern, feature-rich, databaseless flat-file wiki platform built with Go. It provides a clean, intuitive interface for creating and managing knowledge bases, documentation, and collaborative content without requiring any external database.
No database. No bloat. Zero maintenance. Just Markdown.
Important Configuration Note with Non-SSL Setups
If you're running Wiki-Go without SSL/HTTPS and experiencing login issues, you need to set allow_insecure_cookies: true in your config.yaml file and restart Wiki-Go. This is because:
- By default, Wiki-Go sets the "Secure" flag on cookies for security
- Browsers reject "Secure" cookies on non-HTTPS connections
- This prevents login from working properly on HTTP-only setups
Security Note: Only use this setting in development or in trusted internal networks. For public-facing wikis, always use HTTPS.
Features
Features at a Glance
- ✍️ Full Markdown editing with emoji, Mermaid diagrams, and LaTeX math
- 🔍 Smart full-text search with highlighting and advanced filters
- 📁 Hierarchical page structure with version history
- 👥 User management, access control, and private wiki mode
- 🔗 Link management with automatic metadata fetching and categorization
- 💬 Comments with moderation and markdown support
- 📋 Interactive Kanban boards for project management
- ⚡ Instant setup via Docker or prebuilt binaries
- 🧩 Custom logos, banners, shortcodes, and more
Perfect for internal documentation, personal knowledge bases, team wikis, or project management.
Content Management
- Markdown Support: Write content using Markdown syntax for rich formatting
- Emoji Shortcodes: Use emoji shortcodes like
:smile:in your Markdown content - File Attachments: Upload and manage images and documents (supports jpg, jpeg, png, gif, svg, txt, log, csv, sfd, zip, pdf, docx, xlsx, pptx, mp4)
- Link Management: Create and organize collections of links with automatic metadata fetching, descriptions, and categorization
- Hierarchical Organization: Organize content in nested directories
- Version History: Track changes with full revision history and restore previous versions
- Document Management: Create, edit, and delete documents with a user-friendly interface
- Document Sorting and Naming: Control the order of documents in the sidebar through slug names:
- Documents are sorted alphabetically by their directory slug name
- Document titles (displayed in the sidebar and heading) are taken from the first H1 heading in document.md
- To manually sort documents, prefix slug names with numbers (e.g.,
1-overview,2-installation,3-usage) - The slug name can differ from the displayed title, allowing for organized structure while maintaining readable titles
- Example: A directory named
1-getting-startedwith document.md containing# Getting Started Guidewill show as "Getting Started Guide" in the sidebar but be sorted first
Collaboration & Feedback
- Comments System: Enable discussions on documents with a full-featured commenting system
- Markdown in Comments: Format comments using the same Markdown syntax as in documents
- Comment Moderation: Administrators can delete inappropriate comments
- Disable Comments: Option to disable comments system-wide through the wiki settings
Search & Navigation
- Full-Text Search: Powerful search functionality with support for:
- Exact phrase matching (using quotes)
- Inclusion/exclusion of terms
- Highlighted search results
- Breadcrumb Navigation: Clear path visualization for easy navigation
- Sidebar Navigation: Quick access to document hierarchy
User Experience
- Responsive Design: Works on desktop and mobile devices
- Dark/Light Theme: Toggle between dark and light modes
- Code Syntax Highlighting: Support for multiple programming languages
- Math Rendering: LaTeX math formula support via MathJax
- Diagrams: Mermaid diagram integration for creating flowcharts, sequence diagrams, etc.
Administration
- Access Rules: Path-based access control with public, private, and group-restricted visibility
- User Groups: Assign users to one or more groups to grant access to restricted documents
- User Management: Create and manage users with different permission levels (admin, editor, viewer)
- Admin Panel: Configure wiki settings through a web interface
- Statistics: Track document metrics and site usage
Advanced Features
- Custom Shortcodes: Extend markdown with special shortcodes like
:::stats recent=5:::for additional functionality - Media Embedding: Embed images, videos, and other media in your documents
- Print Friendly: Optimized printing support for documentation
- API Access: RESTful API for programmatic access to wiki content
Project Management
- Interactive Kanban Boards: Transform any document into a visual project management board
- Drag & Drop Tasks: Move tasks between columns with intuitive drag-and-drop functionality
- Multiple Boards: Support for multiple kanban boards within a single document
- Task Management: Create, edit, and organize tasks with full markdown formatting support
- Real-time Updates: Changes are automatically saved and synchronized
- Nested Tasks: Support for sub-tasks and hierarchical task organization
Demo Site
You can try out Wiki-Go using the live demo below. The demo site resets every hour, and all uploaded or edited content will be wiped automatically.
- 🔗 URL: https://wikigo.leomoon.com
- 👤 User:
admin - 🔒 Password:
demo123
Get Started
Docker (quick test)
# Pull the latest image
docker pull leomoonstudios/wiki-go
# Run with default configuration
docker run -d \
--name wiki-go \
-p 8080:8080 \
-v "$(pwd)/data:/wiki/data" \
leomoonstudios/wiki-go
Docker Compose
Option 1 – Plain HTTP (port 8080)
Use the supplied docker-compose-http.yml:
docker-compose -f docker-compose-http.yml up -d
This starts Wiki-Go on http://localhost:8080. Ideal when you terminate TLS at a reverse-proxy (Nginx/Traefik/Caddy). Remember to set allow_insecure_cookies: true in data/config.yaml if the proxy–>container hop is plain HTTP.
To use the original client address for login throttling, add only the reverse proxy's exact IP address or network to server.trusted_proxies. The default empty list ignores all forwarded-IP headers.
For standalone Nginx running on the same machine, when proxy_pass points to an IPv4 loopback address such as http://127.0.0.1:3030, use:
server:
trusted_proxies:
- "127.0.0.1"
Add ::1 only when Nginx connects to Wiki-Go through IPv6 loopback. For Docker, use the dedicated Compose network's actual proxy address or CIDR rather than trusting every private network.
Nginx reverse-proxy configuration (click to expand)
server {
listen 80;
server_name wiki.example.com;
# Redirect all HTTP to HTTPS (assuming you use Let's Encrypt on 443)
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name wiki.example.com;
ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
# --- proxy to Wiki-Go container running on HTTP (port 8080) ---
location / {
proxy_pass http://wiki-go:8080;
# Recommended headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
Compose example for the Nginx service:
nginx:
image: nginx:alpine
container_name: wiki-nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- /etc/letsencrypt:/etc/letsencrypt:ro
depends_on:
- wiki-go
Option 2 – Native HTTPS (port 443)
# Place certificate + key in ./ssl/
mkdir -p ssl
docker-compose -f docker-compose-ssl.yml up -d
docker-compose-ssl.yml maps host port 443 → container port 443 and mounts your certificate/key. Enable TLS in the application config (see below).
Native TLS Configuration
In data/config.yaml set:
server: