Drops aternos/codex (and its codex-minecraft / codex-hytale satellites)
plus aternos/sherlock from composer.json. Adds indifferentketchup/codex
pinned to ^0.2.0, sourced via a Composer vcs repository pointing at the
Gitea-hosted ik-codex repo. composer.lock regenerated against the new
dep tree.
Re-points the seven Aternos\Codex\* import sites in src/ to their
IndifferentKetchup\Codex\* equivalents:
- src/Log.php (5 imports)
- src/Api/Response/CodexLogResponse.php (1 import)
- src/Printer/Printer.php (5 imports)
- src/Detective.php (rewritten — see below)
Stubs three sites that depend on Minecraft-specific code with no
analogue in IndifferentKetchup\Codex:
- src/Detective.php no longer extends the Aternos Detective with
Minecraft + Hytale satellites. Instead it extends our codex's
Detective and registers ProjectZomboidDetective, which itself
pre-registers all 11 PZ log subclasses.
- src/Data/Deobfuscator.php is reduced to a no-op shell. mclogs used
aternos/sherlock to fetch Mojang/Yarn obfuscation maps and
deobfuscate Vanilla / Fabric stack traces. Project Zomboid uses no
such mapping scheme; the deobfuscator returns null until iblogs
supports Minecraft logs again. Class signature preserved so callers
in src/Log.php and elsewhere don't break.
- src/Printer/FormatModification.php no longer extends the Minecraft
section-sign-code translator. It extends IndifferentKetchup\Codex's
Modification base class with a pass-through modify() implementation.
The format-* CSS color classes are retained for any future game's
own format-code scheme to reuse.
Updates composer.json metadata: description rewritten to drop the
"Minecraft" framing, authors entry replaced with indifferentketchup /
samkintop@gmail.com.
Verification:
composer update --ignore-platform-req=ext-frankenphp \
--ignore-platform-req=ext-mongodb
-> resolves cleanly: 1 install (indifferentketchup/codex 0.2.0),
4 removals (the aternos/* set).
php -l on every touched file -> no syntax errors.
Autoload smoke test -> Detective registers 11 PZ log classes;
Printer instantiates; FormatModification stub returns input
unchanged.
Paste, share & analyse your logs
Built for Minecraft & Hytale
Features
- Share logs by pasting or uploading files
- Automatic removal of sensitive information (e.g. IP addresses)
- Short URLs for easy sharing
- Syntax highlighting
- Line numbers
- Direct links to specific lines
- Analysis and parsing using codex
For developers
- Upload your logs using the API
- Add metadata to shared logs, e.g. version numbers, server ids, etc.
- Retrieve logs and their metadata from the API
- Open source and self-hostable
Self-hosting
You can self-host iblogs using Docker. A docker image is available in the GitHub Container Registry: ghcr.io/indifferentketchup/iblogs.
A MongoDB instance is also required to run iblogs.
An example docker compose files for self-hosting can be found here: docker/compose.production.yaml.
Config
You can configure iblogs by creating a config.json file in the root directory, see example.config.json or by setting
environment variables. Environment variables override settings in the config file.
Here is a list of all available config options:
| Variable / JSON Path | Default | Description |
|---|---|---|
IBLOGS_STORAGE_TTL storage.ttl |
7776000 (90d) |
Time until logs are deleted after last view |
IBLOGS_STORAGE_LIMIT_BYTES storage.limit.bytes |
10485760 (10 MiB) |
Maximum size of a log in bytes |
IBLOGS_STORAGE_LIMIT_LINES storage.limit.lines |
25000 |
Maximum number of lines in a log |
IBLOGS_MONGODB_URL mongodb.url |
"mongodb://mongo" |
MongoDB connection URL |
IBLOGS_MONGODB_DATABASE mongodb.database |
"iblogs" |
Name of the MongoDB database |
IBLOGS_ID_LENGTH id.length |
7 |
The default length for new IDs |
IBLOGS_LEGAL_ABUSE legal.abuse |
null |
Public email address to report abuse |
IBLOGS_LEGAL_IMPRINT legal.imprint |
null |
The imprint URL |
IBLOGS_LEGAL_PRIVACY legal.privacy |
null |
The privacy policy URL |
IBLOGS_FRONTEND_NAME frontend.name |
null |
Instance name (defaults to domain) |
IBLOGS_FRONTEND_COLOR_ACCENT frontend.color.accent |
#5cb85c |
The accent/primary color |
IBLOGS_FRONTEND_COLOR_BACKGROUND frontend.color.background |
#1a1a1a |
The background color |
IBLOGS_FRONTEND_COLOR_TEXT frontend.color.text |
#e8e8e8 |
The text color |
IBLOGS_FRONTEND_COLOR_ERROR frontend.color.error |
#f62451 |
The error color |
IBLOGS_WORKER_REQUESTS worker.requests |
500 |
Max requests per single worker |
There are a few more environment variables that can be set to modify the FrankenPHP/Caddy setup directly:
| Variable | Default | Description |
|---|---|---|
SERVER_NAME |
":80" |
Set the Caddy server name, set this to your domain for automatic SSL |
TRUSTED_PROXIES |
"private_ranges" |
Set trusted proxy address ranges |
FRANKENPHP_WORKERS |
16 |
The number of FrankenPHP workers |
Development setup
Prerequisites
Installation
# clone repository
git clone git@github.com:indifferentketchup/iblogs.git
# install composer dependencies
cd iblogs
composer install
# start development environment
cd dev
docker compose up
Open http://localhost in browser and enjoy.