dmpop/tinble
2
10
Fork
You've already forked tinble
0
Simple PHP blog engine with Markdown support https://dmpop.xyz
  • PHP 91.2%
  • CSS 8.7%
  • Dockerfile 0.1%
2026年07月09日 17:46:29 +02:00
.vscode Comment by email 2024年12月05日 11:24:32 +01:00
badges Add badges and adjust spacing for article widgets 2026年04月19日 12:39:58 +02:00
content Add robots.txt 2025年01月03日 17:20:44 +01:00
css Replace Inter and Literata with DM Mono across all styles 2026年05月07日 14:31:32 +02:00
fonts Replace Inter and Literata with DM Mono across all styles 2026年05月07日 14:31:32 +02:00
img Update favicon colors and typography 2026年04月15日 13:07:09 +02:00
inc Replace Inter and Literata with DM Mono across all styles 2026年05月07日 14:31:32 +02:00
js Reorganize dirs, minor fixes 2024年06月11日 15:00:25 +02:00
lang Remove read counting feature 2026年04月15日 08:37:11 +02:00
lib Add comprehensive PHPDoc comments to core files 2026年04月15日 08:58:28 +02:00
.dockerignore Add .dockerignore 2024年09月26日 13:46:37 +02:00
.gitignore Update content 2024年10月29日 17:21:38 +01:00
.htaccess Fix htaccess 2023年12月04日 17:51:40 +01:00
article.php Move badges to footer and adjust spacing 2026年04月19日 13:04:06 +02:00
Caddyfile docker compose instructions 2024年10月03日 11:31:17 +02:00
captcha.php Add comprehensive PHPDoc comments to core files 2026年04月15日 08:58:28 +02:00
config.php Replace Umami analytics with Simian support 2026年04月28日 15:16:51 +02:00
docker-compose.yml Add docker-compose.yml, update README 2024年10月02日 14:53:26 +02:00
Dockerfile Update Dockerfile 2024年12月20日 08:42:16 +01:00
guestbook.php Fix inline element spanning in guestbook output 2026年07月09日 17:46:29 +02:00
index.php Add comprehensive PHPDoc comments to core files 2026年04月15日 08:58:28 +02:00
LICENSE Update README and license 2024年05月05日 18:46:50 +02:00
page.php Add comprehensive PHPDoc comments to core files 2026年04月15日 08:58:28 +02:00
README.md Replace Umami analytics with Simian support 2026年04月28日 15:16:51 +02:00
robots.txt Add robots.txt 2025年01月03日 17:20:44 +01:00
rss.php Add comprehensive PHPDoc comments to core files 2026年04月15日 08:58:28 +02:00
SECURITY.md article.php, minor tweaks 2024年03月01日 09:50:37 +01:00
tim.php Add comprehensive PHPDoc comments to core files 2026年04月15日 08:58:28 +02:00

Tinble

Tinble is a simple, lightweight blog engine that uses Markdown-formatted text files. It started its life as a heavily modified fork of Tiny Blog Engine. Tinble stands for Tiny blog engine.

Tinble is very much old-school. Apart from a tiny bit of JavaScript used for more convenient navigation, the entire application is written in PHP by a clueless but curious human.

Features and functionality

  • Lightweight: Only a handful of PHP and CSS files, plus a single optional JavaScript library.
  • Straightforward deployment: Copy all the files to the document root of your web server with PHP.
  • Syntax highlighting: Using the Rainbow library.
  • Dark theme: Available for those who care about it.
  • Scheduled article publishing: Articles in the drafts directory are automatically published on the dates specified in the file name prefixes (for example, the 2030年07月18日_first-article.md file in the drafts directory is published automatically on July 18, 2030).
  • Pinned articles: You can pin articles to the top by adding pinned anywhere in their file names.
  • Simple guestbook: Instead of comments, Tinble comes with an old-school guestbook.
  • Search: The search feature can be used to find articles containing the specified search term.
  • RSS2 support: Tinble automatically generates RSS feeds.
  • i18n support: The application can be easily localized to any language.
  • Self-contained: No external dependencies. All required libraries are included.
  • Works with simian

Requirements

  • A web server with PHP 8.x or higher. Tested with Apache.
  • PHP GD extension (for image resizing).
  • PHP XML extension (for HTML in Markdown).

Installation

  1. Checkout the latest code using Git:

    git clone https://codeberg.org/dmpop/tinble.git
    

    Alternatively, download the source code from the project's Codeberg repository, and unpack the downloaded archive.

  2. Move all the files in the tinble directory to the document root of your server.

  3. Make the content directory writable by the server. For example:

    chown www-data:www-data -R /var/www/html/content
    

Run Tinble in a Container

Perform the following steps on the machine you want to use as a Tinble server.

  1. Install Docker.

  2. Run the hostname -I command and note the IP address of the machine.

  3. Create a directory for storing content.

  4. Clone the Tinble Git repository using the git clone https://codeberg.org/dmpop/tinble.git command.

  5. Switch to the resulting tinble directory, open the config.php file for editing, and replace the default value of the $BLOG_URL with the IP address of the machine.

  6. Build an image using the docker build -t tinble . command.

  7. Run a container:

    docker run -d --rm -p 8000:8000 --name=tinble -v /path/to/content:/usr/src/tinble/content:rw tinble
    

    Replace /path/to/content with the actual path to the created directory.

  8. Point the browser to http://127.0.0.1:8000 (replace 127.0.0.1:8000 with the actual IP address or domain name of the machine running the container).

Deploy Tinble with docker-compose.yml

Using the supplied docker-compose.yml file, you can deploy Tinble on a machine with a domain name assigned to it. This approach automatically enables HTTPS.

  1. Open the Caddyfile for editing.
  2. Replace <email address> with the email address you want to use with the Let's Encrypt service.
  3. Replace <domain name> with the domain name assigned to the server.
  4. Save the changes.
  5. Run the docker compose -d command.

Adding articles

To add an article, create a .md file in the content/articles directory using the following naming rule: yyyy-mm-dd_title.md (for example, 1970年01月01日_this-is-first-article.md).

To insert an image into an article, put the image into the content/articles/img directory and use the following Markdown code:

![This is a nice image](img/image.jpg)

When uploading an image for use in an article, resize the image and reduce its quality. Alternatively, you can use the included tim.php script (requires the GD library), as follows:

![This is a nice image](../tim.php?width=1200&image=content/articles/img/your-image.jpg)

The script resizes the inserted image to the specified width on-the-fly.

Scheduling articles

Place the article you want to publish on a specific date in the content/articles/drafts folder, and use the desired date as the filename prefix. For example, the article named 2030年07月18日_first-article.md will be automatically published on July 18, 2030.

Adding pages

To add a page, create a .md file in the content/pages directory.

License

GNU General Public License version 3

Acknowledgements