Skip to content

Add a kiwix installer. - #1448

Closed
tewalds wants to merge 1 commit into
community-scripts:mainfrom
tewalds:submit/kiwix
Closed

Add a kiwix installer.#1448
tewalds wants to merge 1 commit into
community-scripts:mainfrom
tewalds:submit/kiwix

Conversation

@tewalds

@tewalds tewalds commented Feb 11, 2026

Copy link
Copy Markdown

Scripts which are clearly AI generated and not further revised by the Author of this PR (in terms of Coding Standards and Script Layout) may be closed without review.

✍️ Description

Add a kiwix installer. Kiwix serves offline content, for example wikipedia.

https://kiwix.org/
https://github.com/kiwix/kiwix-tools

🔗 Related PR / Issue

Fixes #1855

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected.
  • No breaking changes – Existing functionality remains intact.
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.

🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing functionality in a way that may require updates.
  • 🆕 New script – A fully functional and tested script or script set.
  • 🌍 Website update – Changes to website-related JSON files or metadata.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, AppName.md, CONTRIBUTING.md, or other docs.

🔍 Code & Security Review (X in brackets)

  • Follows Code_Audit.md & CONTRIBUTING.md guidelines
  • Uses correct script structure (AppName.sh, AppName-install.sh, AppName.json)
  • No hardcoded credentials

📋 Additional Information (optional)


📦 Application Requirements (for new scripts)

Required for 🆕 New script submissions.
Pull requests that do not meet these requirements may be closed without review.

  • The application is at least 6 months old
  • The application is actively maintained
  • The application has 600+ GitHub stars
  • Official release tarballs are published
  • I understand that not all scripts will be accepted due to various reasons and criteria by the community-scripts ORG

@tewalds
tewalds requested review from a team as code owners February 11, 2026 14:13
@greptile-apps

greptile-apps Bot commented Feb 11, 2026

Copy link
Copy Markdown
Contributor

Greptile Overview

Greptile Summary

This PR adds a new Kiwix LXC installer by introducing a CT build script (ct/kiwix.sh), an in-container install script (install/kiwix-install.sh), and the frontend metadata entry (frontend/public/json/kiwix.json). The CT script provisions a Debian 13 container and then attempts to prompt for and configure a host bind-mount for ZIM archives; the install script downloads the Kiwix Tools tarball and creates a kiwix-serve systemd unit on port 8080.

However, several changes currently conflict with repo conventions/policies (JSON schema + icon URL requirements, apt/apt-get policy, service enable convention, comment restrictions in scripts) and there is a functional issue where the service fails to start on a fresh install if no /data/*.zim files exist yet. These issues should be resolved before merge to keep consistency with the existing script ecosystem and avoid broken first-run behavior.

Confidence Score: 2/5

  • Not safe to merge as-is due to policy violations and a first-run service failure scenario.
  • Multiple repo-enforced conventions are violated (JSON schema/logo rules, apt vs apt-get, service enable flow, comment restrictions, ct success footer), and the created systemd unit will fail/restart when no ZIM files exist yet, which is a common first-run state for Kiwix.
  • ct/kiwix.sh, install/kiwix-install.sh, frontend/public/json/kiwix.json

Important Files Changed

Filename Overview
ct/kiwix.sh Adds new Kiwix CT creation script, but violates repo standards (extra comments, nonstandard completion block) and includes an interactive host prompt/bind-mount logic that can break automation.
install/kiwix-install.sh Adds Kiwix install script, but violates required conventions (uses apt-get, uses daemon-reload, reinstalls likely-preinstalled deps, and service ExecStart will fail if no /data/*.zim exists).
frontend/public/json/kiwix.json Adds Kiwix metadata JSON, but missing required schema fields and uses a non-selfh.st logo URL (violates JSON requirements).

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

3 files reviewed, 9 comments

Edit Code Review Agent Settings | Greptile

Comment thread install/kiwix-install.sh Outdated
Comment thread install/kiwix-install.sh Outdated
Comment thread install/kiwix-install.sh Outdated
Comment thread install/kiwix-install.sh Outdated
Comment thread install/kiwix-install.sh Outdated
Comment thread ct/kiwix.sh Outdated
Comment thread ct/kiwix.sh Outdated
Comment thread ct/kiwix.sh Outdated
Comment thread frontend/public/json/kiwix.json
@tewalds
tewalds force-pushed the submit/kiwix branch 2 times, most recently from 4bc7ea6 to 8b1ec32 Compare February 11, 2026 17:30
Comment thread ct/kiwix.sh Outdated
Comment thread ct/kiwix.sh Outdated
Comment thread ct/kiwix.sh Outdated
Comment thread ct/kiwix.sh Outdated
Comment thread ct/kiwix.sh Outdated
Comment thread ct/kiwix.sh Outdated
Comment thread install/kiwix-install.sh Outdated
Comment thread install/kiwix-install.sh Outdated
@CrazyWolf13 CrazyWolf13 self-assigned this Feb 11, 2026
Kiwix serves offline Wikipedia, Project Gutenberg, and more from ZIM archives
@michelroegl-brunner

Copy link
Copy Markdown
Member

This needs to be further discused. As there has been two releases In Dezember, the last release before that was over 1.5 Years ago. So i vote for waiting a bit longer if the app gets a more stable update schedule, then we can think ybout adding it. @community-scripts/contributor

@tewalds

tewalds commented Feb 13, 2026

Copy link
Copy Markdown
Author

How is that relevant? It's a server for offline content with a stable data format and has ~800 stars on github. The content (eg archive of wikipedia) is updated fairly regularly, but the server doesn't need to be. Still, it's good to have a nice proxmox installer for those who want to serve the content. If there is a similarly trivial way to create a LXC, mount a directory readonly, install it from apt and set up a service, then maybe the correct answer is to point people at that instead, but I don't know of such a trivial way and apt is out of date.

@CrazyWolf13

Copy link
Copy Markdown
Member

I have nothing against it, there are commits, the app has two new releases and sometimes an app just reaches a somewhat polished app (though there is always room for more, which is not always neccessary)

We have apps in our catalogue with far far less updates and unstable release shedules.

I see no reason to not accept such a contribution.

Comment thread ct/kiwix.sh
msg_ok "Container Options Set"

msg_ok "Completed Successfully!\n"
IP=$(pct exec $CTID -- hostname -I | awk '{print $1}')

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

not needed at all

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

there is $LOCAL_IP made available by our core funcs

Comment thread ct/kiwix.sh
fi

msg_info "Setting Container Options"
pct set $CTID --onboot 1

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

was this even tested?

pct will not work when executing the update, as it runs from within the LXC

Comment thread ct/kiwix.sh
Comment on lines +81 to +82
echo -e "${TAB}${GATEWAY}${BGN}Web Interface:${CL} ${BL}http://${IP}:8080${CL}"
echo -e "${TAB}${INFO}${BGN}ZIM Directory:${CL} ${ZIM_DIR} ${DGN}→${CL} ${BGN}/data${CL}"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please stick to our default ending.

@github-actions

Copy link
Copy Markdown
Contributor

@tewalds This PR has been marked as stale. It will be closed if no new commits are added in 7 days.

@tewalds

tewalds commented Mar 2, 2026

Copy link
Copy Markdown
Author

My server is down for the next week or two as I move house, but will come back to this when I have a working server again.

@github-actions github-actions Bot closed this Mar 4, 2026
@github-actions

github-actions Bot commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

@tewalds Closing stale PR due to inactivity (no commits for 7 days after stale label).

@CrazyWolf13

Copy link
Copy Markdown
Member

@tewalds Feel free to reopen once you have time again.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants