Unable to login 'invalid credentials' | 'Admin account is not allowed to log in' #1601

Closed
opened 2026-02-20 00:16:41 -05:00 by deekerman · 1 comment
Owner

Originally created by @StotoV on GitHub (Nov 7, 2022).

1. What is not working as documented?

When trying to login to my Photoprism instance I got the message 'invalid credentials' back from the UI. After some Googling and debugging I found the following message in the Docker logs:

photoprism    | time="2022-11-07T10:06:41Z" level=warning msg="users: Admin account is not allowed to log in"

I've no idea where this error originates, hence me opening this issue.

What I've checked:

  • Database connection, seems to work and I can connect from my host system to the database
  • File permissions. Set all files in storage to 777 and I run the containers as root
  • Running without login enabled. When I do this I get 403 errors on all requests.

2. How can we reproduce it?

As this error suddenly popped up after not logging in for some time I am unsure how to reproduce it.

3. What behavior do you expect?

Being able to log in.

4. What could be the cause of your problem?

Some option being set wrongly?
File permissions?
Logic error?

5. Can you provide us with example files for testing, error logs, or screenshots?

Complete logs of docker-compose up:

Starting mariadb_photoprism    ... done
Starting watchtower_photoprism ... done
Recreating photoprism          ... done
Attaching to mariadb_photoprism, watchtower_photoprism, photoprism
mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.5.17+maria~ubu2004 started.
photoprism    | started 221105 as root (amd64-prod)
photoprism    | Problems? Our Troubleshooting Checklists help you quickly diagnose and solve them:
photoprism    | https://docs.photoprism.app/getting-started/troubleshooting/
photoprism    | file umask....: "0002" (u=rwx,g=rwx,o=rx)
photoprism    | home directory: /photoprism
photoprism    | assets path...: /opt/photoprism/assets
photoprism    | storage path..: /photoprism/storage
photoprism    | config path...: default
photoprism    | cache path....: default
photoprism    | backup path...: /photoprism/storage/backups
photoprism    | import path...: /photoprism/import
photoprism    | originals path: /photoprism/originals
photoprism    | running as uid 0
photoprism    | /opt/photoprism/bin/photoprism start
mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.5.17+maria~ubu2004 started.
mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: MariaDB upgrade information missing, assuming required
mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: MariaDB upgrade (mysql_upgrade) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] mysqld (mysqld 10.5.17-MariaDB-1:10.5.17+maria~ubu2004) starting as process 1 ...
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Uses event mutexes
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Number of pools: 1
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Using Linux native AIO
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Completed initialization of buffer pool
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: 128 rollback segments are active.
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Creating shared tablespace for temporary tables
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: 10.5.17 started; log sequence number 1870396574; transaction id 20709724
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] Plugin 'FEEDBACK' is disabled.
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] Server socket created on IP: '::'.
mariadb_photoprism | 2022-11-07 10:19:37 0 [Warning] 'proxies_priv' entry '@% root@09fe7f1ba29e' ignored in --skip-name-resolve mode.
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] Reading of all Master_info entries succeeded
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] Added new Master_info '' to hash table
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] mysqld: ready for connections.
mariadb_photoprism | Version: '10.5.17-MariaDB-1:10.5.17+maria~ubu2004'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Buffer pool(s) load completed at 221107 10:19:37
watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Watchtower 1.5.1"
watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Using no notifications"
watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Checking all containers (except explicitly disabled with label)"
watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Scheduling first run: 2022-11-07 12:19:38 +0000 UTC"
watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Note that the first check will be performed in 1 hour, 59 minutes, 59 seconds"
photoprism    | time="2022-11-07T10:19:42Z" level=debug msg="config: overriding config with values from /photoprism/storage/config/options.yml"
photoprism    | time="2022-11-07T10:19:42Z" level=debug msg="config: running on 'Westmere E56xx/L56xx/X56xx (Nehalem-C)', 8.4 GB memory detected"
photoprism    | time="2022-11-07T10:19:42Z" level=debug msg="settings: loaded from /photoprism/storage/config/settings.yml"
photoprism    | time="2022-11-07T10:19:42Z" level=info msg="PhotoPrism® needs your support!"
photoprism    | time="2022-11-07T10:19:42Z" level=info msg="Visit https://photoprism.app/membership to learn more."
photoprism    | time="2022-11-07T10:19:42Z" level=debug msg="config: successfully initialized [5.12354ms]"
photoprism    | time="2022-11-07T10:19:42Z" level=info msg="migrate: executing pre migrations"
photoprism    | time="2022-11-07T10:19:42Z" level=debug msg="migrate: found 2 previous migrations"
photoprism    | time="2022-11-07T10:19:42Z" level=debug msg="migrate: 20221015-100000 skipped"
photoprism    | time="2022-11-07T10:19:42Z" level=debug msg="migrate: 20221015-100100 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=info msg="migrate: executing main migrations"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: found 26 previous migrations"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20211121-094727 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20211124-120008 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-030000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-040000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-050000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-060000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-061000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-070000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-071000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-080000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-081000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-083000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-090000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-091000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-093000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220421-200000 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220521-000001 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220521-000002 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220521-000003 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220927-000100 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20221002-000100 skipped"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="migrate: completed in 861.263224ms"
photoprism    | time="2022-11-07T10:19:43Z" level=warning msg="users: Admin account is not allowed to log in"
photoprism    | [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
photoprism    |  - using env:	export GIN_MODE=release
photoprism    |  - using code:	gin.SetMode(gin.ReleaseMode)
photoprism    |
photoprism    | time="2022-11-07T10:19:43Z" level=info msg="server: enabling gzip compression"
photoprism    | time="2022-11-07T10:19:43Z" level=debug msg="restore: album yaml files disabled"
photoprism    | [GIN-debug] GET    /                         --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /library/*path            --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func3 (5 handlers)
photoprism    | [GIN-debug] GET    /manifest.json            --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func4 (5 handlers)
photoprism    | [GIN-debug] GET    /sw.js                    --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func5 (5 handlers)
photoprism    | [GIN-debug] GET    /favicon.ico              --> github.com/gin-gonic/gin.(*RouterGroup).StaticFile.func1 (5 handlers)
photoprism    | [GIN-debug] HEAD   /favicon.ico              --> github.com/gin-gonic/gin.(*RouterGroup).StaticFile.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /static/*filepath         --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (5 handlers)
photoprism    | [GIN-debug] HEAD   /static/*filepath         --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /_rainbow                 --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func6 (5 handlers)
photoprism    | [GIN-debug] GET    /_splash                  --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func7 (5 handlers)
photoprism    | [GIN-debug] HEAD   /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] GET    /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] PUT    /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] POST   /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] PATCH  /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] DELETE /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] OPTIONS /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] MKCOL  /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] COPY   /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] MOVE   /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] LOCK   /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] UNLOCK /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] PROPFIND /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] PROPPATCH /originals/*path          --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] HEAD   /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] GET    /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] PUT    /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] POST   /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] PATCH  /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] DELETE /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] OPTIONS /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] MKCOL  /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] COPY   /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] MOVE   /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] LOCK   /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | time="2022-11-07T10:19:43Z" level=info msg="webdav: /originals/ enabled, waiting for requests"
photoprism    | time="2022-11-07T10:19:43Z" level=info msg="webdav: /import/ enabled, waiting for requests"
photoprism    | [GIN-debug] UNLOCK /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] PROPFIND /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] PROPPATCH /import/*path             --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers)
photoprism    | [GIN-debug] GET    /s/:token                 --> github.com/photoprism/photoprism/internal/api.Shares.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /s/:token/:shared         --> github.com/photoprism/photoprism/internal/api.Shares.func2 (5 handlers)
photoprism    | [GIN-debug] GET    /s/:token/:shared/preview --> github.com/photoprism/photoprism/internal/api.SharePreview.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/session           --> github.com/photoprism/photoprism/internal/api.CreateSession.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/session/:id       --> github.com/photoprism/photoprism/internal/api.GetSession.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/session/:id       --> github.com/photoprism/photoprism/internal/api.DeleteSession.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/config/options    --> github.com/photoprism/photoprism/internal/api.GetConfigOptions.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/config/options    --> github.com/photoprism/photoprism/internal/api.SaveConfigOptions.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/config            --> github.com/photoprism/photoprism/internal/api.GetClientConfig.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/settings          --> github.com/photoprism/photoprism/internal/api.GetSettings.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/settings          --> github.com/photoprism/photoprism/internal/api.SaveSettings.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/users/:uid/upload/:token --> github.com/photoprism/photoprism/internal/api.UploadUserFiles.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/users/:uid/upload/:token --> github.com/photoprism/photoprism/internal/api.ProcessUserUpload.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/users/:uid/avatar --> github.com/photoprism/photoprism/internal/api.UploadUserAvatar.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/users/:uid/password --> github.com/photoprism/photoprism/internal/api.UpdateUserPassword.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/users/:uid        --> github.com/photoprism/photoprism/internal/api.UpdateUser.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/services          --> github.com/photoprism/photoprism/internal/api.SearchServices.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/services/:id      --> github.com/photoprism/photoprism/internal/api.GetService.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/services/:id/folders --> github.com/photoprism/photoprism/internal/api.GetServiceFolders.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/services/:id/upload --> github.com/photoprism/photoprism/internal/api.UploadToService.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/services          --> github.com/photoprism/photoprism/internal/api.AddService.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/services/:id      --> github.com/photoprism/photoprism/internal/api.DeleteService.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/services/:id      --> github.com/photoprism/photoprism/internal/api.UpdateService.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/t/:thumb/:token/:size --> github.com/photoprism/photoprism/internal/api.GetThumb.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/videos/:hash/:token/:format --> github.com/photoprism/photoprism/internal/api.GetVideo.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/dl/:hash          --> github.com/photoprism/photoprism/internal/api.GetDownload.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/zip               --> github.com/photoprism/photoprism/internal/api.ZipCreate.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/zip/:filename     --> github.com/photoprism/photoprism/internal/api.ZipDownload.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/import/*path      --> github.com/photoprism/photoprism/internal/api.StartImport.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/import            --> github.com/photoprism/photoprism/internal/api.CancelImport.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/index             --> github.com/photoprism/photoprism/internal/api.StartIndexing.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/index             --> github.com/photoprism/photoprism/internal/api.CancelIndexing.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/photos            --> github.com/photoprism/photoprism/internal/api.SearchPhotos.func2 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/photos/view       --> github.com/photoprism/photoprism/internal/api.SearchPhotos.func3 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/geo               --> github.com/photoprism/photoprism/internal/api.SearchGeo.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/geo/:format       --> github.com/photoprism/photoprism/internal/api.SearchGeo.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/photos/:uid       --> github.com/photoprism/photoprism/internal/api.GetPhoto.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/photos/:uid/yaml  --> github.com/photoprism/photoprism/internal/api.GetPhotoYaml.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/photos/:uid       --> github.com/photoprism/photoprism/internal/api.UpdatePhoto.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/photos/:uid/dl    --> github.com/photoprism/photoprism/internal/api.GetPhotoDownload.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/photos/:uid/approve --> github.com/photoprism/photoprism/internal/api.ApprovePhoto.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/photos/:uid/like  --> github.com/photoprism/photoprism/internal/api.LikePhoto.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/photos/:uid/like  --> github.com/photoprism/photoprism/internal/api.DislikePhoto.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/photos/:uid/label --> github.com/photoprism/photoprism/internal/api.AddPhotoLabel.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/photos/:uid/label/:id --> github.com/photoprism/photoprism/internal/api.RemovePhotoLabel.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/photos/:uid/label/:id --> github.com/photoprism/photoprism/internal/api.UpdatePhotoLabel.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/moments/time      --> github.com/photoprism/photoprism/internal/api.GetMomentsTime.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/files/:hash       --> github.com/photoprism/photoprism/internal/api.GetFile.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/photos/:uid/files/:file_uid --> github.com/photoprism/photoprism/internal/api.DeleteFile.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/markers/:marker_uid --> github.com/photoprism/photoprism/internal/api.UpdateMarker.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/markers/:marker_uid/subject --> github.com/photoprism/photoprism/internal/api.ClearMarkerSubject.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/photos/:uid/files/:file_uid/primary --> github.com/photoprism/photoprism/internal/api.PhotoPrimary.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/photos/:uid/files/:file_uid/unstack --> github.com/photoprism/photoprism/internal/api.PhotoUnstack.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/albums            --> github.com/photoprism/photoprism/internal/api.SearchAlbums.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/albums/:uid       --> github.com/photoprism/photoprism/internal/api.GetAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/albums/:uid/t/:token/:size --> github.com/photoprism/photoprism/internal/api.AlbumCover.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/albums            --> github.com/photoprism/photoprism/internal/api.CreateAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/albums/:uid       --> github.com/photoprism/photoprism/internal/api.UpdateAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/albums/:uid       --> github.com/photoprism/photoprism/internal/api.DeleteAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/albums/:uid/dl    --> github.com/photoprism/photoprism/internal/api.DownloadAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/albums/:uid/links --> github.com/photoprism/photoprism/internal/api.GetAlbumLinks.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/albums/:uid/links --> github.com/photoprism/photoprism/internal/api.CreateAlbumLink.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/albums/:uid/links/:link --> github.com/photoprism/photoprism/internal/api.UpdateAlbumLink.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/albums/:uid/links/:link --> github.com/photoprism/photoprism/internal/api.DeleteAlbumLink.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/albums/:uid/like  --> github.com/photoprism/photoprism/internal/api.LikeAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/albums/:uid/like  --> github.com/photoprism/photoprism/internal/api.DislikeAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/albums/:uid/clone --> github.com/photoprism/photoprism/internal/api.CloneAlbums.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/albums/:uid/photos --> github.com/photoprism/photoprism/internal/api.AddPhotosToAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/albums/:uid/photos --> github.com/photoprism/photoprism/internal/api.RemovePhotosFromAlbum.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/labels            --> github.com/photoprism/photoprism/internal/api.SearchLabels.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/labels/:uid/t/:token/:size --> github.com/photoprism/photoprism/internal/api.LabelCover.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/labels/:uid       --> github.com/photoprism/photoprism/internal/api.UpdateLabel.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/labels/:uid/like  --> github.com/photoprism/photoprism/internal/api.LikeLabel.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/labels/:uid/like  --> github.com/photoprism/photoprism/internal/api.DislikeLabel.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/folders/originals --> github.com/photoprism/photoprism/internal/api.SearchFolders.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/folders/originals/*path --> github.com/photoprism/photoprism/internal/api.SearchFolders.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/folders/import    --> github.com/photoprism/photoprism/internal/api.SearchFolders.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/folders/import/*path --> github.com/photoprism/photoprism/internal/api.SearchFolders.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/folders/t/:uid/:token/:size --> github.com/photoprism/photoprism/internal/api.FolderCover.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/subjects          --> github.com/photoprism/photoprism/internal/api.SearchSubjects.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/subjects/:uid     --> github.com/photoprism/photoprism/internal/api.GetSubject.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/subjects/:uid     --> github.com/photoprism/photoprism/internal/api.UpdateSubject.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/subjects/:uid/like --> github.com/photoprism/photoprism/internal/api.LikeSubject.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/subjects/:uid/like --> github.com/photoprism/photoprism/internal/api.DislikeSubject.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/faces             --> github.com/photoprism/photoprism/internal/api.SearchFaces.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/faces/:id         --> github.com/photoprism/photoprism/internal/api.GetFace.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/faces/:id         --> github.com/photoprism/photoprism/internal/api.UpdateFace.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/batch/photos/approve --> github.com/photoprism/photoprism/internal/api.BatchPhotosApprove.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/batch/photos/archive --> github.com/photoprism/photoprism/internal/api.BatchPhotosArchive.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/batch/photos/restore --> github.com/photoprism/photoprism/internal/api.BatchPhotosRestore.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/batch/photos/private --> github.com/photoprism/photoprism/internal/api.BatchPhotosPrivate.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/batch/photos/delete --> github.com/photoprism/photoprism/internal/api.BatchPhotosDelete.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/batch/albums/delete --> github.com/photoprism/photoprism/internal/api.BatchAlbumsDelete.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/batch/labels/delete --> github.com/photoprism/photoprism/internal/api.BatchLabelsDelete.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/user          --> github.com/photoprism/photoprism/internal/api.GetSvg.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/face          --> github.com/photoprism/photoprism/internal/api.GetSvg.func2 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/camera        --> github.com/photoprism/photoprism/internal/api.GetSvg.func3 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/photo         --> github.com/photoprism/photoprism/internal/api.GetSvg.func4 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/raw           --> github.com/photoprism/photoprism/internal/api.GetSvg.func5 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/file          --> github.com/photoprism/photoprism/internal/api.GetSvg.func6 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/video         --> github.com/photoprism/photoprism/internal/api.GetSvg.func7 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/label         --> github.com/photoprism/photoprism/internal/api.GetSvg.func8 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/portrait      --> github.com/photoprism/photoprism/internal/api.GetSvg.func9 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/folder        --> github.com/photoprism/photoprism/internal/api.GetSvg.func10 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/album         --> github.com/photoprism/photoprism/internal/api.GetSvg.func11 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/broken        --> github.com/photoprism/photoprism/internal/api.GetSvg.func12 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/svg/uncached      --> github.com/photoprism/photoprism/internal/api.GetSvg.func13 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/status            --> github.com/photoprism/photoprism/internal/api.GetStatus.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/errors            --> github.com/photoprism/photoprism/internal/api.GetErrors.func1 (5 handlers)
photoprism    | [GIN-debug] DELETE /api/v1/errors            --> github.com/photoprism/photoprism/internal/api.DeleteErrors.func1 (5 handlers)
photoprism    | [GIN-debug] POST   /api/v1/feedback          --> github.com/photoprism/photoprism/internal/api.SendFeedback.func1 (5 handlers)
photoprism    | [GIN-debug] PUT    /api/v1/connect/:name     --> github.com/photoprism/photoprism/internal/api.Connect.func1 (5 handlers)
photoprism    | [GIN-debug] GET    /api/v1/ws                --> github.com/photoprism/photoprism/internal/api.WebSocket.func1 (5 handlers)
photoprism    | time="2022-11-07T10:19:43Z" level=info msg="server: tls disabled"
photoprism    | time="2022-11-07T10:19:43Z" level=info msg="server: listening on 0.0.0.0:2342 [2.042766ms]"
photoprism    | time="2022-11-07T10:19:53Z" level=debug msg="server: POST /api/v1/session (401) [4.668061ms]"

Docker-compose.yml file:

version: '3.5'

# Example Docker Compose config file for PhotoPrism (Linux / AMD64)
#
# Documentation : https://docs.photoprism.org/getting-started/docker-compose/
# Docker Hub URL: https://hub.docker.com/r/photoprism/photoprism/
#
# Please run behind a reverse proxy like Caddy, Traefik or Nginx if you need HTTPS / SSL support
# e.g. when running PhotoPrism on a public server outside your home network.
#
# ------------------------------------------------------------------
# DOCKER COMPOSE COMMAND REFERENCE
# ------------------------------------------------------------------
# Start    | docker-compose up -d
# Stop     | docker-compose stop
# Update   | docker-compose pull
# Logs     | docker-compose logs --tail=25 -f
# Terminal | docker-compose exec photoprism bash
# Help     | docker-compose exec photoprism photoprism help
# Config   | docker-compose exec photoprism photoprism config
# Reset    | docker-compose exec photoprism photoprism reset
# Backup   | docker-compose exec photoprism photoprism backup -a -i
# Restore  | docker-compose exec photoprism photoprism restore -a -i
# Index    | docker-compose exec photoprism photoprism index
# Reindex  | docker-compose exec photoprism photoprism index -a
# Import   | docker-compose exec photoprism photoprism import
# -------------------------------------------------------------------
# Note: All commands may have to be prefixed with "sudo" when not running as root.
#       This will change the home directory "~" to "/root" in your configuration.

services:
  photoprism:
    # Use photoprism/photoprism:preview instead for testing preview builds:
    # image: photoprism/photoprism:latest
    image: photoprism/photoprism:preview
    container_name: photoprism
    # Only enable automatic restarts once your installation is properly
    # configured as it otherwise may get stuck in a restart loop:
    # https://docs.photoprism.org/getting-started/faq/#why-is-photoprism-getting-stuck-in-a-restart-loop
    restart: unless-stopped
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    ports:
      - 2342:2342 # [local port]:[container port]
    environment:
      PHOTOPRISM_ADMIN_PASSWORD: "REDACTED"    # PLEASE CHANGE: Your initial admin password (min 4 characters)
      PHOTOPRISM_ORIGINALS_LIMIT: 1000000            # 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_DEBUG: "true"                      # Run in debug mode (shows additional log messages)
      PHOTOPRISM_PUBLIC: "false"                     # No authentication required (disables password protection)
      PHOTOPRISM_READONLY: "false"                   # Don't modify originals directory (reduced functionality)
      PHOTOPRISM_EXPERIMENTAL: "false"               # Enables experimental features
      PHOTOPRISM_DISABLE_WEBDAV: "false"             # Disables built-in WebDAV server
      PHOTOPRISM_DISABLE_SETTINGS: "false"           # Disables Settings in Web UI
      PHOTOPRISM_DISABLE_TENSORFLOW: "false"         # Disables using TensorFlow for image classification
      PHOTOPRISM_DARKTABLE_PRESETS: "false"          # Enables Darktable presets and disables concurrent RAW conversion
      PHOTOPRISM_DETECT_NSFW: "false"                # Flag photos as private that MAY be offensive (requires TensorFlow)
      PHOTOPRISM_UPLOAD_NSFW: "true"                 # Allow uploads that MAY be offensive
      # PHOTOPRISM_DATABASE_DRIVER: "sqlite"         # SQLite is an embedded database that doesn't require a server
      PHOTOPRISM_DATABASE_DRIVER: "mysql"            # Use MariaDB (or MySQL) instead of SQLite for improved performance
      PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"     # MariaDB database server (hostname:port)
      PHOTOPRISM_DATABASE_NAME: "photoprism"         # MariaDB database schema name
      PHOTOPRISM_DATABASE_USER: "REDACTED"         # MariaDB database user name
      PHOTOPRISM_DATABASE_PASSWORD: "REDACTED" # MariaDB database user password
      PHOTOPRISM_SITE_URL: "http://127.0.0.1:2342/"  # Public PhotoPrism URL
      PHOTOPRISM_SITE_TITLE: "Photos"
      PHOTOPRISM_SITE_CAPTION: ""
      PHOTOPRISM_SITE_DESCRIPTION: ""
      PHOTOPRISM_SITE_AUTHOR: "Tom Stock"
      PHOTOPRISM_TEMP_PATH: "./temp"
      # You may optionally set a user / group id using environment variables if your Docker version or NAS does not
      # support this natively (see next example):
      # UID: 1000
      # GID: 1000
      # UMASK: 0000
    # Uncomment and edit the following line to set a specific user / group id (native):
    # user: "1000:1000"
    volumes:
      # Your photo and video files ([local path]:[container path]):
      # - "~/Pictures:/photoprism/originals"
      # Multiple folders can be indexed by mounting them as sub-folders of /photoprism/originals:
      # - "/mnt/Family:/photoprism/originals/Family"    # [folder_1]:/photoprism/originals/[folder_1]
      # - "/mnt/Friends:/photoprism/originals/Friends"  # [folder_2]:/photoprism/originals/[folder_2]
      # Mounting an import folder is optional (see docs):
      # - "~/Import:/photoprism/import"
      # Permanent storage for settings, index & sidecar files (DON'T REMOVE):
      - "./storage:/photoprism/storage"
      - "./originals:/photoprism/originals"
      - "./import:/photoprism/import"

  mariadb:
    image: mariadb:10.5
    container_name: mariadb_photoprism
    restart: unless-stopped
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    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: # Don't remove permanent storage for index database files!
      - "./database:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: REDACTED
      MYSQL_DATABASE: photoprism
      MYSQL_USER: REDACTED
      MYSQL_PASSWORD: REDACTED

# Uncomment the following lines to upgrade automatically, whenever there is a new Docker image available:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower_photoprism
    restart: unless-stopped
    environment:
      WATCHTOWER_CLEANUP: "true"
      WATCHTOWER_POLL_INTERVAL: 7200 # Checks for updates every two hours
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
#      - "~/.docker/config.json:/config.json" # Optional, for authentication if you have a Docker Hub account

6. Which software versions do you use?

(a) PhotoPrism Architecture & Build Number: AMD64, ARM64, ARMv7,...
Photoprism:latest on AMD64

(b) Database Type & Version: MariaDB, MySQL, SQLite,...
MariaDB

(c) Operating System Types & Versions: Linux, Windows, Android,...

$ uname -a
Linux debian.example.com 4.19.0-22-cloud-amd64 #1 SMP Debian 4.19.260-1 (2022-09-29) x86_64 GNU/Linux
Originally created by @StotoV on GitHub (Nov 7, 2022). #### 1. What is not working as documented? When trying to login to my Photoprism instance I got the message 'invalid credentials' back from the UI. After some Googling and debugging I found the following message in the Docker logs: ``` photoprism | time="2022-11-07T10:06:41Z" level=warning msg="users: Admin account is not allowed to log in" ``` I've no idea where this error originates, hence me opening this issue. What I've checked: - Database connection, seems to work and I can connect from my host system to the database - File permissions. Set all files in storage to 777 and I run the containers as root - Running without login enabled. When I do this I get 403 errors on all requests. #### 2. How can we reproduce it? As this error suddenly popped up after not logging in for some time I am unsure how to reproduce it. #### 3. What behavior do you expect? Being able to log in. #### 4. What could be the cause of your problem? Some option being set wrongly? File permissions? Logic error? #### 5. Can you provide us with example files for testing, error logs, or screenshots? Complete logs of `docker-compose up`: ``` Starting mariadb_photoprism ... done Starting watchtower_photoprism ... done Recreating photoprism ... done Attaching to mariadb_photoprism, watchtower_photoprism, photoprism mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.5.17+maria~ubu2004 started. photoprism | started 221105 as root (amd64-prod) photoprism | Problems? Our Troubleshooting Checklists help you quickly diagnose and solve them: photoprism | https://docs.photoprism.app/getting-started/troubleshooting/ photoprism | file umask....: "0002" (u=rwx,g=rwx,o=rx) photoprism | home directory: /photoprism photoprism | assets path...: /opt/photoprism/assets photoprism | storage path..: /photoprism/storage photoprism | config path...: default photoprism | cache path....: default photoprism | backup path...: /photoprism/storage/backups photoprism | import path...: /photoprism/import photoprism | originals path: /photoprism/originals photoprism | running as uid 0 photoprism | /opt/photoprism/bin/photoprism start mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.5.17+maria~ubu2004 started. mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: MariaDB upgrade information missing, assuming required mariadb_photoprism | 2022-11-07 10:19:37+00:00 [Note] [Entrypoint]: MariaDB upgrade (mysql_upgrade) required, but skipped due to $MARIADB_AUTO_UPGRADE setting mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] mysqld (mysqld 10.5.17-MariaDB-1:10.5.17+maria~ubu2004) starting as process 1 ... mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Uses event mutexes mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Number of pools: 1 mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts) mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Using Linux native AIO mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728 mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Completed initialization of buffer pool mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: 128 rollback segments are active. mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Creating shared tablespace for temporary tables mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: 10.5.17 started; log sequence number 1870396574; transaction id 20709724 mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] Plugin 'FEEDBACK' is disabled. mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] Server socket created on IP: '::'. mariadb_photoprism | 2022-11-07 10:19:37 0 [Warning] 'proxies_priv' entry '@% root@09fe7f1ba29e' ignored in --skip-name-resolve mode. mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] Reading of all Master_info entries succeeded mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] Added new Master_info '' to hash table mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] mysqld: ready for connections. mariadb_photoprism | Version: '10.5.17-MariaDB-1:10.5.17+maria~ubu2004' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution mariadb_photoprism | 2022-11-07 10:19:37 0 [Note] InnoDB: Buffer pool(s) load completed at 221107 10:19:37 watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Watchtower 1.5.1" watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Using no notifications" watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Checking all containers (except explicitly disabled with label)" watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Scheduling first run: 2022-11-07 12:19:38 +0000 UTC" watchtower_photoprism | time="2022-11-07T10:19:38Z" level=info msg="Note that the first check will be performed in 1 hour, 59 minutes, 59 seconds" photoprism | time="2022-11-07T10:19:42Z" level=debug msg="config: overriding config with values from /photoprism/storage/config/options.yml" photoprism | time="2022-11-07T10:19:42Z" level=debug msg="config: running on 'Westmere E56xx/L56xx/X56xx (Nehalem-C)', 8.4 GB memory detected" photoprism | time="2022-11-07T10:19:42Z" level=debug msg="settings: loaded from /photoprism/storage/config/settings.yml" photoprism | time="2022-11-07T10:19:42Z" level=info msg="PhotoPrism® needs your support!" photoprism | time="2022-11-07T10:19:42Z" level=info msg="Visit https://photoprism.app/membership to learn more." photoprism | time="2022-11-07T10:19:42Z" level=debug msg="config: successfully initialized [5.12354ms]" photoprism | time="2022-11-07T10:19:42Z" level=info msg="migrate: executing pre migrations" photoprism | time="2022-11-07T10:19:42Z" level=debug msg="migrate: found 2 previous migrations" photoprism | time="2022-11-07T10:19:42Z" level=debug msg="migrate: 20221015-100000 skipped" photoprism | time="2022-11-07T10:19:42Z" level=debug msg="migrate: 20221015-100100 skipped" photoprism | time="2022-11-07T10:19:43Z" level=info msg="migrate: executing main migrations" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: found 26 previous migrations" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20211121-094727 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20211124-120008 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-030000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-040000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-050000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-060000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-061000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-070000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-071000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-080000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-081000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-083000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-090000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-091000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220329-093000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220421-200000 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220521-000001 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220521-000002 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220521-000003 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20220927-000100 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: 20221002-000100 skipped" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="migrate: completed in 861.263224ms" photoprism | time="2022-11-07T10:19:43Z" level=warning msg="users: Admin account is not allowed to log in" photoprism | [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. photoprism | - using env: export GIN_MODE=release photoprism | - using code: gin.SetMode(gin.ReleaseMode) photoprism | photoprism | time="2022-11-07T10:19:43Z" level=info msg="server: enabling gzip compression" photoprism | time="2022-11-07T10:19:43Z" level=debug msg="restore: album yaml files disabled" photoprism | [GIN-debug] GET / --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func1 (5 handlers) photoprism | [GIN-debug] GET /library/*path --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func3 (5 handlers) photoprism | [GIN-debug] GET /manifest.json --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func4 (5 handlers) photoprism | [GIN-debug] GET /sw.js --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func5 (5 handlers) photoprism | [GIN-debug] GET /favicon.ico --> github.com/gin-gonic/gin.(*RouterGroup).StaticFile.func1 (5 handlers) photoprism | [GIN-debug] HEAD /favicon.ico --> github.com/gin-gonic/gin.(*RouterGroup).StaticFile.func1 (5 handlers) photoprism | [GIN-debug] GET /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (5 handlers) photoprism | [GIN-debug] HEAD /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (5 handlers) photoprism | [GIN-debug] GET /_rainbow --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func6 (5 handlers) photoprism | [GIN-debug] GET /_splash --> github.com/photoprism/photoprism/internal/server.registerStaticRoutes.func7 (5 handlers) photoprism | [GIN-debug] HEAD /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] GET /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] PUT /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] POST /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] PATCH /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] DELETE /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] OPTIONS /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] MKCOL /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] COPY /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] MOVE /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] LOCK /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] UNLOCK /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] PROPFIND /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] PROPPATCH /originals/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] HEAD /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] GET /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] PUT /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] POST /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] PATCH /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] DELETE /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] OPTIONS /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] MKCOL /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] COPY /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] MOVE /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] LOCK /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | time="2022-11-07T10:19:43Z" level=info msg="webdav: /originals/ enabled, waiting for requests" photoprism | time="2022-11-07T10:19:43Z" level=info msg="webdav: /import/ enabled, waiting for requests" photoprism | [GIN-debug] UNLOCK /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] PROPFIND /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] PROPPATCH /import/*path --> github.com/photoprism/photoprism/internal/server.WebDAV.func2 (6 handlers) photoprism | [GIN-debug] GET /s/:token --> github.com/photoprism/photoprism/internal/api.Shares.func1 (5 handlers) photoprism | [GIN-debug] GET /s/:token/:shared --> github.com/photoprism/photoprism/internal/api.Shares.func2 (5 handlers) photoprism | [GIN-debug] GET /s/:token/:shared/preview --> github.com/photoprism/photoprism/internal/api.SharePreview.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/session --> github.com/photoprism/photoprism/internal/api.CreateSession.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/session/:id --> github.com/photoprism/photoprism/internal/api.GetSession.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/session/:id --> github.com/photoprism/photoprism/internal/api.DeleteSession.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/config/options --> github.com/photoprism/photoprism/internal/api.GetConfigOptions.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/config/options --> github.com/photoprism/photoprism/internal/api.SaveConfigOptions.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/config --> github.com/photoprism/photoprism/internal/api.GetClientConfig.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/settings --> github.com/photoprism/photoprism/internal/api.GetSettings.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/settings --> github.com/photoprism/photoprism/internal/api.SaveSettings.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/users/:uid/upload/:token --> github.com/photoprism/photoprism/internal/api.UploadUserFiles.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/users/:uid/upload/:token --> github.com/photoprism/photoprism/internal/api.ProcessUserUpload.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/users/:uid/avatar --> github.com/photoprism/photoprism/internal/api.UploadUserAvatar.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/users/:uid/password --> github.com/photoprism/photoprism/internal/api.UpdateUserPassword.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/users/:uid --> github.com/photoprism/photoprism/internal/api.UpdateUser.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/services --> github.com/photoprism/photoprism/internal/api.SearchServices.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/services/:id --> github.com/photoprism/photoprism/internal/api.GetService.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/services/:id/folders --> github.com/photoprism/photoprism/internal/api.GetServiceFolders.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/services/:id/upload --> github.com/photoprism/photoprism/internal/api.UploadToService.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/services --> github.com/photoprism/photoprism/internal/api.AddService.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/services/:id --> github.com/photoprism/photoprism/internal/api.DeleteService.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/services/:id --> github.com/photoprism/photoprism/internal/api.UpdateService.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/t/:thumb/:token/:size --> github.com/photoprism/photoprism/internal/api.GetThumb.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/videos/:hash/:token/:format --> github.com/photoprism/photoprism/internal/api.GetVideo.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/dl/:hash --> github.com/photoprism/photoprism/internal/api.GetDownload.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/zip --> github.com/photoprism/photoprism/internal/api.ZipCreate.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/zip/:filename --> github.com/photoprism/photoprism/internal/api.ZipDownload.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/import/*path --> github.com/photoprism/photoprism/internal/api.StartImport.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/import --> github.com/photoprism/photoprism/internal/api.CancelImport.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/index --> github.com/photoprism/photoprism/internal/api.StartIndexing.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/index --> github.com/photoprism/photoprism/internal/api.CancelIndexing.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/photos --> github.com/photoprism/photoprism/internal/api.SearchPhotos.func2 (5 handlers) photoprism | [GIN-debug] GET /api/v1/photos/view --> github.com/photoprism/photoprism/internal/api.SearchPhotos.func3 (5 handlers) photoprism | [GIN-debug] GET /api/v1/geo --> github.com/photoprism/photoprism/internal/api.SearchGeo.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/geo/:format --> github.com/photoprism/photoprism/internal/api.SearchGeo.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/photos/:uid --> github.com/photoprism/photoprism/internal/api.GetPhoto.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/photos/:uid/yaml --> github.com/photoprism/photoprism/internal/api.GetPhotoYaml.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/photos/:uid --> github.com/photoprism/photoprism/internal/api.UpdatePhoto.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/photos/:uid/dl --> github.com/photoprism/photoprism/internal/api.GetPhotoDownload.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/photos/:uid/approve --> github.com/photoprism/photoprism/internal/api.ApprovePhoto.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/photos/:uid/like --> github.com/photoprism/photoprism/internal/api.LikePhoto.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/photos/:uid/like --> github.com/photoprism/photoprism/internal/api.DislikePhoto.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/photos/:uid/label --> github.com/photoprism/photoprism/internal/api.AddPhotoLabel.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/photos/:uid/label/:id --> github.com/photoprism/photoprism/internal/api.RemovePhotoLabel.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/photos/:uid/label/:id --> github.com/photoprism/photoprism/internal/api.UpdatePhotoLabel.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/moments/time --> github.com/photoprism/photoprism/internal/api.GetMomentsTime.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/files/:hash --> github.com/photoprism/photoprism/internal/api.GetFile.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/photos/:uid/files/:file_uid --> github.com/photoprism/photoprism/internal/api.DeleteFile.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/markers/:marker_uid --> github.com/photoprism/photoprism/internal/api.UpdateMarker.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/markers/:marker_uid/subject --> github.com/photoprism/photoprism/internal/api.ClearMarkerSubject.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/photos/:uid/files/:file_uid/primary --> github.com/photoprism/photoprism/internal/api.PhotoPrimary.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/photos/:uid/files/:file_uid/unstack --> github.com/photoprism/photoprism/internal/api.PhotoUnstack.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/albums --> github.com/photoprism/photoprism/internal/api.SearchAlbums.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/albums/:uid --> github.com/photoprism/photoprism/internal/api.GetAlbum.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/albums/:uid/t/:token/:size --> github.com/photoprism/photoprism/internal/api.AlbumCover.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/albums --> github.com/photoprism/photoprism/internal/api.CreateAlbum.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/albums/:uid --> github.com/photoprism/photoprism/internal/api.UpdateAlbum.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/albums/:uid --> github.com/photoprism/photoprism/internal/api.DeleteAlbum.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/albums/:uid/dl --> github.com/photoprism/photoprism/internal/api.DownloadAlbum.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/albums/:uid/links --> github.com/photoprism/photoprism/internal/api.GetAlbumLinks.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/albums/:uid/links --> github.com/photoprism/photoprism/internal/api.CreateAlbumLink.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/albums/:uid/links/:link --> github.com/photoprism/photoprism/internal/api.UpdateAlbumLink.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/albums/:uid/links/:link --> github.com/photoprism/photoprism/internal/api.DeleteAlbumLink.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/albums/:uid/like --> github.com/photoprism/photoprism/internal/api.LikeAlbum.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/albums/:uid/like --> github.com/photoprism/photoprism/internal/api.DislikeAlbum.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/albums/:uid/clone --> github.com/photoprism/photoprism/internal/api.CloneAlbums.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/albums/:uid/photos --> github.com/photoprism/photoprism/internal/api.AddPhotosToAlbum.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/albums/:uid/photos --> github.com/photoprism/photoprism/internal/api.RemovePhotosFromAlbum.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/labels --> github.com/photoprism/photoprism/internal/api.SearchLabels.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/labels/:uid/t/:token/:size --> github.com/photoprism/photoprism/internal/api.LabelCover.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/labels/:uid --> github.com/photoprism/photoprism/internal/api.UpdateLabel.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/labels/:uid/like --> github.com/photoprism/photoprism/internal/api.LikeLabel.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/labels/:uid/like --> github.com/photoprism/photoprism/internal/api.DislikeLabel.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/folders/originals --> github.com/photoprism/photoprism/internal/api.SearchFolders.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/folders/originals/*path --> github.com/photoprism/photoprism/internal/api.SearchFolders.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/folders/import --> github.com/photoprism/photoprism/internal/api.SearchFolders.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/folders/import/*path --> github.com/photoprism/photoprism/internal/api.SearchFolders.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/folders/t/:uid/:token/:size --> github.com/photoprism/photoprism/internal/api.FolderCover.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/subjects --> github.com/photoprism/photoprism/internal/api.SearchSubjects.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/subjects/:uid --> github.com/photoprism/photoprism/internal/api.GetSubject.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/subjects/:uid --> github.com/photoprism/photoprism/internal/api.UpdateSubject.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/subjects/:uid/like --> github.com/photoprism/photoprism/internal/api.LikeSubject.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/subjects/:uid/like --> github.com/photoprism/photoprism/internal/api.DislikeSubject.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/faces --> github.com/photoprism/photoprism/internal/api.SearchFaces.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/faces/:id --> github.com/photoprism/photoprism/internal/api.GetFace.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/faces/:id --> github.com/photoprism/photoprism/internal/api.UpdateFace.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/batch/photos/approve --> github.com/photoprism/photoprism/internal/api.BatchPhotosApprove.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/batch/photos/archive --> github.com/photoprism/photoprism/internal/api.BatchPhotosArchive.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/batch/photos/restore --> github.com/photoprism/photoprism/internal/api.BatchPhotosRestore.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/batch/photos/private --> github.com/photoprism/photoprism/internal/api.BatchPhotosPrivate.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/batch/photos/delete --> github.com/photoprism/photoprism/internal/api.BatchPhotosDelete.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/batch/albums/delete --> github.com/photoprism/photoprism/internal/api.BatchAlbumsDelete.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/batch/labels/delete --> github.com/photoprism/photoprism/internal/api.BatchLabelsDelete.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/user --> github.com/photoprism/photoprism/internal/api.GetSvg.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/face --> github.com/photoprism/photoprism/internal/api.GetSvg.func2 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/camera --> github.com/photoprism/photoprism/internal/api.GetSvg.func3 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/photo --> github.com/photoprism/photoprism/internal/api.GetSvg.func4 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/raw --> github.com/photoprism/photoprism/internal/api.GetSvg.func5 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/file --> github.com/photoprism/photoprism/internal/api.GetSvg.func6 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/video --> github.com/photoprism/photoprism/internal/api.GetSvg.func7 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/label --> github.com/photoprism/photoprism/internal/api.GetSvg.func8 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/portrait --> github.com/photoprism/photoprism/internal/api.GetSvg.func9 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/folder --> github.com/photoprism/photoprism/internal/api.GetSvg.func10 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/album --> github.com/photoprism/photoprism/internal/api.GetSvg.func11 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/broken --> github.com/photoprism/photoprism/internal/api.GetSvg.func12 (5 handlers) photoprism | [GIN-debug] GET /api/v1/svg/uncached --> github.com/photoprism/photoprism/internal/api.GetSvg.func13 (5 handlers) photoprism | [GIN-debug] GET /api/v1/status --> github.com/photoprism/photoprism/internal/api.GetStatus.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/errors --> github.com/photoprism/photoprism/internal/api.GetErrors.func1 (5 handlers) photoprism | [GIN-debug] DELETE /api/v1/errors --> github.com/photoprism/photoprism/internal/api.DeleteErrors.func1 (5 handlers) photoprism | [GIN-debug] POST /api/v1/feedback --> github.com/photoprism/photoprism/internal/api.SendFeedback.func1 (5 handlers) photoprism | [GIN-debug] PUT /api/v1/connect/:name --> github.com/photoprism/photoprism/internal/api.Connect.func1 (5 handlers) photoprism | [GIN-debug] GET /api/v1/ws --> github.com/photoprism/photoprism/internal/api.WebSocket.func1 (5 handlers) photoprism | time="2022-11-07T10:19:43Z" level=info msg="server: tls disabled" photoprism | time="2022-11-07T10:19:43Z" level=info msg="server: listening on 0.0.0.0:2342 [2.042766ms]" photoprism | time="2022-11-07T10:19:53Z" level=debug msg="server: POST /api/v1/session (401) [4.668061ms]" ``` Docker-compose.yml file: ``` version: '3.5' # Example Docker Compose config file for PhotoPrism (Linux / AMD64) # # Documentation : https://docs.photoprism.org/getting-started/docker-compose/ # Docker Hub URL: https://hub.docker.com/r/photoprism/photoprism/ # # Please run behind a reverse proxy like Caddy, Traefik or Nginx if you need HTTPS / SSL support # e.g. when running PhotoPrism on a public server outside your home network. # # ------------------------------------------------------------------ # DOCKER COMPOSE COMMAND REFERENCE # ------------------------------------------------------------------ # Start | docker-compose up -d # Stop | docker-compose stop # Update | docker-compose pull # Logs | docker-compose logs --tail=25 -f # Terminal | docker-compose exec photoprism bash # Help | docker-compose exec photoprism photoprism help # Config | docker-compose exec photoprism photoprism config # Reset | docker-compose exec photoprism photoprism reset # Backup | docker-compose exec photoprism photoprism backup -a -i # Restore | docker-compose exec photoprism photoprism restore -a -i # Index | docker-compose exec photoprism photoprism index # Reindex | docker-compose exec photoprism photoprism index -a # Import | docker-compose exec photoprism photoprism import # ------------------------------------------------------------------- # Note: All commands may have to be prefixed with "sudo" when not running as root. # This will change the home directory "~" to "/root" in your configuration. services: photoprism: # Use photoprism/photoprism:preview instead for testing preview builds: # image: photoprism/photoprism:latest image: photoprism/photoprism:preview container_name: photoprism # Only enable automatic restarts once your installation is properly # configured as it otherwise may get stuck in a restart loop: # https://docs.photoprism.org/getting-started/faq/#why-is-photoprism-getting-stuck-in-a-restart-loop restart: unless-stopped security_opt: - seccomp:unconfined - apparmor:unconfined ports: - 2342:2342 # [local port]:[container port] environment: PHOTOPRISM_ADMIN_PASSWORD: "REDACTED" # PLEASE CHANGE: Your initial admin password (min 4 characters) PHOTOPRISM_ORIGINALS_LIMIT: 1000000 # 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_DEBUG: "true" # Run in debug mode (shows additional log messages) PHOTOPRISM_PUBLIC: "false" # No authentication required (disables password protection) PHOTOPRISM_READONLY: "false" # Don't modify originals directory (reduced functionality) PHOTOPRISM_EXPERIMENTAL: "false" # Enables experimental features PHOTOPRISM_DISABLE_WEBDAV: "false" # Disables built-in WebDAV server PHOTOPRISM_DISABLE_SETTINGS: "false" # Disables Settings in Web UI PHOTOPRISM_DISABLE_TENSORFLOW: "false" # Disables using TensorFlow for image classification PHOTOPRISM_DARKTABLE_PRESETS: "false" # Enables Darktable presets and disables concurrent RAW conversion PHOTOPRISM_DETECT_NSFW: "false" # Flag photos as private that MAY be offensive (requires TensorFlow) PHOTOPRISM_UPLOAD_NSFW: "true" # Allow uploads that MAY be offensive # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server PHOTOPRISM_DATABASE_DRIVER: "mysql" # Use MariaDB (or MySQL) instead of SQLite for improved performance PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB database server (hostname:port) PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB database schema name PHOTOPRISM_DATABASE_USER: "REDACTED" # MariaDB database user name PHOTOPRISM_DATABASE_PASSWORD: "REDACTED" # MariaDB database user password PHOTOPRISM_SITE_URL: "http://127.0.0.1:2342/" # Public PhotoPrism URL PHOTOPRISM_SITE_TITLE: "Photos" PHOTOPRISM_SITE_CAPTION: "" PHOTOPRISM_SITE_DESCRIPTION: "" PHOTOPRISM_SITE_AUTHOR: "Tom Stock" PHOTOPRISM_TEMP_PATH: "./temp" # You may optionally set a user / group id using environment variables if your Docker version or NAS does not # support this natively (see next example): # UID: 1000 # GID: 1000 # UMASK: 0000 # Uncomment and edit the following line to set a specific user / group id (native): # user: "1000:1000" volumes: # Your photo and video files ([local path]:[container path]): # - "~/Pictures:/photoprism/originals" # Multiple folders can be indexed by mounting them as sub-folders of /photoprism/originals: # - "/mnt/Family:/photoprism/originals/Family" # [folder_1]:/photoprism/originals/[folder_1] # - "/mnt/Friends:/photoprism/originals/Friends" # [folder_2]:/photoprism/originals/[folder_2] # Mounting an import folder is optional (see docs): # - "~/Import:/photoprism/import" # Permanent storage for settings, index & sidecar files (DON'T REMOVE): - "./storage:/photoprism/storage" - "./originals:/photoprism/originals" - "./import:/photoprism/import" mariadb: image: mariadb:10.5 container_name: mariadb_photoprism restart: unless-stopped security_opt: - seccomp:unconfined - apparmor:unconfined 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: # Don't remove permanent storage for index database files! - "./database:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: REDACTED MYSQL_DATABASE: photoprism MYSQL_USER: REDACTED MYSQL_PASSWORD: REDACTED # Uncomment the following lines to upgrade automatically, whenever there is a new Docker image available: watchtower: image: containrrr/watchtower container_name: watchtower_photoprism restart: unless-stopped environment: WATCHTOWER_CLEANUP: "true" WATCHTOWER_POLL_INTERVAL: 7200 # Checks for updates every two hours volumes: - "/var/run/docker.sock:/var/run/docker.sock" # - "~/.docker/config.json:/config.json" # Optional, for authentication if you have a Docker Hub account ``` #### 6. Which software versions do you use? (a) PhotoPrism Architecture & Build Number: AMD64, ARM64, ARMv7,... Photoprism:latest on AMD64 (b) Database Type & Version: MariaDB, MySQL, SQLite,... MariaDB (c) Operating System Types & Versions: Linux, Windows, Android,... ``` $ uname -a Linux debian.example.com 4.19.0-22-cloud-amd64 #1 SMP Debian 4.19.260-1 (2022-09-29) x86_64 GNU/Linux ```
deekerman 2026-02-20 00:16:41 -05:00
  • closed this issue
  • added the
    question
    label
Author
Owner

@graciousgrey commented on GitHub (Nov 7, 2022):

Did you read the release notes ?
--> https://docs.photoprism.app/release-notes/#november-2-2022

Session and user management have been re-implemented. If you are upgrading from a preview build, you will need to run the photoprism users reset --yes command in a terminal after the upgrade to recreate the new database tables so that they are compatible with the stable version. This will not affect your pictures or albums.

Upgrading from the last stable version should work without any problems. However, if you have already created additional accounts with the previously offered unofficial multi-user support, you will notice that only the main admin account is migrated automatically. Run photoprism users legacy in a terminal to display the legacy accounts so you can migrate them manually if needed.

@graciousgrey commented on GitHub (Nov 7, 2022): Did you read the release notes ? --> https://docs.photoprism.app/release-notes/#november-2-2022 > Session and user management have been re-implemented. If you are upgrading from a preview build, you will need to run the photoprism users reset --yes [command in a terminal](https://docs.photoprism.app/getting-started/docker-compose/#command-line-interface) after the upgrade to recreate the new database tables so that they are compatible with the stable version. This will not affect your pictures or albums. > Upgrading from the last stable version should work without any problems. However, if you have already created additional accounts with the previously offered unofficial multi-user support, you will notice that only the main admin account is migrated automatically. Run photoprism users legacy [in a terminal](https://docs.photoprism.app/getting-started/docker-compose/#command-line-interface) to display the legacy accounts so you can migrate them manually if needed.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/photoprism#1601
No description provided.