### 1. Set up Docker Network
```shell
docker network create proxynet
```

### 2. Setup Docker Path
* `/docker`: Docker Relevant Data
* `/docker/portainer`: Portainer Data
* `/mnt/data/docker`: Docker Container Application Data

```shell
mkdir -p mnt/data/docker
mkdir -p /docker/portainer
touch /docker/portainer/docker-compose.yml
```

### 3.1 Portainer Docker Compose (using Path Bindings)
```shell
cd /docker/portainer
nano docker-compose.yml
```

**Insert the Following Content:**

```yaml
version: "3.8"
name: "portainer"


services:
  portainer:
    image: portainer/portainer-ce
    container_name: portainer
    restart: always
    ports:
      - 9000:9000   # HTTP Port
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /mnt/data/docker/portainer/portainer/data:/data


networks:
  default:
    external: true
    name: proxynet
```

```shell
docker compose up -d
```
### 3.2 (Alternative) Portainer Docker Compose (using Docker Volumes)
```shell
cd /docker/portainer
nano docker-compose.yml
```

**Insert the Following Content:**

```yaml
version: "3.8"
name: "portainer"

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - 9000:9000 # Web UI Port
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

networks:
  default:
    external: true
    name: proxynet

volumes:
  portainer_data:
```

```shell
docker compose up -d
```


### 4. Portainer Setup
* go to `http://<server-ip>:9000`
* Create Admin Account
	* Any Username
	* Password min 12 characters
* Have Fun
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9