feat: self-hosted Docker image with Gitea Actions and Unraid docs
Some checks failed
Docker / docker (push) Has been cancelled
Some checks failed
Docker / docker (push) Has been cancelled
- Dockerfile: replace s6overlay with multi-stage build (golang:1.22-alpine builder + alpine:3.19 runtime), compiles from source, no goreleaser needed - docker/entrypoint.sh: PUID/PGID support via su-exec - .gitea/workflows/docker.yml: auto-build and push to Gitea container registry on every master commit (linux/amd64 + linux/arm64) - README: add tmdb api_key docs, update Docker section to point to forge.dilain.com registry, add Unraid setup section Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
39
.gitea/workflows/docker.yml
Normal file
39
.gitea/workflows/docker.yml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: Docker
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: qemu
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
|
- name: buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: login
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: forge.dilain.com
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ github.token }}
|
||||||
|
|
||||||
|
- name: build and push
|
||||||
|
uses: docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./docker/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
tags: |
|
||||||
|
forge.dilain.com/laurent/nabarr:master
|
||||||
|
forge.dilain.com/laurent/nabarr:latest
|
||||||
80
README.md
80
README.md
@@ -55,6 +55,8 @@ media:
|
|||||||
api_key: omdb-api-key
|
api_key: omdb-api-key
|
||||||
tvdb:
|
tvdb:
|
||||||
api_key: tvdb-legacy-api-key
|
api_key: tvdb-legacy-api-key
|
||||||
|
tmdb:
|
||||||
|
api_key: tmdb-api-key
|
||||||
```
|
```
|
||||||
|
|
||||||
An omdb `api_key` can be provided which will be used to supplement trakt data with additional information such as:
|
An omdb `api_key` can be provided which will be used to supplement trakt data with additional information such as:
|
||||||
@@ -75,6 +77,8 @@ An tvdb `api_key` can be provided which will be used to supplement trakt data wi
|
|||||||
- SiteRating
|
- SiteRating
|
||||||
- SiteRatingCount
|
- SiteRatingCount
|
||||||
|
|
||||||
|
A tmdb `api_key` can be provided to enable automatic enrichment of RSS feed items that carry no media ID. When an item has no tvdb/imdb/tmdb ID, Nabarr will parse the release title, extract a clean title and year, then search TMDB to resolve a TMDB ID before processing. Get a free API key at [themoviedb.org](https://www.themoviedb.org/settings/api).
|
||||||
|
|
||||||
|
|
||||||
### PVR
|
### PVR
|
||||||
|
|
||||||
@@ -139,11 +143,11 @@ rss:
|
|||||||
- sonarr
|
- sonarr
|
||||||
```
|
```
|
||||||
|
|
||||||
In order for Nabarr to be-able to process items in these feeds, a tvdb and/or imdb id must be present in the feed items.
|
In order for Nabarr to process items in these feeds, a tvdb, imdb or tmdb id must be present in the feed items. If no ID is found but a `tmdb.api_key` is configured, Nabarr will attempt to resolve the ID automatically from the release title.
|
||||||
|
|
||||||
If there is a tvdb id present, it is assumed that the feed item relates to a TV Series and thus, the item will propagate to any Sonarr PVR specified.
|
If there is a tvdb id present, it is assumed that the feed item relates to a TV Series and thus, the item will propagate to any Sonarr PVR specified.
|
||||||
|
|
||||||
If there is a imdb id present, it is assumed that the feed item relates to a Movie and thus, the item will propagate to any Radarr PVR specified.
|
If there is a imdb or tmdb id present, it is assumed that the feed item relates to a Movie and thus, the item will propagate to any Radarr PVR specified.
|
||||||
|
|
||||||
### Full config file
|
### Full config file
|
||||||
|
|
||||||
@@ -224,12 +228,18 @@ rss:
|
|||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
|
|
||||||
Nabarr's Docker image provides various versions that are available via tags. The `latest` tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.
|
The Docker image is built automatically from this repository and pushed to the Gitea container registry on every commit to `master`.
|
||||||
|
|
||||||
| Tag | Description |
|
| Tag | Description |
|
||||||
| :----: | --- |
|
| :----: | --- |
|
||||||
| latest | Latest stable version from a tagged GitHub release |
|
| `latest` | Most recent master commit |
|
||||||
| master | Most recent GitHub master commit |
|
| `master` | Most recent master commit |
|
||||||
|
|
||||||
|
#### Build locale
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t nabarr -f docker/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
#### Usage
|
#### Usage
|
||||||
|
|
||||||
@@ -237,41 +247,57 @@ Nabarr's Docker image provides various versions that are available via tags. The
|
|||||||
docker run \
|
docker run \
|
||||||
--name=nabarr \
|
--name=nabarr \
|
||||||
-e "PUID=1000" \
|
-e "PUID=1000" \
|
||||||
-e "PGID=1001" \
|
-e "PGID=1000" \
|
||||||
-v "/opt/nabarr:/config" \
|
-v "/opt/nabarr:/config" \
|
||||||
--restart=unless-stopped \
|
--restart=unless-stopped \
|
||||||
-d cloudb0x/nabarr:latest
|
-d forge.dilain.com/laurent/nabarr:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
Nabarr's Docker image supports the following parameters.
|
|
||||||
|
|
||||||
| Parameter | Function |
|
| Parameter | Function |
|
||||||
| :----: | --- |
|
| :----: | --- |
|
||||||
| `-e PUID=1000` | The UserID to run the Nabarr binary as |
|
| `-e PUID=1000` | UserID to run Nabarr as |
|
||||||
| `-e PGID=1000` | The GroupID to run the Nabarr binary as |
|
| `-e PGID=1000` | GroupID to run Nabarr as |
|
||||||
| `-e APP_VERBOSITY=0` | The Nabarr logging verbosity level to use. (0 = info, 1 = debug, 2 = trace) |
|
| `-e APP_VERBOSITY=0` | Log verbosity (0 = info, 1 = debug, 2 = trace) |
|
||||||
| `-v /config` | Nabarr's config |
|
| `-v /config` | Config, cache and log directory |
|
||||||
|
|
||||||
#### Cloudbox
|
### Unraid
|
||||||
|
|
||||||
The following Docker setup should work for many Cloudbox users.
|
#### Ajouter le registre privé
|
||||||
|
|
||||||
**WARNING: You still need to configure the `config.yml` file!**
|
Dans **Settings → Docker → Registry URL**, ajouter :
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run \
|
|
||||||
--name=nabarr \
|
|
||||||
-e "PUID=1000" \
|
|
||||||
-e "PGID=1001" \
|
|
||||||
-v "/opt/nabarr:/config" \
|
|
||||||
--label="com.github.cloudbox.cloudbox_managed=true" \
|
|
||||||
--network=cloudbox \
|
|
||||||
--network-alias=nabarr \
|
|
||||||
--restart=unless-stopped \
|
|
||||||
-d cloudb0x/nabarr:latest
|
|
||||||
```
|
```
|
||||||
|
https://forge.dilain.com
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Ajouter le conteneur manuellement
|
||||||
|
|
||||||
|
Dans l'onglet **Docker**, cliquer sur **Add Container** et renseigner :
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
| --- | --- |
|
||||||
|
| Name | `nabarr` |
|
||||||
|
| Repository | `forge.dilain.com/laurent/nabarr:latest` |
|
||||||
|
| Network Type | `bridge` |
|
||||||
|
| Restart | `unless-stopped` |
|
||||||
|
|
||||||
|
Ajouter les variables d'environnement :
|
||||||
|
|
||||||
|
| Variable | Valeur par défaut | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `PUID` | `99` | UserID (nobody sur Unraid) |
|
||||||
|
| `PGID` | `100` | GroupID (users sur Unraid) |
|
||||||
|
| `APP_VERBOSITY` | `0` | Niveau de log (0/1/2) |
|
||||||
|
|
||||||
|
Ajouter le volume :
|
||||||
|
|
||||||
|
| Container path | Host path |
|
||||||
|
| --- | --- |
|
||||||
|
| `/config` | `/mnt/user/appdata/nabarr` |
|
||||||
|
|
||||||
|
> **Note :** Placer le fichier `config.yml` dans `/mnt/user/appdata/nabarr/` avant de démarrer le conteneur.
|
||||||
|
|
||||||
## Donate
|
## Donate
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +1,31 @@
|
|||||||
FROM sc4h/alpine-s6overlay:v2-3.15
|
# Build stage
|
||||||
|
FROM golang:1.22-alpine AS builder
|
||||||
|
|
||||||
ARG TARGETOS
|
WORKDIR /build
|
||||||
ARG TARGETARCH
|
COPY . .
|
||||||
ARG TARGETVARIANT
|
|
||||||
|
RUN CGO_ENABLED=0 go build \
|
||||||
|
-ldflags="-s -w" \
|
||||||
|
-trimpath \
|
||||||
|
-o nabarr \
|
||||||
|
./cmd/nabarr
|
||||||
|
|
||||||
|
# Runtime stage
|
||||||
|
FROM alpine:3.19
|
||||||
|
|
||||||
|
RUN apk add --no-cache ca-certificates tzdata su-exec
|
||||||
|
|
||||||
|
COPY --from=builder /build/nabarr /app/nabarr
|
||||||
|
COPY docker/entrypoint.sh /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
ENV \
|
ENV \
|
||||||
PATH="/app/nabarr:${PATH}" \
|
|
||||||
APP_CONFIG="/config/config.yml" \
|
APP_CONFIG="/config/config.yml" \
|
||||||
APP_CACHE="/config/cache" \
|
APP_CACHE="/config/cache" \
|
||||||
APP_LOG="/config/activity.log" \
|
APP_LOG="/config/activity.log" \
|
||||||
APP_VERBOSITY="0"
|
APP_VERBOSITY="0"
|
||||||
|
|
||||||
# Binary
|
|
||||||
COPY ["dist/nabarr_${TARGETOS}_${TARGETARCH}${TARGETVARIANT:+_7}/nabarr", "/app/nabarr/nabarr"]
|
|
||||||
|
|
||||||
# Add root files
|
|
||||||
COPY ["docker/run", "/etc/services.d/nabarr/run"]
|
|
||||||
|
|
||||||
# Volume
|
|
||||||
VOLUME ["/config"]
|
VOLUME ["/config"]
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
CMD ["run"]
|
||||||
|
|||||||
15
docker/entrypoint.sh
Normal file
15
docker/entrypoint.sh
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
PUID=${PUID:-1000}
|
||||||
|
PGID=${PGID:-1000}
|
||||||
|
|
||||||
|
if [ "$(id -u)" = "0" ]; then
|
||||||
|
addgroup -g "$PGID" nabarr 2>/dev/null || true
|
||||||
|
adduser -u "$PUID" -G nabarr -s /bin/sh -D nabarr 2>/dev/null || true
|
||||||
|
mkdir -p /config
|
||||||
|
chown -R nabarr:nabarr /config
|
||||||
|
exec su-exec nabarr /app/nabarr "$@"
|
||||||
|
else
|
||||||
|
exec /app/nabarr "$@"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user