# การติดตั้ง Nginx Proxy Manager (NPM) ใน Docker

* ค่าเริ่มต้นคือ:Email: [admin@example.com] Password: changeme

* user id ของ NPM:

  * uid=0(root) gid=0(root) groups=0(root)

---

## กำหนดสิทธิ

```bash
# ตรวจสอบ  user id ของ NPM
docker exec -it npm id
chown -R 0:0 /share/Container/npm
setfacl -R -m u:0:rwx /share/Container/npm
```

## Note: Configurations

| Domain Names                   | Forward Hostname | IP Forward Port | Cache Assets | Block Common Exploits | Websockets | Force SSL | HTTP/2 | SupportHSTS Enabled |
| :----------------------------- | :--------------- | :-------------- | :----------- | :-------------------- | :--------- | :-------- | :----- | :------------------ |
| backend.np-dms.work            | backend          | 3000            | [ ]          | [x]                   | [ ]        | [x]       | [x]    | [ ]                 |
| lcbp3.np-dms.work              | frontend         | 3000            | [x]          | [x]                   | [x]        | [x]       | [x]    | [ ]                 |
| db.np-dms.work                 | mariadb          | 3306            | [x]          | [x]                   | [x]        | [x]       | [x]    | [ ]                 |
| git.np-dms.work                | gitea            | 3000            | [x]          | [x]                   | [x]        | [x]       | [x]    | [ ]                 |
| n8n.np-dms.work                | n8n              | 5678            | [x]          | [x]                   | [x]        | [x]       | [x]    | [ ]                 |
| npm.np-dms.work                | npm              | 81              | [ ]          | [x]                   | [x]        | [x]       | [x]    | [ ]                 |
| pma.np-dms.work                | pma              | 80              | [x]          | [x]                   | [ ]        | [x]       | [x]    | [ ]                 |
| np-dms.work, [www.np-dms.work] | localhost        | 80              | [x]          | [x]                   | [ ]        | [x]       | [x]    | [ ]                 |

## Docker file

```yml
# File: share/Container/npm/docker-compose-npm.yml
# DMS Container v1_4_1 แยก service และ folder, Application name: lcbp3-npm, Servive:npm
x-restart: &restart_policy
  restart: unless-stopped

x-logging: &default_logging
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "5"
services:
  npm:
    <<: [*restart_policy, *default_logging]
    image: jc21/nginx-proxy-manager:latest
    container_name: npm
    stdin_open: true
    tty: true
    deploy:
      resources:
        limits:
          cpus: "1.0" # 50% CPU
          memory: 512M
    ports:
      - "80:80" # HTTP
      - "443:443" # HTTPS
      - "81:81" # NPM Admin UI
    environment:
      TZ: "Asia/Bangkok"
      DB_MYSQL_HOST: "mariadb"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      DISABLE_IPV6: "true"
    networks:
      - lcbp3
      - giteanet
    volumes:
      - "/share/Container/npm/data:/data"
      - "/share/dms-data/logs/npm:/data/logs" # <-- เพิ่ม logging volume
      - "/share/Container/npm/letsencrypt:/etc/letsencrypt"
      - "/share/Container/npm/custom:/data/nginx/custom" # <-- สำคัญสำหรับ http_top.conf
      # - "/share/Container/lcbp3/npm/landing:/data/landing:ro"
  landing:
   image: nginx:1.27-alpine
   container_name: landing
   restart: unless-stopped
   volumes:
     - "/share/Container/npm/landing:/usr/share/nginx/html:ro"
   networks:
     - lcbp3
networks:
  lcbp3:
    external: true
  giteanet:
    external: true
    name: gitnet
    



```
