Docker Image Version Release License

A blogging service that you can self-host, supporting markdown syntax

Getting started
Source code

4 weeks ago 05/11/2026 08:50

Getting started

Create the docker compose file

Open a terminal and create a folder called piblog.
Inside the piblog folder create a folder called data. This folder will contain the database, logs and uploaded files.

mkdir piblog
mkdir piblog/data
cd piblog

Create a file called docker-compose.yml with the following content in the piblog folder.
Set DefaultUsername and DefaultPassword to the desired values.

services:
  app:
    container_name: 'piBlog'
    image: paoloiommarini/piblog
    restart: unless-stopped
    mem_limit: "512M"
    environment:
      DatabaseType: 'SQLite'
      DatabaseConnectionString: 'Data Source=/app/data/piblog.db;foreign keys=true'
      DefaultUsername: 'admin'
      DefaultPassword: 'password'
      KnownNetworks__0: '172.18.0.0/16'
      DOTNET_gcServer: 0
    volumes:
      - ./data:/app/data:rw
    ports:
      - "8080:8080"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 60s
      timeout: 5s
      retries: 3
      start_period: 10s

Test your docker compose by running the command

docker compose up

If piBlog crashes with a permission error when creating the SQLite database check the line in the log containing the UID

[INF] UID: 1654

Change the owner of the data folder

chown 1654:1654 data

Now we need to fix the KnownNetworks__0 value.
Inspect the piBlog network with the command

docker network inspect piblog_default

Look for the ip address at Status.IPAM.Subnets and update KnownNetworks__0 in the docker file.

"Status": {
    "IPAM": {
        "Subnets": {
            "172.18.0.0/16": {
                "IPsInUse": 4,
                "DynamicIPsAvailable": 65532
            }
        }
    }
}

Visit your blog at http://localhost:8080