{ "version": "2", "templates": [ { "type": 3, "title": "Immich {shmolf}", "name": "immich", "categories": ["photos", "backup"], "description": "Self-hosted backup solution for photos and videos on mobile device.", "logo": "https://raw.githubusercontent.com/shmolf/portainer-templates/main/assets/logos/immich-logo.svg", "note": "Application documentation 🗗", "env": [ { "default": "1000", "label": "PUID", "name": "PUID" }, { "label": "PGID", "name": "PGID", "default": "1000" }, { "label": "Immich version", "name": "IMMICH_VERSION", "default": "release", "description": "To want to lock to a specific tag, provide a value such as 'v1.71.0'" }, { "label": "Database username", "name": "DB_USERNAME", "default": "postgres" }, { "label": "Database password", "name": "DB_PASSWORD", "default": "please-change-this-to-a-random-secret", "description": "This should be changed to a random secret" }, { "label": "Database name", "name": "DB_DATABASE_NAME", "default": "immich" }, { "label": "Database hostname", "name": "DB_HOSTNAME", "default": "immich_postgres", "description": "The default value references a service within the stack" }, { "label": "File backup location", "name": "UPLOAD_LOCATION", "default": "/portainer/Files/AppData/Immich/upload", "description": "You can leave this path as-is, and the system will auto-create the needed folders. Feel free to change if you desire an alternative location." }, { "label": "Redis hostname", "name": "REDIS_HOSTNAME", "default": "immich_redis", "description": "The default value references a service within the stack" }, { "default": "2283", "label": "Http Port", "name": "PORT" } ], "platform": "linux", "repository": { "stackfile": "stacks/immich/docker-compose.yml", "url": "https://github.com/shmolf/portainer-templates" } }, { "type": 3, "title": "Penpot (http) {shmolf}", "name": "penpot-http", "categories": ["graphic design"], "description": "Penpot is the first Open Source design and prototyping platform meant for cross-domain teams.", "logo": "https://raw.githubusercontent.com/shmolf/portainer-templates/main/assets/logos/penpot-logo.svg", "note": "Application documentation 🗗. See documentation 🗗 for more details regarding the flags.", "env": [ { "default": "1000", "label": "PUID", "name": "PUID" }, { "label": "PGID", "name": "PGID", "default": "1000" }, { "label": "Frontend Flags", "name": "PENPOT_FLAGS_FE", "default": "enable-registration disable-secure-session-cookies enable-insecure-register enable-login-with-password" }, { "label": "Backend Flags", "name": "PENPOT_FLAGS_BE", "default": "enable-registration disable-secure-session-cookies enable-insecure-register disable-email-verification" }, { "label": "Public URI", "name": "PUBLIC_URI", "default": "http://192.168.1.1:8624", "description": "Public URI. If you are going to expose this instance to the internet and use it under different domain than 'localhost', you will need to adjust it to the final domain." }, { "label": "Penpot Telemetry Enabled?", "name": "TELEMETRY_ENABLED", "select": [ { "text": "Yes, enable telemetry", "value": "true", "default": true }, { "text": "No, disable telemetry", "value": "false" } ], "description": "When enabled, a periodical process will send anonymous data about this instance." }, { "default": "8624", "label": "Http Port", "name": "PORT", "description": "This should match the port specified in the Public URI, or 80/443 if using standard ports." } ], "platform": "linux", "repository": { "stackfile": "stacks/penpot/docker-compose-http.yml", "url": "https://github.com/shmolf/portainer-templates" } }, { "type": 1, "title": "Watchtower {shmolf}", "name": "watchtower", "categories": ["docker"], "description": "A container-based solution for automating Docker container base image updates", "note": "Application documentation 🗗", "logo": "https://raw.githubusercontent.com/shmolf/portainer-templates/main/assets/logos/watchtower-logo.png", "platform": "linux", "image": "containrrr/watchtower", "ports": ["9001/tcp"], "restart_policy": "always", "volumes": [{ "container": "/var/run/docker.sock", "bind": "/var/run/docker.sock" } ] }, { "type": 1, "title": "Stirling PDF {shmolf}", "name": "stirling-pdf", "categories": ["tools", "pdf"], "description": "Your locally hosted one-stop-shop for all your PDF needs.", "note": "To support multiple languages for OCR, per the Official documentation 🗗, download your Tess Data from from another repo 🗗.
Then, place said 'traineddata' files into /portainer/Files/AppData/Libraries/StirlingPDF/tessdata
For more information about login, read the official documentation 🗗.", "logo": "https://raw.githubusercontent.com/shmolf/portainer-templates/main/assets/logos/stirling-pdf.svg", "platform": "linux", "image": "frooodle/s-pdf:0.18.1", "ports": ["5417:8080/tcp"], "restart_policy": "unless-stopped", "env": [ { "label": "PUID", "name": "PUID", "default": "1000" }, { "label": "PGID", "name": "PGID", "default": "1000" }, { "label": "Enable Login", "name": "DOCKER_ENABLE_SECURITY", "select": [ { "text": "Yes, enable login", "value": "true" }, { "text": "No, disable login", "value": "false", "default": true } ], "description": "If you want to enable the login, you'll also need to enable login through the Config's settings.yml" } ], "volumes": [ { "bind": "/portainer/Files/AppData/Config/StirlingPDF", "container": "/configs" }, { "bind": "/portainer/Files/AppData/Libraries/StirlingPDF/tessdata", "container": "/usr/share/tesseract-ocr/5/tessdata" } ] }, { "type": 1, "title": "Terraria Server {shmolf}", "name": "terraria-server", "categories": ["games"], "description": "Docker container for a Terraria dedicated server.", "note": "Link to Official documentation 🗗 for setting up the server.", "logo": "https://raw.githubusercontent.com/shmolf/portainer-templates/main/assets/logos/terraria-server.png", "platform": "linux", "image": "passivelemon/terraria-docker:latest", "ports": ["7777:7777/tcp"], "restart_policy": "unless-stopped", "env": [ { "label": "PUID", "name": "PUID", "default": "1000" }, { "label": "PGID", "name": "PGID", "default": "1000" }, { "label": "World name", "name": "WORLD", "default": "dockerworld" } ], "volumes": [ { "bind": "/portainer/Files/AppData/Libraries/StirlingPDF/tessdata", "container": "/usr/share/tesseract-ocr/5/tessdata" } ] }, { "type": 1, "title": "Cockpit {shmolf}", "name": "cockpit-cms", "categories": ["cms"], "description": "Cockpit is a headless CMS with an API-first approach that puts content first.", "note": "Link to Official documentation 🗗.
After deployment, continue to setup by visiting http://localhost:8088/install", "logo": "https://raw.githubusercontent.com/shmolf/portainer-templates/main/assets/logos/cockpit.svg", "platform": "linux", "image": "agentejo/cockpit:latest", "ports": ["8088:80/tcp"], "restart_policy": "unless-stopped" }, { "type": 3, "title": "Asciinema {shmolf}", "name": "asciinema", "categories": ["tools"], "description": "Self-hosted terminal recording and playback", "logo": "https://raw.githubusercontent.com/shmolf/portainer-templates/main/assets/logos/asciinema.svg", "note": "Application documentation 🗗
For the application secret key, you can use the terminal command tr -dc A-Za-z0-9 </dev/urandom | head -c 64; echo", "env": [ { "default": "1000", "label": "PUID", "name": "PUID" }, { "label": "PGID", "name": "PGID", "default": "1000" }, { "label": "Hostname", "name": "HOST_NAME", "default": "localhost", "description": "Localhost for use within the application runtime" }, { "label": "Host Port", "name": "HOST_PORT", "default": "3033", "description": "Published port for use within the application runtime" }, { "label": "Secret Application Key", "name": "SECRET_KEY", "default": "please-change-this-to-a-random-secret" } ], "platform": "linux", "repository": { "stackfile": "stacks/asciinema/docker-compose.yml", "url": "https://github.com/shmolf/portainer-templates" } }, { "type": 1, "title": "Code-server {shmolf}", "name": "code-server", "note": "Portainer App Templates by Technorabilia based on data provided by LinuxServer.io.

This will bind to the following directory on the host filesystem:

/portainer/Files/AppData/Config/code-server

", "description": "Code-server (https://coder.com) is VS Code running on a remote server, accessible through the browser. - Code on your Chromebook, tablet, and laptop with a consistent dev environment. - If you have a Windows or Mac workstation, more easily develop for Linux. - Take advantage of large cloud servers to speed up tests, compilations, downloads, and more. - Preserve battery life when you're on the go. - All intensive computation runs on your server. - You're no longer running excess instances of Chrome.", "categories": [ "Development" ], "platform": "linux", "logo": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/code-server-banner.png", "image": "linuxserver/code-server:latest", "env": [ { "name": "PUID", "label": "PUID", "default": "1000", "description": "for UserID" }, { "name": "PGID", "label": "PGID", "default": "1000", "description": "for GroupID" }, { "name": "TZ", "label": "TZ", "default": "Europe/Amsterdam", "description": "specify a timezone to use" }, { "name": "PASSWORD", "label": "PASSWORD", "default": "password", "description": "Optional web gui password, if `PASSWORD` or `HASHED_PASSWORD` is not provided, there will be no auth." }, { "name": "HASHED_PASSWORD", "label": "HASHED_PASSWORD", "default": "", "description": "Optional web gui password, overrides `PASSWORD`, instructions on how to create it is below." }, { "name": "SUDO_PASSWORD", "label": "SUDO_PASSWORD", "default": "password", "description": "If this optional variable is set, user will have sudo access in the code-server terminal with the specified password." }, { "name": "SUDO_PASSWORD_HASH", "label": "SUDO_PASSWORD_HASH", "default": "", "description": "Optionally set sudo password via hash (takes priority over `SUDO_PASSWORD` var). Format is `$type$salt$hashed`." }, { "name": "PROXY_DOMAIN", "label": "PROXY_DOMAIN", "default": "code-server.my.domain", "description": "If this optional variable is set, this domain will be proxied for subdomain proxying." }, { "name": "DEFAULT_WORKSPACE", "label": "DEFAULT_WORKSPACE", "default": "/config/workspace", "description": "If this optional variable is set, code-server will open this directory by default" } ], "ports": [ "8443:8443/tcp" ], "volumes": [ { "container": "/config", "bind": "/portainer/Files/AppData/Config/code-server" } ], "restart_policy": "unless-stopped" } ] }