Move photo paths from /volume2/photos to /volume1/data/photos

Immich data share is on /volume1/data, so photos belong there too.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Nick Roodenrijs
2026-03-08 19:06:35 +01:00
parent 04ca39d2be
commit 2a2e51b1ae
3 changed files with 24 additions and 24 deletions

View File

@@ -7,7 +7,7 @@ Automatic photo processing pipeline for Fuji X-H2 photos: camera uploads via FTP
```
┌─────────────┐ FTPS ┌──────────────────┐ watchdog ┌─────────────┐
│ Fuji X-H2 │ ──────────→ │ Synology NAS │ ────────────→ │ Processor │
│ (camera) │ port 21 │ /volume2/photos/ │ polling │ container │
│ (camera) │ port 21 │ /volume1/data/photos/ │ polling │ container │
└─────────────┘ (TLS) │ incoming/ │ └──────┬──────┘
└──────────────────┘ │
│ resize + move
@@ -39,7 +39,7 @@ Automatic photo processing pipeline for Fuji X-H2 photos: camera uploads via FTP
2. Enable FTP service on port **21**
3. Enable **FTP SSL/TLS encryption** (FTPS)
4. Set passive port range: **50000-50100**
5. Create a dedicated user `fujiftp` with write access to `/volume2/photos/incoming`
5. Create a dedicated user `fujiftp` with write access to `/volume1/data/photos/incoming`
### 2. Camera Configuration (Fuji X-H2)
@@ -72,9 +72,9 @@ The deploy script will:
### 4. Immich Integration
1. In Immich, go to **Administration → External Libraries**
2. Add a new library with import path: `/volume2/photos/processed`
2. Add a new library with import path: `/volume1/data/photos/processed`
3. Set scan interval (e.g., every 15 minutes)
4. Mount `/volume2/photos/processed` into the Immich container as a read-only volume
4. Mount `/volume1/data/photos/processed` into the Immich container as a read-only volume
## Container Details
@@ -82,9 +82,9 @@ The deploy script will:
| Container Path | Host Path | Purpose |
|----------------|----------------------------------------|---------------------------|
| `/incoming` | `/volume2/photos/incoming` | FTP upload landing zone |
| `/originals` | `/volume2/photos/originals` | Full-resolution originals |
| `/processed` | `/volume2/photos/processed` | Resized copies for Immich |
| `/incoming` | `/volume1/data/photos/incoming` | FTP upload landing zone |
| `/originals` | `/volume1/data/photos/originals` | Full-resolution originals |
| `/processed` | `/volume1/data/photos/processed` | Resized copies for Immich |
| `/data` | `/volume2/docker/photo-processor/data` | SQLite tracking database |
### Environment Variables
@@ -108,7 +108,7 @@ ssh -i ../SynologyDocker/synology_ssh_key ssh@192.168.175.141 \
### Common Issues
- **Files not detected**: Check that the FTP user has write permissions to `/volume2/photos/incoming`. The processor uses polling (not inotify) so there may be up to a 30-second delay.
- **Files not detected**: Check that the FTP user has write permissions to `/volume1/data/photos/incoming`. The processor uses polling (not inotify) so there may be up to a 30-second delay.
- **Permission denied on originals/processed**: Ensure the directories exist and are writable. The deploy script creates them automatically.
- **Duplicate filenames**: The processor tracks files by filename in SQLite. If you re-upload a file with the same name, it will be skipped. Delete the entry from `/volume2/docker/photo-processor/data/processed.db` to reprocess.
- **Container keeps restarting**: Check logs for Python errors. Common cause: missing directories or permission issues on volume mounts.

10
TODO.md
View File

@@ -16,13 +16,13 @@
- [ ] Geen toegang tot andere shares
## 3. NAS Directories aanmaken
- [ ] DSM → Control Panel → Shared Folder → Create `photos` op Volume 2
- [ ] Maak `/volume1/data/photos/` directory aan (data share bestaat al)
- [ ] File Station → maak subdirectories:
- [ ] `incoming`
- [ ] `originals`
- [ ] `processed`
- [ ] Geef `fujiftp` user lees/schrijf-rechten op `incoming`
- [ ] Controleer: `ls -la /volume2/photos/` via SSH
- [ ] Controleer: `ls -la /volume1/data/photos/` via SSH
## 4. Photo Processor deployen
- [ ] `cd /Users/nick/Development/fuji-photo-processor`
@@ -33,7 +33,7 @@
- [ ] DSM → Container Manager → Project → immich → Edit (YAML)
- [ ] Voeg toe aan `immich-server` service volumes:
```yaml
- /volume2/photos/processed:/mnt/photos/processed:ro
- /volume1/data/photos/processed:/mnt/photos/processed:ro
```
- [ ] Apply → container herstart automatisch
- [ ] Immich webinterface (http://192.168.175.141:8212):
@@ -61,8 +61,8 @@
- [ ] FTPS verbinding testen: `curl --ftp-ssl ftp://fujiftp@192.168.175.141/incoming/ -k`
- [ ] Upload een test JPEG via FTP
- [ ] Check processor logs → moet verwerking tonen
- [ ] Check `/volume2/photos/originals/` → origineel verplaatst
- [ ] Check `/volume2/photos/processed/` → geresized kopie aanwezig
- [ ] Check `/volume1/data/photos/originals/` → origineel verplaatst
- [ ] Check `/volume1/data/photos/processed/` → geresized kopie aanwezig
- [ ] Immich → trigger library scan → foto zichtbaar in timeline
- [ ] Test vanaf camera: foto nemen → FTP Transfer → check hele flow

View File

@@ -49,12 +49,12 @@ create_directories() {
ssh_cmd "mkdir -p $NAS_DOCKER_DIR/data $NAS_DOCKER_DIR/build"
# Photos dirs may need elevated permissions - check and warn
if ! ssh_cmd "test -d /volume2/photos/incoming" 2>/dev/null; then
log_warn "/volume2/photos/ directories not found!"
if ! ssh_cmd "test -d /volume1/data/photos/incoming" 2>/dev/null; then
log_warn "/volume1/data/photos/ directories not found!"
log_warn "Create them via DSM File Station or as admin:"
log_warn " sudo mkdir -p /volume2/photos/{incoming,originals,processed}"
log_warn " sudo chown -R fujiftp:users /volume2/photos/incoming"
log_warn " sudo chmod 755 /volume2/photos/{originals,processed}"
log_warn " sudo mkdir -p /volume1/data/photos/{incoming,originals,processed}"
log_warn " sudo chown -R fujiftp:users /volume1/data/photos/incoming"
log_warn " sudo chmod 755 /volume1/data/photos/{originals,processed}"
exit 1
fi
}
@@ -82,9 +82,9 @@ start_container() {
--restart unless-stopped \
--memory=256m \
-e TZ=Europe/Amsterdam \
-v /volume2/photos/incoming:/incoming \
-v /volume2/photos/originals:/originals \
-v /volume2/photos/processed:/processed \
-v /volume1/data/photos/incoming:/incoming \
-v /volume1/data/photos/originals:/originals \
-v /volume1/data/photos/processed:/processed \
-v "$NAS_DOCKER_DIR/data:/data" \
"$IMAGE_NAME"
}
@@ -125,9 +125,9 @@ main() {
echo ""
log_info "=== Deployment Complete ==="
log_info "Container: $CONTAINER_NAME"
log_info "Incoming: /volume2/photos/incoming (FTP upload target)"
log_info "Originals: /volume2/photos/originals/YYYY/MM/"
log_info "Processed: /volume2/photos/processed/YYYY/MM/"
log_info "Incoming: /volume1/data/photos/incoming (FTP upload target)"
log_info "Originals: /volume1/data/photos/originals/YYYY/MM/"
log_info "Processed: /volume1/data/photos/processed/YYYY/MM/"
echo ""
log_info "Check logs: ssh -i $SSH_KEY $NAS_HOST 'sudo /usr/local/bin/docker logs -f $CONTAINER_NAME'"
}