diff --git a/blueprints/chroma/chroma.svg b/blueprints/chroma/chroma.svg
new file mode 100644
index 000000000..60112fc5f
--- /dev/null
+++ b/blueprints/chroma/chroma.svg
@@ -0,0 +1,7 @@
+
diff --git a/blueprints/chroma/docker-compose.yml b/blueprints/chroma/docker-compose.yml
new file mode 100644
index 000000000..d8c886d87
--- /dev/null
+++ b/blueprints/chroma/docker-compose.yml
@@ -0,0 +1,17 @@
+version: "3.8"
+
+services:
+ chroma:
+ image: chromadb/chroma:1.5.6
+ restart: unless-stopped
+ expose:
+ - "8000"
+ environment:
+ - IS_PERSISTENT=TRUE
+ - PERSIST_DIRECTORY=/chroma/chroma
+ - ANONYMIZED_TELEMETRY=FALSE
+ volumes:
+ - chroma-data:/chroma/chroma
+
+volumes:
+ chroma-data:
diff --git a/blueprints/chroma/template.toml b/blueprints/chroma/template.toml
new file mode 100644
index 000000000..446ada123
--- /dev/null
+++ b/blueprints/chroma/template.toml
@@ -0,0 +1,5 @@
+[config]
+[[config.domains]]
+serviceName = "chroma"
+port = 8000
+host = "${domain}"
diff --git a/blueprints/gotify/docker-compose.yml b/blueprints/gotify/docker-compose.yml
new file mode 100644
index 000000000..c8026c500
--- /dev/null
+++ b/blueprints/gotify/docker-compose.yml
@@ -0,0 +1,15 @@
+version: "3.8"
+
+services:
+ gotify:
+ image: gotify/server:latest
+ restart: unless-stopped
+ expose:
+ - "80"
+ environment:
+ - GOTIFY_DEFAULTUSER_PASS=${GOTIFY_DEFAULTUSER_PASS}
+ volumes:
+ - gotify-data:/app/data
+
+volumes:
+ gotify-data:
diff --git a/blueprints/gotify/gotify.svg b/blueprints/gotify/gotify.svg
new file mode 100644
index 000000000..b84c52fb6
--- /dev/null
+++ b/blueprints/gotify/gotify.svg
@@ -0,0 +1 @@
+
diff --git a/blueprints/gotify/template.toml b/blueprints/gotify/template.toml
new file mode 100644
index 000000000..2b8eaac2e
--- /dev/null
+++ b/blueprints/gotify/template.toml
@@ -0,0 +1,11 @@
+[variables]
+admin_password = "${password:32}"
+
+[config]
+[[config.domains]]
+serviceName = "gotify"
+port = 80
+host = "${domain}"
+
+[config.env]
+GOTIFY_DEFAULTUSER_PASS = "${admin_password}"
diff --git a/blueprints/homebox/docker-compose.yml b/blueprints/homebox/docker-compose.yml
new file mode 100644
index 000000000..ac83e728d
--- /dev/null
+++ b/blueprints/homebox/docker-compose.yml
@@ -0,0 +1,15 @@
+version: "3.8"
+
+services:
+ homebox:
+ image: ghcr.io/sysadminsmedia/homebox:latest
+ restart: unless-stopped
+ expose:
+ - "7745"
+ environment:
+ - TZ=${TZ}
+ volumes:
+ - homebox-data:/data
+
+volumes:
+ homebox-data:
diff --git a/blueprints/homebox/homebox.svg b/blueprints/homebox/homebox.svg
new file mode 100644
index 000000000..029b516fe
--- /dev/null
+++ b/blueprints/homebox/homebox.svg
@@ -0,0 +1 @@
+
diff --git a/blueprints/homebox/template.toml b/blueprints/homebox/template.toml
new file mode 100644
index 000000000..04d60a554
--- /dev/null
+++ b/blueprints/homebox/template.toml
@@ -0,0 +1,11 @@
+[variables]
+timezone = "Etc/UTC"
+
+[config]
+[[config.domains]]
+serviceName = "homebox"
+port = 7745
+host = "${domain}"
+
+[config.env]
+TZ = "${timezone}"
diff --git a/blueprints/jellyseerr/docker-compose.yml b/blueprints/jellyseerr/docker-compose.yml
new file mode 100644
index 000000000..e63921e7e
--- /dev/null
+++ b/blueprints/jellyseerr/docker-compose.yml
@@ -0,0 +1,16 @@
+version: "3.8"
+
+services:
+ jellyseerr:
+ image: fallenbagel/jellyseerr:latest
+ restart: unless-stopped
+ expose:
+ - "5055"
+ environment:
+ - LOG_LEVEL=info
+ - TZ=${TZ}
+ volumes:
+ - jellyseerr-config:/app/config
+
+volumes:
+ jellyseerr-config:
diff --git a/blueprints/jellyseerr/jellyseerr.svg b/blueprints/jellyseerr/jellyseerr.svg
new file mode 100644
index 000000000..59637a676
--- /dev/null
+++ b/blueprints/jellyseerr/jellyseerr.svg
@@ -0,0 +1 @@
+
diff --git a/blueprints/jellyseerr/template.toml b/blueprints/jellyseerr/template.toml
new file mode 100644
index 000000000..3093d90d1
--- /dev/null
+++ b/blueprints/jellyseerr/template.toml
@@ -0,0 +1,11 @@
+[variables]
+timezone = "Etc/UTC"
+
+[config]
+[[config.domains]]
+serviceName = "jellyseerr"
+port = 5055
+host = "${domain}"
+
+[config.env]
+TZ = "${timezone}"
diff --git a/blueprints/kavita/docker-compose.yml b/blueprints/kavita/docker-compose.yml
new file mode 100644
index 000000000..c4db48933
--- /dev/null
+++ b/blueprints/kavita/docker-compose.yml
@@ -0,0 +1,21 @@
+version: "3.8"
+
+services:
+ kavita:
+ image: jvmilazz0/kavita:latest
+ restart: unless-stopped
+ expose:
+ - "5000"
+ environment:
+ - TZ=${TZ}
+ volumes:
+ - kavita-config:/kavita/config
+ - kavita-media:/manga
+ - kavita-books:/books
+ - kavita-comics:/comics
+
+volumes:
+ kavita-config:
+ kavita-media:
+ kavita-books:
+ kavita-comics:
diff --git a/blueprints/kavita/kavita.svg b/blueprints/kavita/kavita.svg
new file mode 100644
index 000000000..d29402276
--- /dev/null
+++ b/blueprints/kavita/kavita.svg
@@ -0,0 +1 @@
+
diff --git a/blueprints/kavita/template.toml b/blueprints/kavita/template.toml
new file mode 100644
index 000000000..20187dad4
--- /dev/null
+++ b/blueprints/kavita/template.toml
@@ -0,0 +1,11 @@
+[variables]
+timezone = "Etc/UTC"
+
+[config]
+[[config.domains]]
+serviceName = "kavita"
+port = 5000
+host = "${domain}"
+
+[config.env]
+TZ = "${timezone}"
diff --git a/blueprints/languagetool/docker-compose.yml b/blueprints/languagetool/docker-compose.yml
new file mode 100644
index 000000000..3b6e81059
--- /dev/null
+++ b/blueprints/languagetool/docker-compose.yml
@@ -0,0 +1,8 @@
+version: "3.8"
+
+services:
+ languagetool:
+ image: collabora/languagetool:6.6
+ restart: unless-stopped
+ expose:
+ - "8010"
diff --git a/blueprints/languagetool/languagetool.svg b/blueprints/languagetool/languagetool.svg
new file mode 100644
index 000000000..24b55c7ee
--- /dev/null
+++ b/blueprints/languagetool/languagetool.svg
@@ -0,0 +1,6 @@
+
diff --git a/blueprints/languagetool/template.toml b/blueprints/languagetool/template.toml
new file mode 100644
index 000000000..fe54ef487
--- /dev/null
+++ b/blueprints/languagetool/template.toml
@@ -0,0 +1,5 @@
+[config]
+[[config.domains]]
+serviceName = "languagetool"
+port = 8010
+host = "${domain}"
diff --git a/blueprints/pairdrop/docker-compose.yml b/blueprints/pairdrop/docker-compose.yml
new file mode 100644
index 000000000..7dd5cbaa5
--- /dev/null
+++ b/blueprints/pairdrop/docker-compose.yml
@@ -0,0 +1,17 @@
+version: "3.8"
+
+services:
+ pairdrop:
+ image: lscr.io/linuxserver/pairdrop:latest
+ restart: unless-stopped
+ expose:
+ - "3000"
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=${TZ}
+ volumes:
+ - pairdrop-config:/config
+
+volumes:
+ pairdrop-config:
diff --git a/blueprints/pairdrop/pairdrop.svg b/blueprints/pairdrop/pairdrop.svg
new file mode 100644
index 000000000..56e796670
--- /dev/null
+++ b/blueprints/pairdrop/pairdrop.svg
@@ -0,0 +1 @@
+
diff --git a/blueprints/pairdrop/template.toml b/blueprints/pairdrop/template.toml
new file mode 100644
index 000000000..a71345003
--- /dev/null
+++ b/blueprints/pairdrop/template.toml
@@ -0,0 +1,11 @@
+[variables]
+timezone = "Etc/UTC"
+
+[config]
+[[config.domains]]
+serviceName = "pairdrop"
+port = 3000
+host = "${domain}"
+
+[config.env]
+TZ = "${timezone}"
diff --git a/blueprints/privatebin/docker-compose.yml b/blueprints/privatebin/docker-compose.yml
new file mode 100644
index 000000000..4e6e06e25
--- /dev/null
+++ b/blueprints/privatebin/docker-compose.yml
@@ -0,0 +1,19 @@
+version: "3.8"
+
+services:
+ privatebin:
+ image: privatebin/nginx-fpm-alpine:latest
+ restart: unless-stopped
+ read_only: true
+ expose:
+ - "8080"
+ volumes:
+ - privatebin-data:/srv/data
+ tmpfs:
+ - /tmp
+ - /var/tmp
+ - /var/run
+ - /var/lib/nginx/tmp
+
+volumes:
+ privatebin-data:
diff --git a/blueprints/privatebin/privatebin.svg b/blueprints/privatebin/privatebin.svg
new file mode 100644
index 000000000..3408d7227
--- /dev/null
+++ b/blueprints/privatebin/privatebin.svg
@@ -0,0 +1 @@
+
diff --git a/blueprints/privatebin/template.toml b/blueprints/privatebin/template.toml
new file mode 100644
index 000000000..a8ffc50f5
--- /dev/null
+++ b/blueprints/privatebin/template.toml
@@ -0,0 +1,5 @@
+[config]
+[[config.domains]]
+serviceName = "privatebin"
+port = 8080
+host = "${domain}"
diff --git a/blueprints/shiori/docker-compose.yml b/blueprints/shiori/docker-compose.yml
new file mode 100644
index 000000000..213c3c96c
--- /dev/null
+++ b/blueprints/shiori/docker-compose.yml
@@ -0,0 +1,15 @@
+version: "3.8"
+
+services:
+ shiori:
+ image: ghcr.io/go-shiori/shiori:v1.8.0-2-g585ea34
+ restart: unless-stopped
+ expose:
+ - "8080"
+ environment:
+ - SHIORI_DIR=/srv/shiori
+ volumes:
+ - shiori-data:/srv/shiori
+
+volumes:
+ shiori-data:
diff --git a/blueprints/shiori/shiori.svg b/blueprints/shiori/shiori.svg
new file mode 100644
index 000000000..0ce7e2452
--- /dev/null
+++ b/blueprints/shiori/shiori.svg
@@ -0,0 +1,5 @@
+
diff --git a/blueprints/shiori/template.toml b/blueprints/shiori/template.toml
new file mode 100644
index 000000000..158ba0037
--- /dev/null
+++ b/blueprints/shiori/template.toml
@@ -0,0 +1,5 @@
+[config]
+[[config.domains]]
+serviceName = "shiori"
+port = 8080
+host = "${domain}"
diff --git a/blueprints/speedtest-tracker/docker-compose.yml b/blueprints/speedtest-tracker/docker-compose.yml
new file mode 100644
index 000000000..8f0476a24
--- /dev/null
+++ b/blueprints/speedtest-tracker/docker-compose.yml
@@ -0,0 +1,22 @@
+version: "3.8"
+
+services:
+ speedtest-tracker:
+ image: lscr.io/linuxserver/speedtest-tracker:latest
+ restart: unless-stopped
+ expose:
+ - "80"
+ environment:
+ - APP_KEY
+ - APP_URL
+ - DB_CONNECTION
+ - PUID
+ - PGID
+ - TZ
+ - DISPLAY_TIMEZONE
+ - SPEEDTEST_SCHEDULE
+ volumes:
+ - speedtest-tracker-config:/config
+
+volumes:
+ speedtest-tracker-config:
diff --git a/blueprints/speedtest-tracker/speedtest-tracker.svg b/blueprints/speedtest-tracker/speedtest-tracker.svg
new file mode 100644
index 000000000..1df3d9984
--- /dev/null
+++ b/blueprints/speedtest-tracker/speedtest-tracker.svg
@@ -0,0 +1 @@
+
diff --git a/blueprints/speedtest-tracker/template.toml b/blueprints/speedtest-tracker/template.toml
new file mode 100644
index 000000000..aafa65b07
--- /dev/null
+++ b/blueprints/speedtest-tracker/template.toml
@@ -0,0 +1,21 @@
+[variables]
+main_domain = "${domain}"
+app_key = "base64:${base64:32}"
+timezone = "Etc/UTC"
+
+[config]
+env = [
+ "APP_KEY=${app_key}",
+ "APP_URL=https://${main_domain}",
+ "DB_CONNECTION=sqlite",
+ "PUID=1000",
+ "PGID=1000",
+ "TZ=${timezone}",
+ "DISPLAY_TIMEZONE=${timezone}",
+ "SPEEDTEST_SCHEDULE=0 */6 * * *",
+]
+
+[[config.domains]]
+serviceName = "speedtest-tracker"
+port = 80
+host = "${main_domain}"
diff --git a/blueprints/wakapi/docker-compose.yml b/blueprints/wakapi/docker-compose.yml
new file mode 100644
index 000000000..ce3992310
--- /dev/null
+++ b/blueprints/wakapi/docker-compose.yml
@@ -0,0 +1,18 @@
+version: "3.8"
+
+services:
+ wakapi:
+ image: ghcr.io/muety/wakapi:latest
+ restart: unless-stopped
+ expose:
+ - "3000"
+ environment:
+ - WAKAPI_PASSWORD_SALT=${WAKAPI_PASSWORD_SALT}
+ - WAKAPI_DB_TYPE=sqlite3
+ - WAKAPI_DB_NAME=/data/wakapi.db
+ - WAKAPI_LISTEN_IPV4=0.0.0.0
+ volumes:
+ - wakapi-data:/data
+
+volumes:
+ wakapi-data:
diff --git a/blueprints/wakapi/template.toml b/blueprints/wakapi/template.toml
new file mode 100644
index 000000000..939158b3e
--- /dev/null
+++ b/blueprints/wakapi/template.toml
@@ -0,0 +1,11 @@
+[variables]
+password_salt = "${password:64}"
+
+[config]
+[[config.domains]]
+serviceName = "wakapi"
+port = 3000
+host = "${domain}"
+
+[config.env]
+WAKAPI_PASSWORD_SALT = "${password_salt}"
diff --git a/blueprints/wakapi/wakapi.svg b/blueprints/wakapi/wakapi.svg
new file mode 100644
index 000000000..4acaecb6c
--- /dev/null
+++ b/blueprints/wakapi/wakapi.svg
@@ -0,0 +1 @@
+
diff --git a/meta.json b/meta.json
index 8be7825d7..7fe80ba85 100644
--- a/meta.json
+++ b/meta.json
@@ -1212,6 +1212,24 @@
"monitoring"
]
},
+ {
+ "id": "chroma",
+ "name": "Chroma",
+ "version": "1.5.6",
+ "description": "Chroma is an open-source embedding database for AI applications, with persistent vector storage and a simple HTTP API.",
+ "logo": "chroma.svg",
+ "links": {
+ "github": "https://github.com/chroma-core/chroma",
+ "website": "https://www.trychroma.com/",
+ "docs": "https://docs.trychroma.com/"
+ },
+ "tags": [
+ "ai",
+ "vector-database",
+ "embeddings",
+ "database"
+ ]
+ },
{
"id": "chromium",
"name": "Chromium",
@@ -2866,6 +2884,24 @@
"tools"
]
},
+ {
+ "id": "gotify",
+ "name": "Gotify",
+ "version": "latest",
+ "description": "Gotify is a simple self-hosted push notification server with a web UI and HTTP API for application alerts.",
+ "logo": "gotify.svg",
+ "links": {
+ "github": "https://github.com/gotify/server",
+ "website": "https://gotify.net/",
+ "docs": "https://gotify.net/docs/"
+ },
+ "tags": [
+ "notifications",
+ "alerting",
+ "api",
+ "self-hosted"
+ ]
+ },
{
"id": "grafana",
"name": "Grafana",
@@ -3023,6 +3059,24 @@
"server"
]
},
+ {
+ "id": "homebox",
+ "name": "Homebox",
+ "version": "latest",
+ "description": "Homebox is a self-hosted home inventory and organization app for tracking belongings, locations, and labels.",
+ "logo": "homebox.svg",
+ "links": {
+ "github": "https://github.com/sysadminsmedia/homebox",
+ "website": "https://homebox.software/",
+ "docs": "https://homebox.software/en/"
+ },
+ "tags": [
+ "inventory",
+ "home",
+ "organization",
+ "self-hosted"
+ ]
+ },
{
"id": "homebridge",
"name": "Homebridge",
@@ -3328,6 +3382,24 @@
"media system"
]
},
+ {
+ "id": "jellyseerr",
+ "name": "Jellyseerr",
+ "version": "latest",
+ "description": "Jellyseerr is a self-hosted media request and discovery manager for Jellyfin, Plex, and Emby libraries.",
+ "logo": "jellyseerr.svg",
+ "links": {
+ "github": "https://github.com/Fallenbagel/jellyseerr",
+ "website": "https://docs.jellyseerr.dev/",
+ "docs": "https://docs.jellyseerr.dev/getting-started"
+ },
+ "tags": [
+ "media",
+ "requests",
+ "jellyfin",
+ "plex"
+ ]
+ },
{
"id": "jenkins",
"name": "jenkins",
@@ -3383,6 +3455,24 @@
"productivity"
]
},
+ {
+ "id": "kavita",
+ "name": "Kavita",
+ "version": "latest",
+ "description": "Kavita is a self-hosted digital library server for reading manga, comics, and ebooks from any device.",
+ "logo": "kavita.svg",
+ "links": {
+ "github": "https://github.com/Kareadita/Kavita",
+ "website": "https://www.kavitareader.com/",
+ "docs": "https://wiki.kavitareader.com/installation/docker/"
+ },
+ "tags": [
+ "media",
+ "ebooks",
+ "comics",
+ "library"
+ ]
+ },
{
"id": "kener",
"name": "Kener",
@@ -3554,6 +3644,24 @@
"ai"
]
},
+ {
+ "id": "languagetool",
+ "name": "LanguageTool",
+ "version": "6.6",
+ "description": "LanguageTool is an open-source grammar, style, and spell checker that can run as a self-hosted HTTP service.",
+ "logo": "languagetool.svg",
+ "links": {
+ "github": "https://github.com/languagetool-org/languagetool",
+ "website": "https://languagetool.org/",
+ "docs": "https://dev.languagetool.org/http-server"
+ },
+ "tags": [
+ "writing",
+ "grammar",
+ "spellcheck",
+ "api"
+ ]
+ },
{
"id": "lavalink",
"name": "Lavalink",
@@ -4835,6 +4943,24 @@
"rtmp"
]
},
+ {
+ "id": "pairdrop",
+ "name": "PairDrop",
+ "version": "latest",
+ "description": "PairDrop is a self-hosted local file sharing web app for sending files and text between nearby devices.",
+ "logo": "pairdrop.svg",
+ "links": {
+ "github": "https://github.com/schlagmichdoch/PairDrop",
+ "website": "https://pairdrop.net/",
+ "docs": "https://github.com/schlagmichdoch/PairDrop/blob/master/docs/host-your-own.md"
+ },
+ "tags": [
+ "file-sharing",
+ "p2p",
+ "web-app",
+ "self-hosted"
+ ]
+ },
{
"id": "palmr",
"name": "Palmr",
@@ -5290,6 +5416,24 @@
],
"dokploy_version": "<0.22.5"
},
+ {
+ "id": "privatebin",
+ "name": "PrivateBin",
+ "version": "latest",
+ "description": "PrivateBin is a minimalist pastebin where pasted data is encrypted and decrypted in the browser.",
+ "logo": "privatebin.svg",
+ "links": {
+ "github": "https://github.com/PrivateBin/PrivateBin",
+ "website": "https://privatebin.info/",
+ "docs": "https://github.com/PrivateBin/docker-nginx-fpm-alpine"
+ },
+ "tags": [
+ "pastebin",
+ "privacy",
+ "encryption",
+ "sharing"
+ ]
+ },
{
"id": "prometheus",
"name": "Prometheus",
@@ -5741,6 +5885,24 @@
"file-system"
]
},
+ {
+ "id": "shiori",
+ "name": "Shiori",
+ "version": "v1.8.0-2-g585ea34",
+ "description": "Shiori is a simple self-hosted bookmark manager with offline archive support and a web interface.",
+ "logo": "shiori.svg",
+ "links": {
+ "github": "https://github.com/go-shiori/shiori",
+ "website": "https://go-shiori.github.io/shiori/",
+ "docs": "https://go-shiori.github.io/shiori/"
+ },
+ "tags": [
+ "bookmarks",
+ "read-it-later",
+ "archiving",
+ "self-hosted"
+ ]
+ },
{
"id": "shlink",
"name": "Shlink",
@@ -5864,6 +6026,24 @@
"storage"
]
},
+ {
+ "id": "speedtest-tracker",
+ "name": "Speedtest Tracker",
+ "version": "latest",
+ "description": "Speedtest Tracker is a self-hosted internet performance tracker that runs scheduled speed tests and stores results.",
+ "logo": "speedtest-tracker.svg",
+ "links": {
+ "github": "https://github.com/alexjustesen/speedtest-tracker",
+ "website": "https://speedtest-tracker.dev/",
+ "docs": "https://docs.speedtest-tracker.dev/getting-started/installation/using-docker-compose"
+ },
+ "tags": [
+ "monitoring",
+ "network",
+ "speedtest",
+ "analytics"
+ ]
+ },
{
"id": "stack-auth",
"name": "Stack Auth",
@@ -6517,6 +6697,24 @@
"project-management"
]
},
+ {
+ "id": "wakapi",
+ "name": "Wakapi",
+ "version": "latest",
+ "description": "Wakapi is a self-hosted WakaTime-compatible backend for tracking coding activity and developer statistics.",
+ "logo": "wakapi.svg",
+ "links": {
+ "github": "https://github.com/muety/wakapi",
+ "website": "https://wakapi.dev/",
+ "docs": "https://github.com/muety/wakapi#-installation"
+ },
+ "tags": [
+ "developer-tools",
+ "analytics",
+ "wakatime",
+ "self-hosted"
+ ]
+ },
{
"id": "wallos",
"name": "Wallos",