Skip to content

IPv4 issue solved #29

Open
catakatt96-web wants to merge 7 commits intohassio-addons:mainfrom
catakatt96-web:main
Open

IPv4 issue solved #29
catakatt96-web wants to merge 7 commits intohassio-addons:mainfrom
catakatt96-web:main

Conversation

@catakatt96-web
Copy link

@catakatt96-web catakatt96-web commented Dec 17, 2025

Proposed Changes

When installing the main add-on a IPv6 server was created instead a IPv4. This forks help with this.

Related Issues

Summary by CodeRabbit

  • New Features

    • Added configurable host and prefer_ipv4 options to address IPv4/IPv6 connectivity issues and prevent ECONNREFUSED errors.
  • Bug Fixes

    • Fixed IPv4 DNS resolution handling to improve connectivity reliability.
  • Documentation

    • Updated README with IPv4/IPv6 fix details and configuration guidance.
    • Enhanced configuration documentation with new options and examples.
  • Chores

    • Removed GitHub community workflows and configuration files.
    • Simplified build configuration.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 17, 2025

Walkthrough

This PR removes GitHub configuration files and CI/CD workflows, updates the application to support IPv4/IPv6 DNS preference options, removes version-pinned dependencies from the Dockerfile, and adds repository metadata.

Changes

Cohort / File(s) Summary
GitHub Configuration Removal
.github/CODEOWNERS, .github/CODE_OF_CONDUCT.md, .github/CONTRIBUTING.md, .github/FUNDING.yml, .github/ISSUE_TEMPLATE.md, .github/PULL_REQUEST_TEMPLATE.md, .github/renovate.json
Deleted all community governance and automation configuration files, including code owner assignments, contributor guidelines, funding options, issue/PR templates, and Renovate dependency management rules.
GitHub Workflows Removal
.github/workflows/ci.yaml, .github/workflows/deploy.yaml, .github/workflows/labels.yaml, .github/workflows/lock.yaml, .github/workflows/pr-labels.yaml, .github/workflows/release-drafter.yaml, .github/workflows/stale.yaml
Removed all GitHub Actions workflows including CI pipeline, deployment orchestration, label synchronization, issue locking, PR labeling, release drafting, and stale issue management.
Documentation Updates
README.md, overseerr/DOCS.md
Updated README title and added IPv4/IPv6 connectivity fix notes; replaced minimal configuration documentation with detailed configuration section documenting host and prefer_ipv4 options.
Configuration & Manifest
overseerr/config.yaml, overseerr/build.yaml, repository.yaml
Added host and prefer_ipv4 configuration options to manifest; removed armv7 architecture and codenotary signer metadata from build configuration; added new repository metadata file with name, URL, and maintainer info.
Docker & Runtime
overseerr/Dockerfile, overseerr/rootfs/etc/s6-overlay/s6-rc.d/overseerr/run
Removed version-pinned build dependencies, added APK world sanitization and maintenance steps; modified runtime script to dynamically apply host and IPv4 DNS preference settings from configuration.
Other
.gitignore
Added .history/ and .vscode/ entries.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Dockerfile changes: Verify APK sanitization logic and upgrade sequence don't introduce unintended side effects
  • Runtime configuration script (overseerr/rootfs/etc/s6-overlay/s6-rc.d/overseerr/run): Review bashio configuration parsing and environment variable handling
  • Manifest schema (overseerr/config.yaml): Confirm options and schema definitions align with runtime usage

Suggested reviewers

  • frenck

Poem

🐰 With whiskers twitching, tidied we've done,
Removed workflows in the GitHub sun,
IPv4 first, through configuration's grace,
Docker unpinned—let freedom embrace,
A repo renewed, now running so free!

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'IPv4 issue solved' is vague and generic. It uses non-specific terminology that doesn't clearly convey what was changed or how the issue was solved. Consider a more descriptive title such as 'Add IPv4 DNS preference configuration to enforce IPv4 server creation' to clearly communicate the specific changes and their purpose.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 831cbee and ae3e378.

📒 Files selected for processing (22)
  • .github/CODEOWNERS (0 hunks)
  • .github/CODE_OF_CONDUCT.md (0 hunks)
  • .github/CONTRIBUTING.md (0 hunks)
  • .github/FUNDING.yml (0 hunks)
  • .github/ISSUE_TEMPLATE.md (0 hunks)
  • .github/PULL_REQUEST_TEMPLATE.md (0 hunks)
  • .github/renovate.json (0 hunks)
  • .github/workflows/ci.yaml (0 hunks)
  • .github/workflows/deploy.yaml (0 hunks)
  • .github/workflows/labels.yaml (0 hunks)
  • .github/workflows/lock.yaml (0 hunks)
  • .github/workflows/pr-labels.yaml (0 hunks)
  • .github/workflows/release-drafter.yaml (0 hunks)
  • .github/workflows/stale.yaml (0 hunks)
  • .gitignore (1 hunks)
  • README.md (1 hunks)
  • overseerr/DOCS.md (1 hunks)
  • overseerr/Dockerfile (1 hunks)
  • overseerr/build.yaml (0 hunks)
  • overseerr/config.yaml (1 hunks)
  • overseerr/rootfs/etc/s6-overlay/s6-rc.d/overseerr/run (1 hunks)
  • repository.yaml (1 hunks)
💤 Files with no reviewable changes (15)
  • .github/CODEOWNERS
  • .github/workflows/lock.yaml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/CONTRIBUTING.md
  • overseerr/build.yaml
  • .github/workflows/labels.yaml
  • .github/workflows/stale.yaml
  • .github/CODE_OF_CONDUCT.md
  • .github/workflows/deploy.yaml
  • .github/workflows/ci.yaml
  • .github/ISSUE_TEMPLATE.md
  • .github/workflows/pr-labels.yaml
  • .github/renovate.json
  • .github/workflows/release-drafter.yaml
  • .github/FUNDING.yml
🧰 Additional context used
🪛 LanguageTool
overseerr/DOCS.md

[style] ~32-~32: Consider using a different verb for a more formal wording.
Context: ...Pv4 addresses when resolving DNS. This fixes the common issue where localhost reso...

(FIX_RESOLVE)

🔇 Additional comments (7)
.gitignore (1)

1-2: LGTM!

Standard IDE and editor artifact directories. Appropriate additions to version control exclusions.

repository.yaml (1)

1-4: LGTM!

Repository metadata is correctly formatted and aligns with the fork's purpose and maintainer information.

overseerr/config.yaml (1)

18-23: LGTM!

The configuration options and schema are well-defined. The defaults (host: "0.0.0.0" and prefer_ipv4: true) align with the PR's objective to ensure IPv4 connectivity.

overseerr/DOCS.md (1)

23-42: LGTM!

The documentation clearly explains the IPv4/IPv6 connectivity configuration options and provides helpful context about the issue being resolved. The example configuration is accurate and useful.

README.md (1)

1-22: LGTM!

The README clearly identifies this as a fork with IPv4/IPv6 fixes, provides accurate installation instructions, and explains what was fixed. The "What's Fixed" section effectively communicates the problem and solution to users.

overseerr/rootfs/etc/s6-overlay/s6-rc.d/overseerr/run (2)

11-18: LGTM!

The dynamic host configuration logic is well-implemented with appropriate fallback behavior and logging.


20-24: The --dns-result-order=ipv4first flag is fully supported in the base image.

The base-nodejs:0.2.5 image includes Node.js v18, which supports the --dns-result-order CLI flag and environment variable configuration. No version compatibility issues exist with this implementation.

Comment on lines +13 to +18
sed -i 's/=.*//g' /etc/apk/world \
&& apk fix --no-cache \
&& apk upgrade --no-cache \
&& apk add --no-cache --virtual .build-dependencies \
build-base \
python3 \
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, find the overseerr Dockerfile and examine the context around lines 13-18
find . -name "Dockerfile" -path "*overseerr*" | head -5

Repository: hassio-addons/addon-overseerr

Length of output: 95


🏁 Script executed:

#!/bin/bash
# Check git history for commits related to version pinning or APK changes
git log --all --oneline -50 2>/dev/null | grep -i -E "version|pin|apk|depend" || echo "Checking broader history..."
git log --all --oneline -100 2>/dev/null | head -20

Repository: hassio-addons/addon-overseerr

Length of output: 1652


🏁 Script executed:

#!/bin/bash
# Search for any comments or documentation in the codebase about APK pinning strategy
rg -i "version.*pin|pin.*version|apk.*version" --type dockerfile -A 3 -B 3 2>/dev/null || true
rg -i "reproducib|deterministic" . 2>/dev/null || true

Repository: hassio-addons/addon-overseerr

Length of output: 55


🏁 Script executed:

#!/bin/bash
# Read the Dockerfile to see the full context around lines 13-18
cat -n ./overseerr/Dockerfile | head -40

Repository: hassio-addons/addon-overseerr

Length of output: 1466


🏁 Script executed:

#!/bin/bash
# Get details about the commit that introduced this change
git show ae3e378 --stat 2>/dev/null || echo "Commit not found"

Repository: hassio-addons/addon-overseerr

Length of output: 1487


🏁 Script executed:

#!/bin/bash
# Check if there's a renovate configuration that manages versions
find . -name ".renovaterc*" -o -name "renovate.json" | xargs cat 2>/dev/null

Repository: hassio-addons/addon-overseerr

Length of output: 55


Remove version pins from world file impacts build reproducibility.

The sed command strips version constraints before running apk upgrade. While this pattern appears intentional (commit indicates it's a fix), it does reduce determinism in the build dependencies. The concerns are partially mitigated by the pinned base image (ghcr.io/hassio-addons/base-nodejs:0.2.5) and external version tracking via renovate, but explicit version pins for build-base and python3 would provide stronger reproducibility guarantees.

If this unpinning is necessary for APK operations to work correctly with the base image, add a comment explaining the rationale:

+  # Remove version pins to allow apk fix/upgrade to work with base image packages
   sed -i 's/=.*//g' /etc/apk/world \

Alternatively, consider pinning the build dependencies explicitly after the upgrade:

   sed -i 's/=.*//g' /etc/apk/world \
   && apk fix --no-cache \
   && apk upgrade --no-cache \
   && apk add --no-cache --virtual .build-dependencies \
-    build-base \
-    python3 \
+    build-base=0.5.2-r0 \
+    python3=3.11.11-r0 \
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
sed -i 's/=.*//g' /etc/apk/world \
&& apk fix --no-cache \
&& apk upgrade --no-cache \
&& apk add --no-cache --virtual .build-dependencies \
build-base \
python3 \
# Remove version pins to allow apk fix/upgrade to work with base image packages
sed -i 's/=.*//g' /etc/apk/world \
&& apk fix --no-cache \
&& apk upgrade --no-cache \
&& apk add --no-cache --virtual .build-dependencies \
build-base \
python3 \
🤖 Prompt for AI Agents
In overseerr/Dockerfile around lines 13 to 18, the sed command that strips
version pins from /etc/apk/world before running apk upgrade removes
reproducibility guarantees; either restore explicit version pins for build-time
packages or, if unpinning is required for compatibility with the pinned base
image, add a short inline comment explaining why the world file must be unpinned
and referencing the base image and any external versioning (e.g., renovate) that
preserves reproducibility. If choosing to pin, specify explicit versions for
build-base and python3 immediately after the upgrade (or in the apk add line) to
lock build dependencies; if keeping the current unpinning, add the comment and
keep the existing commands unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant