Trying to get set up using your Docker image behind a traefik reverse proxy. Here’s the relevant portion of my docker-compose:
photostructure:
container_name: photostructure
image: photostructure/server
restart: on-failure
networks:
- t2_proxy
stop_grace_period: 2m
# This is the user id and group id you want PhotoStructure to run as:
user: 1000:1000 # < CHANGE THIS LINE to userid:groupid you want PhotoStructure to run as
volumes:
# This is where your PhotoStructure Library will be stored.
# It must be readable, writable, and have sufficient free space.
# If it is a remote volume, uncomment the PS_FORCE_LOCAL_DB_REPLICA
# environment line below.
- type: bind
source: /home/abyss/photostructure # < CHANGE THIS LINE
target: /ps/library
# This must be fast, local disk with many gigabytes free.
# PhotoStructure will use this directory for file caching
# and for storing a temporary database replica when your
# library is on a remote volume.
- type: bind
source: "$DOCKERDIR/photostructure/tmp"
target: /ps/tmp
# This directory stores your "system settings"
- type: bind
source: "$DOCKERDIR/photostructure"
target: /ps/config
# This directory stores PhotoStructure logfiles.
- type: bind
source: "$DOCKERDIR/photostructure/logs"
target: /ps/logs
ports:
- 1787:1787/tcp
environment:
# PhotoStructure has _tons_ of settings. See
# <https://photostructure.com/faq/environment-variables/>
- "PS_LOG_LEVEL=info"
- "PS_TAIL_LOGS=1"
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.photostructure-rtr.entrypoints=https"
- "traefik.http.routers.photostructure-rtr.rule=HostHeader(`photostructure.$DOMAINNAME`)"
- "traefik.http.routers.photostructure-rtr.tls=true" # Had to add these to get the domain to resolve
- "traefik.http.routers.photostructure-rtr.tls.certresolver=dns-cloudflare" # Had to add these to get the domain to resolve
## Middlewares
- "traefik.http.routers.photostructure-rtr.middlewares=chain-basic-auth@file"
## HTTP Services
- "traefik.http.routers.photostructure-rtr.service=photostructure-svc"
- "traefik.http.services.photostructure-svc.loadbalancer.server.port=1787"
I’m seeing the UI, but when I go to do an initial import of a small token folder full of images, it just spins forever. The terminal output never throws errors, but it just keeps looping over the same output:
photostructure | 2021-01-05T18:54:11.277Z sync-62 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:54:16.463Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:54:21.550Z web-27 info WebRequest GET http://localhost/ping { ms: 2, status: 202, ip: '127.0.0.1', stale: true }
photostructure | 2021-01-05T18:54:23.954Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:54:26.255Z web-27 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:54:28.650Z sync-62 info SyncService status(): healthcheck is sad, let's clean up tmpfiles { ok:
photostructure | [ 'Used memory used by sync (23 MB) is OK',
photostructure | 'RSS memory used by sync (59 MB) is OK' ],
photostructure | warn: [ 'Only 4.02 GB are available on /.' ],
photostructure | bad: [],
photostructure | fail: [] }
photostructure | 2021-01-05T18:54:28.652Z sync-62 info TmpfileCleanup Removed 0 files.
photostructure | 2021-01-05T18:54:28.652Z sync-62 info TmpfileCleanup Pruned 0 empty directories.
photostructure | 2021-01-05T18:54:29.280Z sync-62 info TmpfileCleanup Removed 0 files.
photostructure | 2021-01-05T18:54:29.281Z sync-62 info TmpfileCleanup Pruned 0 empty directories.
photostructure | 2021-01-05T18:54:31.455Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:54:38.959Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:54:41.268Z web-27 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:54:41.299Z sync-62 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:54:43.588Z web-27 info WebRequest GET http://localhost/ping { ms: 2, status: 202, ip: '127.0.0.1', stale: true }
photostructure | 2021-01-05T18:54:46.459Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:54:51.087Z web-27 info WebRequest GET http://photostructure.REDACTED.com/updates { ms: 100453, status: 200, ip: '192.168.90.254', stale: true }
photostructure | 2021-01-05T18:54:51.667Z web-27 info WebRequest GET http://localhost/ping { ms: 2, status: 202, ip: '127.0.0.1', stale: true }
photostructure | 2021-01-05T18:54:53.962Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:55:00.708Z web-27 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:55:00.736Z sync-62 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:55:01.465Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:55:08.966Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:55:15.768Z web-27 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:55:16.467Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:55:21.819Z web-27 info WebRequest GET http://localhost/ping { ms: 2, status: 202, ip: '127.0.0.1', stale: true }
photostructure | 2021-01-05T18:55:23.970Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:55:28.433Z sync-62 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:55:28.464Z web-27 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:55:28.635Z sync-62 info SyncService status(): healthcheck is sad, let's clean up tmpfiles { ok:
photostructure | [ 'Used memory used by sync (23 MB) is OK',
photostructure | 'RSS memory used by sync (59 MB) is OK' ],
photostructure | warn: [ 'Only 4.02 GB are available on /.' ],
photostructure | bad: [],
photostructure | fail: [] }
photostructure | 2021-01-05T18:55:28.638Z sync-62 info TmpfileCleanup Removed 0 files.
photostructure | 2021-01-05T18:55:28.638Z sync-62 info TmpfileCleanup Pruned 0 empty directories.
photostructure | 2021-01-05T18:55:29.280Z sync-62 info TmpfileCleanup Removed 0 files.
photostructure | 2021-01-05T18:55:29.281Z sync-62 info TmpfileCleanup Pruned 0 empty directories.
photostructure | 2021-01-05T18:55:31.471Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:55:38.974Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:55:43.463Z main-14 info TmpfileCleanup Removed 0 files.
photostructure | 2021-01-05T18:55:43.466Z main-14 info TmpfileCleanup Pruned 0 empty directories.
photostructure | 2021-01-05T18:55:43.588Z web-27 info WebRequest GET http://localhost/ping { ms: 2, status: 202, ip: '127.0.0.1', stale: true }
photostructure | 2021-01-05T18:55:46.475Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:55:47.269Z web-27 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:55:47.309Z sync-62 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:55:52.016Z web-27 info WebRequest GET http://localhost/ping { ms: 2, status: 202, ip: '127.0.0.1', stale: true }
photostructure | 2021-01-05T18:55:53.977Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:56:01.479Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:56:02.274Z web-27 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
photostructure | 2021-01-05T18:56:08.980Z sync-62 info TagSql updateTagCounts() {}
photostructure | 2021-01-05T18:56:10.439Z sync-62 info currentLibraryLockOwner(/ps/library/.photostructure) currentLibraryLockOwner { result:
photostructure | { file: { nativePath: '/ps/library/.photostructure/opened-by/747y7qn-27.json' },
photostructure | hostname: 'REDACTED',
photostructure | serviceName: 'web',
photostructure | createdAt: 1609871248076,
photostructure | updatedAt: 1609871706538,
photostructure | systemUID: 'REDACTED',
photostructure | pid: 27 } }
I’m stumped.