# SPDX-FileCopyrightText: 2026 ProactiveProject
# SPDX-License-Identifier: GPL-3.0-or-later
#
# PocketBase per Agenda di Casa, versione "con il tuo server".
# Questo file è software libero: GNU GPL versione 3 o successiva, come l'app.
# PocketBase è software libero con licenza MIT.
#
# Il programma PocketBase NON è in questo repository: viene scaricato dal sito ufficiale
# mentre la "scatola" viene costruita, nella versione giusta per il tuo computer
# (PC normale = amd64, Raspberry Pi = arm64), e viene CONTROLLATO con la sua impronta
# SHA-256: se il file scaricato non è quello ufficiale, la costruzione si ferma.
#
# I dati stanno in /pb/pb_data: in Coolify questa cartella DEVE essere un volume
# permanente (Persistent Storage), altrimenti si perdono a ogni Deploy.

FROM alpine:3.24

# --- Le righe da cambiare quando aggiorni PocketBase (vedi LEGGIMI.md) --------------
# Versione di PocketBase.
ARG PB_VERSION=0.41.1
# Impronte SHA-256 dei due file ufficiali di QUESTA versione, copiate dal file
# checksums.txt pubblicato insieme a PocketBase. Se cambi PB_VERSION, cambia anche queste.
ARG PB_SHA256_AMD64=7504ec99a85fe405fc9941b4d94bdea20733b53707c8251b66fd0daa1444347e
ARG PB_SHA256_ARM64=341a249f97f4ff1ba8dfff81d357eb281cd346fbddae8b6ea43193f0647e036d
# Indirizzo da cui si scarica. SE LA COSTRUZIONE SI FERMA SUL DOWNLOAD, l'indirizzo è
# cambiato: apri pocketbase.io/docs, copia il link del file Linux e metti qui la parte
# che viene PRIMA di  /vNUMERO/pocketbase_NUMERO_linux_...zip
ARG PB_BASE_URL=https://ganigeorgiev.com/meta/pocketbase/pocketbase/download
# --------------------------------------------------------------------------------------

ARG TARGETARCH
ENV TZ=Europe/Rome
RUN apk add --no-cache ca-certificates tzdata unzip curl
WORKDIR /pb
RUN set -e; \
    ARCH="${TARGETARCH}"; \
    if [ -z "$ARCH" ]; then case "$(uname -m)" in x86_64) ARCH=amd64 ;; aarch64|arm64) ARCH=arm64 ;; *) echo "Architettura non supportata: $(uname -m)"; exit 1 ;; esac; fi; \
    case "$ARCH" in amd64) SUM="${PB_SHA256_AMD64}" ;; arm64) SUM="${PB_SHA256_ARM64}" ;; *) echo "Architettura non supportata: $ARCH"; exit 1 ;; esac; \
    URL="${PB_BASE_URL}/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_${ARCH}.zip"; \
    echo "Scarico PocketBase: $URL"; \
    curl -fL --retry 3 -o /tmp/pb.zip "$URL" || { echo "DOWNLOAD FALLITO: controlla PB_BASE_URL e PB_VERSION in cima al Dockerfile"; exit 1; }; \
    echo "${SUM}  /tmp/pb.zip" | sha256sum -c - || { echo "IMPRONTA SBAGLIATA: il file scaricato non è quello ufficiale di PocketBase ${PB_VERSION}, oppure le righe PB_SHA256 in cima al Dockerfile sono di un'altra versione. Costruzione fermata."; exit 1; }; \
    unzip -o /tmp/pb.zip pocketbase -d /pb; \
    rm /tmp/pb.zip; \
    chmod +x /pb/pocketbase; \
    /pb/pocketbase --version
COPY pb_migrations /pb/pb_migrations
EXPOSE 8090
CMD ["/pb/pocketbase", "serve", "--http=0.0.0.0:8090", "--dir=/pb/pb_data", "--migrationsDir=/pb/pb_migrations"]
