Hostinger Docker Manager allows you to deploy multiple Docker Compose projects on a single VPS easily. Each project runs in isolation, which is excellent for organization and stability. Still, it introduces one common challenge: exposing multiple applications to the internet when they all need to use the same ports, such as 80 or 443.
Since only one container can bind directly to a port on the host, you cannot expose several projects on port 80 or 443 at the same time in the traditional way. To solve this, Hostinger provides a default Traefik project template that acts as a reverse proxy for all your Docker Compose projects.

Traefik listens on ports 80 and 443 and routes incoming traffic to the correct containers based on domain names. This enables the secure serving of multiple applications over HTTP and HTTPS from a single VPS.
How the Traefik project works
The Traefik project is deployed as a standalone Docker Compose project using the Docker Manager. Once deployed, it becomes the single point of entry for web traffic on your server.
Traefik automatically detects other containers through Docker labels. By reading these labels, it knows which domain should be routed to which container, and it can also automatically request and renew SSL certificates using Let’s Encrypt.
The Traefik project creates a shared Docker network that other projects can join. This network allows Traefik to communicate with containers running in completely separate Docker Compose projects.
Enabling access to your application through Traefik
After deploying the Traefik project template, you need to update the Docker Compose configuration of any project you want to expose to the internet.
Inside your application’s docker-compose.yml file, you need to add Traefik confirming labels to the service you want to make accessible, and connect that service to the shared Traefik network.
An example configuration looks like this:
services:
myapp:
...
labels:
- traefik.enable=true
- traefik.http.routers.myapp.rule=Host(`myapp.example.com`)
- traefik.http.routers.myapp.tls.certresolver=letsencrypt
networks:
- traefik-proxy
networks:
traefik-proxy:
external: trueThe traefik.enable=true label tells Traefik to manage this container.
The router rule defines which domain name should be associated with this application.
By attaching the service to the external traefik-proxy network, Traefik can route traffic to it even though it lives in a different Docker Compose project.
Using the same ports for multiple projects
With this setup, none of your application containers need to expose ports like 80 or 443 directly. Only Traefik uses those ports on the host. This allows you to run many different projects, all using standard web ports, without conflicts.
Each application is accessed through its own domain or subdomain, while Traefik handles routing, SSL certificates, and secure connections automatically.
Final notes
Make sure that the domain names you use in your Traefik labels point to your VPS IP address via DNS. After deploying or updating a project, Traefik will automatically detect the changes and apply the new routing configuration without requiring a restart.
This approach keeps your Docker projects clean, scalable, and production-ready while making it easy to host multiple web applications on a single Hostinger VPS using Docker Manager.