Indie in a Box
A zero-dependency, self-contained single-file PHP engine powering your personal website, social reader, publisher, and federated identity across the IndieWeb, Fediverse, Gemini, and Gopher networks.
01 // Core Architectural Pillars
Single-File PHP Runtime
The entire runtime, including routing, template rendering, Markdown parser, microformats2 engine, SQLite ORM, and cryptography, is compiled into one self-contained indieinabox.php file.
Dual Protocol Mastery
First-class support for both IndieWeb (Micropub, Microsub, Webmention, IndieAuth) and Fediverse (ActivityPub C2S and S2S, Group Actors via FEP-1b12, WebFinger).
Triple-Network Publishing
Publishing a post generates modern semantic HTML5, native Gemini protocol capsules (.gmi), and legacy Gopher protocol maps (gophermap) simultaneously.
Multi-Provider AI Translation
Built-in automated multilingual translation pipeline supporting Google Gemini, OpenAI GPT-4o, Anthropic Claude 3.5, xAI Grok, and local self-hosted Ollama models with disk caching.
Federation Moderation Suite
Granular defederation control allowing domain-level or actor-level SUSPEND, SILENCE, and automated spam filtering with RFC 9457 structured problem details.
Zero-Vendor Portability
Everything is stored locally in SQLite and flat markdown files. Create cryptographically hashed .tar.gz or .zip backups with a single CLI command or one-click export.
02 // Production Deployment Recipes
services:
indieinabox:
image: dunglas/frankenphp:latest-php8.3
restart: unless-stopped
ports:
- "8080:80"
environment:
- SERVER_NAME=https://yourdomain.com
volumes:
- ./data:/app/data
- ./indieinabox.php:/app/public/index.php
Mount your persistent data directory to /app/data and the single-file binary to /app/public/index.php. That's all you need!
# Run FrankenPHP directly in worker mode
frankenphp run --root /var/www/myblog/public_html
yourdomain.com {
root * /var/www/myblog
php_fastcgi 127.0.0.1:9000
file_server
# Fallback all dynamic requests to single-file app
try_files {path} {path}/ /indieinabox.php?{query}
}
server {
server_name yourdomain.com;
root /var/www/myblog;
index indieinabox.php index.html;
location / {
try_files $uri $uri/ /indieinabox.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
03 // Documentation Index
Complete CLI Command Reference
In-depth guide for all 15 console commands (build, cron, fetch, post, profile, config, setup, test-links, migrate, backup, export, import, test-webmention, version, update) and options.
Admin Panel & UI Walkthrough
Detailed inspection of all 10 admin views with high-res UI screenshots: Timeline Reader, Moderation & Defederation, Publisher Composer, and the 7 Configuration Tabs.
Federation & Dual Protocol Specs
How Indie in a Box unifies IndieWeb standards (Micropub, Microsub, Webmention) with ActivityPub C2S/S2S and Group Actors (FEP-1b12) with full cross-platform interop.
Theme Authoring & Digital Garden
Customize your layout, manage theme.json manifests, and organize non-linear knowledge with Flowerbeds, Maturity, and Confidence metrics.