From 19d897f3adc452eecaa477e9ac217b19c5e85900 Mon Sep 17 00:00:00 2001 From: Daniel Gietmann Date: Wed, 27 Nov 2024 03:44:18 +0100 Subject: [PATCH] added template --- apps/dokploy/public/templates/photoprism.svg | 1 + .../templates/photoprism/docker-compose.yml | 78 +++++++++++++++++++ apps/dokploy/templates/photoprism/index.ts | 31 ++++++++ apps/dokploy/templates/templates.ts | 31 ++++++-- 4 files changed, 133 insertions(+), 8 deletions(-) create mode 100644 apps/dokploy/public/templates/photoprism.svg create mode 100644 apps/dokploy/templates/photoprism/docker-compose.yml create mode 100644 apps/dokploy/templates/photoprism/index.ts diff --git a/apps/dokploy/public/templates/photoprism.svg b/apps/dokploy/public/templates/photoprism.svg new file mode 100644 index 00000000..eefa5cde --- /dev/null +++ b/apps/dokploy/public/templates/photoprism.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/dokploy/templates/photoprism/docker-compose.yml b/apps/dokploy/templates/photoprism/docker-compose.yml new file mode 100644 index 00000000..285f2ff8 --- /dev/null +++ b/apps/dokploy/templates/photoprism/docker-compose.yml @@ -0,0 +1,78 @@ +services: + photoprism: + image: photoprism/photoprism:latest + stop_grace_period: 10s + depends_on: + - mariadb + security_opt: + - seccomp:unconfined + - apparmor:unconfined + networks: + - dokploy-network + environment: + PHOTOPRISM_ADMIN_USER: "admin" + PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD} + PHOTOPRISM_AUTH_MODE: "password" + PHOTOPRISM_SITE_URL: "http://localhost:2342/" + PHOTOPRISM_DISABLE_TLS: "false" + PHOTOPRISM_DEFAULT_TLS: "false" + PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) + PHOTOPRISM_HTTP_COMPRESSION: "gzip" + PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic + PHOTOPRISM_READONLY: "false" + PHOTOPRISM_EXPERIMENTAL: "false" + PHOTOPRISM_DISABLE_CHOWN: "false" + PHOTOPRISM_DISABLE_WEBDAV: "false" + PHOTOPRISM_DISABLE_SETTINGS: "false" + PHOTOPRISM_DISABLE_TENSORFLOW: "false" + PHOTOPRISM_DISABLE_FACES: "false" + PHOTOPRISM_DISABLE_CLASSIFICATION: "false" + PHOTOPRISM_DISABLE_VECTORS: "false" + PHOTOPRISM_DISABLE_RAW: "false" + PHOTOPRISM_RAW_PRESETS: "false" + PHOTOPRISM_SIDECAR_YAML: "true" + PHOTOPRISM_BACKUP_ALBUMS: "true" + PHOTOPRISM_BACKUP_DATABASE: "true" + PHOTOPRISM_BACKUP_SCHEDULE: "daily" + PHOTOPRISM_INDEX_SCHEDULE: "" + PHOTOPRISM_AUTO_INDEX: 300 + PHOTOPRISM_AUTO_IMPORT: -1 + PHOTOPRISM_DETECT_NSFW: "false" + PHOTOPRISM_UPLOAD_NSFW: "true" + PHOTOPRISM_DATABASE_DRIVER: "mysql" + PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" + PHOTOPRISM_DATABASE_NAME: "photoprism" + PHOTOPRISM_DATABASE_USER: "photoprism" + PHOTOPRISM_DATABASE_PASSWORD: "insecure" + PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" + PHOTOPRISM_SITE_DESCRIPTION: "" + PHOTOPRISM_SITE_AUTHOR: "" + working_dir: + "/photoprism" + volumes: + - pictures:/photoprism/originals + - storage-data:/photoprism/storage + + mariadb: + image: mariadb:11 + restart: unless-stopped + stop_grace_period: 5s + networks: + - dokploy-network + security_opt: + - seccomp:unconfined + - apparmor:unconfined + volumes: + - db-data:/var/lib/mysql + environment: + MARIADB_AUTO_UPGRADE: "1" + MARIADB_INITDB_SKIP_TZINFO: "1" + MARIADB_DATABASE: "photoprism" + MARIADB_USER: "photoprism" + MARIADB_PASSWORD: "insecure" + MARIADB_ROOT_PASSWORD: "insecure" + +volumes: + db-data: + storage-data: + pictures: \ No newline at end of file diff --git a/apps/dokploy/templates/photoprism/index.ts b/apps/dokploy/templates/photoprism/index.ts new file mode 100644 index 00000000..d20ac29c --- /dev/null +++ b/apps/dokploy/templates/photoprism/index.ts @@ -0,0 +1,31 @@ +import { + type DomainSchema, + type Schema, + type Template, + generateHash, + generatePassword, + generateRandomDomain, +} from "../utils"; + +export function generate(schema: Schema): Template { + const randomDomain = generateRandomDomain(schema); + const randomPassword = generatePassword(); + + const domains: DomainSchema[] = [ + { + host: randomDomain, + port: 2342, + serviceName: "photoprism", + }, + ]; + + const envs = [ + `BASE_URL=http://${randomDomain}`, + `ADMIN_PASSWORD=${randomPassword}`, + ]; + + return { + envs, + domains, + }; +} diff --git a/apps/dokploy/templates/templates.ts b/apps/dokploy/templates/templates.ts index f6ed672c..a6318dfe 100644 --- a/apps/dokploy/templates/templates.ts +++ b/apps/dokploy/templates/templates.ts @@ -881,8 +881,8 @@ export const templates: TemplateData[] = [ }, tags: ["forum", "community", "discussion"], load: () => import("./discourse/index").then((m) => m.generate), - }, - { + }, + { id: "immich", name: "Immich", version: "v1.121.0", @@ -896,8 +896,8 @@ export const templates: TemplateData[] = [ }, tags: ["photos", "videos", "backup", "media"], load: () => import("./immich/index").then((m) => m.generate), - }, - { + }, + { id: "twenty", name: "Twenty CRM", version: "latest", @@ -911,8 +911,8 @@ export const templates: TemplateData[] = [ }, tags: ["crm", "sales", "business"], load: () => import("./twenty/index").then((m) => m.generate), - }, - { + }, + { id: "yourls", name: "YOURLS", version: "1.9.2", @@ -926,8 +926,8 @@ export const templates: TemplateData[] = [ }, tags: ["url-shortener", "php"], load: () => import("./yourls/index").then((m) => m.generate), - }, - { + }, + { id: "ryot", name: "Ryot", version: "v7.10", @@ -942,4 +942,19 @@ export const templates: TemplateData[] = [ tags: ["media", "tracking", "self-hosted"], load: () => import("./ryot/index").then((m) => m.generate), }, + { + id: "photoprism", + name: "Photoprism", + version: "latest", + description: + "PhotoPrism® is an AI-Powered Photos App for the Decentralized Web. It makes use of the latest technologies to tag and find pictures automatically without getting in your way.", + logo: "photoprism.svg", + links: { + github: "https://github.com/photoprism/photoprism", + website: "https://www.photoprism.app/", + docs: "https://docs.photoprism.app/", + }, + tags: ["media", "photos", "self-hosted"], + load: () => import("./photoprism/index").then((m) => m.generate), + }, ];