diff --git a/.DEBIAN/requirements-bookworm-12.txt b/.DEBIAN/requirements-bookworm-12.txt new file mode 100644 index 0000000..223c64c --- /dev/null +++ b/.DEBIAN/requirements-bookworm-12.txt @@ -0,0 +1,11 @@ +# https://packages.debian.org/hu/ +fastapi==0.92.0 +uvicorn[standard]==0.17.6 +python-jose[pycryptodome]==3.3.0 +pycryptodome==3.11.0 +python-dateutil==2.8.2 +sqlalchemy==1.4.46 +markdown==3.4.1 +python-dotenv==0.21.0 +jinja2==3.1.2 +httpx==0.23.3 diff --git a/.DEBIAN/requirements-ubuntu-23.04.txt b/.DEBIAN/requirements-ubuntu-23.04.txt new file mode 100644 index 0000000..f2d4b05 --- /dev/null +++ b/.DEBIAN/requirements-ubuntu-23.04.txt @@ -0,0 +1,10 @@ +# https://packages.ubuntu.com +fastapi==0.91.0 +uvicorn[standard]==0.15.0 +python-jose[pycryptodome]==3.3.0 +pycryptodome==3.11.0 +python-dateutil==2.8.2 +sqlalchemy==1.4.46 +markdown==3.4.3 +python-dotenv==0.21.0 +jinja2==3.1.2 diff --git a/.DEBIAN/requirements-ubuntu-23.10.txt b/.DEBIAN/requirements-ubuntu-23.10.txt new file mode 100644 index 0000000..4cab03f --- /dev/null +++ b/.DEBIAN/requirements-ubuntu-23.10.txt @@ -0,0 +1,10 @@ +# https://packages.ubuntu.com +fastapi==0.101.0 +uvicorn[standard]==0.23.2 +python-jose[pycryptodome]==3.3.0 +pycryptodome==3.11.0 +python-dateutil==2.8.2 +sqlalchemy==1.4.47 +markdown==3.4.4 +python-dotenv==1.0.0 +jinja2==3.1.2 diff --git a/.PKGBUILD/PKGBUILD b/.PKGBUILD/PKGBUILD index 3f75ce9..b2eaf5a 100644 --- a/.PKGBUILD/PKGBUILD +++ b/.PKGBUILD/PKGBUILD @@ -12,7 +12,7 @@ depends=('python' 'python-jose' 'python-starlette' 'python-httpx' 'python-fastap provider=("$pkgname") install="$pkgname.install" backup=('etc/default/fastapi-dls') -source=('git+file:///builds/oscar.krause/fastapi-dls' # https://gitea.publichub.eu/oscar.krause/fastapi-dls.git +source=("git+file://${CI_PROJECT_DIR}" "$pkgname.default" "$pkgname.service" "$pkgname.tmpfiles") diff --git a/.codeclimate.yml b/.codeclimate.yml index 09c810c..fd7ed1f 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -1,7 +1,9 @@ +version: "2" plugins: bandit: enabled: true sonar-python: enabled: true - pylint: - enabled: true + config: + tests_patterns: + - test/** diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 58a8cc4..88719df 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,6 +8,9 @@ include: cache: key: one-key-to-rule-them-all +variables: + DOCKER_BUILDX_PLATFORM: "linux/amd64,linux/arm64" + build:docker: image: docker:dind interruptible: true @@ -26,7 +29,7 @@ build:docker: script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - IMAGE=$CI_REGISTRY/$CI_PROJECT_PATH/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA - - docker buildx build --progress=plain --platform linux/amd64,linux/arm64 --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE --push . + - docker buildx build --progress=plain --platform $DOCKER_BUILDX_PLATFORM --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE --push . - docker buildx imagetools inspect $IMAGE - echo "CS_IMAGE=$IMAGE" > container_scanning.env artifacts: @@ -124,16 +127,28 @@ build:pacman: - "*.pkg.tar.zst" test: - image: python:3.11-slim-bullseye + image: python:3.11-slim-bookworm stage: test + interruptible: true rules: - - if: $CI_COMMIT_BRANCH + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_TAG - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH + changes: + - app/**/* + - test/**/* variables: DATABASE: sqlite:///../app/db.sqlite + parallel: + matrix: + - REQUIREMENTS: + - requirements.txt + - .DEBIAN/requirements-bookworm-12.txt + - .DEBIAN/requirements-ubuntu-23.10.txt before_script: - - pip install -r requirements.txt + - apt-get update && apt-get install -y python3-dev gcc + - pip install -r $REQUIREMENTS - pip install pytest httpx - mkdir -p app/cert - openssl genrsa -out app/cert/instance.private.pem 2048 @@ -191,7 +206,7 @@ test:debian: test:ubuntu: extends: .test:linux - image: ubuntu:22.10 + image: ubuntu:23.10 test:archlinux: image: archlinux:base @@ -209,10 +224,13 @@ test:archlinux: - pacman -U --noconfirm *.pkg.tar.zst code_quality: + variables: + SOURCE_CODE: app rules: - if: $CODE_QUALITY_DISABLED when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH secret_detection: rules: @@ -227,12 +245,25 @@ semgrep-sast: - if: $SAST_DISABLED when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH test_coverage: - extends: test +# extends: test + image: python:3.11-slim-bookworm allow_failure: true + stage: test rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" + variables: + DATABASE: sqlite:///../app/db.sqlite + before_script: + - apt-get update && apt-get install -y python3-dev gcc + - pip install -r requirements.txt + - pip install pytest httpx + - mkdir -p app/cert + - openssl genrsa -out app/cert/instance.private.pem 2048 + - openssl rsa -in app/cert/instance.private.pem -outform PEM -pubout -out app/cert/instance.public.pem + - cd test script: - pip install pytest pytest-cov - coverage run -m pytest main.py @@ -257,6 +288,7 @@ gemnasium-python-dependency_scanning: - if: $DEPENDENCY_SCANNING_DISABLED when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH .deploy: rules: @@ -264,24 +296,24 @@ gemnasium-python-dependency_scanning: deploy:docker: extends: .deploy + image: docker:dind stage: deploy + tags: [ docker ] before_script: - echo "Building docker image for commit $CI_COMMIT_SHA with version $CI_COMMIT_REF_NAME" + - docker buildx inspect + - docker buildx create --use script: - echo "========== GitLab-Registry ==========" - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - IMAGE=$CI_REGISTRY/$CI_PROJECT_PATH/$CI_COMMIT_REF_NAME - - docker build . --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE:$CI_COMMIT_REF_NAME - - docker build . --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE:latest - - docker push $IMAGE:$CI_COMMIT_REF_NAME - - docker push $IMAGE:latest + - IMAGE=$CI_REGISTRY/$CI_PROJECT_PATH + - docker buildx build --progress=plain --platform $DOCKER_BUILDX_PLATFORM --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE:$CI_COMMIT_REF_NAME --push . + - docker buildx build --progress=plain --platform $DOCKER_BUILDX_PLATFORM --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE:latest --push . - echo "========== Docker-Hub ==========" - docker login -u $PUBLIC_REGISTRY_USER -p $PUBLIC_REGISTRY_TOKEN - IMAGE=$PUBLIC_REGISTRY_USER/$CI_PROJECT_NAME - - docker build . --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE:$CI_COMMIT_REF_NAME - - docker build . --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE:latest - - docker push $IMAGE:$CI_COMMIT_REF_NAME - - docker push $IMAGE:latest + - docker buildx build --progress=plain --platform $DOCKER_BUILDX_PLATFORM --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE:$CI_COMMIT_REF_NAME --push . + - docker buildx build --progress=plain --platform $DOCKER_BUILDX_PLATFORM --build-arg VERSION=$CI_COMMIT_REF_NAME --build-arg COMMIT=$CI_COMMIT_SHA --tag $IMAGE:latest --push . deploy:apt: # doc: https://git.collinwebdesigns.de/help/user/packages/debian_repository/index.md#install-a-package diff --git a/README.md b/README.md index 191ced4..8f7ffea 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Minimal Delegated License Service (DLS). -Compatibility tested with official NLS 2.0.1, 2.1.0, 3.1.0. +Compatibility tested with official NLS 2.0.1, 2.1.0, 3.1.0. For Driver compatibility see [here](#setup-client). This service can be used without internet connection. Only the clients need a connection to this service on configured port. @@ -27,7 +27,7 @@ Only the clients need a connection to this service on configured port. - 4gb hdd - *maybe IPv6 must be disabled* -Tested with Ubuntu 22.10 (from Proxmox templates), actually its consuming 100mb ram and 750mb hdd. +Tested with Ubuntu 22.10 (EOL!) (from Proxmox templates), actually its consuming 100mb ram and 750mb hdd. **Prepare your system** @@ -35,10 +35,10 @@ Tested with Ubuntu 22.10 (from Proxmox templates), actually its consuming 100mb ## Docker -Docker-Images are available here: +Docker-Images are available here for Intel (x86), AMD (amd64) and ARM (arm64): - [Docker-Hub](https://hub.docker.com/repository/docker/collinwebdesigns/fastapi-dls): `collinwebdesigns/fastapi-dls:latest` -- [GitLab-Registry](https://git.collinwebdesigns.de/oscar.krause/fastapi-dls/container_registry): `registry.git.collinwebdesigns.de/oscar.krause/fastapi-dls/main:latest` +- [GitLab-Registry](https://git.collinwebdesigns.de/oscar.krause/fastapi-dls/container_registry): `registry.git.collinwebdesigns.de/oscar.krause/fastapi-dls:latest` The images include database drivers for `postgres`, `mariadb` and `sqlite`. @@ -102,9 +102,10 @@ volumes: dls-db: ``` -## Debian/Ubuntu (manual method using `git clone` and python virtual environment) +## Debian/Ubuntu/macOS (manual method using `git clone` and python virtual environment) -Tested on `Debian 11 (bullseye)`, Ubuntu may also work. +Tested on `Debian 11 (bullseye)`, `Debian 12 (bookworm)` and `macOS Ventura (13.6)`, Ubuntu may also work. +**Please note that setup on macOS differs from Debian based systems.** **Make sure you are logged in as root.** @@ -317,7 +318,9 @@ Packages are available here: Successful tested with: - Debian 12 (Bookworm) -- Ubuntu 22.10 (Kinetic Kudu) +- Ubuntu 22.10 (Kinetic Kudu) (EOL: July 20, 2023) +- Ubuntu 23.04 (Lunar Lobster) (EOL: January 2024) +- Ubuntu 23.10 (Mantic Minotaur) (EOL: July 2024) Not working with: @@ -423,17 +426,26 @@ client has 19.2 hours in which to re-establish connectivity before its license e Successfully tested with this package versions: -| vGPU Suftware | vGPU Manager | Linux Driver | Windows Driver | Release Date | -|---------------|--------------|--------------|----------------|---------------| -| `15.3` | `525.125.03` | `525.125.06` | `529.11` | June 2023 | -| `15.2` | `525.105.14` | `525.105.17` | `528.89` | March 2023 | -| `15.1` | `525.85.07` | `525.85.05` | `528.24` | January 2023 | -| `15.0` | `525.60.12` | `525.60.13` | `527.41` | December 2022 | -| `14.4` | `510.108.03` | `510.108.03` | `514.08` | December 2022 | -| `14.3` | `510.108.03` | `510.108.03` | `513.91` | November 2022 | +| vGPU Suftware | Linux vGPU Manager | Linux Driver | Windows Driver | Release Date | +|---------------|--------------------|--------------|----------------|---------------| +| `16.3` | `535.154.02` | `535.154.05` | `538.15` | January 2024 | +| `16.2` | `535.129.03` | `535.129.03` | `537.70` | October 2023 | +| `16.1` | `535.104.06` | `535.104.05` | `537.13` | August 2023 | +| `16.0` | `535.54.06` | `535.54.03` | `536.22` | July 2023 | +| `15.3` | `525.125.03` | `525.125.06` | `529.11` | June 2023 | +| `15.2` | `525.105.14` | `525.105.17` | `528.89` | March 2023 | +| `15.1` | `525.85.07` | `525.85.05` | `528.24` | January 2023 | +| `15.0` | `525.60.12` | `525.60.13` | `527.41` | December 2022 | +| `14.4` | `510.108.03` | `510.108.03` | `514.08` | December 2022 | +| `14.3` | `510.108.03` | `510.108.03` | `513.91` | November 2022 | - https://docs.nvidia.com/grid/index.html +*To get the latest drivers, visit Nvidia or search in Discord-Channel `GPU Unlocking` (Server-ID: `829786927829745685`) on channel `licensing` `biggerthanshit` + + +https://archive.biggerthanshit.com/NVIDIA/ (nvidia / b1gg3rth4nsh1t) + ## Linux Download *client-token* and place it into `/etc/nvidia/ClientConfigToken`: diff --git a/requirements.txt b/requirements.txt index 820541d..6dc42d9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,9 @@ -fastapi==0.99.1 -uvicorn[standard]==0.22.0 +fastapi==0.110.0 +uvicorn[standard]==0.27.1 python-jose==3.3.0 -pycryptodome==3.18.0 +pycryptodome==3.20.0 python-dateutil==2.8.2 -sqlalchemy==2.0.17 -markdown==3.4.3 -python-dotenv==1.0.0 +sqlalchemy==2.0.27 +markdown==3.5.2 +python-dotenv==1.0.1 jinja2==3.1.2