Once server is up and running with Docker, Portainer, Nginx Proxy Manager (NPM), and Cloudflare Tunnel, deploying and exposing applications is straightforward.


1. Deploying Containers via Portainer

I use Portainer which manages Docker containers with a clean GUI. NPM and other apps can be deployed directly through Portainer.

Deploy an App (Example: Whoami)

  1. Login to Portainer via LAN or Tailscale at http://portainer.itsarsh.dev
  2. Go to Containers → Add Container
  3. Fill in details:

  4. Name: whoami

  5. Image: containous/whoami
  6. Scroll to Port mapping

  7. host: 8080container: 80

  8. Set Network to bridge
  9. Click Deploy the container

App will now be running on: http://192.168.1.50:8080

How to create container


2. Add Proxy in Nginx Proxy Manager (NPM)

Now app was running on localhost port and to make it public on internet, use NPM:

  1. Go to NPM Dashboard → http://npm.itsarsh.dev
  2. Click "Add Proxy Host"
  3. Fill in the details:

  4. Domain Name: whoami.itsarsh.dev

  5. Forward Hostname/IP: 192.168.1.50
  6. Forward Port: 8080
  7. Check "Block Common Exploits"

  8. Under SSL tab:

  9. Check Force SSL
  10. Check HTTP/2 Support
  11. Enable SSL and click "Request a new SSL Certificate"
  12. Click Save

Site is up and running and It can be viewed here,

Now visit: https://whoami.itsarsh.dev in your browser.

How to create proxy