GoBlogger

Simple blogging. Single-binary deployment, easy for everyone.


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

  1. Download: Grab a release from Codeberg. Choose the binary for your platform (Linux, macOS, or Windows), download it, and unzip the archive.

  2. Run: Start the binary with ./goblogger or set it up as a systemd service for automatic startup. The app serves on http://localhost:8080 by default.

  3. Config: On first run, the app creates a .env file and admin credentials file (default .admin_credentials.json). Set a strong admin password by updating ADMIN_PASSWORD in the .env file (stored as bcrypt hash). You can change the password anytime in the admin interface. Optionally customize BLOG_CONTENT_DIR to point to your content directory.

  4. Content: Drop your Markdown files (with YAML frontmatter) into content/posts/ and content/pages/. The app detects new files automatically.

  5. 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.