diff --git a/.env.example b/.env.example index 78477d2..9d7c0e1 100644 --- a/.env.example +++ b/.env.example @@ -1,15 +1,20 @@ +# File path to store configurations for the API CONFIG_FILE_PATH=configuration.toml -GITHUB_TOKEN= +# Optional token for API calls to the backend +BACKEND_API_TOKEN= +# An option URL to the old API to proxy for migration purposes +OLD_API_URL= +# Database connection details DB_URL=jdbc:h2:./persistence/revanced-api DB_USER= DB_PASSWORD= -JWT_SECRET= -JWT_ISSUER= -JWT_VALIDITY_IN_MIN= - +# Basic authentication to issue JWT tokens BASIC_USERNAME= BASIC_PASSWORD= -OLD_API_URL= \ No newline at end of file +# JWT configuration for authenticated API endpoints +JWT_SECRET= +JWT_ISSUER= +JWT_VALIDITY_IN_MIN= diff --git a/.gitignore b/.gitignore index a300aea..8f403a3 100644 --- a/.gitignore +++ b/.gitignore @@ -38,5 +38,4 @@ out/ ### Project ### .env persistence/ -configuration.toml -.db \ No newline at end of file +configuration.toml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5a0c2a1..1dcd313 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,19 @@ -FROM azul/zulu-openjdk:latest +# Build the application +FROM gradle:latest AS build -ARG CONFIG_FILE_PATH +ARG GITHUB_ACTOR +ARG GITHUB_TOKEN -ARG DB_URL -ARG DB_USER -ARG DB_PASSWORD +ENV GITHUB_ACTOR $GITHUB_ACTOR +ENV GITHUB_TOKEN $GITHUB_TOKEN -ARG JWT_SECRET -ARG JWT_ISSUER -ARG JWT_VALIDITY_IN_MIN +WORKDIR /app +COPY . . +RUN gradle publish --no-daemon -ARG BASIC_USERNAME -ARG BASIC_PASSWORD +# Build the runtime container +FROM eclipse-temurin:latest -ENV CONFIG_FILE_PATH $CONFIG_FILE_PATH - -ENV DB_URL $DB_URL -ENV DB_USER $DB_USER -ENV DB_PASSWORD $DB_PASSWORD - -ENV JWT_SECRET $JWT_SECRET -ENV JWT_ISSUER $JWT_ISSUER -ENV JWT_VALIDITY_IN_MIN $JWT_VALIDITY_IN_MIN - -ENV BASIC_USERNAME $BASIC_USERNAME -ENV BASIC_PASSWORD $BASIC_PASSWORD - -COPY build/libs/revanced-api-*.jar revanced-api.jar - -CMD java -jar revanced-api.jar start \ No newline at end of file +WORKDIR /app +COPY --from=build /app/build/libs/revanced-api-*.jar revanced-api.jar +CMD java -jar revanced-api.jar $COMMAND diff --git a/docker-compose.yml b/docker-compose.yml index 78d2377..95b9158 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,23 +1,13 @@ -version: "3.8" - services: revanced-api: container_name: revanced-api image: ghcr.io/revanced/revanced-api:latest volumes: - - /data/revanced-api/persistence:/persistence - - /data/revanced-api/configuration.toml:/configuration.toml + - /data/revanced-api/persistence:/app/persistence + - /data/revanced-api/.env:/app/.env + - /data/revanced-api/configuration.toml:/app/configuration.toml environment: - - CONFIG_FILE_PATH=configuration.toml - - GITHUB_TOKEN= - - DB_URL=jdbc:h2:./persistence/revanced-api - - DB_USER= - - DB_PASSWORD= - - JWT_SECRET= - - JWT_ISSUER= - - JWT_VALIDITY_IN_MIN=5 - - BASIC_USERNAME= - - BASIC_PASSWORD= + - COMMAND=start ports: - - 127.0.0.1:8080:8000 + - localhost:8080:8080 restart: unless-stopped diff --git a/src/main/kotlin/app/revanced/api/command/StartAPICommand.kt b/src/main/kotlin/app/revanced/api/command/StartAPICommand.kt index 88e6945..2e78e65 100644 --- a/src/main/kotlin/app/revanced/api/command/StartAPICommand.kt +++ b/src/main/kotlin/app/revanced/api/command/StartAPICommand.kt @@ -19,7 +19,7 @@ internal object StartAPICommand : Runnable { description = ["The host address to bind to."], showDefaultValue = CommandLine.Help.Visibility.ALWAYS, ) - private var host: String = "0.0.0.0" + private var host: String = "127.0.0.1" @CommandLine.Option( names = ["-p", "--port"], diff --git a/src/main/kotlin/app/revanced/api/configuration/Dependencies.kt b/src/main/kotlin/app/revanced/api/configuration/Dependencies.kt index 8a60324..b4f6542 100644 --- a/src/main/kotlin/app/revanced/api/configuration/Dependencies.kt +++ b/src/main/kotlin/app/revanced/api/configuration/Dependencies.kt @@ -36,9 +36,7 @@ import java.io.File fun Application.configureDependencies() { val globalModule = module { single { - Dotenv.configure() - .systemProperties() - .load() + Dotenv.configure().load() } factory { params -> val defaultRequestUri: String = params.get() @@ -80,7 +78,7 @@ fun Application.configureDependencies() { ) } - get()["GITHUB_TOKEN"]?.let { + get()["BACKEND_API_TOKEN"]?.let { install(Auth) { bearer { loadTokens {