acme-companion Docker & Self-Hosted Deployment

GitHub

Automated ACME SSL certificate generation for nginx-proxy

7,703 stars Shell Shell 1 file ยท ~9,794 tokens #acme#acme-protocol#acme-v2#buypass#docker#letsencrypt#nginx-proxy#ssl
RAW Compose
1. Pull Image (GHCR) docker pull ghcr.io/letsencrypt/pebble
2. Docker Run (1-Click Launch) docker run -d --name acme-companion -p 14000:14000 --restart always ghcr.io/letsencrypt/pebble:${PEBBLE_VERSION}
3. Podman Run podman run -d --name acme-companion -p 14000:14000 --restart always ghcr.io/letsencrypt/pebble:${PEBBLE_VERSION}
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://ghcr.io/letsencrypt/pebble:${PEBBLE_VERSION}
5. ORAS Pull (OCI Artifact) oras pull ghcr.io/letsencrypt/pebble:${PEBBLE_VERSION}
6. Compose Deployment docker compose up -d
test/setup/pebble/compose.yaml
Download .yml
services:
  pebble:
    image: "ghcr.io/letsencrypt/pebble:${PEBBLE_VERSION}"
    container_name: pebble
    volumes:
      - "./${PEBBLE_CONFIG}:/test/config/pebble-config.json"
    environment:
      - PEBBLE_VA_NOSLEEP=1
      - PEBBLE_WFE_NONCEREJECT=0
    command: -config /test/config/pebble-config.json -dnsserver 10.30.50.3:8053
    ports:
      - 14000:14000 # HTTPS ACME API
      - 15000:15000 # HTTPS Management API
    networks:
      acme_net:
        ipv4_address: 10.30.50.2

  challtestsrv:
    image: "ghcr.io/letsencrypt/pebble-challtestsrv:${PEBBLE_VERSION}"
    container_name: challtestserv
    command: -defaultIPv6 "" -defaultIPv4 10.30.50.3
    ports:
      - 8055:8055 # HTTP Management API
    networks:
      acme_net:
        ipv4_address: 10.30.50.3

networks:
  acme_net:
    name: acme_net
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 10.30.50.0/24