# syntax=docker/dockerfile:1 ARG ENTE_GIT_REF=main FROM debian:bookworm AS ente-source ARG ENTE_GIT_REF RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates git && \ git clone --depth=1 --branch "${ENTE_GIT_REF}" https://github.com/ente-io/ente.git /src && \ rm -rf /var/lib/apt/lists/* FROM golang:1.24-bookworm AS museum-builder COPY --from=ente-source /src /ente WORKDIR /ente/server RUN apt-get update && \ apt-get install -y --no-install-recommends build-essential pkg-config libsodium-dev && \ rm -rf /var/lib/apt/lists/* RUN mkdir -p /build/museum && \ CGO_ENABLED=1 GOOS=linux go build -o /build/museum/museum ./cmd/museum && \ for dir in migrations web-templates mail-templates assets; do \ rm -rf "/build/museum/$dir"; \ if [ -d "$dir" ]; then \ cp -r "$dir" "/build/museum/$dir"; \ else \ mkdir -p "/build/museum/$dir"; \ fi; \ done FROM golang:1.24-bookworm AS cli-builder COPY --from=ente-source /src /ente WORKDIR /ente/cli RUN go build -o /build/ente . FROM node:20-bookworm-slim AS web-builder ENV NEXT_PUBLIC_ENTE_ENDPOINT=ENTE_API_ORIGIN_PLACEHOLDER ENV NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=ENTE_ALBUMS_ORIGIN_PLACEHOLDER COPY --from=ente-source /src /ente WORKDIR /ente/web RUN apt-get update && \ apt-get install -y --no-install-recommends build-essential python3 && \ rm -rf /var/lib/apt/lists/* RUN corepack enable RUN yarn install --network-timeout 1000000 RUN mkdir -p /build/web/photos /build/web/accounts /build/web/auth /build/web/cast /build/web/albums /build/web/family RUN set -e; \ yarn build:photos; \ yarn build:accounts; \ yarn build:auth; \ yarn build:cast RUN if [ -d "apps" ]; then \ for app in photos accounts auth cast; do \ if [ -d "apps/${app}/out" ]; then \ rm -rf "/build/web/${app}"; \ mkdir -p "/build/web/${app}"; \ cp -r "apps/${app}/out/." "/build/web/${app}/"; \ else \ printf 'Missing build output for %s\n' "${app}"; \ printf '

Ente %s

Build output missing.

\n' "${app}" > "/build/web/${app}/index.html"; \ fi; \ done; \ else \ for app in photos accounts auth cast; do \ printf '

Ente %s

Build output missing.

\n' "${app}" > "/build/web/${app}/index.html"; \ done; \ fi && \ rm -rf /build/web/albums /build/web/family && \ cp -r /build/web/photos /build/web/albums && \ cp -r /build/web/photos /build/web/family FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c ENV APP_DIR=/app/code \ DATA_DIR=/app/data \ HOME=/app/data/home RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates curl jq libsodium23 pkg-config postgresql-client caddy openssl && \ rm -rf /var/lib/apt/lists/* RUN mkdir -p /app/pkg /app/web "$HOME" && chown -R cloudron:cloudron /app /app/web "$HOME" COPY --from=ente-source /src ${APP_DIR} RUN rm -rf ${APP_DIR}/.git RUN mkdir -p /app/museum-bin COPY --from=museum-builder /build/museum/museum /app/museum-bin/museum COPY --from=museum-builder /build/museum/migrations ${APP_DIR}/server/migrations COPY --from=museum-builder /build/museum/web-templates ${APP_DIR}/server/web-templates COPY --from=museum-builder /build/museum/mail-templates ${APP_DIR}/server/mail-templates COPY --from=museum-builder /build/museum/assets ${APP_DIR}/server/assets RUN chmod +x /app/museum-bin/museum COPY --from=cli-builder /build/ente /app/code/ente RUN ln -sf /app/code/ente /usr/local/bin/ente && chmod +x /app/code/ente COPY --from=web-builder /build/web/photos /app/web/photos COPY --from=web-builder /build/web/accounts /app/web/accounts COPY --from=web-builder /build/web/auth /app/web/auth COPY --from=web-builder /build/web/cast /app/web/cast COPY --from=web-builder /build/web/albums /app/web/albums COPY --from=web-builder /build/web/family /app/web/family COPY start.sh /app/pkg/start.sh COPY admin-helper.sh /app/pkg/admin-helper.sh COPY admin-helper-direct.sh /app/pkg/admin-helper-direct.sh RUN chmod +x /app/pkg/start.sh /app/pkg/admin-helper.sh /app/pkg/admin-helper-direct.sh EXPOSE 3080 8080 CMD ["/app/pkg/start.sh"]