diff --git a/apps/photoprism/230719/.env.sample b/apps/photoprism/230719/.env.sample new file mode 100644 index 00000000..9b603989 --- /dev/null +++ b/apps/photoprism/230719/.env.sample @@ -0,0 +1,16 @@ +CONTAINER_NAME="photoprism" +PHOTOPRISM_EXTERNAL_URL="http://localhost:40101/" +ADMIN_PASSWORD="password" +ADMIN_USER="admin" +DATA_PATH="./data" +GID="1000" +UID="1000" +PANEL_APP_PORT_HTTP="40101" +PANEL_DB_HOST="mariadb" +PANEL_DB_NAME="photoprism" +PANEL_DB_USER="photoprism" +PANEL_DB_USER_PASSWORD="photoprism_rCMTjY" +PHOTOPRISM_DB_PORT="3306" +SITE_AUTHOR="" +SITE_DESCRIPTION="" +SITE_CAPTION="AI-Powered Photos App" diff --git a/apps/photoprism/230719/data.yml b/apps/photoprism/230719/data.yml new file mode 100644 index 00000000..305d984f --- /dev/null +++ b/apps/photoprism/230719/data.yml @@ -0,0 +1,107 @@ +additionalProperties: + formFields: + - default: "" + edit: true + envKey: PANEL_DB_HOST + key: mariadb + labelEn: MariaDB Database Service + labelZh: MariaDB数据库服务 + required: true + type: service + - default: "3306" + edit: true + envKey: PHOTOPRISM_DB_PORT + labelEn: MariaDB Database Service Port + labelZh: MariaDB数据库服务端口 + required: true + rule: paramPort + type: number + - default: photoprism + envKey: PANEL_DB_USER + labelEn: User + labelZh: 数据库用户 + random: true + required: true + rule: paramCommon + type: text + - default: photoprism + envKey: PANEL_DB_USER_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: 40101 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: ./data + edit: true + envKey: DATA_PATH + labelEn: Data folder path + labelZh: 数据文件夹路径 + required: true + type: text + - default: 1000 + edit: true + envKey: UID + labelEn: UID + labelZh: UID + required: true + type: number + - default: 1000 + edit: true + envKey: GID + labelEn: GID + labelZh: GID + required: true + type: number + - default: admin + edit: true + envKey: ADMIN_USER + labelEn: Admin user + labelZh: 管理员用户名 + required: true + type: text + - default: photoprism + edit: true + envKey: ADMIN_PASSWORD + labelEn: Admin Password + labelZh: 管理员密码 + random: false + required: true + rule: paramComplexity + type: password + - default: http://localhost:40101/ + edit: true + envKey: PHOTOPRISM_EXTERNAL_URL + labelEn: External URL + labelZh: 外部访问地址 + required: true + type: text + - default: "" + edit: true + envKey: SITE_DESCRIPTION + labelEn: Site description + labelZh: 网站描述 + required: false + type: text + - default: "" + edit: true + envKey: SITE_AUTHOR + labelEn: Site description + labelZh: 网站作者 + required: false + type: text + - default: "AI-Powered Photos App" + edit: true + envKey: SITE_CAPTION + labelEn: Site caption + labelZh: 网站标题 + required: false + type: text \ No newline at end of file diff --git a/apps/photoprism/230719/docker-compose.yml b/apps/photoprism/230719/docker-compose.yml new file mode 100644 index 00000000..abc78d06 --- /dev/null +++ b/apps/photoprism/230719/docker-compose.yml @@ -0,0 +1,81 @@ +version: '3' +services: + photoprism: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:2342" + volumes: + # "/host/folder:/photoprism/folder" # Example + - "${DATA_PATH}/Pictures:/photoprism/originals" # Original media files (DO NOT REMOVE) + # - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this + # - "~/Import:/photoprism/import" # *Optional* base folder from which files can be imported to originals + - "${DATA_PATH}/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) + environment: + PHOTOPRISM_ADMIN_USER: ${ADMIN_USER} # admin login username + PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD} # initial admin password (8-72 characters) + PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) + PHOTOPRISM_SITE_URL: ${PHOTOPRISM_EXTERNAL_URL} # server URL in the format "http(s)://domain.name(:port)/(path)" + PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available + PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available + PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) + PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) + PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic + PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) + PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features + PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup + PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server + PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API + PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow + PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) + PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) + PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support + PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images + PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance) + PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) + PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) + PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) + # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server + PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance + PHOTOPRISM_DATABASE_SERVER: ${PANEL_DB_HOST}:${PHOTOPRISM_DB_PORT} # MariaDB or MySQL database server (hostname:port) + PHOTOPRISM_DATABASE_NAME: ${PANEL_DB_NAME} # MariaDB or MySQL database schema name + PHOTOPRISM_DATABASE_USER: ${PANEL_DB_USER} # MariaDB or MySQL database user name + PHOTOPRISM_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD} # MariaDB or MySQL database user password + PHOTOPRISM_SITE_CAPTION: ${SITE_CAPTION} + PHOTOPRISM_SITE_DESCRIPTION: ${SITE_DESCRIPTION} # meta site description + PHOTOPRISM_SITE_AUTHOR: ${SITE_AUTHOR} # meta site author + ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/): + # PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) + # PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) + # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50) + ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean): + # PHOTOPRISM_INIT: "https gpu tensorflow" + ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): + PHOTOPRISM_UID: ${UID:-1000} + PHOTOPRISM_GID: ${GID:-1000} + # PHOTOPRISM_UMASK: 0000 + ## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): + # user: "1000:1000" + ## Share hardware devices with FFmpeg and TensorFlow (optional): + # devices: + # - "/dev/dri:/dev/dri" # Intel QSV + # - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA + # - "/dev/nvidiactl:/dev/nvidiactl" + # - "/dev/nvidia-modeset:/dev/nvidia-modeset" + # - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl" + # - "/dev/nvidia-uvm:/dev/nvidia-uvm" + # - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools" + # - "/dev/video11:/dev/video11" # Video4Linux Video Encode Device (h264_v4l2m2m) + working_dir: "/photoprism" # do not change or remove + security_opt: + - seccomp:unconfined + - apparmor:unconfined + image: photoprism/photoprism:230719 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/photoprism/README.md b/apps/photoprism/README.md new file mode 100644 index 00000000..4406ef0d --- /dev/null +++ b/apps/photoprism/README.md @@ -0,0 +1,119 @@ +PhotoPrism: Browse Your Life in Pictures +======================================== + +[![License: AGPL](https://img.shields.io/badge/license-AGPL-blue.svg)](https://docs.photoprism.app/license/agpl/) +[![GitHub contributors](https://img.shields.io/github/contributors/photoprism/photoprism.svg)](https://www.photoprism.app/about/team) +[![Documentation](https://img.shields.io/badge/read-the%20docs-4aa087.svg)](https://docs.photoprism.app/) +[![Community Chat](https://img.shields.io/badge/chat-on%20gitter-4aa087.svg)](https://link.photoprism.app/chat) +[![GitHub Discussions](https://img.shields.io/badge/ask-%20on%20github-4d6a91.svg)](https://link.photoprism.app/discussions) +[![Mastodon](https://dl.photoprism.app/img/badges/badge-mastodon.svg)](https://floss.social/@photoprism) +[![Twitter](https://dl.photoprism.app/img/badges/badge-twitter.svg)](https://link.photoprism.app/twitter) + +PhotoPrism® is an AI-Powered Photos App for the [Decentralized Web](https://en.wikipedia.org/wiki/Decentralized_web). +It makes use of the latest technologies to tag and find pictures automatically without getting in your way. +You can run it at home, on a private server, or in the cloud. + +![](https://dl.photoprism.app/img/ui/desktop-1000px.jpg) + +To get a first impression, you are welcome to play with our [public demo](https://try.photoprism.app/). Be careful not to upload any private pictures. + +## Feature Overview ## + +**Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible.** That's why PhotoPrism was built from the ground up to run wherever you need it, without compromising freedom, privacy, or functionality: + +* Browse [all your photos](https://docs.photoprism.app/user-guide/organize/browse/) and [videos](https://try.photoprism.app/library/videos) without worrying about [RAW conversion, duplicates or video formats](https://docs.photoprism.app/user-guide/settings/library/) +* Easily find specific pictures using [powerful search filters](https://try.photoprism.app/library/browse?view=cards&q=flower%20color%3Ared) +* Recognizes [the faces of your family and friends](https://try.photoprism.app/library/people) +* [Automatic classification](https://try.photoprism.app/library/labels) of pictures based on their content and location +* [Play Live Photos](https://try.photoprism.app/library/live) by hovering over them in [albums](https://try.photoprism.app/library/albums) and [search results](https://try.photoprism.app/library/browse?view=cards&q=type%3Alive) +* Since the [User Interface](https://try.photoprism.app/) is a [Progressive Web App](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps), + it provides a native app-like experience, and you can conveniently install it on the home screen of all major operating systems and mobile devices +* Includes four high-resolution [World Maps](https://try.photoprism.app/library/places) to bring back the memories of your favorite trips +* Metadata is extracted and merged from Exif, XMP, and other sources such as Google Photos +* Many more image properties like [Colors](https://try.photoprism.app/library/browse?view=cards&q=color:red), [Chroma](https://try.photoprism.app/library/browse?view=cards&q=mono%3Atrue), and [Quality](https://try.photoprism.app/library/review) can be searched as well +* Use [PhotoSync](https://link.photoprism.app/photosync) to securely backup iOS and Android phones in the background +* WebDAV clients such as Microsoft's Windows Explorer and Apple's Finder [can connect directly](https://docs.photoprism.app/user-guide/sync/webdav/) to PhotoPrism, allowing you to open, edit, and delete files from your computer as if they were local + +Being completely [**self-funded and independent**](https://link.photoprism.app/membership), we can promise you that we will [never sell your data](https://www.photoprism.app/privacy) and that we will [always be transparent](https://www.photoprism.app/terms) about our software and services. Your data will never be shared with Google, Amazon, Microsoft or Apple unless you intentionally upload files to one of their services. 🔒 + +## Getting Started ## + + +Step-by-step installation instructions for our self-hosted [community edition](https://www.photoprism.app/get) can be found +on [docs.photoprism.app](https://docs.photoprism.app/getting-started/) - +all you need is a Web browser and [Docker](https://docs.docker.com/get-docker/) to run the server. +It is available for Mac, Linux, and Windows. + +The [stable version](https://docs.photoprism.app/release-notes/) and development +preview have been built into a single [multi-arch image](https://link.photoprism.app/docker-hub) for 64-bit AMD, Intel, +and ARM processors. That means, [Raspberry Pi](https://docs.photoprism.app/getting-started/raspberry-pi/) 3 / 4 owners can pull +from the same repository, enjoy the exact same functionality, and can follow the regular +[installation instructions](https://docs.photoprism.app/getting-started/docker-compose/) +after going through a short list of [requirements](https://docs.photoprism.app/getting-started/raspberry-pi/). + +Existing users are advised to update their `docker-compose.yml` config based on our examples +available at [dl.photoprism.app/docker](https://dl.photoprism.app/docker/). + +## Support Our Mission 💎 ## + +**PhotoPrism is 100% self-funded and independent.** Your [continued support](https://link.photoprism.app/membership) helps us [provide more features to the public](https://www.photoprism.app/oss/faq#what-functionality-is-generally-available), release [regular updates](https://docs.photoprism.app/release-notes/), and remain independent! + +Our members [enjoy additional features](https://www.photoprism.app/kb/personal), including access to [interactive world maps](https://try.photoprism.app/library/places), and can join our private chat room to [connect with our team](https://www.photoprism.app/about/team). We currently have the following membership options: + +- You can [sign up directly on our website](https://link.photoprism.app/membership) and pay with credit card or SEPA through Stripe, so you don't need to [link an external account](https://www.photoprism.app/kb/activation) and can easily upgrade or downgrade at any time +- Alternatively, [Patreon](https://link.photoprism.app/patreon) also supports PayPal, additional currencies, and lets you choose between monthly and annual billing for all tiers + +If you currently support us through [GitHub Sponsors](https://link.photoprism.app/sponsor), you can also [register on our website](https://my.photoprism.app/register) and use the *Activate GitHub Sponsors Membership* button to link your account. For details on this and how to [link your Patreon account](https://www.patreon.com/pledges), see our [Activation Guide](https://www.photoprism.app/kb/activation). + +You are [welcome to contact us](https://www.photoprism.app/contact) for change requests, membership questions, and business partnerships. + +[View Membership FAQ ›](https://www.photoprism.app/kb/membership) [Sign Up ›](https://link.photoprism.app/membership) + +### Why Your Support Matters ### + +- Your continued support helps us provide regular updates and remain independent, so we can fulfill our mission and protect your privacy +- Sustained funding is key to quickly releasing new features requested by you and other community members +- Being self-funded and independent, we can personally promise you that we will never sell your data and that we will always be transparent about our software and services + +Please also leave [a star](https://github.com/photoprism/photoprism/stargazers) on GitHub if you like this project. It provides additional motivation to keep going. + +**A big thank you to all current and past sponsors, whose generous support has been and continues to be essential to the success of the project!** + +[View Sponsors ›](https://github.com/photoprism/photoprism/blob/develop/SPONSORS.md) [View Credits ›](https://docs.photoprism.app/credits/) + +## Getting Support ## + +Visit [docs.photoprism.app/user-guide](https://docs.photoprism.app/user-guide/) to learn how to [sync](https://docs.photoprism.app/user-guide/sync/webdav/), [organize](https://docs.photoprism.app/user-guide/library/), and [share](https://docs.photoprism.app/user-guide/share/) your pictures. If you need help installing our software at home, you are welcome to post your question in [GitHub Discussions](https://link.photoprism.app/discussions) or ask in our [Community Chat](https://link.photoprism.app/chat). +Common problems can be quickly diagnosed and solved using our [Troubleshooting Checklists](https://docs.photoprism.app/getting-started/troubleshooting/). Eligible [members](https://link.photoprism.app/membership) are also welcome to email us for technical support and advice. + +## Upcoming Features and Enhancements ## + +Our [Project Roadmap](https://link.photoprism.app/roadmap) shows what tasks are in progress and what features will be implemented next. You are invited to give ideas you like a thumbs-up, so we know what's most popular. + +Be aware that we have a zero-bug policy and do our best to help users when they need support or have other questions. This comes at a price though, as we can't give exact release dates for new features. Our team receives many more requests than can be implemented, so we want to emphasize that we are in no way obligated to implement the features, enhancements, or other changes you request. We do, however, appreciate your feedback and carefully consider all requests. + +**Because sustained funding is key to quickly releasing new features, we encourage you to support our mission by [signing up as a sponsor](https://link.photoprism.app/sponsor) or purchasing a [commercial license](https://www.photoprism.app/teams). Ultimately, that's what's best for the product and the community.** + +## GitHub Issues ⚠️ ## + +We kindly ask you not to report bugs via GitHub Issues **unless you are certain to have found a fully reproducible and previously unreported issue** that must be fixed directly in the app. Thank you for your careful consideration! + +- When reporting a problem, always include the software versions you are using and other information about your environment such as [browser, browser plugins](https://docs.photoprism.app/getting-started/troubleshooting/browsers/), operating system, [storage type](https://docs.photoprism.app/getting-started/troubleshooting/performance/#storage), [memory size](https://docs.photoprism.app/getting-started/troubleshooting/performance/#memory), and [processor](https://docs.photoprism.app/getting-started/troubleshooting/performance/#server-cpu) +- Note that all issue **subscribers receive an email notification** from GitHub whenever a new comment is added, so these should only be used for sharing important information and not for discussions, questions or expressing personal opinions +- [Contact us](https://www.photoprism.app/contact) or [a community member](https://link.photoprism.app/discussions) if you need help, it could be a local configuration problem, or a misunderstanding in how the software works +- This gives our team the opportunity to [improve the docs](https://docs.photoprism.app/getting-started/troubleshooting/) and provide best-in-class support to you, instead of handling unclear/duplicate bug reports or triggering a flood of notifications by responding to comments + +## Connect with the Community ## + +Follow us on [Twitter](https://link.photoprism.app/twitter) and join the [Community Chat](https://link.photoprism.app/chat) +to get regular updates, connect with other users, and discuss your ideas. Our [Code of Conduct](https://www.photoprism.app/code-of-conduct) explains the "dos and don’ts" when interacting with other community members. + +Feel free to contact us at [hello@photoprism.app](mailto:hello@photoprism.app) with anything that is on your mind. We appreciate your feedback! Due to the high volume of emails we receive, our team may be unable to get back to you immediately. We do our best to respond within five business days or less. + +## Every Contribution Makes a Difference ## + +We welcome [contributions](https://github.com/photoprism/photoprism/blob/develop/CONTRIBUTING.md) of any kind, including blog posts, tutorials, testing, writing documentation, and pull requests. Our [Developer Guide](https://docs.photoprism.app/developer-guide/) contains all the information necessary for you to get started. + +---- + +*PhotoPrism® is a [registered trademark](https://www.photoprism.app/trademark). By using the software and services we provide, you agree to our [Terms of Service](https://www.photoprism.app/terms), [Privacy Policy](https://www.photoprism.app/privacy), and [Code of Conduct](https://www.photoprism.app/code-of-conduct). Docs are [available](https://link.photoprism.app/github-docs) under the [CC BY-NC-SA 4.0 License](https://creativecommons.org/licenses/by-nc-sa/4.0/); [additional terms](https://github.com/photoprism/photoprism/blob/develop/assets/README.md) may apply.* diff --git a/apps/photoprism/data.yml b/apps/photoprism/data.yml new file mode 100644 index 00000000..15f59f28 --- /dev/null +++ b/apps/photoprism/data.yml @@ -0,0 +1,20 @@ +name: PhotoPrism +tags: + - 工具 +title: 去中心化网络的人工智能照片应用程序 +type: 工具 +description: 去中心化网络的人工智能照片应用程序 +additionalProperties: + key: photoprism + name: PhotoPrism + tags: + - Tool + shortDescZh: 去中心化网络的人工智能照片应用程序 + shortDescEn: AI-Powered Photos App for the Decentralized Web + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.photoprism.app + github: https://github.com/photoprism/photoprism + document: https://docs.photoprism.app diff --git a/apps/photoprism/latest/.env.sample b/apps/photoprism/latest/.env.sample new file mode 100644 index 00000000..9b603989 --- /dev/null +++ b/apps/photoprism/latest/.env.sample @@ -0,0 +1,16 @@ +CONTAINER_NAME="photoprism" +PHOTOPRISM_EXTERNAL_URL="http://localhost:40101/" +ADMIN_PASSWORD="password" +ADMIN_USER="admin" +DATA_PATH="./data" +GID="1000" +UID="1000" +PANEL_APP_PORT_HTTP="40101" +PANEL_DB_HOST="mariadb" +PANEL_DB_NAME="photoprism" +PANEL_DB_USER="photoprism" +PANEL_DB_USER_PASSWORD="photoprism_rCMTjY" +PHOTOPRISM_DB_PORT="3306" +SITE_AUTHOR="" +SITE_DESCRIPTION="" +SITE_CAPTION="AI-Powered Photos App" diff --git a/apps/photoprism/latest/data.yml b/apps/photoprism/latest/data.yml new file mode 100644 index 00000000..305d984f --- /dev/null +++ b/apps/photoprism/latest/data.yml @@ -0,0 +1,107 @@ +additionalProperties: + formFields: + - default: "" + edit: true + envKey: PANEL_DB_HOST + key: mariadb + labelEn: MariaDB Database Service + labelZh: MariaDB数据库服务 + required: true + type: service + - default: "3306" + edit: true + envKey: PHOTOPRISM_DB_PORT + labelEn: MariaDB Database Service Port + labelZh: MariaDB数据库服务端口 + required: true + rule: paramPort + type: number + - default: photoprism + envKey: PANEL_DB_USER + labelEn: User + labelZh: 数据库用户 + random: true + required: true + rule: paramCommon + type: text + - default: photoprism + envKey: PANEL_DB_USER_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: 40101 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: ./data + edit: true + envKey: DATA_PATH + labelEn: Data folder path + labelZh: 数据文件夹路径 + required: true + type: text + - default: 1000 + edit: true + envKey: UID + labelEn: UID + labelZh: UID + required: true + type: number + - default: 1000 + edit: true + envKey: GID + labelEn: GID + labelZh: GID + required: true + type: number + - default: admin + edit: true + envKey: ADMIN_USER + labelEn: Admin user + labelZh: 管理员用户名 + required: true + type: text + - default: photoprism + edit: true + envKey: ADMIN_PASSWORD + labelEn: Admin Password + labelZh: 管理员密码 + random: false + required: true + rule: paramComplexity + type: password + - default: http://localhost:40101/ + edit: true + envKey: PHOTOPRISM_EXTERNAL_URL + labelEn: External URL + labelZh: 外部访问地址 + required: true + type: text + - default: "" + edit: true + envKey: SITE_DESCRIPTION + labelEn: Site description + labelZh: 网站描述 + required: false + type: text + - default: "" + edit: true + envKey: SITE_AUTHOR + labelEn: Site description + labelZh: 网站作者 + required: false + type: text + - default: "AI-Powered Photos App" + edit: true + envKey: SITE_CAPTION + labelEn: Site caption + labelZh: 网站标题 + required: false + type: text \ No newline at end of file diff --git a/apps/photoprism/latest/docker-compose.yml b/apps/photoprism/latest/docker-compose.yml new file mode 100644 index 00000000..0dd2ab75 --- /dev/null +++ b/apps/photoprism/latest/docker-compose.yml @@ -0,0 +1,81 @@ +version: '3' +services: + photoprism: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:2342" + volumes: + # "/host/folder:/photoprism/folder" # Example + - "${DATA_PATH}/Pictures:/photoprism/originals" # Original media files (DO NOT REMOVE) + # - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this + # - "~/Import:/photoprism/import" # *Optional* base folder from which files can be imported to originals + - "${DATA_PATH}/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) + environment: + PHOTOPRISM_ADMIN_USER: ${ADMIN_USER} # admin login username + PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD} # initial admin password (8-72 characters) + PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) + PHOTOPRISM_SITE_URL: ${PHOTOPRISM_EXTERNAL_URL} # server URL in the format "http(s)://domain.name(:port)/(path)" + PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available + PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available + PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) + PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) + PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic + PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) + PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features + PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup + PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server + PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API + PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow + PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) + PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) + PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support + PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images + PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance) + PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) + PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) + PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) + # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server + PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance + PHOTOPRISM_DATABASE_SERVER: ${PANEL_DB_HOST}:${PHOTOPRISM_DB_PORT} # MariaDB or MySQL database server (hostname:port) + PHOTOPRISM_DATABASE_NAME: ${PANEL_DB_NAME} # MariaDB or MySQL database schema name + PHOTOPRISM_DATABASE_USER: ${PANEL_DB_USER} # MariaDB or MySQL database user name + PHOTOPRISM_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD} # MariaDB or MySQL database user password + PHOTOPRISM_SITE_CAPTION: ${SITE_CAPTION} + PHOTOPRISM_SITE_DESCRIPTION: ${SITE_DESCRIPTION} # meta site description + PHOTOPRISM_SITE_AUTHOR: ${SITE_AUTHOR} # meta site author + ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/): + # PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) + # PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) + # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50) + ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean): + # PHOTOPRISM_INIT: "https gpu tensorflow" + ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): + PHOTOPRISM_UID: ${UID:-1000} + PHOTOPRISM_GID: ${GID:-1000} + # PHOTOPRISM_UMASK: 0000 + ## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): + # user: "1000:1000" + ## Share hardware devices with FFmpeg and TensorFlow (optional): + # devices: + # - "/dev/dri:/dev/dri" # Intel QSV + # - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA + # - "/dev/nvidiactl:/dev/nvidiactl" + # - "/dev/nvidia-modeset:/dev/nvidia-modeset" + # - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl" + # - "/dev/nvidia-uvm:/dev/nvidia-uvm" + # - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools" + # - "/dev/video11:/dev/video11" # Video4Linux Video Encode Device (h264_v4l2m2m) + working_dir: "/photoprism" # do not change or remove + security_opt: + - seccomp:unconfined + - apparmor:unconfined + image: photoprism/photoprism:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/photoprism/logo.png b/apps/photoprism/logo.png new file mode 100644 index 00000000..1bca303a Binary files /dev/null and b/apps/photoprism/logo.png differ diff --git a/apps/photoprism/sqlite-latest/.env.sample b/apps/photoprism/sqlite-latest/.env.sample new file mode 100644 index 00000000..e4c4d28a --- /dev/null +++ b/apps/photoprism/sqlite-latest/.env.sample @@ -0,0 +1,16 @@ +CONTAINER_NAME="photoprism" +PHOTOPRISM_EXTERNAL_URL="http://localhost:40101" +ADMIN_PASSWORD="password" +ADMIN_USER="admin" +DATA_PATH="./data" +GID="1000" +UID="1000" +PANEL_APP_PORT_HTTP="40101" +#PANEL_DB_HOST="mariadb" +#PANEL_DB_NAME="photoprism" +#PANEL_DB_USER="photoprism" +#PANEL_DB_USER_PASSWORD="photoprism_rCMTjY" +#PHOTOPRISM_DB_PORT="3306" +SITE_AUTHOR="" +SITE_DESCRIPTION="" +SITE_CAPTION="AI-Powered Photos App" diff --git a/apps/photoprism/sqlite-latest/data.yml b/apps/photoprism/sqlite-latest/data.yml new file mode 100644 index 00000000..44129a86 --- /dev/null +++ b/apps/photoprism/sqlite-latest/data.yml @@ -0,0 +1,107 @@ +additionalProperties: + formFields: + #- default: "" + # edit: true + # envKey: PANEL_DB_HOST + # key: mariadb + # labelEn: MariaDB Database Service + # labelZh: MariaDB数据库服务 + # required: true + # type: service + #- default: "3306" + # edit: true + # envKey: PHOTOPRISM_DB_PORT + # labelEn: MariaDB Database Service Port + # labelZh: MariaDB数据库服务端口 + # required: true + # rule: paramPort + # type: number + #- default: photoprism + # envKey: PANEL_DB_USER + # labelEn: User + # labelZh: 数据库用户 + # random: true + # required: true + # rule: paramCommon + # type: text + #- default: photoprism + # envKey: PANEL_DB_USER_PASSWORD + # labelEn: Password + # labelZh: 数据库用户密码 + # random: true + # required: true + # rule: paramComplexity + # type: password + - default: 40101 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: ./data + edit: true + envKey: DATA_PATH + labelEn: Data folder path + labelZh: 数据文件夹路径 + required: true + type: text + - default: 1000 + edit: true + envKey: UID + labelEn: UID + labelZh: UID + required: true + type: number + - default: 1000 + edit: true + envKey: GID + labelEn: GID + labelZh: GID + required: true + type: number + - default: admin + edit: true + envKey: ADMIN_USER + labelEn: Admin user + labelZh: 管理员用户名 + required: true + type: text + - default: photoprism + edit: true + envKey: ADMIN_PASSWORD + labelEn: Admin Password + labelZh: 管理员密码 + random: false + required: true + rule: paramComplexity + type: password + - default: http://localhost:40101/ + edit: true + envKey: PHOTOPRISM_EXTERNAL_URL + labelEn: External URL + labelZh: 外部访问地址 + required: true + type: text + - default: "" + edit: true + envKey: SITE_DESCRIPTION + labelEn: Site description + labelZh: 网站描述 + required: false + type: text + - default: "" + edit: true + envKey: SITE_AUTHOR + labelEn: Site description + labelZh: 网站作者 + required: false + type: text + - default: "AI-Powered Photos App" + edit: true + envKey: SITE_CAPTION + labelEn: Site caption + labelZh: 网站标题 + required: false + type: text \ No newline at end of file diff --git a/apps/photoprism/sqlite-latest/docker-compose.yml b/apps/photoprism/sqlite-latest/docker-compose.yml new file mode 100644 index 00000000..54b5bd8c --- /dev/null +++ b/apps/photoprism/sqlite-latest/docker-compose.yml @@ -0,0 +1,81 @@ +version: '3' +services: + photoprism: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:2342" + volumes: + # "/host/folder:/photoprism/folder" # Example + - "${DATA_PATH}/Pictures:/photoprism/originals" # Original media files (DO NOT REMOVE) + # - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this + # - "~/Import:/photoprism/import" # *Optional* base folder from which files can be imported to originals + - "${DATA_PATH}/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) + environment: + PHOTOPRISM_ADMIN_USER: ${ADMIN_USER} # admin login username + PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD} # initial admin password (8-72 characters) + PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) + PHOTOPRISM_SITE_URL: ${PHOTOPRISM_EXTERNAL_URL} # server URL in the format "http(s)://domain.name(:port)/(path)" + PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available + PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available + PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) + PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) + PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic + PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) + PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features + PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup + PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server + PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API + PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow + PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) + PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) + PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support + PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images + PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance) + PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) + PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) + PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) + PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server + #PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance + #PHOTOPRISM_DATABASE_SERVER: ${PANEL_DB_HOST}:${PHOTOPRISM_DB_PORT} # MariaDB or MySQL database server (hostname:port) + #PHOTOPRISM_DATABASE_NAME: ${PANEL_DB_NAME} # MariaDB or MySQL database schema name + #PHOTOPRISM_DATABASE_USER: ${PANEL_DB_USER} # MariaDB or MySQL database user name + #PHOTOPRISM_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD} # MariaDB or MySQL database user password + PHOTOPRISM_SITE_CAPTION: ${SITE_CAPTION} + PHOTOPRISM_SITE_DESCRIPTION: ${SITE_DESCRIPTION} # meta site description + PHOTOPRISM_SITE_AUTHOR: ${SITE_AUTHOR} # meta site author + ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/): + # PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) + # PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) + # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50) + ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean): + # PHOTOPRISM_INIT: "https gpu tensorflow" + ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): + PHOTOPRISM_UID: ${UID:-1000} + PHOTOPRISM_GID: ${GID:-1000} + # PHOTOPRISM_UMASK: 0000 + ## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): + # user: "1000:1000" + ## Share hardware devices with FFmpeg and TensorFlow (optional): + # devices: + # - "/dev/dri:/dev/dri" # Intel QSV + # - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA + # - "/dev/nvidiactl:/dev/nvidiactl" + # - "/dev/nvidia-modeset:/dev/nvidia-modeset" + # - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl" + # - "/dev/nvidia-uvm:/dev/nvidia-uvm" + # - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools" + # - "/dev/video11:/dev/video11" # Video4Linux Video Encode Device (h264_v4l2m2m) + working_dir: "/photoprism" # do not change or remove + security_opt: + - seccomp:unconfined + - apparmor:unconfined + image: photoprism/photoprism:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/photoview/2.3.13/data.yml b/apps/photoview/2.3.13/data.yml index 75014b22..5ee95814 100644 --- a/apps/photoview/2.3.13/data.yml +++ b/apps/photoview/2.3.13/data.yml @@ -55,8 +55,8 @@ additionalProperties: - default: ./data/photos edit: true envKey: DATA_PATH - labelEn: Photos folder path - labelZh: 照片文件夹路径 + labelEn: Photos folder path (Inside the container "/photos") + labelZh: 照片文件夹路径(容器内部"/photos") required: true type: text - default: ./data/cache diff --git a/apps/photoview/latest/data.yml b/apps/photoview/latest/data.yml index 75014b22..5ee95814 100644 --- a/apps/photoview/latest/data.yml +++ b/apps/photoview/latest/data.yml @@ -55,8 +55,8 @@ additionalProperties: - default: ./data/photos edit: true envKey: DATA_PATH - labelEn: Photos folder path - labelZh: 照片文件夹路径 + labelEn: Photos folder path (Inside the container "/photos") + labelZh: 照片文件夹路径(容器内部"/photos") required: true type: text - default: ./data/cache