No description
  • TypeScript 51.1%
  • Go 36.5%
  • JavaScript 7.6%
  • HTML 3.8%
  • CSS 0.8%
Find a file
2026-07-30 17:17:47 +12:00
.github Add Portainer version 2.44.0 to bug report template (#3341) 2026-07-30 17:17:47 +12:00
.husky chore(build): migrate to pnpm (#1558) 2025-12-29 10:14:57 +02:00
.storybook feature(storybook): Storybook usability upgrades [C9S-140] (#2482) 2026-05-05 09:25:09 +12:00
__mocks__/@reach feat(gitops): introduce sources list view [BE-12902] (#2550) 2026-05-12 15:32:46 +03:00
analysis feat(db): add rules to avoid some nested transactions BE-12617 (#3271) 2026-07-27 09:06:15 -03:00
api fix(gitops): resolve shared git credentials in git operations everywhere BE-13282 (#3330) 2026-07-30 09:11:19 +12:00
app fix(workflows): fix clipped registry dropdowns in create-workflow wizard [BE-13277] (#3322) 2026-07-28 10:44:57 -03:00
build fix(docker): remove docker binary from ce/ee images [BE-12917] (#2674) 2026-05-19 09:37:42 +12:00
dev feat(app/sources): UAC on sources (#2881) 2026-06-23 11:30:31 -03:00
distribution chore(version): bump version number 2020-08-27 17:48:02 +12:00
mustache-templates feat(update): prevent the creation of updater network [BE-12441] (#1517) 2025-12-10 18:45:46 +02:00
pkg fix(addons): handle empty strings in add-on config forms [R8S-1188] (#3262) 2026-07-27 14:03:32 +12:00
translations/en fix(app): add github action for linting and formatting [EE-2344] (#6356) 2022-01-17 07:53:32 +02:00
webpack feat(api): auto generate typescript definition from api docs [BE-9222] (#2468) 2026-05-31 14:51:52 +03:00
.air.toml build: introduce central Makefile and live-reload for Go (#184) 2024-12-03 08:49:03 +13:00
.dockerignore feat(docker-desktop-extension): Make Portainer compatible with Docker Desktop Extension EE-2747 (#6644) 2022-04-19 13:10:42 +12:00
.env.defaults fix(app): skip authorizations in CE [EE-2423] (#6431) 2022-01-24 08:02:23 +02:00
.git-blame-ignore-revs chore(prettier): ignore tailwind changes [EE-4809] (#8483) 2023-02-13 11:38:06 +13:00
.gitignore feat(ci): add API types sync check [BE-13014] (#3102) 2026-07-07 13:59:59 +03:00
.golangci-forward.yaml chore(lint): scope base lint run to new changes, allow parallel runners (#3223) 2026-07-21 09:28:44 +03:00
.golangci.yaml feat(db): add rules to avoid some nested transactions BE-12617 (#3271) 2026-07-27 09:06:15 -03:00
.prettierignore fix(pnpm): pnpm format command failing [R8S-1071] (#2932) 2026-06-18 13:27:01 +12:00
.prettierrc chore(tailwind): support tailwind class ordering in clsx functions [r8s-949] (#2292) 2026-04-13 17:13:40 +12:00
ATTRIBUTIONS.md Link to attributions 2021-03-22 15:35:26 +13:00
babel.config.js refactor(home): migrate view to react [EE-1810] (#6314) 2022-03-08 14:14:23 +02:00
CLAUDE.md chore(docs): update docs, skills and Claude.md to avoid repeating review comments [r8s-971] (#2400) 2026-04-22 08:21:31 +12:00
CODE_OF_CONDUCT.md chore(server-ce): update Code of Conduct contact to contribute@portainer.io (#2889) 2026-06-14 12:44:41 +12:00
CONTRIBUTING.md docs(guidelines): add git conventions and create-pr skill [BE-13198] (#3160) 2026-07-15 10:32:44 +03:00
eslint.config.mjs chore(eslint): update eslint to latest v9 [R8S-1090] (#2954) 2026-06-23 11:04:33 +12:00
go.mod fix(security): restore oras-go/v2 to 2.6.1 [DEV-132] (#3292) 2026-07-27 12:44:45 +12:00
go.sum fix(security): restore oras-go/v2 to 2.6.1 [DEV-132] (#3292) 2026-07-27 12:44:45 +12:00
jsconfig.json feat(ci): replace jest with vitest [EE-6504] (#10997) 2024-01-23 08:42:52 +02:00
LICENSE chore(license): update license info so that GitHub recognizes it (#1924) 2018-05-23 14:47:43 +02:00
lint-staged.config.js feat(ci): add API types sync check [BE-13014] (#3102) 2026-07-07 13:59:59 +03:00
Makefile chore(lint): scope base lint run to new changes, allow parallel runners (#3223) 2026-07-21 09:28:44 +03:00
openapi-ts.config.ts feat(ci): add API types sync check [BE-13014] (#3102) 2026-07-07 13:59:59 +03:00
package.json chore: bump version to 2.44.0 (#3313) 2026-07-28 11:02:19 +12:00
pnpm-lock.yaml refactor(charts): migrate to rechart charts in UI [C9S-271] (#2990) 2026-07-20 10:36:44 +12:00
postcss.config.js chore(deps): add tailwindcss [DTD-29] (#6604) 2022-04-26 08:16:46 +03:00
README.md docs(api): document CE type generation [BE-13031] (#2794) 2026-06-04 09:13:45 +03:00
SECURITY.md chore(docs): Update security disclosure docs (#3162) 2026-07-17 12:25:37 +12:00
tailwind.config.js feat(environment-groups): replace Datatable with SortableList and update list UI [R8S-827] (#2661) 2026-05-29 10:08:35 +12:00
tsconfig.generated.json feat(api): auto generate typescript definition from api docs [BE-9222] (#2468) 2026-05-31 14:51:52 +03:00
tsconfig.json feat(api): auto generate typescript definition from api docs [BE-9222] (#2468) 2026-05-31 14:51:52 +03:00
vitest.config.mts feat(api): auto generate typescript definition from api docs [BE-9222] (#2468) 2026-05-31 14:51:52 +03:00
webpack.config.js chore(build): remove grunt and add makefile [EE-4824] (#8125) 2023-05-02 10:13:37 +07:00

Portainer Community Edition is a lightweight service delivery platform for containerized applications that can be used to manage Docker, Swarm, Kubernetes and ACI environments. It is designed to be as simple to deploy as it is to use. The application allows you to manage all your orchestrator resources (containers, images, volumes, networks and more) through a smart GUI and/or an extensive API.

Portainer consists of a single container that can run on any cluster. It can be deployed as a Linux container or a Windows native container.

Portainer Business Edition builds on the open-source base and includes a range of advanced features and functions (like RBAC and Support) that are specific to the needs of business users.

Latest Version

Portainer CE is updated regularly. We aim to do an update release every couple of months.

latest version

Getting started

Features & Functions

View this table to see all of the Portainer CE functionality and compare to Portainer Business.

Getting help

Portainer CE is an open source project and is supported by the community. You can buy a supported version of Portainer at portainer.io

Learn more about Portainer's community support channels here.

You can join the Portainer Community by visiting https://www.portainer.io/join-our-community. This will give you advance notice of events, content and other related Portainer content.

Reporting bugs and contributing

  • Want to report a bug or request a feature? Please open an issue.
  • Want to help us build portainer? Follow our contribution guidelines to build it locally and make a pull request.

Generating API types

The frontend consumes a TypeScript API client (SDK functions and request/response types) that is generated from the Go API's Swagger annotations. Regenerate it after any API change — a new endpoint, a changed request/response shape, or a removed endpoint:

make generate-api

This runs the following pipeline:

Go Swagger annotations
  → dist/docs/swagger.yaml       (make docs-build, via swaggo/swag)
  → dist/docs/openapi.yaml       (swagger2openapi + validation)
  → app/react/portainer/generated-api/portainer/   (hey-api/openapi-ts)

The generator is configured in openapi-ts.config.ts, which controls the output path, plugins, and tag filters (for example, deprecated endpoints and edge_agent-tagged routes are excluded).

The generated files live in app/react/portainer/generated-api/portainer/ and must not be edited by hand — your changes would be overwritten on the next run. Import the generated SDK functions and types instead of writing direct HTTP calls:

  • @api/sdk.gen — SDK functions
  • @api/types.gen — request/response types

See Adding api docs for how to annotate handlers so they are picked up by the generator.

Security

For information about reporting security vulnerabilities, please see our Security Policy.

Work for us

If you are a developer, and our code in this repo makes sense to you, we would love to hear from you. We are always on the hunt for awesome devs, either freelance or employed. Drop us a line to success@portainer.io with your details and/or visit our careers page.

Privacy

To make sure we focus our development effort in the right places we need to know which features get used most often. To give us this information we use Matomo Analytics, which is hosted in Germany and is fully GDPR compliant.

When Portainer first starts, you are given the option to DISABLE analytics. If you don't choose to disable it, we collect anonymous usage as per our privacy policy. Please note, there is no personally identifiable information sent or stored at any time and we only use the data to help us improve Portainer.

Limitations

Portainer supports "Current - 2 docker versions only. Prior versions may operate, however these are not supported.

Licensing

Portainer is licensed under the zlib license. See LICENSE for reference.

Portainer also contains code from open source projects. See ATTRIBUTIONS.md for a list.