To create a custom app template in Portainer, open Templates, select Custom, choose Add Custom Template, define the template metadata, select a source method, and click Create custom template. You can paste a Compose file, upload a local docker-compose.yml, or pull the file from Git. Portainer then presents that predefined container or stack configuration for repeatable deployment.
Antihost offers VPS plans with one-click Docker, NVMe storage and a 14-day free trial.
What a Portainer custom app template does
A Portainer application template packages a container or stack with predetermined configuration values. The person deploying it can still adjust the options that the template exposes, such as environment variables. This makes a template useful when several people need to deploy the same application without rebuilding its configuration manually each time.
As an Amazon Associate I earn from qualifying purchases.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteThere are two concepts to keep separate:
- Built-in application templates are supplied through Portainer’s existing catalog.
- Custom templates are authored by your team and can be created from a Compose file or a Git repository.
Portainer’s documentation identifies custom templates and their configurable variable controls as Business Edition features. If the Custom option or variable editor is missing, check which Portainer edition you are running and whether your account has permission to manage templates.
A custom template can be used to help streamline the deployment of a container or stack.
#1 Best Overall
SaleGaoye Blue Light Blocking Glasses
- BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
- EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
- COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
- LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
- WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
What you need before creating one
- Access to a Portainer environment where custom templates are available.
- A tested Compose file, a local
docker-compose.yml, or a Git repository containing the Compose file. - A decision about which settings deployers may change.
- Stable image references and a plan for updating the template later.
- No production passwords or private keys embedded in the file.
For a Git-backed template, collect the repository URL, the branch, tag, or commit reference you want Portainer to use, and the path to the Compose file inside that repository. Portainer also documents Git authentication fields and an optional TLS-verification bypass field. Use the bypass only when you understand the certificate problem and have accepted the security consequences.
Create a custom template in the Portainer interface
- Open Templates. In the Portainer environment where the template should be available, open the Templates area.
- Switch to Custom. Choose the Custom view, then select Add Custom Template.
- Enter the identity fields. Add a descriptive title. Write a description that states what the application does and what the deployment creates. Add an optional note for operational details and an optional logo if your catalog uses one.
- Choose the platform. Select the platform that matches the target Portainer environment. A template intended for Docker should not be presented as a Swarm deployment unless its Compose and deployment settings support that target.
- Choose the template type. Select the container or stack type appropriate to the source file. A single-service definition and a multi-service Compose application should be labelled consistently so deployers know what will be created.
- Select a build method. Choose the web editor, local upload, or Git repository method described below.
- Review the source. Check image names, ports, volumes, networks, restart behavior, and environment variables. Remove credentials and machine-specific paths before saving.
- Create the template. Select Create custom template. The new entry should then appear in the custom-template list for deployment.
Choose how Portainer receives the Compose file
All three methods create a reusable template, but they differ in ownership, review, and update workflow.
| Method | Where the source lives | How updates happen | Review and version control | Credential considerations | Best fit |
|---|---|---|---|---|---|
| Web editor | Inside the Portainer template definition | Edit the template in Portainer and save a new version | Convenient for a small definition; no external Git history | Uses Portainer access; no repository authentication | A quick internal template or a short Compose file |
| Local upload | A local docker-compose.yml uploaded during creation |
Upload a revised file and update the template | The file can be reviewed locally, but Portainer does not provide the repository history | Uses Portainer access; no repository authentication | A file already maintained on an administrator’s workstation |
| Git repository | A repository containing the Compose file | Change the repository and reference selected by the template | Provides normal code review, history, branches, tags, and commit-based auditing | May require Git authentication; Portainer documents repository URL, reference, Compose path, and optional TLS-verification bypass fields | A team-owned application that needs repeatable review and controlled releases |
Method 1: Paste a Compose file into the web editor
Choose the web-editor option when the definition is short and the Portainer administrators are comfortable reviewing changes in the Portainer UI. Paste the complete Compose content, check its indentation, and verify that every service has the settings needed for deployment. This method keeps the source with the template, so a later administrator can inspect it without finding another file.
The trade-off is change tracking. Portainer is the editing location, not a substitute for a Git review process. Record who changed the template and why, especially when it controls a shared database, persistent volume, or exposed port.
Method 2: Upload a local docker-compose.yml
Choose upload when the Compose file already exists locally and you want Portainer to import it without copying and reformatting the contents in a browser editor. Before uploading, open the file in a text editor and check that it does not contain real secrets, host-specific bind paths, or development-only overrides.
Rank #2
- WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
- AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
- PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
- ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
- COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
An upload is a snapshot. If the local file changes later, the Portainer template does not automatically know about that change; upload the revised file and update the template deliberately. Keep the authoritative copy in a location your team can review, even if Portainer receives the file by upload.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Method 3: Use a Git repository
Git is the most maintainable choice when the application is owned by a team or deployed in more than one environment. In the Git method, enter the repository address, select the reference Portainer should use, and specify the path to the Compose file. A reference can represent the branch, tag, or commit policy your team has chosen. Pinning the template to a reviewed tag or commit prevents an unexpected change on the default branch from altering future deployments.
Configure authentication when the repository is private. If Portainer reports a certificate-validation problem, investigate the server certificate and trust chain first. The documented TLS-verification bypass field should be treated as an exception, not as a routine setting, because it weakens transport verification.
A minimal Compose template with safe variables
The following example shows the structure of a small two-service stack. The image names are illustrative placeholders; replace them with the pinned images that your application actually uses. The password is deliberately represented by a Portainer variable rather than a real credential.
services:
database:
image: example/database:1.0.0
environment:
MYSQL_PASSWORD: "{{MYSQL_PASSWORD}}"
app:
image: example/app:1.0.0
depends_on:
- database
ports:
- "8080:8080"
Use the double-brace syntax exactly where Portainer should substitute a deployment-time value. Do not commit a real password as the default in the Compose file or in the repository. Keep the image tag explicit rather than silently following a moving tag, then review and update that tag as part of a planned maintenance change.
Recommended Free Tools
Rank #3
- Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
- Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
- Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
- ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
- Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
Expose editable variables to the person deploying the template
For a stack, place a variable expression such as {{MYSQL_PASSWORD}} in the Compose content. When Portainer recognizes the expression, the template author can configure a label, description, and default value for that variable. The person deploying the stack can then edit the configured value in the deployment form instead of changing the Compose file.
Portainer’s documentation marks this variable feature as available only in Business Edition. A template can therefore contain ordinary fixed values in environments without that feature, but the documented label, description, default-value controls and deployment-time editing require the supported Business Edition capability.
Design variables deliberately
- Expose values that legitimately differ by environment: passwords, hostnames, ports, storage locations, and feature switches are common examples.
- Keep the variable name stable: changing
MYSQL_PASSWORDto another name later can break deployment instructions and existing automation. - Describe the expected value: state whether the field expects a hostname, numeric port, filesystem path, or secret.
- Do not use a real secret as a convenience default: a default value can be copied into logs, exports, or screenshots.
- Validate the resulting Compose file: a variable that expands to an invalid port, empty image name, or malformed path will fail at deployment time.
Build a shared templates.json catalog
A custom template created in the UI belongs to the Portainer environment where it was created. For a shared catalog, create a valid JSON file and host it somewhere the Portainer Server can reach. Portainer documentation names GitHub, a web server, and an nginx container as hosting options.
The important reachability detail is the Portainer Server, not merely the administrator’s browser. A URL that opens on your workstation can still fail if the Portainer Server cannot resolve the host, route to it, or complete the HTTP request. Check firewall rules, DNS, authentication requirements, and whether the server is allowed to make outbound connections.
Host the file with a web server or nginx
- Create the JSON document with the required top-level
versionproperty and atemplatesarray. - Validate the JSON before publishing it. A missing quote or trailing comma can make the entire catalog unreadable.
- Publish the file at an HTTP URL that the Portainer Server can access.
- Use the Portainer application-template configuration available in your edition to point at that URL.
- Deploy a test entry from the catalog and confirm that its source repository, Compose path, and variables behave as expected.
Portainer’s documented nginx example clones the templates repository, edits templates.json, builds an nginx image, and serves the file over HTTP. The file can also be mounted into the nginx container so edits are reflected without rebuilding the image. That live-edit arrangement is useful while developing the catalog; use a reviewed, controlled publication process for a production catalog.
Rank #4
- Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
- Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
- 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
- Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
- USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
Understand the templates.json structure
The official format uses a top-level object containing version and templates. Every template object requires type and title. Stack entries can additionally define description, repository, platform, categories, administrator_only, logo, note, and env.
| Type value | Deployment represented | Important limitation |
|---|---|---|
1 |
Container | Use the container-specific properties required by the Portainer format. |
2 |
Swarm stack | Target a Swarm environment and test the stack there. |
3 |
Compose stack | Limited to the version 2 stack format because of a Docker/libcompose limitation documented by Portainer. |
For a repository-backed stack, the repository object carries the public Git URL and the path to the Compose file in its stackfile property. This separates the catalog metadata from the deployable Compose content: the JSON tells Portainer what to display, while Git remains the source for the stack definition.
{
"version": 2,
"templates": [
{
"type": 1,
"title": "Container example"
},
{
"type": 3,
"title": "Compose stack example",
"description": "Deploy a reviewed Compose application",
"platform": "linux",
"categories": ["example"],
"administrator_only": true,
"repository": {
"url": "your public Git URL",
"stackfile": "docker-compose.yml"
},
"note": "Review variables before deployment"
}
]
}
The code above illustrates the documented keys and type values. Replace the example text with your real catalog data, and include the deployment properties required by the template type you publish. Keep the JSON syntax strict; comments are not valid JSON.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Maintain and secure custom templates
Pin and review image versions
Use explicit image versions instead of an unbounded latest-style reference. When an image must be upgraded, change the tag in a reviewed commit or template edit, deploy it in a non-production environment, and record the result before promoting the change.
Review repository references
A Git-backed template is only as reproducible as its selected reference. Review the branch, tag, or commit configured in Portainer, verify that the Compose path still exists, and check that a repository move or rename has not invalidated the template.
Best Value
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
Keep secrets out of source control
Use variable substitution for credentials and provide values at deployment time through the supported Portainer controls. If a secret has already been committed, changing the variable name is not enough; rotate the exposed credential and remove it from the repository’s history according to your security process.
Validate before publishing
- Parse
templates.jsonwith a JSON validator. - Check that every entry has a title and the correct numeric type.
- Confirm that repository-backed entries use a reachable public Git URL and a correct
stackfilepath. - Check that each Compose file uses the format supported by its selected deployment type.
- Test one container deployment and one stack deployment outside production.
- Verify that exposed variables produce valid values and do not reveal credentials in notes or descriptions.
Troubleshoot the common failure points
The Custom option is missing
Confirm the Portainer edition and the permissions of the signed-in account. The documented custom-template and variable workflow is tied to Business Edition, while the standard application-template catalog is a separate concept.
The template saves but deployment fails
Inspect the rendered Compose content, image references, volume paths, ports, and variable values. A template can be syntactically accepted while still referring to an image that the target host cannot pull or a path that does not exist there.
Git cannot retrieve the Compose file
Check repository authentication, the selected reference, and the exact Compose path. If the failure is certificate-related, repair trust configuration before considering the documented TLS-verification bypass option.
The shared catalog does not appear
Test the catalog URL from the Portainer Server’s network, not only from a browser on your workstation. Confirm that the response is valid JSON, that the top-level object contains version and templates, and that the server is not blocked by DNS, routing, firewall, or HTTP authentication.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallA Compose stack is rejected because of its format
Check the template type. Portainer documents type 3 Compose stacks as limited to the version 2 stack format because of a Docker/libcompose limitation. A file using newer Compose features may need to be adapted, deployed through another supported path, or represented with a different deployment type.
Which method should you use?
- Choose the web editor for a small, stable internal definition that administrators can review directly in Portainer.
- Choose local upload when a prepared Compose file needs a one-time import and the authoritative file is maintained elsewhere.
- Choose Git when you need peer review, history, controlled references, repeatable releases, or deployment across multiple environments.
- Choose a shared templates.json catalog when several Portainer environments need the same discoverable collection and the Portainer Servers can reach its hosting URL.
The safest workflow is to keep the Compose source under review, expose only intentional variables, pin image references, validate the catalog, and test every template outside production before making it available to other deployers.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




