Add photoprism
This commit is contained in:
parent
bec5b584af
commit
bcb299de35
|
@ -0,0 +1,7 @@
|
||||||
|
# selfhosted
|
||||||
|
|
||||||
|
## VPN
|
||||||
|
To be added (Tailscale)
|
||||||
|
|
||||||
|
## Backup strategy
|
||||||
|
To be added
|
|
@ -0,0 +1 @@
|
||||||
|
# backup strategy
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Encryption
|
||||||
|
|
||||||
|
https://wilw.dev/notes/volume-encryption
|
|
@ -0,0 +1,48 @@
|
||||||
|
# Mounting new volumes
|
||||||
|
|
||||||
|
1. ssh to storagebox
|
||||||
|
|
||||||
|
```
|
||||||
|
ssh -p23 u382808@u382808.your-storagebox.de
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Create a new directory
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir photoprism_import_data
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Navigate to [Hetzner cloud storage](https://robot.hetzner.com/storage). Create a new sub-account. Allow Samba, SSH, external reachability.
|
||||||
|
|
||||||
|
4. ssh to server
|
||||||
|
|
||||||
|
5. Create new credentials in `/etc/secure_config`:
|
||||||
|
|
||||||
|
```
|
||||||
|
username=(storagebox username)
|
||||||
|
password=(storagebox password)
|
||||||
|
```
|
||||||
|
|
||||||
|
6. Make mount directory
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo mkdir /mnt/photoprism_import_data
|
||||||
|
```
|
||||||
|
|
||||||
|
6. Update /etc/fstab
|
||||||
|
|
||||||
|
```
|
||||||
|
//u382808-sub3.your-storagebox.de/u382808-sub3 /mnt/photoprism_import_data cifs seal,vers=3,iocharset=utf8,rw,credentials=/etc/secure_config/.cifs-credentials-photoprism-import.txt,uid=1000,gid=1001,forceuid,forcegid,file_mode=0770,dir_mode=0770 0 0
|
||||||
|
```
|
||||||
|
|
||||||
|
7. Mount
|
||||||
|
|
||||||
|
```
|
||||||
|
mount -a
|
||||||
|
```
|
||||||
|
|
||||||
|
8. Verify that the storage box is mounted correctly:
|
||||||
|
|
||||||
|
```
|
||||||
|
df -h
|
||||||
|
```
|
|
@ -0,0 +1,12 @@
|
||||||
|
# photoprism
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Setup `.env`:
|
||||||
|
|
||||||
|
```
|
||||||
|
PHOTOPRISM_ADMIN_PASSWORD=''
|
||||||
|
PHOTOPRISM_DATABASE_PASSWORD=''
|
||||||
|
PHOTOPRISM_MARIADB_PASSWORD=''
|
||||||
|
PHOTOPRISM_MARIADB_ROOT_PASSWORD=''
|
||||||
|
``
|
|
@ -0,0 +1,63 @@
|
||||||
|
version: '3.5'
|
||||||
|
|
||||||
|
services:
|
||||||
|
photoprism:
|
||||||
|
image: photoprism/photoprism:latest
|
||||||
|
depends_on:
|
||||||
|
- mariadb
|
||||||
|
restart: unless-stopped
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
- apparmor:unconfined
|
||||||
|
ports:
|
||||||
|
- "100.104.163.2:2342:80"
|
||||||
|
environment:
|
||||||
|
PHOTOPRISM_ADMIN_PASSWORD: ${PHOTOPRISM_ADMIN_PASSWORD}
|
||||||
|
PHOTOPRISM_AUTH_MODE: "password"
|
||||||
|
PHOTOPRISM_SITE_URL: "http://100.104.163.2:2342:80"
|
||||||
|
PHOTOPRISM_ORIGINALS_LIMIT: 5000
|
||||||
|
PHOTOPRISM_HTTP_COMPRESSION: "gzip"
|
||||||
|
PHOTOPRISM_LOG_LEVEL: "info"
|
||||||
|
PHOTOPRISM_READONLY: "false"
|
||||||
|
PHOTOPRISM_EXPERIMENTAL: "false"
|
||||||
|
PHOTOPRISM_DISABLE_CHOWN: "false"
|
||||||
|
PHOTOPRISM_DISABLE_WEBDAV: "false"
|
||||||
|
PHOTOPRISM_DISABLE_SETTINGS: "false"
|
||||||
|
PHOTOPRISM_DISABLE_TENSORFLOW: "false"
|
||||||
|
PHOTOPRISM_DISABLE_FACES: "false"
|
||||||
|
PHOTOPRISM_DISABLE_CLASSIFICATION: "false"
|
||||||
|
PHOTOPRISM_DISABLE_RAW: "false"
|
||||||
|
PHOTOPRISM_RAW_PRESETS: "false"
|
||||||
|
PHOTOPRISM_JPEG_QUALITY: 85
|
||||||
|
PHOTOPRISM_DETECT_NSFW: "false"
|
||||||
|
PHOTOPRISM_UPLOAD_NSFW: "true"
|
||||||
|
PHOTOPRISM_DATABASE_DRIVER: "mysql"
|
||||||
|
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"
|
||||||
|
PHOTOPRISM_DATABASE_NAME: "photoprism"
|
||||||
|
PHOTOPRISM_DATABASE_USER: "photoprism"
|
||||||
|
PHOTOPRISM_DATABASE_PASSWORD: ${PHOTOPRISM_DATABASE_PASSWORD}
|
||||||
|
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
|
||||||
|
PHOTOPRISM_SITE_DESCRIPTION: ""
|
||||||
|
PHOTOPRISM_SITE_AUTHOR: ""
|
||||||
|
working_dir: "/photoprism"
|
||||||
|
volumes:
|
||||||
|
- "/mnt/photoprism_data:/photoprism/originals"
|
||||||
|
- "/mnt/photoprism_import_data:/photoprism/import"
|
||||||
|
- "${PWD}/storage:/photoprism/storage"
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: mariadb:10.8
|
||||||
|
security_opt:
|
||||||
|
- seccomp:unconfined
|
||||||
|
- apparmor:unconfined
|
||||||
|
command: mysqld --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
|
||||||
|
volumes:
|
||||||
|
- "/data/database:/var/lib/mysql"
|
||||||
|
environment:
|
||||||
|
MARIADB_AUTO_UPGRADE: "1"
|
||||||
|
MARIADB_INITDB_SKIP_TZINFO: "1"
|
||||||
|
MARIADB_DATABASE: "photoprism"
|
||||||
|
MARIADB_USER: "photoprism"
|
||||||
|
MARIADB_PASSWORD: ${PHOTOPRISM_MARIADB_PASSWORD}
|
||||||
|
MARIADB_ROOT_PASSWORD: ${PHOTOPRISM_MARIADB_ROOT_PASSWORD}
|
|
@ -15,6 +15,16 @@ docker-compose exec app restic snapshots -H <HOSTNAME>
|
||||||
docker-compose exec app restic restore --include /path/to/file <ID>
|
docker-compose exec app restic restore --include /path/to/file <ID>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
List snapshots
|
||||||
|
```
|
||||||
|
docker compose run --rm backup snapshots
|
||||||
|
```
|
||||||
|
|
||||||
|
View files uploaded in Backblaze
|
||||||
|
|
||||||
|
- In local, download via `brew install b2-tools`
|
||||||
|
- In server
|
||||||
|
|
||||||
## Known issues
|
## Known issues
|
||||||
```
|
```
|
||||||
Fatal: config or key 2327d55bb96f4cab846b07cc8ffe5906c88c3e657f326a506ccfcf95cd8fd1e7 is damaged: ciphertext verification failed
|
Fatal: config or key 2327d55bb96f4cab846b07cc8ffe5906c88c3e657f326a506ccfcf95cd8fd1e7 is damaged: ciphertext verification failed
|
||||||
|
|
Loading…
Reference in New Issue