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:
16
README.md
16
README.md
@@ -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
10
TODO.md
@@ -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
|
||||
|
||||
|
||||
22
deploy.sh
22
deploy.sh
@@ -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'"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user