NOTE: docker tag latest
does not work currently use its alias: latest-debian-buster
instead until it gets fixed.
You can use docker to run PiGallery2. See all available docker tags here. available tags:
v*
(stable): built from the a release with the same version name.latest
(stable): same as the latestv*
, built with debian stretchnightly
: built from the current state ofmaster
. This might break from time to time.
Note: Some changes may require database reset or config changes, see #317 (If you want to reduce the frequency of those, use stable builds (latest
)
We support multiple architectures, including amd64
, arm32v7
, arm64v8
.
Official installation guide here, but this will most likely do the trick (source):
curl -sSL https://get.docker.com | sh
It is recommended to use docker-compose to run pigallery2.
Official docker-compose installation guide here, but this will most likely do the trick (source): Install dependencies:
sudo apt-get install libffi-dev libssl-dev
sudo apt-get install -y python python-pip
sudo apt-get remove python-configparser
Install docker-compose:
sudo pip install docker-compose
You can check if it was successful with docker-compose --version
.
Download docker-compose/default/docker-compose.yml and docker-compose/default/nginx.conf.
Edit docker-compose.yml
at the # CHANGE ME
lines to point the volumes to the right image
and tmp
directories.
Edit nginx.conf
at the # CHANGE ME
lines by replacing yourdomain.com
to you domain address.
Note: Do not change the image
and the tmp
path in the config.json
or in the UI, only through the volume
settings of the docker. See here and here.
Note: We are using nginx as reverse proxy to handle https and do proper HTTP queuing, gzipping, etc. Full nginx-based docker-compose tutorial here.
Note 2: You can skip nginx, by using docker-compose/pigallery2-only/docker-compose.yml.
Install certbot: https://certbot.eff.org/. (Certbot uses letsencrypt to get free certificate). Than get your certificate:
certbot certonly --standalone -d yourdomain.com
Note: if you get an error like Problem binding to port 80: Could not bind to IPv4 or IPv6.
THen a service is running on port 80. If it's a fresh raspberry install, it's potentially nginx, you can disable it with sudo systemctl disable nginx
details here
In the folder that has docker-compose.yml
:
docker-compose up -d
-d
runs it as a daemon. Remove it, so you will see the logs.
After the containers are up and running, you go to yourdomain.com
and log in with user: admin
pass: admin
and set up the page in the settings.
Full list of configuration options are available at the MANPAGE.md.
Note: docker-compose.yml
contains restart:always
, so the containers will be automatically started after reboot (read more here).
docker-compose pull # get new version
docker-compose down # stop running container
docker system prune # from time to time its nice to clean up docker
docker-compose up -d # start containers
If you want to run the container by yourself, here you go:
docker run \
-p 80:80 \
-e NODE_ENV=production \
-v <path to your config file folder>:/app/data/config \
-v <path to your db file folder>:/app/data/db \
-v <path to your images folder>:/app/data/images \
-v <path to your temp folder>:/app/data/tmp \
bpatrik/pigallery2:latest
After the container is up and running, you go to http://localhost
and log in with user: admin
pass: admin
and set up the page in the settings.
Note: even with memory
db, pigallery2 creates a db file for storing user credentials (if enabled), so mounting (with -v
) the /app/data/db
folder is recommended.
Note2: Do not change the image
and the tmp
path in the config.json
or in the UI, only through the volume
settings of the docker. See here and here.
There was a breaking change in Docker files after v1.7.0. Use this to run earlier versions:
docker run \
-p 80:80 \
-e NODE_ENV=production \
-v <path to your config file folder>/config.json:/pigallery2-release/config.json \
-v <path to your db file folder>/sqlite.db:/pigallery2-release/sqlite.db \
-v <path to your images folder>:/pigallery2-release/demo/images \
-v <path to your temp folder>:/pigallery2-release/demo/TEMP \
bpatrik/pigallery2:1.7.0-stretch
Make sure that a file at <path to your config file folder>/config.json
and sqlite.db
files exists before running it.
You do not need the <path to your db file folder>/sqlite.db
line if you don't use the sqlite database.
You can clone the repository and build the image, or you can just use the 'self-contained' Dockerfile: debian-stretch/selfcontained/Dockerfile