diff --git a/.gitignore b/.gitignore index 2923ed2..df34d04 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -/piwigo-data/ +/piwigo-data +/podman-quadlet/piwigo-data /.env \ No newline at end of file diff --git a/README.md b/README.md index ba08f58..ba139b2 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ An alpine based container to easily deploy piwigo ! +Check the [podman README](./podman-quadlet/README.md) if you would rather use podman. + ## Usage ### Starting the container diff --git a/podman-quadlet/README.md b/podman-quadlet/README.md new file mode 100644 index 0000000..c999982 --- /dev/null +++ b/podman-quadlet/README.md @@ -0,0 +1,75 @@ +# Piwigo podman (Quadlet) + +## Requirements + +- systemd +- podman + +## Usage + +Create `/etc/containers/systemd/piwigo/` and copy each quadlet units files in it. + +``` +/etc/containers/systemd/piwigo/ + ├── piwigo-db.container + ├── piwigo.container + └── piwigo.network +``` + +Reload systemd units and start the service : + +```sh +sudo systemctl daemon-reload +sudo systemctl start piwigo.service +``` + +### Changing the exposed port : + +Edit `piwigo.container` : + +```diff +- PublishPort=8080:80 ++ PublishPort=12345:80 +``` + +### Changing bind-mounts + +Bind mounts are links between the host filesystem and the containers. +Systemd placeholder are valid in quadlets, `%h` is match the container user home (`/root/`) see [the documentation](#documentation) + +Edit `piwigo.container` : + +```diff +- Volume=./piwigo-data/piwigo:/var/www/html/piwigo:z +- Volume=./piwigo-data/scripts:/usr/local/bin/scripts:z ++ Volume=%h/PiwigoPod/piwigo:/var/www/html/piwigo:z ++ Volume=%h/PiwigoPod/scripts:/usr/local/bin/scripts:z +``` + +And edit `piwigo-db.container` : + +```diff +- Volume=./piwigo-data/mysql:/var/lib/mysql:z ++ Volume=%h/PiwigoPod/mysql:/var/lib/mysql:z +``` + +### Updating + +Stop and restart your containers, podman should pull an updated image automatically. + +```sh +sudo systemctl stop piwigo.service piwigo-db.service +sudo systemctl daemon-reload +sudo systemctl start piwigo.service +``` + +### Diagnosing errors + +Access the systemd journal `sudo journalctl -eu piwigo.service`, most common errors are permision issues. +Ensure that your volume is in a valid location and has read and write permisions. + +### Documentation + +- [Quadlet unit documentation](https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html) +- [Volume documentation](https://docs.podman.io/en/v4.4/markdown/options/volume.html) +- [System unit placeholder table](https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#Specifiers) \ No newline at end of file diff --git a/podman-quadlet/piwigo-db.container b/podman-quadlet/piwigo-db.container new file mode 100644 index 0000000..33a39c3 --- /dev/null +++ b/podman-quadlet/piwigo-db.container @@ -0,0 +1,12 @@ +# Piwigo database container +[Container] +Environment=MARIADB_RANDOM_ROOT_PASSWORD=true MARIADB_USER=piwigodb_user MARIADB_DATABASE=piwigodb MARIADB_PASSWORD=PASSWORD +Image=docker.io/library/mariadb:lts +Network=piwigo.network +Volume=./piwigo-data/mysql:/var/lib/mysql:z + +[Service] +Restart=always + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/podman-quadlet/piwigo.container b/podman-quadlet/piwigo.container new file mode 100644 index 0000000..a0a617f --- /dev/null +++ b/podman-quadlet/piwigo.container @@ -0,0 +1,14 @@ +# Piwigo NGINX PHP-FPM container +[Unit] +Requires=piwigo-db.service +After=piwigo-db.service + +[Container] +Image=ghcr.io/piwigo/piwigo:latest +Network=piwigo.network +PublishPort=8080:80 +Volume=./piwigo-data/piwigo:/var/www/html/piwigo:z +Volume=./piwigo-data/scripts:/usr/local/bin/scripts:z + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/podman-quadlet/piwigo.network b/podman-quadlet/piwigo.network new file mode 100644 index 0000000..3cf20be --- /dev/null +++ b/podman-quadlet/piwigo.network @@ -0,0 +1,2 @@ +# Piwigo Network +[Network] \ No newline at end of file