docker-apps/photoview/photoview_jm.txt
2025-04-03 22:57:52 +02:00

133 lines
5.1 KiB
Plaintext

Create user and group
---------------------
Credentials -> Local Users -> Add
Full Name: photoview
Username: photovw
Disable Password: <selected>
Email: stuurmcp@telkomsa.net
UID: 3018
Create New Primary Group: <unselected>
Create Home Directory: <unchecked>
Samba Authentication: <unchecked>
Save
Credentials -> Local Groups -> Add
Name: photovw
GID: 3056
photovw UID: 3018
photovw GID: 3056
Create datasets
---------------
# In Truenas shell:
# list datasets
zfs list | grep -i "docker.*photoview"
# create following datasets if not present
zfs create SSD1/docker/data/photoview
zfs create SSD1/docker/data/photoview/appdata
zfs create SSD1/docker/data/photoview/config
zfs create SSD1/docker/data/photoview/pgdata
zfs create SSD1/docker/data/photoview/pgbackups
chown -R photovw:photovw /mnt/SSD1/docker/data/photoview
chown -R postgres:postgres /mnt/SSD1/docker/data/photoview/pgdata
chown -R postgres:postgres /mnt/SSD1/docker/data/photoview/pgbackups
Create folder
-------------
mkdir -p /opt/stacks/photoview/secrets
Copy folder to docker stacks
----------------------------
In Windows cmd shell in photoview parent (apps) folder, enter:
./cp2nas 10.0.0.20 photoview
# or
pscp -P 22 -r photoview/stacks/*.* root@10.0.0.20:/mnt/SSD1/docker/stacks/photoview/
Create secrets
--------------
# NB! As of writing of this guide, I could not get photoview to work with docker secrets; steps are included to adopt docker secrets as soon as photoview supports it
# In Truenas shell:
cd /mnt/SSD1/docker/stacks/photoview/secrets
# database secrets
echo -n 'your_postgresql_database_name' > /mnt/SSD1/docker/stacks/photoview/secrets/photoview_postgresql_database
echo -n 'your_postgresql_username' > /mnt/SSD1/docker/stacks/photoview/secrets/photoview_postgresql_username
openssl rand 36 | base64 -w 0 > /mnt/SSD1/docker/stacks/photoview/secrets/photoview_postgresql_password
# for future photoview's benefit
cd /mnt/SSD1/docker/stacks/photoview/secrets/
echo -n "postgres://$(cat photoview_postgresql_username):$(cat photoview_postgresql_password)@photoview_postgresql:5432/$(cat photoview_postgresql_database)" > photoview_database_url
# restrict access
chown -R photovw:photovw /mnt/SSD1/docker/stacks/photoview/secrets/
chmod -R 400 /mnt/SSD1/docker/stacks/photoview/secrets/
# read existing acl permissions, if any
getfacl /mnt/SSD1/docker/stacks/photoview/secrets
# set acl permissions
setfacl -m u:postgres:4 /mnt/SSD1/docker/stacks/photoview/secrets
setfacl -m u:postgres:4 /mnt/SSD1/docker/stacks/photoview/secrets/photoview_postgresql_password
setfacl -m u:postgres:4 /mnt/SSD1/docker/stacks/photoview/secrets/photoview_postgresql_username
setfacl -m u:postgres:4 /mnt/SSD1/docker/stacks/photoview/secrets/photoview_postgresql_database
# NB! if you want to remove all acl entries from a folder recursively, use setfacl -b -R <foldername>
# to list secrets in secrets dir
cd /mnt/SSD1/docker/stacks/photoview/secrets
for i in $(ls -1); do echo $i = `cat $i`; done | sort
Backup photoview database
---------------------
In truenas shell:
mkdir /mnt/stpool1/apps/pgadmin/storage/stuurmcp_telkomsa.net/$(date -I)
chown pgadmin:pgadmin /mnt/stpool1/apps/pgadmin/storage/stuurmcp_telkomsa.net/$(date -I)
Using browser log in to pgAdmin on truenas
Connect to servers; refer to "connecting to servers.txt", which also explains how to obtain db passwords
To perform plain text backup:
Navigate to Servers => photoview -> Databases -> photoview
Right click on photoview database and select Backup...
Enter the following on the different tabs of dialog box that opened:
General:
Replace ##### with today's date in YYYY-MM-DD format
Filename: /#####/photoview-backup.sql (this maps to: /mnt/stpool1/apps/pgadmin/storage/stuurmcp_telkomsa.net/#####/photoview-backup.sql on truenas)
Format: Plain
Encoding: UTF8
Role name: photoview
Data Options:
Sections:
Pre-data: <select>
Data: <select>
Post-data: <select>
Objects:
Check public to select all objects
Click Backup
Migrating database
------------------
# Refresh Dockge window/tab and start photoview in Dockge
# After successfull startup of photoview and postgress, stop photoview from cmd line
docker stop photoview
# copy back up file(s) to photoview backups folder
cp -vr /mnt/stpool1/apps/pgadmin/storage/stuurmcp_telkomsa.net/$(date -I) /mnt/SSD1/docker/data/photoview/pgbackups #replace $(date -I) with date when backup was made if not today
jlmkr shell docker
docker exec -it photoview_postgresql sh
psql -U photoview -d photoview < /mnt/backups/photoview-backup.sql
docker start photoview
exit
Copying photoview media-cache (optional)
----------------------------------------
If you choose not to copy the cache, prepare for a long wait (depending on the number photos) for thumbnails to be regenerated
In truenas shell:
cp -rp /mnt/stpool1/apps/photoview/* /mnt/SSD1/docker//data/photoview/appdata/media-cache/
chown -R photovw:media /mnt/SSD1/docker//data/photoview/appdata/media-cache
Starting up new photoview
---------------------
If photoview and postgresql containers are healthy in Dockge, browse to photoview.sthome.org
Stopping old photoview
----------------------
# Use heavyscript (not the truenas gui) to stop the app:
heavyscript app --stop photoview