Files
Yuris Cakranegara eefe369975 feat: add portainer
2025-08-06 01:56:00 +10:00

2.4 KiB

Portainer Module

This module deploys Portainer, a lightweight management UI that allows you to easily manage your different Docker environments.

Overview

The Portainer module:

  • Deploys one Docker container: portainer.
  • Mounts the Docker socket to allow Portainer to manage the Docker environment.
  • Persists Portainer data to a volume on the host.
  • Provides a service definition for integration with networking modules.

Usage

module "portainer" {
  source      = "./modules/20-services-apps/portainer"
  volume_path = "/path/to/volumes/portainer"
  networks    = ["homelab-network"]
}

Variables

Variable Description
image_tag Tag of the Portainer image to use
volume_path Host path for Portainer data volume
networks List of additional networks to which Portainer should be attached

Outputs

Output Description
service_definition Service definition for integration with networking modules

Service Definition

This module outputs a service definition that is used by the networking modules to expose the service.

{
  name         = "portainer"
  primary_port = 9000
  endpoint     = "http://portainer:9000"
  subdomains   = ["portainer"]
  publish_via  = "reverse_proxy"
}

Data Persistence

Portainer stores its data in a single volume:

  1. Portainer data: /data in the container, mapped to ${volume_path}/data on the host.

It also mounts the Docker socket from /var/run/docker.sock on the host to /var/run/docker.sock in the container to manage Docker.

Example Integration in Main Configuration

module "portainer" {
  source      = "./modules/20-services-apps/portainer"
  volume_path = "${module.system_globals.volume_host}/portainer"
  networks    = [module.services.homelab_docker_network_name]
}

# The service definition is automatically included in the services output
module "services" {
  source = "./modules/services"
  # ...
  service_definitions = [
    module.portainer.service_definition,
    # Other service definitions
  ]
}