indifferentketchup 94326d5a19 refactor: swap Aternos codex deps for IndifferentKetchup\Codex
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.
2026-05-01 22:19:03 +00:00
all
2026-04-30 09:44:02 -05:00
all
2026-04-30 09:44:02 -05:00
all
2026-04-30 09:44:02 -05:00
all
2026-04-30 09:44:02 -05:00

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.

Description
No description provided
Readme MIT 666 KiB
Languages
PHP 67.8%
CSS 20.4%
JavaScript 11.3%
Dockerfile 0.5%