Prerequisites

  • Ubuntu 20.04+
  • Docker
  • Docker Compose

Create a default folder for Docker-based Applications

We're doing this to put all self-hosted application data, including database files, into a single folder for easier migration or backup operations in the future.

mkdir docker
mkdir docker/nproxy
cd docker/nproxy

Create Docker Compose file

nano docker-compose.yml

Copy and paste to .yml file

version: '3'
services:
  nginx-proxy:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./config.json:/app/config/production.json
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
      - certs:/etc/nginx/certs
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro

  nginx-proxy-acme:
    image: 'nginxproxy/acme-companion:latest'
    volumes_from:
      - nginx-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - acme:/etc/acme.sh
    environment:
      DEFAULT_EMAIL: 'me@example.com'

  db:
    image: 'jc21/mariadb-aria:latest'
    environment:
      MYSQL_ROOT_PASSWORD: 'ChangeMe'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'ChangeMe'
    volumes:
      - ./data/mysql:/var/lib/mysql

volumes:
  certs:
  vhost:
  html:
  acme:

Start Nginx Proxy Manager

docker-compose up -d

Stop Nginx Proxy Manager

docker-compose down