mirror of
https://github.com/m1k1o/neko.git
synced 2026-11-03 08:21:50 -06:00
8100f0f46b
`mkdir -p /home/neko/.mozilla/firefox/profile.default/extensions` (and
the same for `.waterfox`) runs as root and only `profile.default` was
handed to the neko user, so the directories above it stayed root-owned.
The crash reporter of current Firefox (158 in the 3.2 images) keeps its
reports and Glean store in `.mozilla/firefox/Crash Reports`; after a
browser crash it cannot create that directory and exits with
failed to acquire Glean store: Os { code: 13, kind: PermissionDenied, ... }
(toolkit/crashreporter/client/app/src/send_ping.rs:51)
or, in auto-submit mode,
Failed to create directory (/home/neko/.mozilla/firefox/Crash Reports/pending): Permission denied
so no report survives. Verified on firefox:3.2.0 by running the reporter
against a main-process minidump: it fails as shipped and creates
`Crash Reports/{glean,pending,events}` once `.mozilla` belongs to neko.
Waterfox builds its profile root the same way and gets the same fix.
The other apps are fine: the base image chowns all of /home/neko, the
Chromium-based ones and remmina only COPY --chown files into it,
tor-browser chowns its whole /opt install.
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
57 lines
2.4 KiB
Docker
57 lines
2.4 KiB
Docker
ARG BASE_IMAGE=ghcr.io/m1k1o/neko/base:latest
|
|
FROM $BASE_IMAGE
|
|
|
|
#
|
|
# install firefox
|
|
RUN set -eux; apt-get update; \
|
|
apt-get install -y --no-install-recommends openbox; \
|
|
ARCH=$(dpkg --print-architecture); \
|
|
if [ "${ARCH}" = "armhf" ]; then \
|
|
#
|
|
# install firefox-esr for armhf
|
|
apt-get install -y --no-install-recommends firefox-esr; \
|
|
ln -s /usr/lib/firefox-esr /usr/lib/firefox; \
|
|
#
|
|
# install extensions
|
|
mkdir -p /usr/lib/firefox-esr/distribution/extensions; \
|
|
wget -O '/usr/lib/firefox-esr/distribution/extensions/uBlock0@raymondhill.net.xpi' https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi; \
|
|
wget -O '/usr/lib/firefox-esr/distribution/extensions/sponsorBlocker@ajay.app.xpi' https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi; \
|
|
else \
|
|
#
|
|
# fetch latest release (for amd64 and arm64)
|
|
if [ "${ARCH}" = "amd64" ]; then \
|
|
SRC_URL="https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"; \
|
|
elif [ "${ARCH}" = "arm64" ]; then \
|
|
SRC_URL="https://download.mozilla.org/?product=firefox-latest&os=linux64-aarch64&lang=en-US"; \
|
|
fi; \
|
|
if [ ! -z "${SRC_URL}" ]; then \
|
|
apt-get install -y --no-install-recommends xz-utils libgtk-3-0 libdbus-glib-1-2; \
|
|
wget -O /tmp/firefox-setup.tar.xz "${SRC_URL}"; \
|
|
mkdir /usr/lib/firefox; \
|
|
tar -xvf /tmp/firefox-setup.tar.xz -C /usr/lib; \
|
|
rm -f /tmp/firefox-setup.tar.xz; \
|
|
ln -s /usr/lib/firefox/firefox /usr/bin/firefox; \
|
|
apt-get --purge autoremove -y xz-utils; \
|
|
else \
|
|
echo "Unsupported architecture: ${ARCH}"; \
|
|
exit 1; \
|
|
fi; \
|
|
fi; \
|
|
#
|
|
# create a profile directory
|
|
mkdir -p /home/neko/.mozilla/firefox/profile.default/extensions; \
|
|
chown -R neko:neko /home/neko/.mozilla; \
|
|
#
|
|
# clean up
|
|
apt-get clean -y; \
|
|
rm -rf /var/lib/apt/lists/* /var/cache/apt/*
|
|
|
|
#
|
|
# copy configuation files
|
|
COPY supervisord.conf /etc/neko/supervisord/firefox.conf
|
|
COPY neko.js /usr/lib/firefox/mozilla.cfg
|
|
COPY autoconfig.js /usr/lib/firefox/defaults/pref/autoconfig.js
|
|
COPY policies.json /usr/lib/firefox/distribution/policies.json
|
|
COPY --chown=neko profiles.ini /home/neko/.mozilla/firefox/profiles.ini
|
|
COPY openbox.xml /etc/neko/openbox.xml
|