diff --git a/Config/F-DroidRepo/Dockerfile b/Config/F-DroidRepo/Dockerfile new file mode 100644 index 0000000..1134423 --- /dev/null +++ b/Config/F-DroidRepo/Dockerfile @@ -0,0 +1,49 @@ +# Build a container which hosts Android apps through an F-Droid repository. + +# Base Image # + +FROM debian:trixie-slim + +# Setup # + +RUN mkdir -pv "$REPO/" + +# Install Packages# + +# TBD/TODO: get list of packages +RUN apt-get update && apt-get install bash curl fdroidserver + +# Download Files # + +# TBD/TODO: is a remove necessary to get updates if the files already exist? +#RUN bash -c 'rm -rfv "$REPO"/*' + +RUN bash -c 'if [[ -n "$FILE0" ]]; then curl "$FILE0" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE1" ]]; then curl "$FILE1" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE2" ]]; then curl "$FILE2" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE3" ]]; then curl "$FILE3" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE4" ]]; then curl "$FILE4" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE5" ]]; then curl "$FILE5" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE6" ]]; then curl "$FILE6" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE7" ]]; then curl "$FILE7" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE8" ]]; then curl "$FILE8" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE9" ]]; then curl "$FILE9" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE10" ]]; then curl "$FILE10" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE11" ]]; then curl "$FILE11" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE12" ]]; then curl "$FILE12" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE13" ]]; then curl "$FILE13" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE14" ]]; then curl "$FILE14" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE15" ]]; then curl "$FILE15" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE16" ]]; then curl "$FILE16" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE17" ]]; then curl "$FILE17" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE18" ]]; then curl "$FILE18" "$REPO"/; fi' +RUN bash -c 'if [[ -n "$FILE19" ]]; then curl "$FILE19" "$REPO"/; fi' + +# Start Container # + +USER root +WORKDIR "$REPO" +CMD cd "$REPO" && \ + fdroid update \ + && tail -F /var/mail/mail & \ + && wait -n diff --git a/Config/F-DroidRepo/README.md b/Config/F-DroidRepo/README.md new file mode 100644 index 0000000..20a487b --- /dev/null +++ b/Config/F-DroidRepo/README.md @@ -0,0 +1,15 @@ +# F-Droid Repo + +Simple container to create a 3rd party repository to be imported into F-Droid. + +Downloads all the APKs during the build process and loads them automatically, +does not need any interaction other than modifying the `.env` with the URLs +of the apps you would like to be present. + +If any apps get updated, rebuilding the container should pull any changes. + +``` shell +docker compose down +docker compose build +docker compose up -d +``` diff --git a/Config/F-DroidRepo/docker-compose.example.yml b/Config/F-DroidRepo/docker-compose.example.yml new file mode 100644 index 0000000..33c7957 --- /dev/null +++ b/Config/F-DroidRepo/docker-compose.example.yml @@ -0,0 +1,41 @@ +# 2025-11-01 Hyperling +# Create a 3rd party F-Droid repository for providing app updates. + +services: + + app: + container_name: fd-app + build: + context: ./ + network: host + restart: always + environment: + - REPO=$REPO + - FILE0=$FILE0 + - FILE1=$FILE1 + - FILE2=$FILE2 + - FILE3=$FILE3 + - FILE4=$FILE4 + - FILE5=$FILE5 + - FILE6=$FILE6 + - FILE7=$FILE7 + - FILE8=$FILE8 + - FILE9=$FILE9 + - FILE10=$FILE10 + - FILE11=$FILE11 + - FILE12=$FILE12 + - FILE13=$FILE13 + - FILE14=$FILE14 + - FILE15=$FILE15 + - FILE16=$FILE16 + - FILE17=$FILE17 + - FILE18=$FILE18 + - FILE19=$FILE19 + volumes: + - ../../Volumes/F-DroidRepo:$REPO + deploy: + mode: global + resources: + limits: + cpus: $CPU + memory: $RAM diff --git a/Config/F-DroidRepo/example.env b/Config/F-DroidRepo/example.env new file mode 100644 index 0000000..679cdd1 --- /dev/null +++ b/Config/F-DroidRepo/example.env @@ -0,0 +1,41 @@ +# This file will need copied as `.env` and to have its values changed. + +## Docker ## + +COMPOSE_BAKE=true + +## Performance ## + +CPU=0.25 +MEM=0.25G + +## Repo Settings ## + +REPO="/var/www/html/fdroid/repo" +REPO_NAME="Hyperling's Apps" +REPO_LINK="https://fdroid.hyperling.com" + +## Files ## +# Should be provided as URLs directly to the APK files. + +# TBD/TODO +FILE0="https://git.hyperling.com/me/android-carb-up/releases/download/latest/TBD" +FILE1="https://git.hyperling.com/me/flutter-expense-tracker/releases/download/latest/TBD" +FILE2="https://git.hyperling.com/me/android-infinite-timer/releases/download/latest/TBD" +FILE3="https://git.hyperling.com/me/android-45-minute-rule/releases/download/latest/TBD" +FILE4="https://git.hyperling.com/me/android-tictactoe/releases/download/latest/TBD" +FILE5="https://git.hyperling.com/me/android-hypergames/releases/download/latest/TBD" +FILE6="" +FILE7="" +FILE8="" +FILE9="" +FILE10="https://git.hyperling.com/me/ebook-freedom-flyer/releases/download/latest/VoluntarySovereignty.pdf" +FILE11="https://git.hyperling.com/me/ebook-health-protocol/releases/download/latest/HyperlingsHealthProtocol.pdf" +FILE12="" +FILE13="" +FILE14="" +FILE15="" +FILE16="" +FILE17="" +FILE18="" +FILE19=""