Let me start by saying how amazing Gramps has been for me. I have only started my research and still have a long way to go but I would love to have some of my family members help me out.
The ideal situation for me is:
Run Gramps on a VM on Synology.
Run the Web API on a docker container
Run the Gramps.js on a docker container.
Boom the setup is complete. Create users for my family members and get them all to build the DB.
I am only looking for the setup of Gramps on NAS, the remaining two points I will figure out when I have Gramps running. Considering the limited resources, a NAS has, I was hoping somebody out in the forum has tried this and give some suggestions or share the config for this setup.
Hi! It depends on your NAS model - the more expensive ones can run Docker, then you can simply follow this approach. Without that, I suspect it will not work as Gramps depends on lots of packages that are not available on the NAS’s OS.
In my case, the NAS doesn’t support Docker, so I’m running my Gramps on a Raspberry Pi lying next to it
I have Gramps on multiple VM’s, both with full Graphical Linux Distros and Windows WSL2.
If your NAS can run a VM like KVM or similar VM Hosts, and it has enough RAM, it is just to install it as on any Linux Box.
I hav run Gramps with 2GB Ram for an Image on Hyper-V. I have not tested it with a large base, I think I had a totalt of 30-40k objects in the database.
Thanks for the replies @DavidMStraub and @StoltHD I will try with Ubuntu.
David, I will be hosting the webapi too in a docker env as you suggested but, I need gramps first up and running correct?
David, I will be hosting the webapi too in a docker env as you suggested but, I need gramps first up and running correct?
No, Gramps is installed in that docker image already. The Gramps Web API Dockerfile contains a line that bases it onto a Gramps image with Dockerfile here. You only need to make sure your Gramps database directory and media files are mounted correctly into the container
Can this set of steps be re-written the way it should actually occur? What are the assumptions? Since the WebAPI is still in a Read-Only stage, we are assuming a Tree has already been created on a local machine, right? So maybe we should start with the Example.gramps file already imported and that the Media Paths fixed after that import.
Here’s a tutorial on installing a different Docker image on the Synology site:
Got it working. The docker deployment instructions was magic. I did have trouble in authorization, not sure where to get the JWT token, as I have no users created to get the token.
I added DISABLE_AUTH in the config file and everything is working. This is only for test and not for production.
My steps above were thinking I needed Gramps installed separately. Now that I know the web API has Gramps and all I needed was the DB and media. Things became a bit clearer.
I will write up, what I tried on docker on Synology.
Meanwhile, I do not think this is Read only, correct? That is why the gramps.js project is out there for collaboration and edit access.
Meanwhile, I do not think this is Read only, correct? That is why the gramps.js project is out there for collaboration and edit access.
It is currently still read only because this is what we implemented first. Next will be adding support for creating objects in the backend (and to add the corresponding UI in Gramps.js), then to allow editing objects (which I think is trickier than adding new objects).
This is wonderful work @DavidMStraub
I will try my best to record the entire process and put it on YouTube if it helps. Will be my first video so not sure how it will sound or come out but want to help.
Writing an article tends to reveal issues that were overlooked. And, while it is nice to have an outline by the programmer, user docs tend to turn out better when written by someone who did NOT know what the programmer intended. (Then the programmer tells us about the Easter Eggs that were missed!)
Here’s a link on how to take advantage of a templates when write a tutorial style article for the wiki:
@DavidMStraub Thanks for taking care of it. I will wait for the official way to write those wikis.
Meanwhile, I jumped ahead with setting up Gramps.js. So, a quick question here, what is “Set Home Person”?
In the demo server you have set up, I type a couple of letters and it suggests a name and all good.
Update: I realised; I needed a bigger family tree. So used the example DB and copied it over to the db volume. Deleted the older folder.
Q1: Can we have multiple DBs?
Update2: With this new Example DB, I am still not able to set the home person on Gramps.js. Typing a letter or two does not prompt any user to select as home person.
Noticed in the container logs:
[2021-07-13 16:45:19 +0000] [7] [INFO] Starting gunicorn 20.1.0
[2021-07-13 16:45:19 +0000] [7] [INFO] Listening at: http://0.0.0.0:5000 (7)
[2021-07-13 16:45:19 +0000] [7] [INFO] Using worker: sync
[2021-07-13 16:45:19 +0000] [10] [INFO] Booting worker with pid: 10
[2021-07-13 16:45:19 +0000] [11] [INFO] Booting worker with pid: 11
[2021-07-13 16:45:19 +0000] [12] [INFO] Booting worker with pid: 12
[2021-07-13 16:45:19 +0000] [13] [INFO] Booting worker with pid: 13
[2021-07-13 16:45:19 +0000] [14] [INFO] Booting worker with pid: 14
[2021-07-13 16:45:19 +0000] [16] [INFO] Booting worker with pid: 16
[2021-07-13 16:45:19 +0000] [17] [INFO] Booting worker with pid: 17
[2021-07-13 16:45:19 +0000] [20] [INFO] Booting worker with pid: 20
Unable to init server: Could not connect: Connection refused
Unable to init server: Could not connect: Connection refused
Web Api Config:
TREE="Example" # set the name of your family tree
SECRET_KEY="lHgRmZ_AbwuDH6f3YkD9Y_rj0um_jjcRTfUk1vZw1gk" # set your secret key
DISABLE_AUTH=True
# do not change the following lines as they refer to paths within the container
USER_DB_URI="sqlite:////app/users/users.sqlite"
MEDIA_BASE_DIR="/app/media"
SEARCH_INDEX_DIR="/app/indexdir"
STATIC_PATH="/app/static"
CORS_ORIGINS="*"
I dearly hope that you will not wait and instead try to record that video tutorial you suggested earlier.
It might jumpstart a few users and give this project some extra contributors.
Plus, it is helpful to record such a thing while the memory of what felt un-intuitive is still fresh. Those are the items that need special mention in the video. And, when the developers watch the video, they will see where users missed opportunities.
I think that most of us do. (Well, those of us who are not narcissistic enough to be entranced by the sound of their own voices.)
I was tasked with a being the ‘talent’ and script writer on a series of hour-long tutorial videos in the 90s teaching techniques in 3D modeling. The company sold bunches of videos on different techniques but I was embarrassed by every one of them. And also when my voice was recognized at tradeshow. I preferred being behind the scenes as head of the tech support.
But our videographer flatly refused to work with anyone else… because my voice temperature and cadence was very consistent. That made edits on the video effortless, even when inserting a ‘take’ from a different week.
A decent recording environment can make a world of difference. Typically, a computer room has a lot of echo that will sound pretty bad. The cheapest solution is to put a blanket over your head while recording a voice over! Seriously, it will eliminate all the echo!! Or record in a walk-in clothes closet. Also, if you are going to do a fair amount of recording, there are now USB microphones for less than US $100 that do a pretty decent job. If you are interested, just search for inexpensive podcasting set ups.