3.1 KiB
Community Installation Guide
After installation take a look at the Post-install steps.
Podman (rootless container)
Podman is usually pre-installed in Fedora, CentOS, RHEL and derivatives. But if this is not the case, the instruction below will install all necessary packages.
RHEL based and RHEL-like systems
sudo dnf install podman
Download the configuration files from Invidious' repository
Note: Currently the repository has to be cloned, this is because the init-invidious-db.sh
file and the config/sql
directory have to be mounted to the postgres container (See the volumes section in the postgres' container). This "problem" will be solved in the future.
<INV-PATH>
Absolute path in your home directory where invidious will be downloaded (e.i. /home/johnsmith/.inv)
cd <INV-PATH>
git clone https://github.com/iv-org/invidious.git
Create Pod - videos
podman pod create --name videos -p 3000:3000
Create Container - postgres
podman create --rm \
--pod videos \
--name postgres \
--label "io.containers.autoupdate=registry" \
--health-cmd='pg_isready -U $POSTGRES_USER -d $POSTGRES_DB' \
-v postgresdata:/var/lib/postgresql/data \
-v <INV-PATH>/invidious/config/sql:/config/sql:z \
-v <INV-PATH>/invidious/docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh:z \
-e POSTGRES_DB=invidious \
-e POSTGRES_USER=kemal \
-e POSTGRES_PASSWORD=kemal \
docker.io/library/postgres:14
Create Container - invidious
Copy <INV-PATH>/invidious/config/config.example.yml
to <INV-PATH>/config.yml
and update parameters as required.
podman create --rm \
--pod videos \
--name invidious \
--label "io.containers.autoupdate=registry" \
--health-cmd="wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1" \
--health-interval=30s \
--health-timeout=5s \
--health-retries=2 \
-v <INV-PATH>/config.yml:/invidious/config/config.yml:z,U \
quay.io/invidious/invidious:latest
Create systemd services to manage the Pod
Podman can generate systemd services to handle the life cycle of pods and containers. The instructions below will create 3 service units, and they will be placed in the correct location ready to be used.
cd ~
cp $(podman generate systemd --new --files --name videos) .config/systemd/user
Start Pod
Despite the existance of 3 services, only the one related to the Pod must be used. The life cycle for the 2 containers implementing postgres and invidious will be handled by the pod.
systemctl --user daemon-reload
systemctl --user enable --now pod-videos.service
And similarly, the instruction below will re-start the service:
systemctl --user restart pod-videos.service
If this service runs on a server, it will stop as soon as you logout, because it is running in user space. To ensure it is persistent and remains active after logging out, you will need to enable user lingering.
loginctl enable-linger
Updating to the latest release
podman auto-update
podman image prune -f