Installing WebholeInk

WebholeInk is a file-first publishing engine. There is no database, no admin panel, and no build step.

Installation is about placing files and setting site identity.


Requirements

No database is required.


Directory Layout

A typical installation looks like this:

/var/www/webholeink
├── app/
├── content/
├── public/
├── nginx/
├── docker-compose.yml (optional)

The web server must point to: /var/www/webholeink/public

Step 1: Configure Site Identity (REQUIRED)

Before serving traffic, you must configure your site identity.

Edit: app/config/site.php

<?php

return [
    'name'        => 'My Site',
    'url'         => 'https://example.com',
    'description' => 'My WebholeInk site',
];

Why this matters

This file controls:

Step 2: Configure Theme (Optional)

Themes are author-controlled. Edit app/config/theme.php

<?php

return [ 
    'available' => ['classic', 'light', 'dark'],
    'default'   => 'classic',
    'active'    => 'dark',
];

Visitors cannot switch themes. The site owner controls theme selection.

Step 3: Add Content

Content lives in plain Markdown files.

Pages

In content/pages/

content/pages/about.md
content/pages/philosophy.md

Posts

In content/posts/ Example:

content/posts/2026-01-04-my-first-post.md

Draft posts are excluded automatically:

Yaml
draft: true

Step 4: Media Files

Static media (images, files) must live under: public/media/

public/media/pages/logo.png

Markdown reference:

![Logo](/media/pages/logo.png)

Do not place media inside content/.

Step 5: Deploy

Deployment is file-based. To deploy changes:

git pull
rsync -av content/ server:/var/www/webholeink/content/

Changes are live immediately.

Verifying Installation

Check the following URLs:

All URLs should reference your configured domain.

Common Mistakes

Philosophy Reminder