A self-hosted blog application for your own domain and server.
English · 한국어
BLEX is a blog application that you run on infrastructure you control. It provides a browser-based editor, Docker deployment, and the settings needed to operate a personal blog or a small publication.
Public posts are available as regular web pages as well as RSS, sitemap, and Markdown endpoints. The default deployment uses SQLite and is configured to start with modest server resources.
Writing and publishing
- Tiptap-based rich-text editor
- Drafts, autosave recovery, revision history, and previews
- Scheduled publishing and hidden posts
- Cover images, series, and tags
- Markdown or HTML publishing through the Developer API
Public blog
- Post, author, series, tag, search, and static pages
- Comments, likes, and pinned posts
- RSS, sitemaps, canonical URLs, and Open Graph metadata
- Public Markdown URLs and optional
/llms.txt
Operations
- Docker-based deployment
- Initial administrator setup
- Site name, logo, and icon settings
- Notices, banners, notifications, webhooks, and Telegram integration
- User roles and administration tools
Accounts and security
- GitHub and Google social login
- TOTP two-factor authentication
- Personal Developer API tokens with scoped permissions
Languages
- English and Korean product UI
- Request-language negotiation when English UI support is enabled
- Separate translation catalogs for Django, React islands, and the editor
- Posts and other user-authored content are displayed exactly as written
Requirements: Git, Docker, and Docker Compose.
git clone https://github.com/baealex/BLEX.git
cd BLEX
cp samples/.env backend/.env
mkdir -p backend/src/resources/media
touch backend/src/db.sqlite3
docker compose up -d
docker compose logs -f blexOpen http://localhost:20002. The logs include an Initial setup URL for
creating the first administrator.
The sample environment enables English and Korean UI negotiation. Existing
installations can enable it with ENABLE_ENGLISH_UI=TRUE.
Before a public deployment, replace the sample secrets, configure the public site URL and allowed hosts, place an HTTPS proxy in front of BLEX, and back up both the SQLite database and uploaded media. See the Self-hosting Guide for details.
| Path | Description |
|---|---|
/rss |
Site RSS feed |
/sitemap.xml |
Sitemap index |
/posts/sitemap.xml |
Public post sitemap |
/llms.txt |
Agent entry point when AEO is enabled |
/@{username}/{post_url}.md |
Public post as Markdown |
/@{username}/series/{series_url}.md |
Public series as Markdown |
/static/{slug}.md |
Public static page as Markdown |
/api/developer/v1/docs |
Developer API documentation |
/api/developer/v1/openapi.json |
Developer API OpenAPI schema |
Private posts, hidden posts, drafts, deleted posts, and scheduled posts that are not yet published are excluded from RSS, sitemaps, and public Markdown endpoints.
The Developer API supports personal tokens, scoped permissions, post and draft management, Markdown or HTML input, image upload, publishing, tags, and series.
After starting BLEX, open /docs/developer-api/quickstart for the quickstart or
/api/developer/v1/docs for the complete API documentation.
Requirements:
- Python 3.12+
- Node.js 22.22.2, 24.15+, or 26+
- npm
npm install
npm run server:migrate
npm run devOpen http://localhost:8000.
Common checks:
npm run server:test
npm run islands:i18n:check
npm run islands:test
npm run islands:lint
npm run islands:type-check