# Proxy

### traefik

#### links

* [youtube tutuorial](https://www.youtube.com/watch?v=-hfejNXqOzA&t=150s)
* [traefik boilerplate (Lempa)](https://github.com/ChristianLempa/boilerplates/tree/main/docker-compose/traefik)


#### labels for connected containers


```yaml
services:
  demo
    labels:
      - traefik.enable=true
      - traefik.http.services.demo.loadbalancer.server.port=9000
      - traefik.http.routers.demo.service=demo
      - traefik.http.routers.demo.entrypoints=websecure
      - traefik.http.routers.demo.rule=Host(`demo.draab.at`)
      - traefik.http.routers.demo.tls=true
      - traefik.http.routers.demo.tls.certresolver=cloudflare # -> netcup
    networks:
      - traefik

networks:
  traefik:
    external: true
```


### nginx proxy manager

```yaml
services:
  app:
    container_name: 'nginx-proxy-manager-app'
    image: 'jc21/nginx-proxy-manager:latest'
    restart: always
    ports:
      - '80:80'
#      - '81:81'
      - '443:443'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm!m0stSecretPa55w0rd"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data/data:/data
      - ./data/letsencrypt:/etc/letsencrypt
    networks:
      - nginx
      - npm-internal
  db:
    container_name: 'nginx-proxy-manager-db'
    image: 'jc21/mariadb-aria:latest'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'npm!m0stSecret!r00t!Pa55w0rd'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm!m0stSecretPa55w0rd'
    volumes:
      - ./data/mysql:/var/lib/mysql
    networks:
      - npm-internal

networks:
  nginx:
    name: nginx
  npm-internal:
```

start with `docker-compose -p "nginx-proxy-manager" up -d`

default credentials `admin@example.com` and `changeme`


### Caddy

[Single Docker Compose use](https://betterstack.com/community/guides/web-servers/caddy/)