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

164 lines
7.3 KiB
Plaintext

# https://www.reddit.com/r/selfhosted/comments/vpotsn/sheetable_selfhosted_music_sheet_organizer_v10/
Create user and group
---------------------
Credentials -> Local Users -> Add
Full Name: sheetable
Username: sheetabl
Disable Password: <select>
Email: <leave blank>
UID: (note)
Create New Primary Group: <unselect>
Primary Group: sheetabl
Create Home Directory: <uncheck>
Samba Authentication: <uncheck>
Save
sheetabl UID: 3051
sheetabl GID: 3050
Create datasets
---------------
/mnt/SSD1/docker/data/sheetable # set Owner:Group to sheetabl:sheetabl
/mnt/SSD1/docker/data/sheetable/config # set Owner:Group to sheetabl:sheetabl
/mnt/SSD1/docker/data/sheetable/pgbackups # set Owner:Group to pguser:pguser
/mnt/SSD1/docker/data/sheetable/pgdata # set Owner:Group to pguser:pguser
Create secrets folder
---------------------
mkdir -p /opt/stacks/sheetable/secrets
Verifying truenas sheetable container sheets folder
---------------------------------------------------
# List sheetable pods to check if they are running and to get pod name. If not, wait for the container to start:
k3s kubectl get pods -n ix-sheetable
# If all are ok, the listed containers should resemble the following:
# NAME READY STATUS RESTARTS AGE
# sheetable-cnpg-main-1 1/1 Running 0 5d23h
# sheetable-66df7b74c5-qr9jq 1/1 Running 0 12m
# Verify that the /app/config folder has a sheets subfolder:
k3s kubectl exec -n ix-sheetable sheetable-66df7b74c5-qr9jq -c sheetable -it -- ls -al /app/config
# expected listing:
# total 2
# drwxr-xr-x 3 568 568 3 Jul 11 16:33 .
# drwxr-xr-x 1 root root 3 Sep 21 11:58 ..
# drwxr-xr-x 4 568 568 4 Jul 11 16:33 sheets
# If you don't see the sheets folder as per the above, shell into the container and check where the sheets folder is located.
k3s kubectl exec -n ix-sheetable sheetable-66df7b74c5-qr9jq -c sheetable -it -- sh
# Update the APPLICATION_CONFIG_PATH value in the .env file with the correct location if not /app/config
Copy folder to docker stacks
----------------------------
# In Windows cmd shell in sheetable folder, enter:
./cp2nas
# or
pscp -P 22 -r stacks/*.* root@192.168.2.2:/mnt/SSD1/docker/stacks/sheetable/
# This should copy sheetable stacks folder to /mnt/SSD1/docker/stacks/sheetable
Create secrets
--------------
# In Truenas shell:
cd /mnt/SSD1/docker/stacks/sheetable/secrets
echo -n 'your_admin_email' > /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_admin_email
echo -n 'your_admin_password' > /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_admin_password
echo -n 'your_db_name' > /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_postgresql_database
echo -n 'your_db_user' > /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_postgresql_username
openssl rand 36 | base64 -w 0 > /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_postgresql_password
openssl rand 26 | base64 -w 0 | sed 's/[\$,\#,/,+,=]//g' > /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_api_secret
# restrict access
cd /mnt/SSD1/docker/stacks/sheetable
chown -R sheetabl:sheetabl secrets/
chmod -R 400 secrets/
# read existing acl permissions, if any
getfacl /mnt/SSD1/docker/stacks/sheetable/secrets
# set acl permissions
setfacl -m u:postgres:4 /mnt/SSD1/docker/stacks/sheetable/secrets
setfacl -m u:postgres:4 /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_postgresql_password
setfacl -m u:postgres:4 /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_postgresql_username
setfacl -m u:postgres:4 /mnt/SSD1/docker/stacks/sheetable/secrets/sheetable_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/authentik/secrets
for i in $(ls -1); do echo $i = `cat $i`; done | sort
Backup sheetable 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 => sheetable -> Databases -> sheetable
# Right click on sheetable database and select Backup...
# Enter the following on the different tabs of dialog box that opened:
General:
# Replace ##### with date in YYYY-MM-DD format when backup is being made
Filename: /#####/sheetable-backup.sql (this maps to: /mnt/stpool1/apps/pgadmin/storage/stuurmcp_telkomsa.net/#####/sheetable-backup.sql on truenas)
# Or click on folder icon and navigate to the folder that was created above. Enter sheetable-backup.sql in Save As field, then click on Create
Format: Plain
Encoding: UTF8
Role name: sheetable
Data Options:
Sections:
Pre-data: <select>
Data: <select>
Post-data: <select>
Objects:
Check public to select all objects
Click Backup
# After backup, verify presence of backup file:
ls -al /mnt/stpool1/apps/pgadmin/storage/stuurmcp_telkomsa.net/$(date -I)
Migrating database
------------------
# In truenas shell
# copy backup file(s) to sheetable backups folder, replacing $(date -I) with date when backup was made if not today
cp -vr /mnt/stpool1/apps/pgadmin/storage/stuurmcp_telkomsa.net/$(date -I) /mnt/SSD1/docker/data/sheetable/pgbackups
jlmkr shell docker
cd /opt/stacks/sheetable
docker compose down
# remove all files/folders from pgdata; if any are already in this folder with data to be retained, move it to another folder before executing next command
rm -r /mnt/data/sheetable/pgdata/*
docker compose up -d
# After successfull startup of sheetable and postgres, stop sheetable from docker cmd line
docker stop sheetable
docker exec sheetable_postgresql psql -U sheetable -d postgres -c "DROP DATABASE \"sheetable\";"
docker exec sheetable_postgresql psql -U sheetable -d postgres -c "CREATE DATABASE \"sheetable\";"
docker exec sheetable_postgresql psql -U sheetable -d sheetable -f /mnt/backups/$(date -I)/sheetable-backup.sql # replace $(date -I) with the appropriate date
Migrating config storage
------------------------
# In truenas shell
# copy config storage to new install data folder
cp -pr /mnt/stpool1/apps/sheetable/* /mnt/SSD1/docker/data/sheetable/appdata/
chown -R sheetabl:sheetabl /mnt/SSD1/docker/data/sheetable/appdata/
docker start sheetable
Default admin login
-------------------
Email: admin@admin.com
Password: sheetable
Stop truenas sheetable
-----------------------
# In truenas shell
heavyscript app --stop sheetable
# NB: Do NOT stop sheetable with truenas gui
Troubleshooting
---------------
# If you get persistent db authentication errors:
Ensure that the service name (name of the stanza), host name and container name of the postgresql container in the compose.yml file and the DB_HOST value in the .env file are all the same
# If you cannot login to sheetable with the email and password used on the truenas version:
Check the /mnt/data/sheetable/config folder to see if there is any *.db file created. If so, it means that sheetable created a default sqlite db instead of using postgres. Make sure that the .sheetable.env file has a DB_DRIVER=postgres line item.
If you need to log into db
--------------------------
docker exec -it sheetable_postgresql bash
psql -U sheetable -d sheetable