Skip to content

Nginx Base Nginx Base

Description / nameInput element
Container Registry

Build Status Last Commit

Shared base image for Nginx-based applications.

Registry ghcr.io/daemonless/nginx-base
Daemonless daemonless/nginx-base
Source daemonless/nginx-base
Website nginx.org

Version Tags

Multi-arch manifests — resolve automatically to the right image for your platform.

Tag Description Best For
15 / 15.1 / latest / pkg FreeBSD Port. Built from FreeBSD packages. Production stability.
15-latest / 15.1-latest / pkg-latest FreeBSD Latest. Rolling package updates. Staying current.
Tag Description Best For
15-amd64 / 15.1-amd64 / latest-amd64 / pkg-amd64 FreeBSD Port. Built from FreeBSD packages. Production stability.
15-latest-amd64 / 15.1-latest-amd64 / pkg-latest-amd64 FreeBSD Latest. Rolling package updates. Staying current.
Tag Description Best For
15-aarch64 / 15.1-aarch64 / latest-aarch64 / pkg-aarch64 FreeBSD Port. Built from FreeBSD packages. Production stability.
15-latest-aarch64 / 15.1-latest-aarch64 / pkg-latest-aarch64 FreeBSD Latest. Rolling package updates. Staying current.

Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions, including the security model for host vs. container privileges.

Deployment

1
2
3
4
5
6
services:
  nginx-base:
    image: "ghcr.io/daemonless/nginx-base:latest"
    container_name: nginx-base
    # always (not unless-stopped) so FreeBSD's podman rc.d auto-starts it at boot
    restart: always

Save as compose.yaml, then run podman-compose up -d.

podman run -d --name nginx-base \
  ghcr.io/daemonless/nginx-base:latest

Save as run.sh, then run sh run.sh.

1
2
3
4
5
6
- name: Deploy nginx-base
  containers.podman.podman_container:
    name: nginx-base
    image: "ghcr.io/daemonless/nginx-base:latest"
    state: started
    restart_policy: always

Save as nginx-base-deploy.yaml, then run ansible-playbook nginx-base-deploy.yaml.

1
2
3
# .env

DIRECTOR_PROJECT=nginx-base
# appjail-director.yml

options:
  - virtualnet: ':<random> default'
  - nat:
services:
  nginx-base:
    name: nginx_base
    options:
      - container: 'boot args:--pull'
1
2
3
4
5
6
# Makejail

ARG tag=15.1

OPTION overwrite=force
OPTION from=ghcr.io/daemonless/nginx-base:${tag}

Save the files above, then run appjail-director up.

1
2
3
4
5
6
appjail oci run -Pd \
  -o overwrite=force \
  -o container="args:--pull" \
  -o virtualnet=":<random> default" \
  -o nat \
  ghcr.io/daemonless/nginx-base:latest nginx-base

Save as run.sh, then run sh run.sh.

Experimental

Bastille's OCI support is experimental. It requires buildah, shares the host network stack (inherit), and persists image-declared volumes under --data-path.

1
2
3
4
5
services:
  nginx-base:
    image: "ghcr.io/daemonless/nginx-base:latest"
    container_name: nginx-base
    network_mode: host  # jail shares host networking

Save as podman-compose.yml, then run bastille up.

bastille create -O \
  nginx-base ghcr.io/daemonless/nginx-base:latest inherit

Interactive Configuration

Implementation Details

  • Architectures: amd64, aarch64
  • User: root (UID/GID set via PUID/PGID). Defaults to 1000:1000.
  • Base: Built on ghcr.io/daemonless/base (FreeBSD 15.1).

Need help? Join our Discord community.