Create untested configuration for hosting an F-Droid repository.
This commit is contained in:
		
							
								
								
									
										49
									
								
								Config/F-DroidRepo/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Config/F-DroidRepo/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										15
									
								
								Config/F-DroidRepo/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Config/F-DroidRepo/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
							
								
								
									
										41
									
								
								Config/F-DroidRepo/docker-compose.example.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								Config/F-DroidRepo/docker-compose.example.yml
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
				
			||||||
							
								
								
									
										41
									
								
								Config/F-DroidRepo/example.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								Config/F-DroidRepo/example.env
									
									
									
									
									
										Normal file
									
								
							@@ -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=""
 | 
				
			||||||
		Reference in New Issue
	
	Block a user