diff --git a/apps/photoprism/database/.gitkeep b/apps/photoprism/database/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/apps/photoprism/docker-compose.yml b/apps/photoprism/docker-compose.yml new file mode 100644 index 0000000..c44f4fd --- /dev/null +++ b/apps/photoprism/docker-compose.yml @@ -0,0 +1,49 @@ +version: "3.7" + +services: + web: + # TODO: Update to release tag when photoprism support multiarch images + image: photoprism/photoprism:preview@sha256:7fd6df5b78270d01299c1ce7dd8d4dc4de76540323a7c84f13e39cd48b12eac5 + user: "1000:1000" + restart: on-failure + stop_grace_period: "1m" + ports: + - ${APP_PHOTOPRISM_PORT}:${APP_PHOTOPRISM_PORT} + volumes: + - "${APP_DATA_DIR}/originals:/photoprism/originals" + - "${APP_DATA_DIR}/storage:/photoprism/storage" + environment: + PHOTOPRISM_ADMIN_PASSWORD: "moneyprintergobrrr" + PHOTOPRISM_ORIGINALS_LIMIT: 10000 + PHOTOPRISM_HTTP_COMPRESSION: "gzip" + PHOTOPRISM_HTTP_PORT: "${APP_PHOTOPRISM_PORT}" + PHOTOPRISM_DATABASE_DRIVER: "mysql" + PHOTOPRISM_DATABASE_SERVER: "${APP_PHOTOPRISM_DB_IP}:3306" + PHOTOPRISM_DATABASE_NAME: "photoprism" + PHOTOPRISM_DATABASE_USER: "photoprism" + PHOTOPRISM_DATABASE_PASSWORD: "photoprism" + PHOTOPRISM_SITE_URL: "http://${APP_DOMAIN}:${APP_PHOTOPRISM_PORT}/" + PHOTOPRISM_SITE_TITLE: "PhotoPrism" + PHOTOPRISM_SITE_CAPTION: "Digital Asset Management" + PHOTOPRISM_SITE_DESCRIPTION: "" + PHOTOPRISM_SITE_AUTHOR: "" + networks: + default: + ipv4_address: ${APP_PHOTOPRISM_IP} + + db: + image: mariadb:10.5.8@sha256:8040983db146f729749081c6b216a19d52e0973134e2e34c0b4fd87f48bc15b0 + user: "1000:1000" + restart: on-failure + stop_grace_period: "1m" + command: mysqld --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=50 + volumes: + - "${APP_DATA_DIR}/database:/var/lib/mysql" + environment: + MYSQL_ROOT_PASSWORD: "photoprism" + MYSQL_DATABASE: "photoprism" + MYSQL_USER: "photoprism" + MYSQL_PASSWORD: "photoprism" + networks: + default: + ipv4_address: ${APP_PHOTOPRISM_DB_IP} diff --git a/apps/photoprism/originals/.gitkeep b/apps/photoprism/originals/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/apps/photoprism/storage/.gitkeep b/apps/photoprism/storage/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/apps/registry.json b/apps/registry.json index 7386460..6c5032c 100644 --- a/apps/registry.json +++ b/apps/registry.json @@ -21,6 +21,28 @@ "defaultPassword": "", "torOnly": false }, + { + "id": "photoprism", + "category": "Files", + "name": "PhotoPrism", + "version": "210523-b1856b9d", + "tagline": "Self-host your photo and video library", + "description": "PhotoPrism® is a privately hosted app for browsing, organizing, and sharing your photo collection. It makes use of the latest technologies to tag and find pictures automatically without getting in your way. Say goodbye to solutions that force you to upload your visual memories to the cloud!\n\n- Our intuitive user interface makes browsing and organizing your photo collection as easy as it should be — whether it’s on a phone, tablet, or desktop computer.\n\n- Index everything without worrying about duplicates or RAW to JPEG conversion.\n\n- Automatic image classification based on Google TensorFlow. In addition, our indexer detects colors, chroma, luminance, quality, panoramic projection, location type, and many other properties.\n\n- Includes four high-resolution world maps to see where you've been, and for rediscovering long-forgotten shots.\n\n- WebDAV clients, like Microsoft’s Windows Explorer or Apple's Finder, may connect directly to PhotoPrism so that you to can open, edit, and delete files from your computer or phone as if they were local. You may easily sync your pictures with PhotoSync as well.\n\n- Because PhotoPrism is built as a progressive web app, it provides a native app-like experience, and you may install it on your home screen. There's also a community-maintained native app in development.", + "developer": "PhotoPrism", + "website": "https://photoprism.app", + "dependencies": [], + "repo": "https://github.com/photoprism/photoprism", + "support": "https://gitter.im/browseyourlife/community", + "port": 8087, + "gallery": [ + "1.jpg", + "2.jpg", + "3.jpg" + ], + "path": "", + "defaultPassword": "moneyprintergobrrr", + "torOnly": false + }, { "id": "pi-hole", "category": "Networking", diff --git a/scripts/configure b/scripts/configure index 99c0613..5c1096c 100755 --- a/scripts/configure +++ b/scripts/configure @@ -173,6 +173,9 @@ APP_GITEA_IP="10.21.21.39" APP_GITEA_DB_IP="10.21.21.40" APP_SIMPLETORRENT_PORT="8086" APP_SIMPLETORRENT_IP="10.21.21.41" +APP_PHOTOPRISM_IP="10.21.21.42" +APP_PHOTOPRISM_PORT="8087" +APP_PHOTOPRISM_DB_IP="10.21.21.43" # Generate RPC credentials if [[ -z ${BITCOIN_RPC_USER+x} ]] || [[ -z ${BITCOIN_RPC_PASS+x} ]] || [[ -z ${BITCOIN_RPC_AUTH+x} ]]; then @@ -351,6 +354,9 @@ for template in "${NGINX_CONF_FILE}" "${BITCOIN_CONF_FILE}" "${LND_CONF_FILE}" " sed -i "s//${APP_GITEA_DB_IP}/g" "${template}" sed -i "s//${APP_SIMPLETORRENT_PORT}/g" "${template}" sed -i "s//${APP_SIMPLETORRENT_IP}/g" "${template}" + sed -i "s//${APP_PHOTOPRISM_IP}/g" "${template}" + sed -i "s//${APP_PHOTOPRISM_PORT}/g" "${template}" + sed -i "s//${APP_PHOTOPRISM_DB_IP}/g" "${template}" done ########################################################## diff --git a/templates/.env-sample b/templates/.env-sample index 96d0318..be14adc 100644 --- a/templates/.env-sample +++ b/templates/.env-sample @@ -76,3 +76,6 @@ APP_GITEA_IP= APP_GITEA_DB_IP= APP_SIMPLETORRENT_PORT= APP_SIMPLETORRENT_IP= +APP_PHOTOPRISM_IP= +APP_PHOTOPRISM_PORT= +APP_PHOTOPRISM_DB_IP= diff --git a/templates/torrc-sample b/templates/torrc-sample index 988b709..7f3161a 100644 --- a/templates/torrc-sample +++ b/templates/torrc-sample @@ -68,6 +68,11 @@ HiddenServicePort 80 : # lnbits Hidden Service HiddenServiceDir /var/lib/tor/app-lnbits HiddenServicePort 80 : + +# photoprism Hidden Service +HiddenServiceDir /var/lib/tor/app-photoprism +HiddenServicePort 80 : + # mempool Hidden Service HiddenServiceDir /var/lib/tor/app-mempool HiddenServicePort 80 :