
ceramicwhite/libationcompose.yml:
services: libation: image: ceramicwhite/libation:latest container_name: libation stop_grace_period: 1m restart: on-failure volumes: - './Books:/config/Books' - './data:/config/Libation'
Dockerfile:
# syntax=docker/dockerfile:1-labs ARG GIT_TAG=${GIT_TAG:-12.0.2} ARG TARGETARCH FROM lsiobase/kasmvnc:debianbookworm ARG GIT_TAG ARG TARGETARCH ENV PUID=${PUID:-1000} \ PGID=${PGID:-1000} # Step 1: Create all necessary directories RUN mkdir -p /defaults \ /config/Libation \ /config/Books \ /config/Libation/logs \ /config/Libation/tmp # Step 2: Create the autostart file RUN echo '#!/bin/bash\n\ # Find Libation executable and run it\n\ if [ -f /usr/bin/libation ]; then\n\ /usr/bin/libation\n\ elif [ -f /usr/share/libation/Libation ]; then\n\ /usr/share/libation/Libation\n\ else\n\ echo "ERROR: Cannot find Libation executable"\n\ fi' > /defaults/autostart && \ chmod +x /defaults/autostart # Step 3: Create the Openbox menu file RUN echo '<?xml version="1.0" encoding="utf-8"?>\n\ <openbox_menu xmlns="[***]">\n\ <menu id="root-menu" label="MENU">\n\ <item label="xterm" icon="/usr/share/pixmaps/xterm-color_48x48.xpm"><action name="Execute"><command>/usr/bin/xterm</command></action></item>\n\ <item label="Libation" icon="/usr/share/icons/hicolor/scalable/apps/libation.svg"><action name="Execute"><command>/usr/bin/libation</command></action></item>\n\ </menu>\n\ </openbox_menu>' > /defaults/menu.xml # Step 4: Create the appsettings.json file RUN echo '{\n\ "LibationFiles": "/config/Libation"\n\ }' > /config/Libation/appsettings.json # Step 5: Create the Settings.json file RUN echo '{\n\ "Books": "/config/Books",\n\ "InProgress": "/config/Libation/tmp",\n\ "ThemeVariant": "Dark",\n\ "Serilog": {\n\ "MinimumLevel": "Information",\n\ "WriteTo": [\n\ {\n\ "Name": "ZipFile",\n\ "Args": {\n\ "path": "/config/Libation/logs/_Log.log",\n\ "rollingInterval": "Month",\n\ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] (at {Caller}) {Message:lj}{NewLine}{Exception} {Properties:j}"\n\ }\n\ }\n\ ],\n\ "Using": [\n\ "Dinah.Core",\n\ "Serilog.Exceptions"\n\ ],\n\ "Enrich": [\n\ "WithCaller",\n\ "WithExceptionDetails"\n\ ]\n\ },\n\ "MessageBoxWindow": {\n\ "X": 532,\n\ "Y": 294,\n\ "Height": 110,\n\ "Width": 269,\n\ "IsMaximized": false\n\ },\n\ "FirstLaunch": true,\n\ "AutoScan": true,\n\ "SettingsDialog": {\n\ "X": 414,\n\ "Y": 83,\n\ "Height": 750,\n\ "Width": 900,\n\ "IsMaximized": false\n\ },\n\ "MainWindow": {\n\ "X": 43,\n\ "Y": 76,\n\ "Height": 698,\n\ "Width": 1159,\n\ "IsMaximized": true\n\ }\n\ }' > /config/Libation/Settings.json # Step 6: Install dependencies and set up libation RUN echo fs.inotify.max_user_instances=524288 | tee -a /etc/sysctl.conf && \ # Install dependencies including PyXDG for openbox-xdg-autostart apt-get update && \ apt-get install -y \ libgtk-3-0 \ python3-xdg && \ # Determine architecture for the package ARCH=$(dpkg --print-architecture) && \ echo "Building for architecture: $ARCH" && \ # Download the correct package for the architecture curl -fSL "[***]{GIT_TAG}/Libation.${GIT_TAG}-linux-chardonnay-${ARCH}.deb" -o libation.deb && \ # Install the package dpkg -i libation.deb || apt-get install -f -y && \ # Make sure libation is in PATH which libation || echo "WARNING: libation not found in PATH" && \ # Create symbolic link if needed if [ ! -f /usr/bin/libation ] && [ -f /usr/share/libation/Libation ]; then \ ln -s /usr/share/libation/Libation /usr/bin/libation; \ fi && \ # Download icon curl -fSL [***] --output /usr/share/icons/hicolor/scalable/apps/libation.svg && \ # Set permissions chown -R ${PUID}:${PGID} /config/Libation /config/Books && \ # Create symlink for Books folder ln -s /config/Books /home/kasm-user/ && \ # Clean up rm -rf /var/lib/apt/lists/* && \ rm -f libation.deb # Expose KasmVNC port EXPOSE 3000



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务