====== HomeGallery ======
**Note:** since i don't use this service anymore, this page might be not updated.
[[https://home-gallery.org|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.
===== Installation =====
Full documentation is well maintained and csan be found [[https://docs.home-gallery.org/install/index.html|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
===== Configuration =====
Full configuration is [[https://docs.home-gallery.org/configuration/index.html#configuration|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!
===== Reverse Proxy =====
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 [[selfhost:nginx|The Reverse Proxy concept]] for more details.
===== Autostart =====
For the API container, to start it, and set it up on boot, as usual follow my indications [[gentoo:containers|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 [[gentoo:locald|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.
===== Upgrade =====
See [[https://docs.home-gallery.org/install/index.html#upgrade-the-gallery|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 &