PhotoPrism is a self-hosted alternative to Google Photos that organizes local libraries with on-device facial recognition and zero recurring cloud fees.
Michael Mayer and Theresa Gresch launched PhotoPrism in Berlin in 2018 to give photographers a private media catalog matching the machine learning capabilities of cloud giants. Written in Go with an embedded classification pipeline, it delivers automated facial recognition, object tagging, and location mapping on local disks. The platform serves as a personal web library for users who want automated organization without surrendering pictures to corporate servers.
Google Photos pairs cataloging with cloud storage, capping free accounts at fifteen gigabytes before requiring monthly Google One subscriptions. As camera resolution and 4K video produce larger files, family libraries quickly outgrow entry tiers, compounding storage fees year after year. PhotoPrism eliminates recurring storage costs by running on your own hardware. Pointing the software at an internal drive or network share yields terabytes of storage for the one-time price of a disk, insulating households from ongoing subscription fees.
The financial trade-off centers on operations. Google Photos absorbs server upkeep, automated phone backups, and family sharing into its fee. PhotoPrism shifts those tasks to you: you supply the hardware, maintain backups, and configure utilities like PhotoSync or WebDAV for mobile camera uploads. Google Takeout imports are straightforward with metadata sidecar parsing, but background phone synchronization requires setup. While the core software is free on local drives, web-based multi-user accounts and interactive maps require an optional paid membership to support development.
Is PhotoPrism a direct replacement for Google Photos? PhotoPrism replaces Google Photos for browsing, albums, facial recognition, and map views, but lacks native mobile background backup apps and photo editing tools.
Can PhotoPrism run on a Raspberry Pi? Yes, but the maintainers recommend a 64-bit model with at least four gigabytes of RAM and configured swap space to handle image indexing without memory crashes.
Is PhotoPrism free for personal use? The Community Edition is free for personal use on your own hardware, while multi-user web administration and premium map styles require an optional paid membership.
PhotoPrism is the right choice for households wanting to reclaim photo archives from recurring cloud storage fees, provided someone can manage a home server or NAS. Active development through late 2026 and an AGPL-3.0 copyleft license ensure that your private catalog remains auditable and free from cloud lock-in. If your family requires automated mobile uploads without third-party sync apps, hosted commercial services remain easier.
We started this exact setup from scratch in a clean Linux machine on Nov 1, 2026 and checked it through PhotoPrism's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p photoprism && cd photoprism
curl -fsSL https://open-source.store/tools/photoprism/compose.yml -o compose.ymlcat > .env <<EOF
ADMIN_USER=admin
ADMIN_PASSWORD=$(openssl rand -hex 12)
PHOTOPRISM_SITE_URL=http://localhost:2342
DATABASE_PASSWORD=$(openssl rand -hex 12)
DATABASE_ROOT_PASSWORD=$(openssl rand -hex 12)
EOFADMIN_USER — Username of the initial administrator account.ADMIN_PASSWORD — Password of the initial administrator account. Generated above; keep it secret.PHOTOPRISM_SITE_URL — Public URL of the PhotoPrism web interface; set this to your domain or public IP in production.DATABASE_PASSWORD — Password for the photoprism MariaDB user. Generated above; keep it secret.DATABASE_ROOT_PASSWORD — Root password for the MariaDB database. Generated above; keep it secret.docker compose up -dservices:
photoprism:
image: photoprism/photoprism:261029
stop_grace_period: 15s
depends_on:
mariadb:
condition: service_healthy
ports:
- "2342:2342"
environment:
PHOTOPRISM_ADMIN_USER: ${ADMIN_USER}
PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
PHOTOPRISM_AUTH_MODE: "password"
PHOTOPRISM_SITE_URL: ${PHOTOPRISM_SITE_URL}
PHOTOPRISM_DISABLE_TLS: "true"
PHOTOPRISM_DEFAULT_TLS: "false"
PHOTOPRISM_DATABASE_DRIVER: "mysql"
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"
PHOTOPRISM_DATABASE_NAME: "photoprism"
PHOTOPRISM_DATABASE_USER: "photoprism"
PHOTOPRISM_DATABASE_PASSWORD: ${DATABASE_PASSWORD}
volumes:
- photoprism-storage:/photoprism/storage
- photoprism-originals:/photoprism/originals
healthcheck:
test: ["CMD", "photoprism", "status"]
interval: 5s
timeout: 5s
retries: 10
start_period: 20s
mariadb:
image: mariadb:12.3
stop_grace_period: 15s
command: --innodb-buffer-pool-size=512M --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=120
environment:
MARIADB_AUTO_UPGRADE: "1"
MARIADB_INITDB_SKIP_TZINFO: "1"
MARIADB_DATABASE: "photoprism"
MARIADB_USER: "photoprism"
MARIADB_PASSWORD: ${DATABASE_PASSWORD}
MARIADB_ROOT_PASSWORD: ${DATABASE_ROOT_PASSWORD}
volumes:
- photoprism-db-data:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 5s
retries: 10
start_period: 15s
volumes:
photoprism-storage:
photoprism-originals:
photoprism-db-data:
Lint, codegen, breaking-change checks and dependency management in one Git-native CLI. Open source, no registry lock-in.
Show that PhotoPrism is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 351 s: mariadb:12.3, photoprism/photoprism:261029.
Based on the upstream setup. Official compose. Images pinned to 261029; passwords and public site URL moved to .env; optional profiles (ollama, open-webui, watchtower) removed; named volumes used.
mariadb-1 | 2026-11-01T23:01:07.542030924Z 2026-11-01 23:01:07+00:00 [Note] [Entrypoint]: Temporary server started. mariadb-1 | 2026-11-01T23:01:07.548214549Z 2026-11-01 23:01:07+00:00 [Note] [Entrypoint]: Creating database photoprism mariadb-1 | 2026-11-01T23:01:07.549564132Z 2026-11-01 23:01:07+00:00 [Note] [Entrypoint]: Creating user photoprism photoprism-1 | 2026-11-01T23:01:10.391238967Z started 261029 as root (arm64-prod) photoprism-1 | 2026-11-01T23:01:10.398436217Z init: https photoprism-1 | 2026-11-01T23:01:10.401570842Z Creation of a default HTTPS/TLS certificate is skipped because PHOTOPRISM_DEFAULT_TLS is "false". photoprism-1 | 2026-11-01T23:01:10.402659633Z Problems? Our Troubleshooting Checklists help you quickly diagnose and solve them: photoprism-1 | 2026-11-01T23:01:10.402663425Z https://docs.photoprism.app/getting-started/troubleshooting/ photoprism-1 | 2026-11-01T23:01:10.402664550Z file umask....: "0002" (u=rwx,g=rwx,o=rx) photoprism-1 | 2026-11-01T23:01:10.402665633Z home directory: /photoprism photoprism-1 | 2026-11-01T23:01:10.402666425Z assets path...: /opt/photoprism/assets photoprism-1 | 2026-11-01T23:01:10.402667217Z storage path..: /photoprism/storage photoprism-1 | 2026-11-01T23:01:10.402667967Z config path...: default photoprism-1 | 2026-11-01T23:01:10.402668717Z cache path....: default photoprism-1 | 2026-11-01T23:01:10.402669425Z backup path...: /photoprism/storage/backups photoprism-1 | 2026-11-01T23:01:10.402670175Z import path...: /photoprism/import photoprism-1 | 2026-11-01T23:01:10.402670925Z originals path: /photoprism/originals photoprism-1 | 2026-11-01T23:01:10.404308842Z running as uid 0 photoprism-1 | 2026-11-01T23:01:10.404378050Z /opt/photoprism/bin/photoprism start photoprism-1 | 2026-11-01T23:01:11.291173425Z time="2026-11-01T23:01:11Z" level=info msg="config: serial › restore /photoprism/storage/backups/serial › succeeded" photoprism-1 | 2026-11-01T23:01:11.291186259Z time="2026-11-01T23:01:11Z" level=info msg="config: using case-sensitive lookups for storage (detected)" photoprism-1 | 2026-11-01T23:01:11.291188467Z time="2026-11-01T23:01:11Z" level=info msg="config: using case-sensitive lookups for originals (storage)" photoprism-1 | 2026-11-01T23:01:14.570940969Z time="2026-11-01T23:01:14Z" level=info msg="faces: loading yunet on the cpu" photoprism-1 | 2026-11-01T23:01:14.642053427Z time="2026-11-01T23:01:14Z" level=info msg="faces: loading sface on the cpu" photoprism-1 | 2026-11-01T23:01:14.642073260Z time="2026-11-01T23:01:14Z" level=info msg="Become a member today, support our mission and enjoy our member benefits! 💎" photoprism-1 | 2026-11-01T23:01:14.642075719Z time="2026-11-01T23:01:14Z" level=info msg="Visit https://www.photoprism.app/membership/ to learn more." mariadb-1 | 2026-11-01T23:01:07.551463215Z 2026-11-01 23:01:07+00:00 [Note] [Entrypoint]: Giving user photoprism access to schema photoprism mariadb-1 | 2026-11-01T23:01:07.552664299Z 2026-11-01 23:01:07+00:00 [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation) photoprism-1 | 2026-11-01T23:01:14.674777260Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20221015-100000 successful [824.042µs]" mariadb-1 | 2026-11-01T23:01:07.583305257Z mariadb-1 | 2026-11-01T23:01:07.584083840Z 2026-11-01 23:01:07+00:00 [Note] [Entrypoint]: Stopping temporary server mariadb-1 | 2026-11-01T23:01:07.584159049Z 2026-11-01 23:01:07 0 [Note] mariadbd (initiated by: unknown): Normal shutdown mariadb-1 | 2026-11-01T23:01:07.584290924Z 2026-11-01 23:01:07 0 [Note] InnoDB: FTS optimize thread exiting. mariadb-1 | 2026-11-01T23:01:07.589520715Z 2026-11-01 23:01:07 0 [Note] InnoDB: Starting shutdown... mariadb-1 | 2026-11-01T23:01:07.589594632Z 2026-11-01 23:01:07 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool mariadb-1 | 2026-11-01T23:01:07.589726382Z 2026-11-01 23:01:07 0 [Note] InnoDB: Buffer pool(s) dump completed at 261101 23:01:07 mariadb-1 | 2026-11-01T23:01:07.629309382Z 2026-11-01 23:01:07 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1" mariadb-1 | 2026-11-01T23:01:07.629320965Z 2026-11-01 23:01:07 0 [Note] Shutdown completed; log sequence number 45450; transaction id 15 mariadb-1 | 2026-11-01T23:01:07.631289715Z 2026-11-01 23:01:07 0 [Note] mariadbd: Shutdown complete mariadb-1 | 2026-11-01T23:01:07.633714424Z 2026-11-01 23:01:07+00:00 [Note] [Entrypoint]: Temporary server stopped mariadb-1 | 2026-11-01T23:01:07.633718174Z mariadb-1 | 2026-11-01T23:01:07.634205257Z 2026-11-01 23:01:07+00:00 [Note] [Entrypoint]: MariaDB init process done. Ready for start up. mariadb-1 | 2026-11-01T23:01:07.634216132Z mariadb-1 | 2026-11-01T23:01:07.677613965Z 2026-11-01 23:01:07 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid BZ5qNc1FmGPQOjBXGcG1L3pPFNo= as process 1 mariadb-1 | 2026-11-01T23:01:07.685727799Z 2026-11-01 23:01:07 0 [Note] InnoDB: Compressed tables use zlib 1.3 mariadb-1 | 2026-11-01T23:01:07.686348299Z 2026-11-01 23:01:07 0 [Note] InnoDB: Number of transaction pools: 1 photoprism-1 | 2026-11-01T23:01:14.676819385Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20221015-100100 successful [2.065166ms]" photoprism-1 | 2026-11-01T23:01:14.677758135Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20240709-000001 successful [909.083µs]" photoprism-1 | 2026-11-01T23:01:14.678707219Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20250117-000001 successful [921.417µs]" photoprism-1 | 2026-11-01T23:01:14.679483219Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20250315-000001 successful [767.75µs]" photoprism-1 | 2026-11-01T23:01:14.680233552Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20261010-000004 successful [760.167µs]" photoprism-1 | 2026-11-01T23:01:14.853808594Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20211121-094727 successful [802.208µs]" photoprism-1 | 2026-11-01T23:01:14.854528469Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20211124-120008 successful [734.958µs]" photoprism-1 | 2026-11-01T23:01:14.860782260Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-030000 successful [6.247167ms]" photoprism-1 | 2026-11-01T23:01:14.867719510Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-040000 successful [6.930791ms]" photoprism-1 | 2026-11-01T23:01:14.869073635Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-050000 successful [1.345333ms]" photoprism-1 | 2026-11-01T23:01:14.912782260Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-060000 successful [43.6755ms]" photoprism-1 | 2026-11-01T23:01:14.914127010Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-061000 successful [1.34275ms]" photoprism-1 | 2026-11-01T23:01:14.918064135Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-070000 successful [3.895458ms]" photoprism-1 | 2026-11-01T23:01:14.918824177Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-071000 successful [782.417µs]" photoprism-1 | 2026-11-01T23:01:14.924459719Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-080000 successful [5.629584ms]" mariadb-1 | 2026-11-01T23:01:07.686351174Z 2026-11-01 23:01:07 0 [Note] InnoDB: Using ARMv8 crc32 + pmull instructions mariadb-1 | 2026-11-01T23:01:07.686386549Z 2026-11-01 23:01:07 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup). mariadb-1 | 2026-11-01T23:01:07.686443174Z create_uring failed: falling back to libaio mariadb-1 | 2026-11-01T23:01:07.686544674Z 2026-11-01 23:01:07 0 [Note] InnoDB: Using Linux native AIO mariadb-1 | 2026-11-01T23:01:07.686775632Z 2026-11-01 23:01:07 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=512m mariadb-1 | 2026-11-01T23:01:07.687854174Z 2026-11-01 23:01:07 0 [Note] InnoDB: Completed initialization of buffer pool mariadb-1 | 2026-11-01T23:01:07.689185007Z 2026-11-01 23:01:07 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes) mariadb-1 | 2026-11-01T23:01:07.693942590Z 2026-11-01 23:01:07 0 [Note] InnoDB: End of log at LSN=45450 mariadb-1 | 2026-11-01T23:01:07.699433424Z 2026-11-01 23:01:07 0 [Note] InnoDB: Opened 3 undo tablespaces mariadb-1 | 2026-11-01T23:01:07.699437465Z 2026-11-01 23:01:07 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active. mariadb-1 | 2026-11-01T23:01:07.699652715Z 2026-11-01 23:01:07 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ... mariadb-1 | 2026-11-01T23:01:07.699744590Z 2026-11-01 23:01:07 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB. mariadb-1 | 2026-11-01T23:01:07.700203965Z 2026-11-01 23:01:07 0 [Note] InnoDB: log sequence number 45450; transaction id 15 mariadb-1 | 2026-11-01T23:01:07.700313132Z 2026-11-01 23:01:07 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool mariadb-1 | 2026-11-01T23:01:07.700315340Z 2026-11-01 23:01:07 0 [Note] Plugin 'FEEDBACK' is disabled. mariadb-1 | 2026-11-01T23:01:07.700316299Z 2026-11-01 23:01:07 0 [Note] Plugin 'wsrep-provider' is disabled. mariadb-1 | 2026-11-01T23:01:07.700654340Z 2026-11-01 23:01:07 0 [Note] InnoDB: Buffer pool(s) load completed at 261101 23:01:07 mariadb-1 | 2026-11-01T23:01:08.015407590Z 2026-11-01 23:01:08 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'. mariadb-1 | 2026-11-01T23:01:08.015424507Z 2026-11-01 23:01:08 0 [Note] Server socket created on IP: '::', port: '3306'. photoprism-1 | 2026-11-01T23:01:14.926021302Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-081000 successful [1.493375ms]" photoprism-1 | 2026-11-01T23:01:14.927190844Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-083000 successful [1.218416ms]" photoprism-1 | 2026-11-01T23:01:14.933113010Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-090000 successful [5.913166ms]" photoprism-1 | 2026-11-01T23:01:14.934442844Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-091000 successful [1.32825ms]" photoprism-1 | 2026-11-01T23:01:14.935143844Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220329-093000 successful [691.292µs]" photoprism-1 | 2026-11-01T23:01:14.938955302Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220421-200000 successful [3.805834ms]" photoprism-1 | 2026-11-01T23:01:14.942556802Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220521-000001 successful [3.582167ms]" photoprism-1 | 2026-11-01T23:01:14.946817969Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220521-000002 successful [4.239792ms]" photoprism-1 | 2026-11-01T23:01:14.952096010Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220521-000003 successful [5.2445ms]" photoprism-1 | 2026-11-01T23:01:14.956279010Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20220927-000100 successful [4.172917ms]" photoprism-1 | 2026-11-01T23:01:14.957129844Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20221002-000100 successful [847.833µs]" mariadb-1 | 2026-11-01T23:01:08.017364132Z 2026-11-01 23:01:08 0 [Note] mariadbd: Event Scheduler: Loaded 0 events mariadb-1 | 2026-11-01T23:01:08.017801840Z 2026-11-01 23:01:08 0 [Note] mariadbd: ready for connections. mariadb-1 | 2026-11-01T23:01:08.017807590Z Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution photoprism-1 | 2026-11-01T23:01:14.974056885Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20230102-000001 successful [16.866209ms]" photoprism-1 | 2026-11-01T23:01:14.980968844Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20230211-000001 successful [6.944417ms]" photoprism-1 | 2026-11-01T23:01:14.981837552Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20230309-000001 successful [866.375µs]" photoprism-1 | 2026-11-01T23:01:14.982565594Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20230313-000001 successful [719.708µs]" photoprism-1 | 2026-11-01T23:01:14.990165927Z time="2026-11-01T23:01:14Z" level=info msg="migrate: 20240112-000001 successful [7.585792ms]" photoprism-1 | 2026-11-01T23:01:15.001677927Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20240701-000001 successful [11.455042ms]" photoprism-1 | 2026-11-01T23:01:15.007762594Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20240915-000001 successful [6.109459ms]" photoprism-1 | 2026-11-01T23:01:15.008566052Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20241010-000001 successful [790.5µs]" photoprism-1 | 2026-11-01T23:01:15.009432385Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20241202-000001 successful [877.125µs]" photoprism-1 | 2026-11-01T23:01:15.010290552Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20250416-000001 successful [848.167µs]" photoprism-1 | 2026-11-01T23:01:15.011418427Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20251005-000001 successful [1.118083ms]" photoprism-1 | 2026-11-01T23:01:15.012061552Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20251007-000001 successful [631.458µs]" photoprism-1 | 2026-11-01T23:01:15.032894011Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20260601-000001 successful [20.777042ms]" photoprism-1 | 2026-11-01T23:01:15.036280386Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20260602-000001 successful [3.41125ms]" photoprism-1 | 2026-11-01T23:01:15.039547011Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20260612-000001 successful [3.268084ms]" photoprism-1 | 2026-11-01T23:01:15.043392386Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20260721-000001 successful [3.818333ms]" photoprism-1 | 2026-11-01T23:01:15.046610636Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20260721-000002 successful [3.201667ms]" photoprism-1 | 2026-11-01T23:01:15.047362427Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20260828-000001 successful [767.583µs]" photoprism-1 | 2026-11-01T23:01:15.048369594Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20261010-000002 successful [951.917µs]" photoprism-1 | 2026-11-01T23:01:15.048957636Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20261010-000003 successful [597.958µs]" photoprism-1 | 2026-11-01T23:01:15.049622219Z time="2026-11-01T23:01:15Z" level=info msg="migrate: 20261011-000001 successful [643.125µs]" photoprism-1 | 2026-11-01T23:01:15.352673261Z time="2026-11-01T23:01:15Z" level=info msg="server: started as pid 107" photoprism-1 | 2026-11-01T23:01:15.353095469Z time="2026-11-01T23:01:15Z" level=info msg="webdav: shared /originals/" photoprism-1 | 2026-11-01T23:01:15.353127886Z time="2026-11-01T23:01:15Z" level=info msg="webdav: shared /import/" photoprism-1 | 2026-11-01T23:01:15.361085094Z time="2026-11-01T23:01:15Z" level=info msg="server: disabled auto tls" photoprism-1 | 2026-11-01T23:01:15.361206094Z time="2026-11-01T23:01:15Z" level=info msg="server: listening on 0.0.0.0:2342 [8.733291ms]"