My personal container stacks
The typical way to bootstrap a system for these stacks is the following:
- Create docker networks
- Follow the setup steps of the proxy stack
- Bring up Portainer, and use the exposed port to access it to proceed with the next steps
- Bring up the Proxy stack
- Bring up any other stacks desired
The following named networks are assumed to already be created outside these stacks:
- docker-proxy - Used by any service that needs to communicate with the docker engine via
ghcr.io/linuxserver/socket-proxy
. - ingress - Used by the traefik stack to expose services. Any exposed service must be attached to this network in order to be routed to by traefik. This network is also utilized by the homepage stack to route to services by their service or container name.
- observe - Used by the alloy and grafana stacks to scrape or otherwise receive and display observability data. Any service that can be scraped or remote write to one of these systems must be attached to this network, as well as any service used as a datasource in Grafana.
# Example of using docker cli to create these networks
docker network create docker-proxy
docker network create ingress
docker network create observe
These stacks are designed to be used with Portainer with supplied environment variables, or .env
files when used with docker compose directly.
Refer to the example.env
file in each directory for the list of environment variables that are expected.
The templates.json file provides Portainer Templates that can be used to deploy these stacks, supplying the necessary values to variables. Configure the Portainer instance to point to https://raw.githubusercontent.com/chadweimer/container-stacks/refs/heads/main/templates.json to use them.