mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
Merge pull request #768 from DanielGietmann/canary
feat: photoprism template
This commit is contained in:
1
apps/dokploy/public/templates/photoprism.svg
Normal file
1
apps/dokploy/public/templates/photoprism.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 266 266"><defs><linearGradient id="a" x1="45.04" y1="231.72" x2="231.72" y2="45.04" gradientUnits="userSpaceOnUse" gradientTransform="translate(-5.38 -5.38)"><stop offset="0" stop-color="#fff"/><stop offset="0" stop-color="#b8edff"/><stop offset="1" stop-color="#d4b8ff"/></linearGradient></defs><circle cx="133" cy="133" r="132" style="fill:url(#a)"/><path data-name="Logo Pfad" d="m224.19 176.51-4 24.19M41.91 177.5l14.81 14m95.76-137.65L56.62 191.31a.09.09 0 0 0 .07.15l163.41 9.37a.09.09 0 0 0 .09-.13L152.62 53.87a.1.1 0 0 0-.14-.02zm-19.74-13.29L41.8 177.31a.13.13 0 0 0 .11.19l182.18-.8a.12.12 0 0 0 .1-.19L132.95 40.56a.12.12 0 0 0-.21 0zm.11-.16 19.77 13.32" style="fill:none;stroke:#1d1d1b;stroke-miterlimit:10;stroke-width:6px"/></svg>
|
||||||
|
After Width: | Height: | Size: 819 B |
78
apps/dokploy/templates/photoprism/docker-compose.yml
Normal file
78
apps/dokploy/templates/photoprism/docker-compose.yml
Normal file
@@ -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:
|
||||||
31
apps/dokploy/templates/photoprism/index.ts
Normal file
31
apps/dokploy/templates/photoprism/index.ts
Normal file
@@ -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,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -943,6 +943,21 @@ export const templates: TemplateData[] = [
|
|||||||
load: () => import("./ryot/index").then((m) => m.generate),
|
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),
|
||||||
|
},
|
||||||
|
{
|
||||||
id: "ontime",
|
id: "ontime",
|
||||||
name: "Ontime",
|
name: "Ontime",
|
||||||
version: "v3.8.0",
|
version: "v3.8.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user