---
title: Install & quickstart
description: How to pull, run, and configure the containers.
url: https://containers.supanadit.com/install.md
---

# Containers — Install & Quickstart

Images are published to GHCR per container. Pull one, mount the volume tree, and it boots with sane defaults.

Registry: `ghcr.io/supanadit/containers`

Tags: per-container, `<container>-rX.Y.Z` (optionally prefixed with the upstream version, e.g. `wordpress-apache-6.9-r5`). Browse tags at <https://github.com/supanadit/containers/tags>

## Pull a container

```sh
docker pull ghcr.io/supanadit/containers/postgresql:<tag>
```

## Run PostgreSQL

The /opt/containers tree is pre-created and pre-owned — mount straight onto it:

```sh
docker run -d --name pg \
  -p 5432:5432 \
  -e POSTGRESQL_PASSWORD=secret \
  -v pgdata:/opt/containers/data \
  ghcr.io/supanadit/containers/postgresql:<tag>

# the entrypoint registers a composite health endpoint on its shared health server
```

## Or take a full example stack

Ready-made compose scenarios and per-container guides live in the documentation:

```sh
open https://docs.containers.supanadit.com/postgresql
```

## Volume layout

Every container uses the same tree, pre-created and owned by the application user:

- `/opt/containers/data` — persistent data
- `/opt/containers/config` — generated and mounted configuration
- `/opt/containers/logs` — log output
- `/opt/containers/run` — runtime state
- `/opt/containers/backup` — backup targets

## Status & License

License: MIT License — © 2026 Supan Adit Pratama.
