Minimalist self-hosted blogging engine in Go.
Hi, I’m Carsten, the creator of GoBlogger–a minimalist, self-hosted blogging engine built in Go. Nice to see you here.
GoBlogger started because I wanted a way to post spontaneously without being tied to a specific computer. I’ve spent time with Flask, Astro, and Hugo, but I eventually hit "build toolchain fatigue." With Static Site Generators, even fixing a small typo felt like a chore—you have to get back to your dev environment, run a build, and wait for a pipeline to deploy. I wanted a single tool I could host myself that allowed me to write and edit on the fly from a simple web interface.
Building this was also a personal exercise to learn Golang and see how far I could get using a locally hosted LLM alongside open-source code. It’s intentionally small, independent, and focused on getting thoughts online quickly.
Philosophy & Positioning
GoBlogger isn't trying to be a feature-heavy platform. It’s built for:
- Operational simplicity: Just a single binary. No complex dependencies or build steps.
- Maintainability: File-based content (Markdown + Front matter) with no mandatory database.
- Control: Designed for developers who want full ownership of their data and hosting and enthusiasts who want a simple, distraction-free writing experience.
Current Features
I’ve kept the essentials while avoiding unnecessary clutter:
- Single-binary application: Easy to deploy and move between servers.
- Flat-file content: No database to migrate or corrupt.
- Admin Dashboard: A distraction-free web interface for writing and organizing posts on the fly.
- Theme Overrides: Simple customization of templates, CSS, and locales.
- JSON Endpoints: Built-in search and tag indexing out of the box.
🎉 If GoBlogger has been helpful to you, consider buying me a coffee on Ko-fi. Small contributions help me keep improving the project and maintaining it over time. Support GoBlogger on Ko-fi
Quick Install
-
Download: Grab a release from Codeberg. Choose the binary for your platform (Linux, macOS, or Windows), download it, and unzip the archive.
-
Run: Start the binary with
./gobloggeror set it up as a systemd service for automatic startup. The app serves onhttp://localhost:8080by default. -
Config: On first run, the app creates a
.envfile and admin credentials file (default.admin_credentials.json). Set a strong admin password by updatingADMIN_PASSWORDin the.envfile (stored as bcrypt hash). You can change the password anytime in the admin interface. Optionally customizeBLOG_CONTENT_DIRto point to your content directory. -
Content: Drop your Markdown files (with YAML frontmatter) into
content/posts/andcontent/pages/. The app detects new files automatically. -
Backup: Keep regular backups of
content/,theme/,.env, and your credentials file to prevent data loss.
Want the latest features? Releases are tested and stable—perfect for most users. For the bleeding-edge version with the newest features, clone the repository and build locally with make build.
Latest change notes are published on the Codeberg releases page: codeberg.org/cblte/goblogger/releases
A few notes
- Stable Slugs: Keep your slugs consistent so your URLs don't break.
- Smoke Tests: Always backup before updating and run a quick test.
- Small Overrides: Keeping your theme overrides minimal makes future updates much easier to manage.
Acknowledgements
GoBlogger is heavily inspired by the workflow and philosophy of PureBlog by Kevin Quirk. Icon set used in the admin interface: Coolicons.