Adding new templates (#247)

* Remove duplicate GitLab CI entry and add Link Stack entry to meta.json

* Update Movary blueprint with simplified Docker Compose and environment configuration

* Add OpenGist entry to meta.json

* Add Snapp self-hosted screenshot sharing service entry to meta.json

* Add CommaFeed feed reader entry to meta.json

* Add ConvertX media conversion service entry to meta.json

* Add MeTube YouTube downloader entry to meta.json

* Add Pinchflat YouTube  entry to meta.json

* Add yt-dlp-webui entry to meta.json

* Add FlareSolverr proxy service entry to meta.json

* Add Neko virtual browser entry to meta.json

* Add Omni-Tools entry to meta.json

* Add OpenHands AI agents platform entry to meta.json

* Add Web-Check website analyzer entry to meta.json

* Add DumbDrop file sharing service entry to meta.json

* Add DumbAssets entry to meta.json

* Add DumbPad notepad service entry to meta.json

* Add DumbBudget self-hosted budget tracking service entry to meta.json

* Add Tianji web analytics and uptime monitoring service entry to meta.json

* Add Directory Lister entry to meta.json

* Add Grimoire bookmarking app entry to meta.json

* Clean Up

* Update Movary blueprint with environment variables and MySQL configuration
This commit is contained in:
Jainil Prajapati 🪐
2025-07-28 10:10:54 +05:30
committed by GitHub
parent c7fb4d8166
commit d5a74cab26
62 changed files with 1469 additions and 33 deletions

View File

@@ -0,0 +1,9 @@
version: "3.8"
services:
commafeed:
image: athou/commafeed:latest-h2
restart: unless-stopped
volumes:
- ../files/commafeed-data:/commafeed/data
ports:
- 8082

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg height='512' width='512' viewBox='0 0 6.5625 6.5625' xmlns='http://www.w3.org/2000/svg'>
<rect fill='#f88a14' rx='0.7' ry='0.7' height='6.5625' width='6.5625' />
<path d='m1.9761,1.5289c2.9002,0,2.9002,2.9101,2.9002,2.9101' fill='none' stroke='#FFF' stroke-linecap='round' stroke-width='0.78125' />
<path d='m1.9688,2.875c1.5705-0.00908,1.5705,1.5639,1.5705,1.5639' fill='none' stroke='#FFF' stroke-linecap='round' stroke-width='0.78125' />
<path d='m2.6503,4.4062c0,0.23366-0.10712,0.47418-0.24663,0.6537-0.1814,0.2333-0.5705,0.5618-0.6913,0.5653,0.0402-0.0662,0.263-0.5654,0.2563-0.5654-0.36423,0-0.6595-0.29265-0.6595-0.65365s0.29527-0.65365,0.6595-0.65365,0.68159,0.29265,0.68159,0.65365z' fill='#FFF' />
</svg>

After

Width:  |  Height:  |  Size: 776 B

View File

@@ -0,0 +1,17 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "commafeed"
port = 8082
host = "${main_domain}"
[config.env]
# No environment variables specified for CommaFeed; add if needed
# Example: COMMAFEED_ADMIN_USER = "${username}"
# Example: COMMAFEED_ADMIN_PASSWORD = "${password:32}"
[[config.mounts]]
filePath = "/files/commafeed-data"
content = ""

View File

@@ -0,0 +1,19 @@
version: "3.8"
services:
convertx:
image: ghcr.io/c4illin/convertx
restart: unless-stopped
ports:
- 3000
environment:
- JWT_SECRET=${JWT_SECRET}
- ACCOUNT_REGISTRATION=${ACCOUNT_REGISTRATION}
- HTTP_ALLOWED=${HTTP_ALLOWED}
- ALLOW_UNAUTHENTICATED=${ALLOW_UNAUTHENTICATED}
- AUTO_DELETE_EVERY_N_HOURS=${AUTO_DELETE_EVERY_N_HOURS}
- WEBROOT=${WEBROOT}
- FFMPEG_ARGS=${FFMPEG_ARGS}
- HIDE_HISTORY=${HIDE_HISTORY}
- LANGUAGE=${LANGUAGE}
volumes:
- ../files/data:/app/data

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -0,0 +1,33 @@
[variables]
main_domain = "${domain}"
jwt_secret = "${jwt:32}"
account_registration = "false"
http_allowed = "true"
allow_unauthenticated = "false"
auto_delete_every_n_hours = "24"
webroot = ""
ffmpeg_args = ""
hide_history = "false"
language = "en"
[config]
[[config.domains]]
serviceName = "convertx"
port = 3000
host = "${main_domain}"
[config.env]
JWT_SECRET = "${jwt_secret}"
ACCOUNT_REGISTRATION = "${account_registration}"
HTTP_ALLOWED = "${http_allowed}"
ALLOW_UNAUTHENTICATED = "${allow_unauthenticated}"
AUTO_DELETE_EVERY_N_HOURS = "${auto_delete_every_n_hours}"
WEBROOT = "${webroot}"
FFMPEG_ARGS = "${ffmpeg_args}"
HIDE_HISTORY = "${hide_history}"
LANGUAGE = "${language}"
[[config.mounts]]
source = "../files/data"
target = "/app/data"
type = "bind"

View File

@@ -0,0 +1,14 @@
services:
directory-lister:
image: directorylister/directorylister:latest
restart: unless-stopped
ports:
# The internal port of the application.
- 80
volumes:
# Mounts a persistent named volume to store directory data.
- directory-lister-data:/data
volumes:
# Defines the Docker-managed volume for data persistence.
directory-lister-data: {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,19 @@
[variables]
app_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "directory-lister" # Must match the service name in docker-compose.yml
port = 80
host = "${app_domain}"
[config.env]
# See configuration docs for additional variables: https://www.directorylister.com/docs/configuration
APP_LANGUAGE = "en"
DISPLAY_READMES = "true"
READMES_FIRST = "false"
ZIP_DOWNLOADS = "true"
TIMEZONE = "UTC"
[[config.mounts]]

View File

@@ -0,0 +1,12 @@
version: "3.8"
services:
dumbassets:
image: dumbwareio/dumbassets:latest
restart: unless-stopped
ports:
- 3000
volumes:
- dumbassets-data:/app/data
volumes:
dumbassets-data: {}

View File

@@ -0,0 +1 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="700" viewBox="410,175,520,520"><defs><clipPath id="clip-1"><rect x="426" y="185.5" width="500" height="500" id="clip-1" fill="none" stroke-width="1"/></clipPath><clipPath id="clip-2"><rect x="22.28453" y="-63.09825" transform="rotate(90) scale(12.93586,12.93586)" width="24" height="24" id="clip-2" fill="none"/></clipPath></defs><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="none" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g><g id="stage"><g id="layer1 1"><g clip-path="url(#clip-1)" id="Group 1"><circle cx="688.579" cy="444.165" r="219.498" id="Shape 1" fill="#fd96a9" stroke-width="1" opacity="0.2"/><path d="M673.527,194.641c-133.189,0 -241.476,108.289 -241.476,241.478c0,133.189 108.287,241.476 241.476,241.476c133.19,0 241.476,-108.287 241.476,-241.476c0,-133.189 -108.286,-241.478 -241.476,-241.478M673.527,633.827c-108.947,0 -197.614,-88.666 -197.614,-197.614c0,-108.947 88.667,-197.616 197.614,-197.616c108.947,0 197.614,88.575 197.614,197.616c0,108.948 -88.667,197.614 -197.614,197.614" id="CompoundPath 1" fill="#fd96a9" stroke-width="1"/><path d="" id="Path 1" fill="#ff4b91" stroke-width="4"/><path d="M117.65819,483.58962l-18.40732,-12.23549l92.77574,-132.16827l84.96726,-14.982l3.87044,21.95039l-75.62735,13.33512zM234.4318,603.29473l-116.53934,-81.6009l100.8393,-141.95213l98.9279,-17.44364l17.17848,97.4241zM265.8098,436.36088c8.82993,6.18365 20.97568,4.01969 27.16106,-4.80039c6.18266,-8.82975 4.04037,-20.97933 -4.78956,-27.16297c-8.83074,-6.18249 -20.98031,-4.04019 -27.16297,4.78956c-6.18347,8.83091 -4.03736,21.00215 4.79147,27.17381zM199.20946,498.13235l31.9765,-45.64004l-9.12649,-6.3913l-31.97731,45.64119zM204.68233,529.17054l44.75859,-63.89597l-9.12747,-6.39113l-44.75859,63.89597zM222.96068,541.95883l44.73519,-63.902l-9.12747,-6.39113l-44.73519,63.902z" id="CompoundPath 1" fill="#fd96a9" stroke-width="1"/></g><g clip-path="url(#clip-2)" id="Group 1" stroke-width="1"><path d="M537.28139,438.35153l-18.5759,-17.69626l132.6961,-132.38564h100.14947v25.87173h-89.14104zM646.64119,598.73038l-116.77205,-116.77205l143.88562,-141.94524h116.60389v114.83167zM716.15853,414.22614c8.84813,8.84813 23.16813,8.82226 32.01627,-0.01294c8.84813,-8.84813 8.84813,-23.16813 0,-32.01627c-8.84813,-8.84813 -23.16813,-8.84813 -32.01627,0c-8.84813,8.84813 -8.84813,23.19401 0,32.0292zM627.57373,471.4156l45.75415,-45.72828l-9.14566,-9.14566l-45.75415,45.72828zM627.57373,507.99822l64.04547,-64.01959l-9.14566,-9.14566l-64.04547,64.01959zM645.89091,526.30247l64.01959,-64.03253l-9.14566,-9.14566l-64.01959,64.03253z" id="CompoundPath 1" fill="#fd96a9"/></g></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,27 @@
[variables]
main_domain = "${domain}"
default_pin = "${password:4}"
[config]
[[config.domains]]
serviceName = "dumbassets"
port = 3000
host = "${main_domain}"
[config.env]
NODE_ENV = "production"
DEBUG = "false"
SITE_TITLE = "DumbAssets"
BASE_URL = "https://${main_domain}"
DUMBASSETS_PIN = "${default_pin}"
ALLOWED_ORIGINS = "*"
DEMO_MODE = "false"
APPRISE_URL = ""
CURRENCY_CODE = "USD"
CURRENCY_LOCALE = "en-US"
[[config.mounts]]
serviceName = "dumbassets"
type = "volume"
source = "dumbassets-data"
target = "/app/data"

View File

@@ -0,0 +1,12 @@
version: "3.8"
services:
dumbbudget:
image: dumbwareio/dumbbudget:latest
restart: unless-stopped
ports:
- 3000
volumes:
- dumbbudget-data:/app/data
volumes:
dumbbudget-data: {}

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{opacity:0.2;fill:#50AD3D;enable-background:new ;}
.st1{fill:#50AD3D;}
</style>
<g>
<circle class="st0" cx="256" cy="256" r="232.7"/>
<path class="st1" d="M256,512C114.8,512,0,397.2,0,256S114.8,0,256,0s256,114.8,256,256S397.2,512,256,512z M256,46.6
c-115.5,0-209.5,94-209.5,209.5s94,209.5,209.5,209.5s209.5-94,209.5-209.5C465.5,140.5,371.5,46.6,256,46.6z"/>
<path class="st1" d="M281.1,240.4c-11.2-4.7-52.5-11.2-52.5-29.3c0-13.3,15.4-17.2,24.7-17.2c8.4,0,18.5,2.7,23.9,8
c3.4,3.2,4.8,5.6,5.9,8.9c1.4,3.8,2.3,8,7.6,8h27.5c6.5,0,8.1-1.2,8.1-8.3c0-30.4-23.9-47.6-51.1-53.5v-23.7c0-5.3-1.7-8.6-8.1-8.6
h-21.9c-6.5,0-8.1,3.2-8.1,8.6V156c-29.2,5.6-53.6,23.9-53.6,57.1c0,37.5,26.1,49.4,54.4,58.8c23.9,8,48.8,8.3,48.8,24.8
c0,16.6-12.3,20.1-27.5,20.1c-10.4,0-21.9-2.7-27.5-9.8c-3.6-4.4-5-8.3-5.3-12.1c-0.6-7.4-3.6-8.3-10.1-8.3h-27.2
c-6.5,0-8.1,1.5-8.1,8.3c0,33.7,27,54.1,56.1,60.6v23.1c0,5.3,1.7,8.6,8.1,8.6h21.9c6.5,0,8.1-3.3,8.1-8.6v-22.4
c33.1-5,55.8-25.1,55.8-60.6C331.1,255.4,301.4,246.8,281.1,240.4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,24 @@
[variables]
main_domain = "${domain}"
# PIN used to access the site
dumbbudget_pin = "${password:16}"
[config]
[[config.domains]]
serviceName = "dumbbudget"
port = 3000
host = "${main_domain}"
[config.env]
DUMBBUDGET_PIN = "${dumbbudget_pin}"
BASE_URL = "${main_domain}"
CURRENCY = "USD"
SITE_TITLE = "DumbBudget"
INSTANCE_NAME = ""
# (OPTIONAL) Restrict origins - ex: https://subdomain.domain.tld
ALLOWED_ORIGINS = "${main_domain}"
# The named volume 'dumbbudget-data' is defined in the docker-compose.yml.
# According to Dokploy's template examples, volumes declared in the compose
# file are automatically managed and do not require a separate entry here.
[[config.mounts]]

View File

@@ -0,0 +1,10 @@
services:
dumbdrop:
image: dumbwareio/dumbdrop:latest
restart: unless-stopped
ports:
- 3000
volumes:
- dumbdrop-uploads:/app/uploads
volumes:
dumbdrop-uploads: {}

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{opacity:0.2;fill:#487BB7;enable-background:new ;}
.st1{fill:#487BB7;}
</style>
<g>
<circle class="st0" cx="256" cy="256" r="232.7"/>
<path class="st1" d="M256,512C114.8,512,0,397.2,0,256S114.8,0,256,0s256,114.8,256,256S397.2,512,256,512z M256,46.6
c-115.5,0-209.5,94-209.5,209.5s94,209.5,209.5,209.5s209.5-94,209.5-209.5C465.5,140.5,371.5,46.6,256,46.6z"/>
<g>
<path class="st1" d="M175.9,353H336c3.3,0,5.9,2.9,5.9,6.5V377c0,3.6-2.6,6.5-5.9,6.5H175.9c-3.3,0-5.9-2.9-5.9-6.5v-17.5
C170,356,172.7,353,175.9,353z"/>
<path class="st1" d="M251.2,114.4l-79.3,81.1c-4.1,4.2-1.1,11.3,4.8,11.3h36.9c3.7,0,6.7,3,6.7,6.7v108.4c0,3.7,3,6.7,6.7,6.7h58
c3.7,0,6.7-3,6.7-6.7V213.5c0-3.7,3-6.7,6.7-6.7h36.9c5.9,0,8.9-7.1,4.8-11.3l-79.3-81.1C258.2,111.8,253.8,111.8,251.2,114.4z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,24 @@
[variables]
main_domain = "https://${domain}"
[config]
[[config.domains]]
serviceName = "dumbdrop"
port = 3000
host = "${domain}"
[config.env]
UPLOAD_DIR = "/app/uploads"
DUMBDROP_TITLE = "DumbDrop"
MAX_FILE_SIZE = "1024"
DUMBDROP_PIN = "${password:6}"
AUTO_UPLOAD = "true"
BASE_URL = "${main_domain}"
ALLOWED_ORIGINS = ""
APPRISE_URL = ""
APPRISE_MESSAGE = "New file uploaded {filename} ({size}), Storage used {storage}"
APPRISE_SIZE_UNIT = "Auto"
ALLOWED_EXTENSIONS = ""
[[config.mounts]]

View File

@@ -0,0 +1,12 @@
version: "3.8"
services:
dumbpad:
image: dumbwareio/dumbpad:latest
restart: unless-stopped
ports:
- 3000
volumes:
- dumbpad-data:/app/data
volumes:
dumbpad-data: {}

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<style type="text/css">
.st0{opacity:0.2;fill:#BF2E4E;enable-background:new ;}
.st1{fill:#BF2E4E;}
.st2{opacity:0.7;fill:#BF2E4E;enable-background:new ;}
.st3{opacity:0.8;fill:#BF2E4E;enable-background:new ;}
.st4{opacity:0.9;fill:#BF2E4E;enable-background:new ;}
</style>
<g>
<circle class="st0" cx="256" cy="256" r="232.7"/>
<path class="st1" d="M256,512C114.8,512,0,397.2,0,256S114.8,0,256,0s256,114.8,256,256S397.2,512,256,512z M256,46.6
c-115.5,0-209.5,94-209.5,209.5s94,209.5,209.5,209.5s209.5-94,209.5-209.5C465.5,140.5,371.5,46.6,256,46.6z"/>
<g>
<path class="st2" d="M150.8,330.2h120.3c8.4,0,15.1,6.7,15.1,15.1l0,0c0,8.4-6.7,15.1-15.1,15.1H150.8c-8.4,0-15.1-6.7-15.1-15.1
l0,0C136,337.2,142.6,330.2,150.8,330.2z"/>
<path class="st3" d="M150.8,270.7h180.3c8.4,0,15.1,6.7,15.1,15.1l0,0c0,8.4-6.7,15.1-15.1,15.1H150.8c-8.4,0-15.1-6.7-15.1-15.1
l0,0C136,277.4,142.6,270.7,150.8,270.7z"/>
<path class="st2" d="M150.8,211.2h150.5c8.4,0,15.1,6.7,15.1,15.1l0,0c0,8.4-6.7,15.1-15.1,15.1H150.8c-8.4,0-15.1-6.7-15.1-15.1
l0,0C136,217.8,142.6,211.2,150.8,211.2z"/>
<path class="st4" d="M150.8,151.6h210.5c8.4,0,15.1,6.7,15.1,15.1l0,0c0,8.4-6.7,15.1-15.1,15.1H150.8c-8.4,0-15.1-6.7-15.1-15.1
l0,0C136,158.6,142.6,151.6,150.8,151.6z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,21 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "dumbpad"
port = 3000
host = "${main_domain}"
[config.env]
NODE_ENV = "production"
SITE_TITLE = "DumbPad"
BASE_URL = "https://${main_domain}"
# Set a PIN (4-10 digits) for access protection. Leave empty to disable.
DUMBPAD_PIN = ""
LOCKOUT_TIME = "15"
MAX_ATTEMPTS = "5"
COOKIE_MAX_AGE = "24"
PAGE_HISTORY_COOKIE_AGE = "365"
[[config.mounts]]

View File

@@ -0,0 +1,7 @@
version: "3.8"
services:
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
ports:
- 8191
restart: unless-stopped

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,16 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "flaresolverr"
port = 8191
host = "${main_domain}"
[config.env]
LOG_LEVEL = "info"
LOG_HTML = "false"
CAPTCHA_SOLVER = "none"
TZ = "Europe/London"
[[config.mounts]]

View File

@@ -0,0 +1,10 @@
services:
grimoire:
image: goniszewski/grimoire:latest
restart: unless-stopped
volumes:
- grimoire_data:/app/data
ports:
- "5173"
volumes:
grimoire_data: {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,16 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "grimoire"
port = 5173
host = "${main_domain}"
[config.env]
PORT = "5173"
PUBLIC_ORIGIN = "https://${main_domain}"
PUBLIC_HTTPS_ONLY = "true"
PUBLIC_SIGNUP_DISABLED = "false"
[[config.mounts]]

View File

@@ -0,0 +1,30 @@
version: "3.8"
services:
linkstack:
image: linkstackorg/linkstack:latest
environment:
TZ: "Europe/Berlin"
SERVER_ADMIN: "${admin_email}"
HTTP_SERVER_NAME: "${main_domain}"
HTTPS_SERVER_NAME: "${main_domain}"
LOG_LEVEL: "info"
PHP_MEMORY_LIMIT: "256M"
UPLOAD_MAX_FILESIZE: "8M"
volumes:
- linkstack-data:/htdocs
restart: unless-stopped
depends_on:
- mysql
mysql:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: ${mysql_root_password}
volumes:
- mysql-data:/var/lib/mysql
restart: unless-stopped
volumes:
linkstack-data: {}
mysql-data: {}

View File

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 238.86 216.13"><script xmlns="" id="__gaOptOutExtension"/>
<defs>
<style>
.cls-1 {
fill: url(#linear-gradient-2);
}
.cls-2 {
fill: url(#linear-gradient-3);
}
.cls-3 {
mix-blend-mode: hard-light;
}
.cls-4 {
isolation: isolate;
}
.cls-5 {
opacity: .86;
}
.cls-6 {
fill: #fff;
opacity: .68;
}
.cls-7 {
fill: url(#linear-gradient-5);
}
.cls-8 {
fill: url(#linear-gradient);
}
.cls-3 {
fill: url(#linear-gradient-4);
}
.cls-5, .cls-2, .cls-3 {
opacity: 0;
}
.cls-3 {
animation: slideInDown 1s ease forwards;
animation-delay: 0s;
}
.cls-2 {
animation: slideInDown 1s ease forwards;
animation-delay: 0.5s;
}
.cls-5 {
animation: slideInDown 1s ease forwards;
animation-delay: 1s;
}
@keyframes slideInDown {
0% {
transform: translateY(-100%);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
</style>
<linearGradient id="linear-gradient" x1="175.51" y1="30.59" x2="64.11" y2="184.49" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#340b4e"/>
<stop offset="1" stop-color="#06051c"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="0" y1="108.06" x2="238.86" y2="108.06" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ee17fe"/>
<stop offset="1" stop-color="#19d0e0"/>
</linearGradient>
<linearGradient id="linear-gradient-3" x1="55.86" y1="107.93" x2="183" y2="107.93" xlink:href="#linear-gradient-2"/>
<linearGradient id="linear-gradient-4" x1="55.86" y1="133.28" x2="183" y2="133.28" xlink:href="#linear-gradient-2"/>
<linearGradient id="linear-gradient-5" x1="119.43" y1="54.36" x2="119.43" y2="107.06" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff"/>
<stop offset="1" stop-color="#ee17fe"/>
</linearGradient>
</defs>
<g class="cls-4">
<g id="Ebene_1" data-name="Ebene 1">
<g>
<path class="cls-8" d="m151.05,197.42h-63.24c-12.36,0-23.78-6.59-29.96-17.3l-31.62-54.76c-6.18-10.7-6.18-23.89,0-34.59l31.62-54.76c6.18-10.7,17.6-17.3,29.96-17.3h63.24c12.36,0,23.78,6.59,29.96,17.3l31.62,54.76c6.18,10.7,6.18,23.89,0,34.59l-31.62,54.76c-6.18,10.7-17.6,17.3-29.96,17.3Z"/>
<path class="cls-1" d="m161.85,0h-84.84c-12.36,0-23.78,6.59-29.96,17.3L4.63,90.76c-6.18,10.7-6.18,23.89,0,34.59l42.42,73.47c6.18,10.7,17.6,17.3,29.96,17.3h84.84c12.36,0,23.78-6.59,29.96-17.3l42.42-73.47c6.18-10.7,6.18-23.89,0-34.59l-42.42-73.47c-6.18-10.7-17.6-17.3-29.96-17.3Zm-10.8,197.42h-63.24c-12.36,0-23.78-6.59-29.96-17.3l-31.62-54.76c-6.18-10.7-6.18-23.89,0-34.59l31.62-54.76c6.18-10.7,17.6-17.3,29.96-17.3h63.24c12.36,0,23.78,6.59,29.96,17.3l31.62,54.76c6.18,10.7,6.18,23.89,0,34.59l-31.62,54.76c-6.18,10.7-17.6,17.3-29.96,17.3Z"/>
<g>
<path class="cls-2" d="m182.13,106.91l-61.4-27.2c-.77-.34-1.84-.34-2.61,0l-61.4,27.2c-.55.24-.87.62-.87,1.03s.32.78.87,1.03l61.4,27.2c.77.34,1.84.34,2.61,0l61.4-27.2c.55-.24.87-.62.87-1.03s-.32-.78-.87-1.03Z"/>
<path class="cls-3" d="m182.13,132.25l-61.4-27.2c-.77-.34-1.84-.34-2.61,0l-61.4,27.2c-.55.24-.87.62-.87,1.03s.32.78.87,1.03l61.4,27.2c.77.34,1.84.34,2.61,0l61.4-27.2c.55-.24.87-.62.87-1.03s-.32-.78-.87-1.03Z"/>
<g class="cls-5">
<path class="cls-7" d="m182.13,81.57l-61.4-27.2c-.77-.34-1.84-.34-2.61,0l-61.4,27.2c-.55.24-.87.62-.87,1.03s.32.78.87,1.03l61.4,27.2c.77.34,1.84.34,2.61,0l61.4-27.2c.55-.24.87-.62.87-1.03s-.32-.78-.87-1.03Z"/>
<path class="cls-6" d="m182.13,81.57l-61.4-27.2c-.77-.34-1.84-.34-2.61,0l-61.4,27.2c-.55.24-.87.62-.87,1.03s.32.78.87,1.03l61.4,27.2c.77.34,1.84.34,2.61,0l61.4-27.2c.55-.24.87-.62.87-1.03s-.32-.78-.87-1.03Z"/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1,28 @@
[variables]
main_domain = "${domain}"
admin_email = "${email}"
mysql_root_password = "${password:32}"
[config]
[[config.domains]]
serviceName = "linkstack"
port = 80
host = "${main_domain}"
[config.env]
TZ = "Europe/Berlin"
SERVER_ADMIN = "${admin_email}"
HTTP_SERVER_NAME = "${main_domain}"
HTTPS_SERVER_NAME = "${main_domain}"
LOG_LEVEL = "info"
PHP_MEMORY_LIMIT = "256M"
UPLOAD_MAX_FILESIZE = "8M"
MYSQL_ROOT_PASSWORD = "${mysql_root_password}"
[[config.mounts]]
volume = "linkstack-data"
target = "/htdocs"
[[config.mounts]]
volume = "mysql-data"
target = "/var/lib/mysql"

View File

@@ -0,0 +1,9 @@
version: "3.8"
services:
metube:
image: ghcr.io/alexta69/metube
restart: unless-stopped
ports:
- 8081
volumes:
- ../files/downloads:/downloads

BIN
blueprints/metube/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,43 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "metube"
port = 8081
host = "${main_domain}"
[config.env]
UID = "1000"
GID = "1000"
UMASK = "022"
DEFAULT_THEME = "auto"
DOWNLOAD_DIR = "/downloads"
AUDIO_DOWNLOAD_DIR = "/downloads"
DOWNLOAD_DIRS_INDEXABLE = "false"
CUSTOM_DIRS = "true"
CREATE_CUSTOM_DIRS = "true"
CUSTOM_DIRS_EXCLUDE_REGEX = "(^|/)[.@].*$" # Regex to exclude certain directories
STATE_DIR = "/downloads/.metube"
TEMP_DIR = "/downloads"
DELETE_FILE_ON_TRASHCAN = "false" # Delete files when trashed from UI
URL_PREFIX = "/"
PUBLIC_HOST_URL = "" # Base URL for download links (optional)
HTTPS = "false" # Use HTTPS (requires CERTFILE and KEYFILE)
CERTFILE = ""
KEYFILE = ""
PUBLIC_HOST_AUDIO_URL = ""
OUTPUT_TEMPLATE = "%(title)s.%(ext)s" # Filename template for videos
OUTPUT_TEMPLATE_CHAPTER = "%(title)s - %(section_number)s %(section_title)s.%(ext)s"
OUTPUT_TEMPLATE_PLAYLIST = "%(playlist_title)s/%(title)s.%(ext)s"
DEFAULT_OPTION_PLAYLIST_STRICT_MODE = "false"
DEFAULT_OPTION_PLAYLIST_ITEM_LIMIT = "0"
YTDL_OPTIONS = "{}" # Additional yt-dlp options in JSON format
YTDL_OPTIONS_FILE = ""
ROBOTS_TXT = ""
DOWNLOAD_MODE = "limited"
MAX_CONCURRENT_DOWNLOADS = "3"
LOGLEVEL = "INFO"
ENABLE_ACCESSLOG = "false"
[[config.mounts]]

View File

@@ -19,4 +19,4 @@ mounts = []
[[config.domains]]
serviceName = "movary"
port = 8080
host = "${main_domain}"
host = "${main_domain}"

View File

@@ -0,0 +1,9 @@
version: "3.8"
services:
neko:
image: "ghcr.io/m1k1o/neko/firefox:latest"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "8080"
- "52000-52100:52000-52100/udp"

BIN
blueprints/neko/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -0,0 +1,22 @@
[variables]
main_domain = "${domain}"
admin_password = "${password:16}"
user_password = "${password:16}"
[config]
[[config.domains]]
serviceName = "neko"
port = 8080
host = "${main_domain}"
[config.env]
NEKO_MEMBER_PROVIDER = "multiuser"
NEKO_DESKTOP_SCREEN = "1920x1080@30"
# API keys used for authentication
NEKO_MEMBER_MULTIUSER_USER_PASSWORD = "${user_password}"
# API keys used for authentication
NEKO_MEMBER_MULTIUSER_ADMIN_PASSWORD = "${admin_password}"
NEKO_WEBRTC_EPR = "52000-52100"
NEKO_WEBRTC_ICELITE = "1"
[[config.mounts]]

View File

@@ -0,0 +1,6 @@
services:
omni-tools:
image: iib0011/omni-tools:latest
restart: unless-stopped
ports:
- 80

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1,14 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "omni-tools"
port = 80
host = "${main_domain}"
[config.env]
# API Key
LOCIZE_API_KEY = ""
[[config.mounts]]

View File

@@ -0,0 +1,17 @@
# docker-compose.yml
version: "3.8"
services:
opengist:
image: ghcr.io/thomiceli/opengist:1
restart: unless-stopped
ports:
- 6157 # HTTP port
- 2222 # SSH port (optional)
volumes:
- opengist-data:/opengist
environment:
- UID=${UID}
- GID=${GID}
- OG_LOG_LEVEL=${OG_LOG_LEVEL}
volumes:
opengist-data: {}

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 500 500" style="enable-background:new 0 0 500 500;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g id="document" transform="scale(1.6666666666666667 1.6666666666666667) translate(150.0 150.0)">
<path class="st0" d="M131.3,24.3c13.7-71-33.9-139.5-106.4-152.9C-47.7-142-117.6-95.3-131.3-24.3s33.9,139.5,106.4,152.9
C47.7,142,117.6,95.3,131.3,24.3z"/>
<path class="st0" d="M128.9,0c0,55.7-36.8,103-88,119.8c0.2-1.2,0.3-2.5,0.3-4c0.1-22.3,0.2-36.2,0.2-52.8
c0-11.7-0.2-18.1-0.2-18.1c1.8,0,21.1-6,29.9-12.1S89.2,15.1,90.5-1.4c1.3-16.6-6-36.2-12.4-47.8C65.3-72.4,54.7-86.6,45.4-94.5
c-9.3-7.8-16.1-6.1-22.1-1.4S8.5-76.9,2.2-71.2c-3,2.8-10.6,12-20.4,3.3C-21-70.3-38-93.6-48.5-90.6c-13.1,3.7-28.1,27.3-35.1,43.8
c-9,21-10.8,33.6-6.1,63.5c4.7,29.9,7.5,60,11.8,76.4c1,4,2.3,7.4,4,10.4c-33.2-22.8-55-60.7-55-103.5
c0-69.7,57.7-126.3,128.9-126.3S128.9-69.7,128.9,0z"/>
<path d="M0-145c-81.8,0-148.1,64.9-148.1,145S-81.8,145,0,145S148.1,80.1,148.1,0S81.8-145,0-145z M40.9,119.8
c0.2-1.2,0.3-2.5,0.3-4c0.1-22.3,0.2-36.2,0.2-52.8c0-11.7-0.2-18.1-0.2-18.1c1.8,0,21.1-6,29.9-12.1S89.2,15.1,90.5-1.4
c1.3-16.6-6-36.2-12.4-47.8C65.3-72.4,54.7-86.6,45.4-94.5c-9.3-7.8-16.1-6.1-22.1-1.4S8.5-76.9,2.2-71.2c-3,2.8-10.6,12-20.4,3.3
C-21-70.3-38-93.6-48.5-90.6c-13.1,3.7-28.1,27.3-35.1,43.8c-9,21-10.8,33.6-6.1,63.5c4.7,29.9,7.5,60,11.8,76.4
c1,4,2.3,7.4,4,10.4c-33.2-22.8-55-60.7-55-103.5c0-69.7,57.7-126.3,128.9-126.3S128.9-69.7,128.9,0
C128.9,55.7,92.1,103,40.9,119.8z"/>
<path class="st0" d="M-102.8-7.2l91.2-9.4l-0.3-7l-91.2,9.4L-102.8-7.2z"/>
<path class="st0" d="M12-17.3c0.8-9.6-6.5-18-16.3-18.8s-18.4,6.4-19.2,16S-17-2.1-7.2-1.3S11.2-7.7,12-17.3z"/>
<path class="st0" d="M62.9-24.6c0.8-9.6-6.5-18-16.3-18.8c-9.8-0.8-18.4,6.4-19.2,16c-0.8,9.6,6.5,18,16.3,18.8S62.1-15,62.9-24.6z
"/>
<path class="st0" d="M-11.8-16.8l67.6-7.3l-0.5-6.3l-67.5,7.3L-11.8-16.8z"/>
<path class="st0" d="M53.1-23.6l49.5-12.2l-0.6-6.3L52.5-29.9L53.1-23.6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,18 @@
# template.toml
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "opengist"
port = 6157
host = "${main_domain}"
[config.env]
UID = "1001"
GID = "1001"
OG_LOG_LEVEL = "info"
[[config.mounts]]
# This template uses a named volume defined in the docker-compose.yml,
# so no file mounts need to be configured here.

View File

@@ -0,0 +1,36 @@
# The 'version' attribute is obsolete and has been removed.
services:
openhands:
# Corrected the Docker image to what appears to be the official registry path.
# This was the cause of the "pull access denied" error.
image: docker.all-hands.dev/all-hands-ai/openhands:latest
restart: unless-stopped
# The port is exposed without mapping. Dokploy handles the routing via the domain.
ports:
- "3000"
# Environment variables are sourced from the template.toml file.
environment:
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE}
- WORKSPACE_MOUNT_PATH=/opt/workspace_base
# Allows the container to communicate with the host's Docker daemon.
extra_hosts:
- "host.docker.internal:host-gateway"
# Volumes for persistent data. Named volumes are used instead of host mounts.
# The docker socket is mounted to allow OpenHands to manage other containers.
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- openhands-config:/.openhands
- openhands-workspace:/opt/workspace_base
# These flags are necessary for the interactive shell functionality of OpenHands.
stdin_open: true
tty: true
# Named volumes are defined here to persist configuration and workspace data.
volumes:
openhands-config: {}
openhands-workspace: {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,153 @@
[variables]
main_domain = "${domain}"
openhands_api_key = "${password:64}"
[config]
[[config.domains]]
serviceName = "openhands"
port = 3000
host = "${main_domain}"
[config.env]
SANDBOX_RUNTIME_CONTAINER_IMAGE="docker.all-hands.dev/all-hands-ai/runtime:0.50-nikolaik"
# Defines a file mount to create the OpenHands configuration file inside the container.
# The file will be placed within the 'openhands-config' volume.
[[config.mounts]]
filePath = "/.openhands/config.toml"
content = """
###################### OpenHands Configuration Example ######################
#
# All settings have default values, so you only need to uncomment and
# modify what you want to change
# The fields within each section are sorted in alphabetical order.
#
##############################################################################
#################################### Core ####################################
# General core configurations
##############################################################################
[core]
# workspace_base = "./workspace"
# cache_dir = "/tmp/cache"
# debug = false
# disable_color = false
# save_trajectory_path="./trajectories"
# save_screenshots_in_trajectory = false
# replay_trajectory_path = ""
# file_store_path = "/tmp/file_store"
# file_store = "memory"
# file_uploads_max_file_size_mb = 0
# enable_browser = true
# max_budget_per_task = 0.0
# max_iterations = 500
# workspace_mount_path_in_sandbox = "/workspace"
# workspace_mount_path = ""
# workspace_mount_rewrite = ""
# run_as_openhands = true
# runtime = "docker"
# default_agent = "CodeActAgent"
# jwt_secret = ""
# file_uploads_restrict_file_types = false
# file_uploads_allowed_extensions = [".*"]
# enable_default_condenser = true
# max_concurrent_conversations = 3
# conversation_max_age_seconds = 864000  # 10 days
#################################### LLM #####################################
# Configuration for LLM models (group name starts with 'llm')
##############################################################################
[llm]
# API key to use. It is being sourced from the Dokploy template variables.
api_key = "${openhands_api_key}" # API Key
# base_url = ""
# api_version = ""
# reasoning_effort = "medium"
# input_cost_per_token = 0.0
# output_cost_per_token = 0.0
# custom_llm_provider = ""
# max_message_chars = 10000
# max_input_tokens = 0
# max_output_tokens = 0
model = "gpt-4o"
# num_retries = 8
# retry_max_wait = 120
# retry_min_wait = 15
# retry_multiplier = 2.0
# drop_params = false
# modify_params = true
# caching_prompt = true
# ollama_base_url = ""
# temperature = 0.0
# timeout = 0
# top_p = 1.0
# disable_vision = true
# custom_tokenizer = ""
# native_tool_calling = None
# safety_settings = []
[llm.draft_editor]
# correct_num = 5
[llm.gpt4o-mini]
api_key = "${openhands_api_key}" # API Key
model = "gpt-4o"
#################################### Agent ###################################
# Configuration for agents
##############################################################################
[agent]
enable_Browse = true
# enable_llm_editor = false
enable_editor = true
enable_jupyter = true
enable_cmd = true
enable_think = true
enable_finish = true
# llm_config = 'your-llm-config-group'
# enable_prompt_extensions = true
# disabled_microagents = []
enable_history_truncation = true
# enable_condensation_request = false
#################################### Sandbox ###################################
# Configuration for the sandbox
##############################################################################
[sandbox]
# timeout = 120
# user_id = 1000
# base_container_image = "nikolaik/python-nodejs:python3.12-nodejs22"
# use_host_network = false
# runtime_extra_build_args = ["--network=host", "--add-host=host.docker.internal:host-gateway"]
# enable_auto_lint = false
# initialize_plugins = true
# runtime_extra_deps = ""
# runtime_startup_env_vars = {}
# browsergym_eval_env = ""
# platform = ""
# force_rebuild_runtime = false
# runtime_container_image = ""
# keep_runtime_alive = false
# pause_closed_runtimes = false
# close_delay = 300
# rm_all_containers = false
# enable_gpu = false
# cuda_visible_devices = ''
# docker_runtime_kwargs = {}
# vscode_port = 41234
# volumes = "/my/host/dir:/workspace:rw,/path2:/workspace/path2:ro"
#################################### Security ###################################
# Configuration for security features
##############################################################################
[security]
# confirmation_mode = false
# security_analyzer = ""
# enable_security_analyzer = false
#################################### Condenser #################################
# Condensers control how conversation history is managed
##############################################################################
[condenser]
type = "noop"
"""

View File

@@ -0,0 +1,7 @@
version: "3"
services:
pinchflat:
image: ghcr.io/kieraneglin/pinchflat:latest
volumes:
- ../files/config:/config
- ../files/downloads:/downloads

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

@@ -0,0 +1,31 @@
[variables]
main_domain = "${domain}"
basic_auth_password = "${password:32}"
[config]
[[config.domains]]
serviceName = "pinchflat"
port = 8945
host = "${main_domain}"
[config.env]
TZ = "America/New_York"
LOG_LEVEL = "debug"
UMASK = "022"
BASIC_AUTH_USERNAME = ""
BASIC_AUTH_PASSWORD = "${basic_auth_password}"
EXPOSE_FEED_ENDPOINTS = "false"
ENABLE_IPV6 = "false"
JOURNAL_MODE = "wal"
TZ_DATA_DIR = "/etc/elixir_tzdata_data"
BASE_ROUTE_PATH = "/"
YT_DLP_WORKER_CONCURRENCY = "2"
ENABLE_PROMETHEUS = "false"
[[config.mounts]]
filePath = "/files/config"
content = ""
[[config.mounts]]
filePath = "/files/downloads"
content = ""

View File

@@ -0,0 +1,28 @@
version: "3.8"
services:
snapp:
image: uraniadev/snapp:0.9-rc-020
ports:
- 3000
environment:
- DATABASE_URL=${DATABASE_URL}
- DATABASE_PROVIDER=${DATABASE_PROVIDER}
- TOKEN_SECRET=${TOKEN_SECRET} # API Key for authentication token
- ORIGIN=${ORIGIN}
- DISABLED_EMAIL_AND_PASSWORD=${DISABLED_EMAIL_AND_PASSWORD}
- LOG_LEVEL=${LOG_LEVEL}
- PORT=${PORT}
- ADMIN_USERNAME=${ADMIN_USERNAME}
- ADMIN_EMAIL=${ADMIN_EMAIL}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- ENABLE_SIGNUP=${ENABLE_SIGNUP}
- ENABLED_MFA=${ENABLED_MFA}
- PUBLIC_URL=${PUBLIC_URL}
- APPNAME=${APPNAME}
- PUBLIC_EXTRA_GROUPS_EDITABLE=${PUBLIC_EXTRA_GROUPS_EDITABLE}
- URLS_VIA_GROUPS_ONLY=${URLS_VIA_GROUPS_ONLY}
- HOST=${HOST}
volumes:
- ../files/snapp-db:/app/db.sqlite
volumes:
snapp-db: {}

BIN
blueprints/snapp/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,34 @@
[variables]
main_domain = "${domain}"
token_secret = "${password:32}"
[config]
[[config.domains]]
serviceName = "snapp"
port = 3000
host = "${main_domain}"
[config.env]
DATABASE_URL = "file:./db.sqlite"
DATABASE_PROVIDER = "sqlite" # Options: postgres | mysql | sqlite
DISABLED_EMAIL_AND_PASSWORD = "false"
LOG_LEVEL = "debug"
ORIGIN = "http://${main_domain}"
PORT = "3000"
ADMIN_USERNAME = "admin"
ADMIN_EMAIL = "info@example.org"
ADMIN_PASSWORD = "${password:16}"
TOKEN_SECRET = "${token_secret}" # API Key for authentication token
ENABLE_SIGNUP = "true"
ENABLED_MFA = "false"
PUBLIC_URL = "${main_domain}"
APPNAME = "Snapp"
PUBLIC_EXTRA_GROUPS_EDITABLE = "true"
URLS_VIA_GROUPS_ONLY = "false"
HOST = "0.0.0.0"
[[config.mounts]]
filePath = "/files/snapp-db/db.sqlite"
content = """
# SQLite database file for Snapp
"""

View File

@@ -0,0 +1,24 @@
version: '3'
services:
tianji:
image: moonrailgun/tianji
ports:
- "12345"
environment:
DATABASE_URL: postgresql://tianji:tianji@postgres:5432/tianji
# API Key
JWT_SECRET: ${jwt_secret}
ALLOW_REGISTER: "false"
ALLOW_OPENAPI: "true"
depends_on:
- postgres
postgres:
image: postgres:15.4-alpine
environment:
POSTGRES_DB: tianji
POSTGRES_USER: tianji
POSTGRES_PASSWORD: tianji
volumes:
- tianji-db-data:/var/lib/postgresql/data
volumes:
tianji-db-data: {}

View File

@@ -0,0 +1,16 @@
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M257.106 206.055C277.953 206.822 330.317 199.265 373.004 162.897C404.216 168.882 434.586 174.598 445.87 176.708C389.643 210.083 298.416 268.202 257.106 268.202C212.577 268.202 114.242 210.083 53.6336 176.708C65.7966 174.598 98.5337 168.882 132.178 162.897C178.191 199.265 234.636 206.822 257.106 206.055Z" fill="black"/>
<path d="M257.106 289.493C270.303 289.493 303.236 287.997 347.759 270.503C338.579 282.012 327.104 319.415 318.498 332.65C297.843 361.422 274.089 379.145 257.106 392.495C238.8 379.145 213.196 361.422 190.931 332.65C181.654 319.415 169.285 282.012 159.39 270.503C207.382 287.997 243.91 289.493 257.106 289.493Z" fill="#D9D9D9"/>
<path d="M375.299 235.402C388.113 232.717 415.691 226.655 423.494 223.893C403.986 282.587 312.186 392.495 265.139 450.039L275.466 391.344C275.466 391.344 306.449 367.176 321.366 344.159C336.284 321.142 375.299 235.402 375.299 235.402Z" fill="black"/>
<path d="M441.28 194.546C456.771 204.904 476.853 212.96 478 221.591C462.509 243.458 395.38 315.387 395.38 315.387L426.936 337.829C370.135 378.685 310.465 411.485 265.139 465C265.139 465 350.054 355.092 373.004 324.594C438.823 237.128 441.28 194.546 441.28 194.546Z" fill="black"/>
<path d="M257.106 48.3858L273.745 34L324.809 51.8385L352.349 159.445C336.284 175.557 303.465 194.546 257.106 194.546C207.135 194.546 171.759 175.557 154.442 159.445L184.128 51.8385L239.171 34L257.106 48.3858Z" fill="black"/>
<path d="M129.704 235.402C115.892 232.717 86.1645 226.655 77.7535 223.893C98.7811 282.587 197.734 392.495 248.448 450.039L237.316 391.344C237.316 391.344 203.919 367.176 187.839 344.159C171.759 321.142 129.704 235.402 129.704 235.402Z" fill="black"/>
<path d="M58.5813 194.546C41.8829 204.904 20.2369 212.96 19 221.591C35.6984 243.458 108.058 315.387 108.058 315.387L74.0427 337.829C135.27 378.685 199.59 411.485 248.448 465C248.448 465 156.916 355.092 132.178 324.594C61.2302 237.128 58.5813 194.546 58.5813 194.546Z" fill="black"/>
<path d="M257.106 206.055C277.953 206.822 330.317 199.265 373.004 162.897C404.216 168.882 434.586 174.598 445.87 176.708C389.643 210.083 298.416 268.202 257.106 268.202C212.577 268.202 114.242 210.083 53.6336 176.708C65.7966 174.598 98.5337 168.882 132.178 162.897C178.191 199.265 234.636 206.822 257.106 206.055Z" stroke="white" stroke-opacity="0.5" stroke-width="2"/>
<path d="M257.106 289.493C270.303 289.493 303.236 287.997 347.759 270.503C338.579 282.012 327.104 319.415 318.498 332.65C297.843 361.422 274.089 379.145 257.106 392.495C238.8 379.145 213.196 361.422 190.931 332.65C181.654 319.415 169.285 282.012 159.39 270.503C207.382 287.997 243.91 289.493 257.106 289.493Z" stroke="white" stroke-opacity="0.5" stroke-width="2"/>
<path d="M375.299 235.402C388.113 232.717 415.691 226.655 423.494 223.893C403.986 282.587 312.186 392.495 265.139 450.039L275.466 391.344C275.466 391.344 306.449 367.176 321.366 344.159C336.284 321.142 375.299 235.402 375.299 235.402Z" stroke="white" stroke-opacity="0.5" stroke-width="2"/>
<path d="M441.28 194.546C456.771 204.904 476.853 212.96 478 221.591C462.509 243.458 395.38 315.387 395.38 315.387L426.936 337.829C370.135 378.685 310.465 411.485 265.139 465C265.139 465 350.054 355.092 373.004 324.594C438.823 237.128 441.28 194.546 441.28 194.546Z" stroke="white" stroke-opacity="0.5" stroke-width="2"/>
<path d="M257.106 48.3858L273.745 34L324.809 51.8385L352.349 159.445C336.284 175.557 303.465 194.546 257.106 194.546C207.135 194.546 171.759 175.557 154.442 159.445L184.128 51.8385L239.171 34L257.106 48.3858Z" stroke="white" stroke-opacity="0.5" stroke-width="2"/>
<path d="M129.704 235.402C115.892 232.717 86.1645 226.655 77.7535 223.893C98.7811 282.587 197.734 392.495 248.448 450.039L237.316 391.344C237.316 391.344 203.919 367.176 187.839 344.159C171.759 321.142 129.704 235.402 129.704 235.402Z" stroke="white" stroke-opacity="0.5" stroke-width="2"/>
<path d="M58.5813 194.546C41.8829 204.904 20.2369 212.96 19 221.591C35.6984 243.458 108.058 315.387 108.058 315.387L74.0427 337.829C135.27 378.685 199.59 411.485 248.448 465C248.448 465 156.916 355.092 132.178 324.594C61.2302 237.128 58.5813 194.546 58.5813 194.546Z" stroke="white" stroke-opacity="0.5" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,16 @@
[variables]
main_domain = "${domain}"
# API Key: Used for session security.
jwt_secret = "${password:32}"
[config]
[[config.domains]]
serviceName = "tianji"
port = 12345
host = "${main_domain}"
[[config.mounts]]
serviceName = "postgres"
type = "volume"
source = "tianji-db-data"
target = "/var/lib/postgresql/data"

View File

@@ -0,0 +1,7 @@
version: '3.9'
services:
web-check:
image: lissy93/web-check
ports:
- 3000
restart: unless-stopped

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,31 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "web-check"
port = 3000
host = "${main_domain}"
[config.env]
GOOGLE_CLOUD_API_KEY = ""
TORRENT_IP_API_KEY = ""
SECURITY_TRAILS_API_KEY = ""
BUILT_WITH_API_KEY = ""
URL_SCAN_API_KEY = ""
TRANCO_USERNAME = ""
TRANCO_API_KEY = ""
CLOUDMERSIVE_API_KEY = ""
REACT_APP_SHODAN_API_KEY = ""
REACT_APP_WHO_API_KEY = ""
# CHROME_PATH = "/usr/bin/chromium"
PORT = "3000"
DISABLE_GUI = "false"
API_TIMEOUT_LIMIT = "10000"
API_CORS_ORIGIN = "*"
API_ENABLE_RATE_LIMIT = "true"
ENABLE_ANALYTICS = "false"
[[config.mounts]]

View File

@@ -0,0 +1,16 @@
version: "3.8"
services:
yt-dlp-webui:
image: marcobaobao/yt-dlp-webui
ports:
- 3033
volumes:
- downloads:/downloads
- config:/config
healthcheck:
test: curl -f http://localhost:3033 || exit 1
restart: unless-stopped
volumes:
downloads: {}
config: {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -0,0 +1,12 @@
[variables]
main_domain = "${domain}"
[config]
[[config.domains]]
serviceName = "yt-dlp-webui"
port = 3033
host = "${main_domain}"
[config.env]
[[config.mounts]]

382
meta.json
View File

@@ -28,13 +28,7 @@
"docs": "https://cap.so/docs/"
},
"logo": "capso.png",
"tags": [
"web",
"s3",
"mysql",
"development",
"self-hosted"
]
"tags": ["web", "s3", "mysql", "development", "self-hosted"]
},
{
"id": "authentik",
@@ -3322,16 +3316,16 @@
{
"id": "movary",
"name": "Movary",
"version": "0.66.2",
"description": "Self-hosted web app to track, rate and explore your movie watch history. Offers detailed statistics, third-party integrations for platforms like Trakt, Letterboxd, Netflix, and automated play tracking for Plex, Jellyfin, Emby or Kodi.",
"version": "latest",
"description": "Movary is a self-hosted platform for tracking and managing your watched movies using TMDB.",
"logo": "movary.png",
"links": {
"github": "https://github.com/leepeuker/movary",
"website": "https://movary.org/",
"docs": "https://movary.org/docs/",
"demo": "https://demo.movary.org/"
"docs": "https://docs.movary.org/"
},
"tags": [
"media",
"movies",
"movie-tracker",
"self-hosted",
@@ -3517,24 +3511,6 @@
"aggregator"
]
},
{
"id": "gitlab-ce",
"name": "GitLab CE",
"version": "latest",
"description": "GitLab Community Edition is a free and open source platform for managing Git repositories, CI/CD pipelines, and project management.",
"logo": "gitlab-ce.svg",
"links": {
"github": "https://gitlab.com/gitlab-org/gitlab-ce",
"website": "https://gitlab.com/",
"docs": "https://docs.gitlab.com/ee/"
},
"tags": [
"git",
"ci-cd",
"version-control",
"project-management"
]
},
{
"id": "memos",
"name": "Memos",
@@ -3546,10 +3522,352 @@
"website": "https://www.usememos.com/",
"docs": "https://www.usememos.com/docs"
},
"tags": ["productivity", "notes", "bookmarks"]
},
{
"id": "linkstack",
"name": "LinkStack",
"version": "latest",
"description": "LinkStack is an open-source link-in-bio platform for sharing multiple links using a customizable landing page.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/linkstackorg/linkstack",
"website": "https://linkstack.org/",
"docs": "https://docs.linkstack.org/"
},
"tags": ["bio", "personal", "cms", "php"]
},
{
"id": "opengist",
"name": "OpenGist",
"version": "1",
"description": "OpenGist is a self-hosted pastebin alternative.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/thomiceli/opengist",
"website": "https://github.com/thomiceli/opengist",
"docs": "https://github.com/thomiceli/opengist"
},
"tags": [
"productivity",
"notes",
"bookmarks"
"pastebin",
"code",
"snippets",
"self-hosted"
]
},
{
"id": "snapp",
"name": "Snapp",
"version": "0.9-rc-020",
"description": "Snapp is a self-hosted screenshot sharing service with user management and authentication.",
"logo": "logo.png",
"links": {
"github": "https://github.com/UraniaDev/snapp",
"website": "https://github.com/UraniaDev/snapp",
"docs": "https://github.com/UraniaDev/snapp"
},
"tags": [
"screenshot",
"sharing",
"self-hosted",
"authentication"
]
},
{
"id": "commafeed",
"name": "CommaFeed",
"version": "latest",
"description": "CommaFeed is an open-source feed reader and news aggregator, designed to be lightweight and extensible, with PostgreSQL as its database.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/Athou/commafeed",
"website": "https://www.commafeed.com/",
"docs": "https://github.com/Athou/commafeed/wiki"
},
"tags": [
"feed-reader",
"news-aggregator",
"rss"
]
},
{
"id": "convertx",
"name": "ConvertX",
"version": "latest",
"description": "ConvertX is a service for converting media files, with optional user registration and file management features.",
"logo": "logo.png",
"links": {
"github": "https://github.com/c4illin/ConvertX",
"website": "https://github.com/c4illin/ConvertX",
"docs": "https://github.com/c4illin/ConvertX#environment-variables"
},
"tags": [
"media",
"converter",
"ffmpeg"
]
},
{
"id": "metube",
"name": "MeTube",
"version": "latest",
"description": "MeTube is a web-based YouTube downloader that allows downloading videos and audio using yt-dlp.",
"logo": "logo.png",
"links": {
"github": "https://github.com/alexta69/metube",
"website": "https://github.com/alexta69/metube",
"docs": "https://github.com/alexta69/metube/wiki"
},
"tags": [
"downloader",
"youtube",
"media"
]
},
{
"id": "pinchflat",
"name": "Pinchflat",
"version": "latest",
"description": "Pinchflat is a self-hosted YouTube downloader that allows you to download videos and playlists with a simple web interface.",
"logo": "logo.png",
"links": {
"github": "https://github.com/kieraneglin/pinchflat",
"website": "https://github.com/kieraneglin/pinchflat",
"docs": "https://github.com/kieraneglin/pinchflat"
},
"tags": [
"youtube",
"downloader",
"media"
]
},
{
"id": "yt-dlp-webui",
"name": "yt-dlp-webui",
"version": "latest",
"description": "yt-dlp-webui is a web interface for yt-dlp, allowing you to download videos and audio from various platforms with a simple web UI.",
"logo": "logo.ico",
"links": {
"github": "https://github.com/marcopiovanello/yt-dlp-web-ui",
"website": "https://github.com/marcopiovanello/yt-dlp-web-ui",
"docs": "https://github.com/marcopiovanello/yt-dlp-web-ui"
},
"tags": [
"downloader",
"youtube",
"media",
"webui"
]
},
{
"id": "flaresolverr",
"name": "FlareSolverr",
"version": "latest",
"description": "FlareSolverr is a proxy server to bypass Cloudflare and DDoS-GUARD protection.",
"logo": "logo.png",
"links": {
"github": "https://github.com/FlareSolverr/FlareSolverr",
"website": "https://github.com/FlareSolverr/FlareSolverr",
"docs": "https://github.com/FlareSolverr/FlareSolverr"
},
"tags": [
"proxy",
"cloudflare",
"bypass",
"ddos-guard"
]
},
{
"id": "neko",
"name": "Neko",
"version": "latest",
"description": "Neko is a self-hosted virtual browser that runs in Docker and allows you to share browser sessions with others.",
"logo": "logo.png",
"links": {
"github": "https://github.com/m1k1o/neko",
"website": "https://github.com/m1k1o/neko",
"docs": "https://github.com/m1k1o/neko"
},
"tags": [
"browser",
"virtual",
"sharing",
"remote"
]
},
{
"id": "omni-tools",
"name": "Omni-Tools",
"version": "latest",
"description": "Omni-Tools is a collection of useful tools in a single self-hosted web application.",
"logo": "logo.png",
"links": {
"github": "https://github.com/iib0011/omni-tools",
"website": "https://github.com/iib0011/omni-tools",
"docs": "https://github.com/iib0011/omni-tools"
},
"tags": [
"tools",
"utilities",
"collection",
"self-hosted"
]
},
{
"id": "openhands",
"name": "OpenHands",
"version": "0.1.1",
"description": "OpenHands is an open-source platform for running and managing AI agents.",
"logo": "image.png",
"links": {
"github": "https://github.com/all-hands-ai/OpenHands",
"website": "https://github.com/all-hands-ai/OpenHands",
"docs": "https://github.com/all-hands-ai/OpenHands"
},
"tags": [
"ai",
"agents",
"llm",
"openai"
]
},
{
"id": "web-check",
"name": "Web-Check",
"version": "latest",
"description": "Web-Check is a powerful all-in-one website analyzer that provides detailed insights into any website's security, performance, and functionality.",
"logo": "logo.png",
"links": {
"github": "https://github.com/lissy93/web-check",
"website": "https://github.com/lissy93/web-check",
"docs": "https://github.com/lissy93/web-check"
},
"tags": [
"website-analyzer",
"security",
"performance",
"seo"
]
},
{
"id": "dumbdrop",
"name": "DumbDrop",
"version": "latest",
"description": "DumbDrop is a simple, self-hosted file sharing service with no database or authentication required.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/dumbwareio/dumbdrop",
"website": "https://www.dumbware.io/software/DumbDrop/",
"docs": "https://github.com/dumbwareio/dumbdrop"
},
"tags": [
"file-sharing",
"self-hosted",
"simple"
]
},
{
"id": "dumbassets",
"name": "DumbAssets",
"version": "latest",
"description": "DumbAssets is a simple, self-hosted asset tracking service with no database or authentication required.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/dumbwareio/dumbassets",
"website": "https://www.dumbware.io/software/DumbAssets/",
"docs": "https://github.com/dumbwareio/dumbassets"
},
"tags": [
"asset-tracking",
"self-hosted",
"simple"
]
},
{
"id": "dumbpad",
"name": "DumbPad",
"version": "latest",
"description": "DumbPad is a simple, self-hosted notepad service with PIN protection and no database required.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/dumbwareio/dumbpad",
"website": "https://www.dumbware.io/software/DumbPad/",
"docs": "https://github.com/dumbwareio/dumbpad"
},
"tags": [
"notepad",
"self-hosted",
"simple"
]
},
{
"id": "dumbbudget",
"name": "DumbBudget",
"version": "latest",
"description": "DumbBudget is a simple, self-hosted budget tracking service with PIN protection and no database required.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/dumbwareio/dumbbudget",
"website": "https://www.dumbware.io/software/DumbBudget/",
"docs": "https://github.com/dumbwareio/dumbbudget"
},
"tags": [
"budget",
"finance",
"self-hosted",
"simple"
]
},
{
"id": "tianji",
"name": "Tianji",
"version": "latest",
"description": "Tianji is a lightweight web analytic service and uptime monitoring tool.",
"logo": "logo.svg",
"links": {
"github": "https://github.com/msgbyte/tianji",
"website": "https://github.com/msgbyte/tianji",
"docs": "https://github.com/msgbyte/tianji"
},
"tags": [
"analytics",
"monitoring",
"web",
"uptime"
]
},
{
"id": "directory-lister",
"name": "Directory Lister",
"version": "latest",
"description": "Directory Lister is a simple PHP application that lists the contents of any web-accessible directory and allows navigation there within.",
"logo": "logo.png",
"links": {
"github": "https://github.com/DirectoryLister/DirectoryLister",
"website": "https://www.directorylister.com/",
"docs": "https://docs.directorylister.com/"
},
"tags": [
"file-manager",
"directory-listing",
"php"
]
},
{
"id": "grimoire",
"name": "Grimoire",
"version": "latest",
"description": "Grimoire is a self-hosted bookmarking app designed for speed and simplicity.",
"logo": "logo.webp",
"links": {
"github": "https://github.com/goniszewski/grimoire",
"website": "https://github.com/goniszewski/grimoire",
"docs": "https://github.com/goniszewski/grimoire"
},
"tags": [
"bookmarks",
"self-hosted",
"knowledge-management"
]
},
{