Note: since i don't use this service anymore, this page might be not updated.
HomeGallery is a nice photo gallery to be self-hosted. It support AI and many other features.
It comes with Docker and bare-metal instructions, which i like very much. Also it supports base-url's too.
The reverse-geocoding and AI stuff is accessed via public APIs on api.home-gallery.org specially for low-powered devices, but if your server can support it, you can also self host this part using Docker/Podman.
Full documentation is well maintained and csan be found here.
Create a homegallery user as a memeber of the photos group:
useradd -d /deposito/daemons/homegallery -m -g photos homegallery su - homegallery curl -sL https://dl.home-gallery.org/dist/latest/home-gallery-latest-linux-x64 -o gallery chmod 755 gallery
Installing the API server is ismpler using a container, do use the following docker-compose.yml:
version: "3.9" services: api: # custom build via #build: packages/api-server image: xemle/home-gallery-api-server environment: # TensorflowJS backends # - cpu: slowest and best support # - wasm: good perfromance for arm64 and amd64 platforms # - node: best performance on amd64 platform #- BACKEND=cpu #- BACKEND=wasm - BACKEND=node ports: - "3023:3000"
Note that you should not create a specific network for the API server to ensure it works with the non-containerized server.
Then the usual:
podman compose pull
Full configuration is here.
First of all, run HomeGallery to let it initialize the configiuration:
./gallery run init --source ~/Pictures
Now you can edit the /data/daemons/homegallery/.config/home-gallery/gallery.config.yml. In detail, you will want to edit at least the following values:
extractor: apiServer: url: http://localhost:3023 timeout: 30 concurrent: 5 server: port: 3022 host: '127.0.0.1' BasePath: /gallery/
Please note that for BasePath to work, the trailing / is required!
Example NGINX configuration:
location /gallery/ { proxy_pass http://127.0.0.1:3022/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
Refer to The Reverse Proxy concept for more details.
For the API container, to start it, and set it up on boot, as usual follow my indications Using Containers on Gentoo, so link the user-containers init script:
ln -s /etc/init.d/user-containers /etc/init.d/user-containers.homegalleryapi
and create the following config file:
USER=homegalleryapi DESCRIPTION="The homegallery APIs"
Add the service to the default runlevel and start it now:
rc-update add user-containers.homegalleryapi default rc-service user-containers.homegalleryapi start
For the web part, following my Custom User Services, in e you need symlinks for the server:
And the associated service support file /data/daemons/homegallery/service_homegallery_start:
COMMAND="/data/daemons/homegallery/gallery" ARGUMENTS=(run server)
Ensure the server starts after the container.
See here:
kill gallery podman compose down podman compose pull mv gallery gallery.old curl -sL https://dl.home-gallery.org/dist/latest/home-gallery-latest-linux-x64 -o gallery chmod 755 gallery podman compose up -d ./gallery run import ./gallery run server &