feat: office
This commit is contained in:
commit
d907c088a1
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*.img
|
||||
office/
|
61
Dockerfile
Normal file
61
Dockerfile
Normal file
@ -0,0 +1,61 @@
|
||||
FROM docker.io/debian:12-slim as base
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
FROM base as build
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
locales \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ARG URL='https://media.codeweavers.com/pub/crossover/cxlinux/demo/crossover_23.5.0-1.deb'
|
||||
RUN curl -o /co.deb "$URL"
|
||||
RUN echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen && locale-gen
|
||||
|
||||
FROM base
|
||||
RUN --mount=from=build,src=/co.deb,target=/co.deb \
|
||||
dpkg --add-architecture i386 \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
dbus-x11 \
|
||||
gstreamer1.0-plugins-base:i386 \
|
||||
gstreamer1.0-plugins-good:i386 \
|
||||
gstreamer1.0-plugins-ugly:i386 \
|
||||
libc6:i386 \
|
||||
libcups2:i386 \
|
||||
libdbus-1-3:i386 \
|
||||
libfontconfig1:i386 \
|
||||
libfreetype6:i386 \
|
||||
libgcc-s1:i386 \
|
||||
libgl1-mesa-dri:i386 \
|
||||
libgl1-mesa-glx:i386 \
|
||||
libgmp10:i386 \
|
||||
libgnutls30:i386 \
|
||||
libgstreamer1.0-0:i386 \
|
||||
libnss-mdns:i386 \
|
||||
libpulse0:i386 \
|
||||
libsane:i386 \
|
||||
libudev1:i386 \
|
||||
libvulkan1:i386 \
|
||||
libx11-6:i386 \
|
||||
libxcomposite1:i386 \
|
||||
libxcursor1:i386 \
|
||||
libxext6:i386 \
|
||||
libxfixes3:i386 \
|
||||
libxi6:i386 \
|
||||
libxinerama1:i386 \
|
||||
libxrandr2:i386 \
|
||||
libxrender1:i386 \
|
||||
libxxf86vm1:i386 \
|
||||
/co.deb \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
COPY --from=build /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive
|
||||
COPY bin /usr/local/bin/
|
||||
VOLUME /app/
|
||||
RUN passwd -d root && useradd -md /app/ app
|
||||
USER app
|
||||
ENV NO_AT_BRIDGE=1 \
|
||||
LANG=fr_FR.UTF-8 \
|
||||
PATH="/opt/cxoffice/bin/:$PATH"
|
||||
CMD ["/opt/cxoffice/bin/crossover"]
|
7
bin/install.sh
Executable file
7
bin/install.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
cat <<EOF >> "$HOME/.bashrc"
|
||||
export FAKETIME='$(date '+%Y-%m-%d 00:00:00')'
|
||||
EOF
|
||||
|
||||
exec "$@"
|
18
get_office.sh
Executable file
18
get_office.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# https://answers.microsoft.com/en-us/msoffice/forum/all/useful-microsoft-download-links-for-office-direct/7bcaa971-9493-44b6-a1ba-0db4c6957c47
|
||||
|
||||
# Office 2016 Home & Student
|
||||
URL='http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/en-us/HomeStudentRetail.img'
|
||||
|
||||
curl -C- -o O2016HS.img "$URL"
|
||||
|
||||
DEV="$(udisksctl loop-setup -f O2016HS.img | awk '{print $NF}' | awk 1 RS='.\n')"
|
||||
DIR="$(udisksctl mount -b "$DEV" | awk '{print $NF}')"
|
||||
|
||||
cp -Trv "$DIR" office/ || true
|
||||
|
||||
umount "$DIR"
|
||||
udisksctl loop-delete -b "$DEV"
|
||||
|
||||
find office/ -type d -exec chmod 755 '{}' + -o -type f -exec chmod 644 {} +
|
33
install.sh
Executable file
33
install.sh
Executable file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
CRI=(podman)
|
||||
CRI_OPT=()
|
||||
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
CRI_OPT+=(
|
||||
--network=host
|
||||
-e XAUTHORITY=/app/.Xauthority
|
||||
-v "$XAUTHORITY:/app/.Xauthority:ro"
|
||||
)
|
||||
fi
|
||||
|
||||
[ -d office/ ] || ./get_office.sh
|
||||
|
||||
"${CRI[@]}" volume create -o=o=uid=1000 office || true
|
||||
|
||||
"${CRI[@]}" build -t office .
|
||||
"${CRI[@]}" run --rm --name office \
|
||||
"${CRI_OPT[@]}" \
|
||||
--userns=keep-id \
|
||||
--ipc=host \
|
||||
--device /dev/dri/ \
|
||||
-e DISPLAY \
|
||||
-e XDG_RUNTIME_DIR \
|
||||
-v /tmp/.X11-unix/:/tmp/.X11-unix \
|
||||
-v "$XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR" \
|
||||
-v /usr/share/fonts/:/usr/share/fonts/:ro \
|
||||
-v "$PWD:/mnt/:ro" \
|
||||
-v office:/home/app/ \
|
||||
--entrypoint install.sh \
|
||||
office \
|
||||
/opt/cxoffice/bin/cxinstaller
|
28
run
Executable file
28
run
Executable file
@ -0,0 +1,28 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
CRI=(podman)
|
||||
CRI_OPT=()
|
||||
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
CRI_OPT+=(
|
||||
-e XAUTHORITY=/app/.Xauthority
|
||||
-v "$XAUTHORITY:/app/.Xauthority:ro"
|
||||
)
|
||||
fi
|
||||
|
||||
"${CRI[@]}" build -t office .
|
||||
"${CRI[@]}" run --rm --name office \
|
||||
"${CRI_OPT[@]}" \
|
||||
--network=none \
|
||||
--userns=keep-id \
|
||||
--ipc=host \
|
||||
--device /dev/dri/ \
|
||||
-e DISPLAY \
|
||||
-e XDG_RUNTIME_DIR \
|
||||
-v /tmp/.X11-unix/:/tmp/.X11-unix \
|
||||
-v "$XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR" \
|
||||
-v /usr/share/fonts/:/usr/share/fonts/:ro \
|
||||
-v "$PWD:/mnt/:ro" \
|
||||
-v office:/app/ \
|
||||
office \
|
||||
/opt/cxoffice/bin/crossover
|
Reference in New Issue
Block a user