diff --git a/webtop_kde/CHANGELOG.md b/webtop_kde/CHANGELOG.md new file mode 100644 index 000000000..273a53e63 --- /dev/null +++ b/webtop_kde/CHANGELOG.md @@ -0,0 +1,10 @@ +- Alpine KDE +- To update, uninstall and reinstall +- Add several custom repositories by default to increase installable apps +- Switch to ubuntu-mate + +## 4.16 (07-01-2022) + +- Update to latest version from linuxserver/docker-webtop +- New standardized logic for Dockerfile build and packages installation +- Initial release diff --git a/webtop_kde/Dockerfile b/webtop_kde/Dockerfile new file mode 100644 index 000000000..fc55061e5 --- /dev/null +++ b/webtop_kde/Dockerfile @@ -0,0 +1,113 @@ +#============================# +# ALEXBELGIUM'S DOCKERFILE # +#============================# +# _.------. +# _.-` ('>.-`"""-. +# '.--'` _'` _ .--.) +# -' '-.-';` ` +# ' - _.' ``'--. +# '---` .-'""` +# /` +#=== Home Assistant Addon ===# + +################# +# 1 Build Image # +################# + +ARG BUILD_FROM +ARG BUILD_VERSION +FROM ${BUILD_FROM}alpine-kde + +################## +# 2 Modify Image # +################## + +ARG CUSTOMREPOSITORIES="libreoffice/ppa \ + ubuntuhandbook1/darktable \ + mozillateam/ppa \ + stebbins/handbrake-releases \ + kritalime/ppa \ + team-xbmc/ppa \ + lutris-team/lutris \ + graphics-drivers/ppa" + +# Allow UID and GID setting +RUN sed -i 's/bash/bashio/g' /etc/cont-init.d/10-adduser \ + && sed -i 's/{PUID:-911}/(bashio::config "PUID")/g' /etc/cont-init.d/10-adduser \ + && sed -i 's/{PGID:-911}/(bashio::config "PGID")/g' /etc/cont-init.d/10-adduser \ + # Change home folder location + && sed -i 's|/config|/share/webtop|g' /defaults/* \ + && sed -i 's|/config|/share/webtop|g' /etc/cont-init.d/* \ + && sed -i 's|/config|/share/webtop|g' /etc/services.d/*/run \ + && usermod --home /share/webtop abc \ + # Add custom repositories + && echo "Adding custom repository : " \ + && for repositories in $CUSTOMREPOSITORIES; do add-apt-repository ppa:$repositories >/dev/null || true; done + +################## +# 3 Install apps # +################## + +# Add rootfs +COPY rootfs/ / + +# Modules +ARG MODULES="00-banner.sh 92-local_mounts.sh 92-smb_mounts.sh 90-dns_set.sh" + +# Automatic modules download +RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && mkdir -p /etc/cont-init.d \ + && for scripts in $MODULES; do curl -L -f -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" || (echo "script failed to install $scripts" && exit 1); done \ + && chmod -R 755 /etc/cont-init.d || printf '%s\n' "${MODULES}" >/MODULESFILE + +# Manual apps +ENV PACKAGES="" + +# Automatic apps & bashio +RUN if ! command -v bash >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && curl -L -f -s "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \ + && chmod 777 /automatic_packages.sh \ + && eval /./automatic_packages.sh "${PACKAGES:-}" \ + && rm /automatic_packages.sh || printf '%s\n' "${PACKAGES:-}" > /ENVFILE + +################ +# 4 Entrypoint # +################ + +#RUN chmod 777 /entrypoint.sh +#WORKDIR / +#ENTRYPOINT [ "/usr/bin/env" ] +#CMD [ "/entrypoint.sh" ] +#SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +############ +# 5 Labels # +############ + +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION +LABEL \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ + org.opencontainers.image.vendor="Home Assistant Add-ons" \ + org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://github.com/alexbelgium" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} diff --git a/webtop_kde/Readme.md b/webtop_kde/Readme.md new file mode 100644 index 000000000..7ca2eb278 --- /dev/null +++ b/webtop_kde/Readme.md @@ -0,0 +1,66 @@ +# Home assistant add-on: Webtop KDE Alpine + +[![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) + +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=flat&logoColor=white + +![Supports + Architecture][aarch64-shield] ![Supports amd64 Architecture][amd64-shield] ![Supports armv7 Architecture][armv7-shield] +![Supports smb mounts][smb-shield] + +_Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!_ + +[![Stargazers repo roster for @alexbelgium/hassio-addons](https://reporoster.com/stars/alexbelgium/hassio-addons)](https://github.com/alexbelgium/hassio-addons/stargazers) + +## About + +[webtop](https://github.com/webtop/webtop) is a full desktop environments accessible via any modern web browser. +This addon is based on the docker image https://github.com/linuxserver/docker-webtop + +## Configuration + +Webui can be found at . + +By default the image is based around the abc user and we recommend using this user as all of the init/config is based around it. The default password is also abc . If you want to change this password and require authentication when accessing the interface simply issue passwd inside a gui terminal in the webtop. Then when accessing the web interface use the path: + +http://localhost:3000/?login=true + +Apps installations are not remanent, you need to do it via addon options. Their config, however, is. + +```yaml +TZ: timezone +additional_apps: engrampa,thunderbird # Allows installation of apps, as they are not persistent +DNS_servers: 8.8.8.8,1.1.1.1 # Keep blank to use router’s DNS, or set custom DNS to avoid spamming in case of local DNS ad-remover +localdisks: sda1 #put the hardware name of your drive to mount separated by commas, or its label. Ex: sda1, sdb1, MYNAS... +networkdisks: "//SERVER/SHARE" # optional, list of smb servers to mount, separated by commas +cifsusername: "username" # optional, smb username, same for all smb shares +cifspassword: "password" # optional, smb password +cifsdomain: "domain" # optional, allow setting the domain for the smb share +``` + +## Installation + +The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on. + +1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA) + [![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons) +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Set the add-on options to your preferences +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Open the webUI and adapt the software options + +## Support + +Create an issue on github + +## Illustration + +![illustration](https://www.linuxserver.io/user/pages/content/images/2021/05/menu.png) + +[repository]: https://github.com/alexbelgium/hassio-addons +[smb-shield]: https://img.shields.io/badge/smb-yes-green.svg +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg diff --git a/webtop_kde/apparmor.txt b/webtop_kde/apparmor.txt new file mode 100644 index 000000000..72cf2493d --- /dev/null +++ b/webtop_kde/apparmor.txt @@ -0,0 +1,56 @@ +#include + +profile webtop_kde_addon flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + signal, + mount, + umount, + remount, + network udp, + network tcp, + network dgram, + network stream, + network inet, + network inet6, + network netlink raw, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + # capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /bin/** ix, + /usr/bin/** ix, + /usr/lib/bashio/** ix, + /etc/s6/** rix, + /run/s6/** rix, + /etc/services.d/** rwix, + /etc/cont-init.d/** rwix, + /etc/cont-finish.d/** rwix, + /init rix, + /var/run/** mrwkl, + /var/run/ mrwkl, + /dev/i2c-1 mrwkl, + # Files required + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/mmcblk0p1 mrwkl, + /dev/* mrwkl, + /tmp/** mrkwl, + + # Data access + /data/** rw, + + # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container + ptrace (trace,read) peer=docker-default, + + # docker daemon confinement requires explict allow rule for signal + signal (receive) set=(kill,term) peer=/usr/bin/docker, + +} diff --git a/webtop_kde/build.json b/webtop_kde/build.json new file mode 100644 index 000000000..c34efc96c --- /dev/null +++ b/webtop_kde/build.json @@ -0,0 +1,7 @@ +{ + "build_from": { + "armv7": "linuxserver/webtop:arm32v7-", + "aarch64": "linuxserver/webtop:arm64v8-", + "amd64": "linuxserver/webtop:amd64-" + } +} diff --git a/webtop_kde/config.json b/webtop_kde/config.json new file mode 100644 index 000000000..81060f018 --- /dev/null +++ b/webtop_kde/config.json @@ -0,0 +1,85 @@ +{ + "apparmor": true, + "arch": ["aarch64", "amd64", "armv7"], + "boot": "auto", + "environment": { + "PUID": "0", + "PGID": "0", + "HOME": "/share/webtop_kde", + "shm_size": "1gb" + }, + "description": "Full linux desktop environment accessible via any modern web browser", + "devices": [ + "/dev/dri", + "/dev/dri/card0", + "/dev/dri/card1", + "/dev/dri/renderD128", + "/dev/vchiq", + "/dev/video10", + "/dev/video11", + "/dev/video12", + "/dev/video13", + "/dev/video14", + "/dev/video15", + "/dev/video16", + "/dev/sda", + "/dev/sdb", + "/dev/sdc", + "/dev/sdd", + "/dev/sde", + "/dev/sdf", + "/dev/sdg", + "/dev/nvme", + "/dev/mmcblk", + "/dev/sda1", + "/dev/sdb1", + "/dev/sdc1", + "/dev/sdd1", + "/dev/sde1", + "/dev/sdf1", + "/dev/sdg1", + "/dev/sda2", + "/dev/sdb2", + "/dev/sdc2", + "/dev/sdd2", + "/dev/sde2", + "/dev/sdf2", + "/dev/sdg2", + "/dev/sda3", + "/dev/sdb3", + "/dev/sda4", + "/dev/sdb4", + "/dev/nvme0", + "/dev/nvme1", + "/dev/nvme2" + ], + "video": true, + "map": ["media:rw", "share:rw", "ssl"], + "name": "Webtop test", + "privileged": ["SYS_ADMIN", "DAC_READ_SEARCH", "NET_ADMIN"], + "ports": { + "3000/tcp": 3001 + }, + "ports_description": { + "3000/tcp": "web interface" + }, + "options": { + "additional_apps": "engrampa,thunderbird,libreoffice" + }, + "schema": { + "TZ": "str?", + "localdisks": "str?", + "networkdisks": "str?", + "cifsusername": "str?", + "cifspassword": "str?", + "cifsdomain": "str?", + "DNS_server": "str?", + "additional_apps": "str?" + }, + "slug": "webtop_kde", + "upstream": "4.16", + "url": "https://github.com/alexbelgium/hassio-addons", + "version": "4.16", + "webui": "http://[HOST]:[PORT:3000]" +} + diff --git a/webtop_kde/icon.png b/webtop_kde/icon.png new file mode 100644 index 000000000..2c970480f Binary files /dev/null and b/webtop_kde/icon.png differ diff --git a/webtop_kde/logo.png b/webtop_kde/logo.png new file mode 100644 index 000000000..2c970480f Binary files /dev/null and b/webtop_kde/logo.png differ diff --git a/webtop_kde/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh b/webtop_kde/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh new file mode 100644 index 000000000..150053296 --- /dev/null +++ b/webtop_kde/rootfs/etc/cont-init.d/00-aaa_dockerfile_backup.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# If dockerfile failed install manually + +############################## +# Automatic modules download # +############################## +if [ -e "/MODULESFILE" ]; then + echo "Executing modules script" + MODULES=$(/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && mkdir -p /etc/cont-init.d \ + && for scripts in $MODULES; do curl -L -f -s -S "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/$scripts" -o /etc/cont-init.d/"$scripts" || (echo "script failed to install $scripts" && exit 1); done \ + && chmod -R 755 /etc/cont-init.d +fi + +####################### +# Automatic installer # +####################### +if [ -e "/ENVFILE" ]; then + echo "Executing script" + PACKAGES=$(/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends bash || apk add --no-cache bash) >/dev/null; fi \ + && if ! command -v curl >/dev/null 2>/dev/null; then (apt-get update && apt-get install -yqq --no-install-recommends curl || apk add --no-cache curl) >/dev/null; fi \ + && curl -L -f -s "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/automatic_packages.sh" --output /automatic_packages.sh \ + && chmod 777 /automatic_packages.sh \ + && eval /./automatic_packages.sh "${PACKAGES:-}" \ + && rm /automatic_packages.sh +fi diff --git a/webtop_kde/rootfs/etc/cont-init.d/20-folders.sh b/webtop_kde/rootfs/etc/cont-init.d/20-folders.sh new file mode 100644 index 000000000..0ebc71563 --- /dev/null +++ b/webtop_kde/rootfs/etc/cont-init.d/20-folders.sh @@ -0,0 +1,17 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash + +# Define home +HOME="/share/webtop" +mkdir -p $HOME +chown -R abc:abc $HOME + +# Create symlinks +#for FOLDERS in ".config" ".local" "Desktop" "Documents" "Downloads" "Music" "Pictures" "Public" "Templates" "Videos" "thinclient_drives"; do +#mkdir -p $HOME/$FOLDERS +#if [ -d /config/$FOLDERS ]; then +# cp /config/$FOLDERS/* $HOME/$FOLDERS +# rm -r /config/$FOLDERS +#fi +#ln -s $HOME/$FOLDERS /config +#done diff --git a/webtop_kde/rootfs/etc/cont-init.d/99-run.sh b/webtop_kde/rootfs/etc/cont-init.d/99-run.sh new file mode 100644 index 000000000..2466a103d --- /dev/null +++ b/webtop_kde/rootfs/etc/cont-init.d/99-run.sh @@ -0,0 +1,27 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash + +# Uprade +echo "Updating distribution" +apt-get update &>/dev/null || apk update &>/dev/null || true +apt-get -y upgrade || apk upgrade --available &>/dev/null || true + +# Fix mate software center +if [ -f /usr/lib/dbus-1.0/dbus-daemon-launch-helper ]; then + echo "Allow software center" + chmod u+s /usr/lib/dbus-1.0/dbus-daemon-launch-helper + service dbus restart +fi + +# Install specific apps +if bashio::config.has_value 'additional_apps'; then + bashio::log.info "Installing additional apps :" + # Install apps + for APP in $(echo "$(bashio::config 'additional_apps')" | tr "," " "); do + bashio::log.green "... $APP" + # Test install with both apt-get and snap + apt-get install -yqq $APP &>/dev/null || apk add --no-cache $APP &>/dev/null && + bashio::log.green "... done" || + bashio::log.red "... not successful, please check package name" + done +fi