This repository contains the source files for blog.epheo.eu, a personal blog focusing on technical topics like OpenStack, OpenShift, and Linux.
"You can't unleash new things in closed sources"
This blog is built using Sphinx, a powerful documentation generator, with the Furo theme for a clean, modern appearance.
- Python 3.11+
- UV for dependency management
-
Clone this repository:
git clone https://github.com/epheo/blog.git cd blog
-
Install dependencies using UV:
uv sync
To build the blog locally:
uv run make html
The generated HTML files will be available in the _build/html/
directory. You can view them by opening _build/html/index.html
in your web browser.
For a clean build:
make clean html
You can also build the blog using containers with Podman (or Docker). This ensures consistent builds across different environments and includes all necessary dependencies like Chrome for Mermaid diagram rendering.
Build the container image:
podman build -t sphinx-builder .
Standard HTML build:
podman run --rm -v $(pwd)/_build:/app/_build:Z sphinx-builder
Clean build (removes existing build artifacts):
podman run --rm -v $(pwd)/_build:/app/_build:Z sphinx-builder make clean html
Check external links:
podman run --rm -v $(pwd)/_build:/app/_build:Z sphinx-builder make linkcheck
Development server with auto-rebuild:
podman run --rm -p 8000:8000 -v $(pwd):/app:Z sphinx-builder sphinx-autobuild . _build/html --host 0.0.0.0 --port 8000
Then open your browser to http://localhost:8000
to view the blog with automatic reloading on file changes.
Note: The
:Z
flag in volume mounts is required for SELinux contexts on Fedora/RHEL systems. If you're not using SELinux, you can omit it.
articles/
: Contains blog post content organized by topicconf.py
: Sphinx configuration fileindex.rst
: Main index file_static/
: Static assets like images and CSS_build/
: Generated output (not tracked in git)
Blog posts are written in reStructuredText (.rst
) or Markdown (.md
) format. See the existing articles for examples of how to format your content.
Contributions are welcome! Please see CONTRIBUTING.md for details.
This project is licensed under the GNU General Public License - see the LICENSE file for details.