Files
portainer-templates/.github

Portainer Templates

A compiled list of 400+ ready to go Portainer App templates

🌐 portainer-templates.as93.net

TL;DR Under Settings → App Templates in your Portainer GUI, paste this URL:
https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json

Intro

In Portainer, App Templates enable you to easily deploy a container with a predetermined configuration, while allowing you to customize options through the web UI. Both single containers, and stacks are supported. While Portainer ships with some default templates (see portainer/templates), it's often helpful to have 1-click access to many more apps, without having to constantly switch template sources.

This repo combines app templates from several sources, to create a ready-to-go template file containing all the apps you'll ever need.


Usage

  1. Log into your Portainer web UI
  2. Under Settings --> App Templates, update the URL to
    • https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json
  3. Now under Home --> App Templates, you should see all apps. Click one to deploy.
Show me...

Alternatively, when you start Portainer, you can append the --templates flag pointing to the templates URL.


Self-Hosting

git clone https://github.com/lissy93/portainer-templates.git portainer-templates
cd portainer-templates
docker build -t portainer-templates .
docker run -d -p "8080:80" portainer-templates

If you're running a fork of this repo, don't forget to replace [lissy93] with your own username.

Your templates file will then be served up, at: http://docker-host:8080/templates.json

Or, to mount the templates.json file to your container, so that you can make changes to it, and have them show up within Portainer

docker run -d -p "8080:80" -v "${PWD}/templates.json:/usr/share/nginx/html/templates.json" portainer-templates

Editing

The template.json file is generated using the scripts in lib, using GitHub Actions. Running the make command will download all listed sources, parse them, and combine them with anything in the sources dir, outputting the templates.json file.
So, you only need to edit either the sources.csv file, or add your templates directly into the sources/ directory.

Adding a new Source

If you're maintaining your own list of Portainer templates, and would like them to be included, just add the URL to your template.json file to sources.csv, along with a name. When the action runs, it will download the content, parse it and add it to the final template.

Adding a Template / Template list

Alternatively, place your template file within the sources directory, and it will be automatically combined into the main template.json. Be sure that your template corresponds to Portainer's App Template JSON Format.

Validating Templates

There is a schema defined in Schema.json, which can be used to validate any Portainer template. Run make validate to ensure your template conforms to Portainer's App Template specification.

Maintaining your own Templates

If you'd like to use this repo as a base, but maintain your own list of template, just fork the repository, and update lissy93 with your username in the import URL.


Supported Apps and Stacks


↕️ Click to Expand ↕️


Sources


↕️ Click to Expand ↕️

Full credit to the authors of the following templates. The main templates.json file is composes of these sources, along with the content of the sources directory.


Contributing


Website

There's a simple website, which lists all available templates and shows the config options for each. You can view it at portainer-templates.netlify.app
The source is located in the website branch, and it's build as a simple SSR Svelte app (using SvelteKit + TypeScript + SCSS + Vite).

To make changes to the website, you'll need Node.js and Git installed. Then just run the following commands:

git clone -b website git@github.com:Lissy93/portainer-templates.git # Clone the website branch
cd portainer-templates # Navigate into the directory
npm i # Install dependencies
npm run dev # Start the development server

And to pubish, run npm run build then either use npm start or host the content of the '/build' directory using a web server of your choice. Alternatively, there's a Dockerfile, for easy deployment :)

Note that it's not required to make any changes to the website when adding a new template or templates source, as data is fetched directly from templates.json in the repo's main branch - so should show up automatically once your changes are merged.


Disclaimer


License

© Alicia Sykes 2023
Licensed under MIT

Thanks for visiting :)