Polish store and v2rayA app for release

- Redesign store README as a minimal storefront

- Refine app README and remove technical clutter

- Update Sphera icon with refined vector styling

- Use original v2rayA app icon

- Use raw GitHub URL for v2rayA icon per Umbrel Community Store spec

- Add custom v2rayA image build for UmbrelOS nf_tables iptables
This commit is contained in:
Sphera Bot
2026-08-03 22:13:53 +10:00
commit a7d1a0741f
11 changed files with 355 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
FROM mzz2017/v2raya:v2.4.9@sha256:47f9acf99b23f19d804ab15303e8a7df7f66913d14c5ce0b39936d036dbb8500
USER root
# v2rayA inside Docker hard-codes "iptables-legacy" and "ip6tables-legacy".
# UmbrelOS ships iptables 1.8.x with nf_tables backend, and v2rayA's redirect
# mode emits REDIRECT rules without a protocol (-p), which both backends reject.
# Replace the legacy binaries with small wrappers that forward to the modern
# iptables and patch the problematic REDIRECT rule on the fly.
RUN set -eux; \
rm -f /sbin/iptables-legacy /usr/sbin/iptables-legacy \
/sbin/ip6tables-legacy /usr/sbin/ip6tables-legacy; \
printf '%s\n' \
'#!/bin/sh' \
'has_redirect=0' \
'has_proto=0' \
'for arg in "$@"; do' \
' case "$arg" in' \
' -j) next_is_target=1 ;;' \
' REDIRECT) if [ "$next_is_target" = 1 ]; then has_redirect=1; fi; next_is_target=0 ;;' \
' -p) has_proto=1 ;;' \
' esac' \
'done' \
'if [ "$has_redirect" = 1 ] && [ "$has_proto" = 0 ]; then' \
' new_args=""' \
' inserted=0' \
' for arg in "$@"; do' \
' if [ "$inserted" = 0 ] && [ "$arg" = "-j" ]; then' \
' new_args="$new_args -p tcp"' \
' inserted=1' \
' fi' \
' new_args="$new_args $arg"' \
' done' \
' set -- $new_args' \
'fi' \
'exec iptables "$@"' \
> /sbin/iptables-legacy; \
printf '%s\n' \
'#!/bin/sh' \
'has_redirect=0' \
'has_proto=0' \
'for arg in "$@"; do' \
' case "$arg" in' \
' -j) next_is_target=1 ;;' \
' REDIRECT) if [ "$next_is_target" = 1 ]; then has_redirect=1; fi; next_is_target=0 ;;' \
' -p) has_proto=1 ;;' \
' esac' \
'done' \
'if [ "$has_redirect" = 1 ] && [ "$has_proto" = 0 ]; then' \
' new_args=""' \
' inserted=0' \
' for arg in "$@"; do' \
' if [ "$inserted" = 0 ] && [ "$arg" = "-j" ]; then' \
' new_args="$new_args -p tcp"' \
' inserted=1' \
' fi' \
' new_args="$new_args $arg"' \
' done' \
' set -- $new_args' \
'fi' \
'exec ip6tables "$@"' \
> /sbin/ip6tables-legacy; \
chmod +x /sbin/iptables-legacy /sbin/ip6tables-legacy; \
ln -s /sbin/iptables-legacy /usr/sbin/iptables-legacy 2>/dev/null || true; \
ln -s /sbin/ip6tables-legacy /usr/sbin/ip6tables-legacy 2>/dev/null || true
ENTRYPOINT ["v2raya"]