diff --git a/components/appCard.js b/components/appCard.js index 94e41e2..19bfbe4 100644 --- a/components/appCard.js +++ b/components/appCard.js @@ -10,7 +10,8 @@ function appCard(data) { let description = data.description.replaceAll(". ", ".\n") || "no description available"; let command = data.command ? data.command : ""; let command_check = command ? "checked" : ""; - + let privileged = data.privileged || ""; + let privileged_check = privileged ? "checked" : ""; // if data.network is set to host, bridge, or docker set the radio button to checked let net_host, net_bridge, net_docker = ''; @@ -33,7 +34,7 @@ function appCard(data) { shortened_name = data.title; } - + function CatagoryColor(category) { switch (category) { case 'Other': @@ -936,13 +937,13 @@ function appCard(data) { +
- +
- - +
diff --git a/controllers/app_actions.js b/controllers/app_actions.js index 2b46740..f6a8cec 100644 --- a/controllers/app_actions.js +++ b/controllers/app_actions.js @@ -88,6 +88,12 @@ exports.Install = async function (req, res) { } } + // Add privileged mode + + if (req.body.privileged == 'on') { + compose_file += `\n privileged: true` + } + // Add hardware acceleration to the docker-compose file if one of the environment variables has the label DRINODE if (env_0_check == 'on' || env_1_check == 'on' || env_2_check == 'on' || env_3_check == 'on' || env_4_check == 'on' || env_5_check == 'on' || env_6_check == 'on' || env_7_check == 'on' || env_8_check == 'on' || env_9_check == 'on' || env_10_check == 'on' || env_11_check == 'on') { diff --git a/templates.json b/templates.json index 11a483a..85dfee7 100644 --- a/templates.json +++ b/templates.json @@ -284,20 +284,20 @@ "ports": [], "volumes": [ { - "container": "/config", - "bind": "/opt/mediadepot/apps/plex" + "bind": "/home/docker/plex", + "container": "/config" }, { - "container": "/data/tvshows", - "bind": "/media/tvshows" + "bind": "/media/tvshows", + "container": "/data/tvshows" }, { - "container": "/data/movies", - "bind": "/media/movies" + "bind": "/media/movies", + "container": "/data/movies" }, { - "container": "/data/music", - "bind": "/media/music" + "bind": "/media/music", + "container": "/data/music" }, { "container": "/transcode" @@ -344,12 +344,12 @@ ], "volumes": [ { - "container": "/config", - "bind": "/opt/mediadepot/apps/prowlarr" + "bind": "/home/docker/prowlarr", + "container": "/config" }, { - "container": "/etc/localtime", - "bind": "/etc/localtime", + "bind": "/etc/localtime:ro", + "container": "/etc/localtime:ro", "readonly": true } ], @@ -427,12 +427,12 @@ ], "volumes": [ { - "container": "/config", - "bind": "/opt/mediadepot/apps/readarr" + "bind": "/home/docker/readarr", + "container": "/config" }, { - "container": "/downloads", - "bind": "/media/storage/downloads/ebooks" + "bind": "/media/downloads/ebooks", + "container": "/downloads" }, { "container": "/books", @@ -674,12 +674,12 @@ ], "volumes": [ { - "container": "/data/database", - "bind": "/opt/mediadepot/apps/wizarr" + "bind": "/home/docker/wizarr", + "container": "/data/database" }, { + "bind": "/etc/localtime:ro", "container": "/etc/localtime", - "bind": "/etc/localtime", "readonly": true } ], @@ -744,9 +744,11 @@ "type": 1, "volumes": [ { + "bind": "/home/docker/transmission", "container": "/config" }, { + "bind": "/media", "container": "/downloads" }, { @@ -758,7 +760,7 @@ "categories": [ "Video" ], - "description": "Headless installation of Kodi\u00ef\u00bf\u00bd (formerly known as XBMC\u00ef\u00bf\u00bd), to enable library updates.", + "description": "Headless installation of Kodi.", "env": [ { "label": "PUID", @@ -1356,7 +1358,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/apprise-api/config" + "bind": "/home/docker/apprise-api" } ], "restart_policy": "unless-stopped" @@ -1400,7 +1402,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/audacity/config" + "bind": "/home/docker/audacity/config" } ], "restart_policy": "unless-stopped" @@ -1444,16 +1446,16 @@ ], "volumes": [ { - "container": "/config", - "bind": "/volume1/docker/bazarr/config" + "bind": "/home/docker/bazarr", + "container": "/config" }, { - "container": "/movies", - "bind": "/volume1/docker/bazarr/movies" + "bind": "/home/docker/bazarr/movies", + "container": "/movies" }, { "container": "/tv", - "bind": "/volume1/docker/bazarr/tv" + "bind": "/home/docker/bazarr/tv" } ], "restart_policy": "unless-stopped" @@ -1499,7 +1501,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/changedetection.io/config" + "bind": "/home/docker/changedetection.io" } ], "restart_policy": "unless-stopped" @@ -1514,7 +1516,7 @@ "Development" ], "platform": "linux", - "logo": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/code-server-banner.png", + "logo": "https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/code-server.png", "image": "linuxserver/code-server:latest", "env": [ { @@ -1561,7 +1563,7 @@ { "name": "PROXY_DOMAIN", "label": "PROXY_DOMAIN", - "default": "code-server.my.domain", + "default": "code-server.mydomain", "description": "If this optional variable is set, this domain will be proxied for subdomain proxying. See [Documentation](https://github.com/cdr/code-server/blob/master/docs/FAQ.md#sub-domains)" }, { @@ -1622,7 +1624,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/dokuwiki/config" + "bind": "/home/docker/dokuwiki" } ], "restart_policy": "unless-stopped" @@ -1770,7 +1772,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/doplarr/config" + "bind": "/home/docker/doplarr" } ], "restart_policy": "unless-stopped" @@ -1867,7 +1869,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/embystat/config" + "bind": "/home/docker/embystat" } ], "restart_policy": "unless-stopped" @@ -1918,11 +1920,11 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/emulatorjs/config" + "bind": "/home/docker/emulatorjs" }, { "container": "/data", - "bind": "/volume1/docker/emulatorjs/data" + "bind": "/home/docker/emulatorjs/data" } ], "restart_policy": "unless-stopped" @@ -1969,79 +1971,79 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/fail2ban/config" + "bind": "/home/docker/fail2ban/config" }, { "container": "/var/log:ro", - "bind": "/volume1/docker/fail2ban/var/log:ro" + "bind": "/home/docker/fail2ban/var/log:ro" }, { "container": "/remotelogs/airsonic:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/airsonic:ro" + "bind": "/home/docker/fail2ban/remotelogs/airsonic:ro" }, { "container": "/remotelogs/apache2:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/apache2:ro" + "bind": "/home/docker/fail2ban/remotelogs/apache2:ro" }, { "container": "/remotelogs/authelia:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/authelia:ro" + "bind": "/home/docker/fail2ban/remotelogs/authelia:ro" }, { "container": "/remotelogs/emby:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/emby:ro" + "bind": "/home/docker/fail2ban/remotelogs/emby:ro" }, { "container": "/remotelogs/filebrowser:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/filebrowser:ro" + "bind": "/home/docker/fail2ban/remotelogs/filebrowser:ro" }, { "container": "/remotelogs/homeassistant:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/homeassistant:ro" + "bind": "/home/docker/fail2ban/remotelogs/homeassistant:ro" }, { "container": "/remotelogs/lighttpd:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/lighttpd:ro" + "bind": "/home/docker/fail2ban/remotelogs/lighttpd:ro" }, { "container": "/remotelogs/nextcloud:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/nextcloud:ro" + "bind": "/home/docker/fail2ban/remotelogs/nextcloud:ro" }, { "container": "/remotelogs/nginx:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/nginx:ro" + "bind": "/home/docker/fail2ban/remotelogs/nginx:ro" }, { "container": "/remotelogs/nzbget:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/nzbget:ro" + "bind": "/home/docker/fail2ban/remotelogs/nzbget:ro" }, { "container": "/remotelogs/overseerr:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/overseerr:ro" + "bind": "/home/docker/fail2ban/remotelogs/overseerr:ro" }, { "container": "/remotelogs/prowlarr:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/prowlarr:ro" + "bind": "/home/docker/fail2ban/remotelogs/prowlarr:ro" }, { "container": "/remotelogs/radarr:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/radarr:ro" + "bind": "/home/docker/fail2ban/remotelogs/radarr:ro" }, { "container": "/remotelogs/sabnzbd:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/sabnzbd:ro" + "bind": "/home/docker/fail2ban/remotelogs/sabnzbd:ro" }, { "container": "/remotelogs/sonarr:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/sonarr:ro" + "bind": "/home/docker/fail2ban/remotelogs/sonarr:ro" }, { "container": "/remotelogs/unificontroller:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/unificontroller:ro" + "bind": "/home/docker/fail2ban/remotelogs/unificontroller:ro" }, { "container": "/remotelogs/vaultwarden:ro", - "bind": "/volume1/docker/fail2ban/remotelogs/vaultwarden:ro" + "bind": "/home/docker/fail2ban/remotelogs/vaultwarden:ro" } ], "restart_policy": "unless-stopped" @@ -2085,7 +2087,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/homeassistant/config" + "bind": "/home/docker/homeassistant" } ], "restart_policy": "unless-stopped" @@ -2107,13 +2109,13 @@ { "name": "PUID", "label": "PUID", - "default": "1024", + "default": "1000", "description": "for UserID" }, { "name": "PGID", "label": "PGID", - "default": "100", + "default": "1000", "description": "for GroupID" }, { @@ -2138,16 +2140,16 @@ ], "volumes": [ { - "container": "/config", - "bind": "/volume1/docker/jellyfin/config" + "bind": "/home/docker/jellyfin", + "container": "/config" }, { - "container": "/data/tvshows", - "bind": "/volume1/docker/jellyfin/data/tvshows" + "bind": "/media/tvshows", + "container": "/data/tvshows" }, { - "container": "/data/movies", - "bind": "/volume1/docker/jellyfin/data/movies" + "bind": "/media/movies", + "container": "/data/movies" } ], "restart_policy": "unless-stopped" @@ -2195,11 +2197,11 @@ "volumes": [ { "container": "/opt", - "bind": "/volume1/docker/kasm/opt" + "bind": "/home/docker/kasm/opt" }, { "container": "/profiles", - "bind": "/volume1/docker/kasm/profiles" + "bind": "/home/docker/kasm/profiles" }, { "container": "/dev/input", @@ -2251,7 +2253,7 @@ ], "volumes": [ { - "bind": "/volume1/docker/libreoffice/config", + "bind": "/home/docker/libreoffice/config", "container": "/config" } ], @@ -2494,7 +2496,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/mastodon/config" + "bind": "/home/docker/mastodon/config" } ], "restart_policy": "unless-stopped" @@ -2549,7 +2551,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/phpmyadmin/config" + "bind": "/home/docker/phpmyadmin/config" } ], "restart_policy": "unless-stopped" @@ -2590,7 +2592,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/pidgin/config" + "bind": "/home/docker/pidgin/config" } ], "restart_policy": "unless-stopped" @@ -2631,7 +2633,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/remmina/config" + "bind": "/home/docker/remmina/config" } ], "restart_policy": "unless-stopped" @@ -2672,7 +2674,7 @@ "volumes": [ { "container": "/config", - "bind": "/volume1/docker/sqlitebrowser/config" + "bind": "/home/docker/sqlitebrowser/config" } ], "restart_policy": "unless-stopped" @@ -2986,8 +2988,8 @@ ], "volumes": [ { - "container": "/config", - "bind": "/volume1/docker/wireshark/config" + "bind": "/home/docker/wireshark", + "container": "/config" } ], "restart_policy": "unless-stopped" @@ -3238,7 +3240,7 @@ "container": "/www/assets" }, { - "bind": "/home/docker/homer", + "bind": "/home/docker/homer/config", "container": "/www/config.yml" } ] @@ -3533,12 +3535,12 @@ ], "volumes": [ { - "container": "/config", - "bind": "/volume1/docker/paperless-ng/config" + "bind": "/home/docker/paperless-ng/config", + "container": "/config" }, { "container": "/data", - "bind": "/volume1/docker/paperless-ng/data" + "bind": "/home/docker/paperless-ng/data" } ], "restart_policy": "unless-stopped" @@ -4588,10 +4590,9 @@ }, { "categories": [ - "Networking", - "VPN" + "Networking" ], - "description": "Fast VPN Server with easy to use User Interface", + "description": "Quickly and easily configure Wireguard through a web browser.", "env": [ { "default": "example.domain.com", @@ -4626,14 +4627,11 @@ "name": "WG_ALLOWED_IPS" } ], - "logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/wireguard.png", + "logo": "https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/wireguard.png", "name": "wg-easy", "platform": "linux", - "repository": { - "stackfile": "stack/wireguard-easy.yml", - "url": "https://github.com/pi-hosted/pi-hosted" - }, - "title": "Wireguard Server", + "image": "weejewel/wg-easy", + "title": "WireGuard-Easy", "type": 3, "note": "" }, @@ -5065,16 +5063,45 @@ "LDAP" ], "description": "Tubearchivist is your self hosted YouTube media server", - "note": "Require a Redis and Elasticsearch database. Tube Archivist needs around 2GB of available memory for a small testing setup and around 4GB of available memory for a mid to large sized installation. Minimal with dual core with 4 threads, better quad core plus.", + "note": "Requires a Redis and Elasticsearch database. Tube Archivist needs around 2GB of available memory for a small testing setup and around 4GB of available memory for a mid to large sized installation. Minimal with dual core with 4 threads, better quad core plus.", "logo": "https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/tube-archivist.png", "name": "tubearchivist", "platform": "linux", - "repository": { - "stackfile": "Template/Stack/tubearchivist.yml", - "url": "https://github.com/xneo1/portainer_templates" - }, + "image": "bbilly1/tubearchivist", "title": "Tubearchivist", - "type": 3 + "type": 3, + "ports": [ + "8080:8080/tcp" + ], + "volumes": [ + { + "bind": "/media/youtube", + "container": "/youtube" + } + ], + "env": [ + { + "name": "INFLUXDB_ADMIN_USER", + "label": "Admin User", + "description": "Admin user for InfluxDB", + "type": "text", + "default": "admin" + }, + { + "name": "INFLUXDB_ADMIN_PASSWORD", + "label": "Admin Password", + "description": "Admin password for InfluxDB", + "type": "password", + "default": "password" + }, + { + "name": "INFLUXDB_DB", + "label": "Database", + "description": "Database name", + "type": "text", + "default": "mydb" + } + ] }, { "categories": [ @@ -5250,18 +5277,49 @@ }, { "categories": [ - "Other" + "Productivity" ], - "description": "Leantime is an open source project management solution to make your ideas reality.", - "logo": "https://s3-us-west-2.amazonaws.com/leantime-website/wp-content/uploads/2022/07/24022056/logo-large.png", + "note": "Requires a MySQL database. Create a database first.", + "description": "Leantime is an open source project management system for small teams and startups written in PHP, Javascript using MySQL. https://leantime.io", + "logo": "https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/leantime.png", "name": "leantime", "platform": "linux", - "repository": { - "stackfile": "Template/Stack/leantime.yml", - "url": "https://github.com/xneo1/portainer_templates" - }, + "image": "leantime/leantime:latest", "title": "Leantime", - "type": 3 + "type": 3, + "ports": [ + "80:80/tcp" + ], + "env": [ + { + "name": "MYSQL_HOST", + "label": "Database Host", + "description": "Database host", + "type": "text", + "default": "mysql_leantime" + }, + { + "name": "MYSQL_USER", + "label": "Database User", + "description": "Database user", + "type": "text", + "default": "leantime_user" + }, + { + "name": "MYSQL_PASSWORD", + "label": "Database Password", + "description": "Database password", + "type": "password", + "default": "choose.a.long.random.password" + }, + { + "name": "MYSQL_DATABASE", + "label": "Database Name", + "description": "Database name", + "type": "text", + "default": "leantime_database" + } + ] }, { "categories": [ @@ -5305,15 +5363,22 @@ "Dashboard" ], "description": "Dashdot is a modern server dashboard, running on the latest tech, designed with glassmorphism in mind. It is intended to be used for smaller VPS and private servers.", - "logo": "https://getdashdot.com/img/logo512.png", + "logo": "https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/dashdot.png", "name": "dashdot", "platform": "linux", - "repository": { - "stackfile": "Template/Stack/dashdot.yml", - "url": "https://github.com/xneo1/portainer_templates" - }, + "image": "mauricenino/dashdot", "title": "Dashdot", - "type": 3 + "type": 3, + "ports": [ + "80:3001/tcp" + ], + "volumes": [ + { + "bind": "/", + "container": "/mnt/host:ro" + } + ], + "privileged": true }, { "categories": [ diff --git a/views/partials/navbar.ejs b/views/partials/navbar.ejs index 2dfdf85..551db26 100644 --- a/views/partials/navbar.ejs +++ b/views/partials/navbar.ejs @@ -59,7 +59,7 @@