Skip to content

Webtop (mate-ubuntu)

Openbox-ubuntu is now deprecated as it’s not supported by the new Linuxserver Selkie container.
Use environment variable for fixed desktop size 2048x1024

services:
  webtop:
    image: lscr.io/linuxserver/webtop:amd64-ubuntu-openbox
    container_name: webtop-openbox
    security_opt:

      - seccomp:unconfined #optional
      - apparmor:unconfined
    environment:
      - PUID=1000
      - PGID=1001
      - TZ=America/Vancouver
      - SUBFOLDER=/ # For reverse proxy
      - TITLE=WebtopMate # The title as it shown in browser
    volumes:
      - ~/docker/webtop/config:/config # default home folder
      - /mnt/data:/mnt/data
      - /var/run/docker.sock:/var/run/docker.sock # Run docker inside docker
    ports:
      - 3050:3000
    cap_add:
      - SYS_ADMIN
    shm_size: "1gb" #optional
    restart: unless-stopped
  • the apparmor and SYS_ADMIN is required

The default installation with config folder copied is not usable. Packages to be installed
packages removed in Selkies version (some are pre-installed)

ntp nitrogen lxappearance compton tint2 nitrogen fonts-wqy-zenhei language-pack-zh-hans mousepad spacefm

apt update
apt install wget curl rsync vim unrar unzip xarchiver p7zip libmpv-dev vlc ffmpeg mediainfo mediainfo-gui fzf firefox less
  • SubtitleEdit no longer need Mono to run as it can run portably on Linux
  • functionalities like OCR and spellcheck won’t be used so tesseract and libhunspell is not needed
  • SubtitleEdit 5 Chinese fonts display properly without needing to install Chinese fonts

Desktop (tint2, nitrogen)
- nitrogen cannot keep scaled option after restarting and needs to change it manually
- nitrogen wallpaper are found in /config/Pictures/wallpaper.jpg

Panel

tint2 related customization is no longer used, the default one from MATE will be used.

Manual Steps

Add spacefm into MATE startup application.

Firefox Browser

Proot librewolf is also deprecated, the new setup uses the standard firefox installed from apt because proot librewolf always runs on top and fails to interact with other applications. When it spawns other apps like file manager or xarchiver, these are buried under firefox.

When migrating firefox, except for policies.json, everything is stored in /config/.mozilla, no additional configuration needed.

Firefox now uses proot-apps where installation and each customization steps are preserved in the home folder and there is no longer need to automate provisioning
To migrate from existing browser to librewolf new, copy the files from

/config/.mozilla/<profile>.default-release/*
/config/.librewolf/<profile>.default-release/*

Some notable locations
~~- ~~places.sqlite - browser history, pinned apps on home

- extensions/ - the extensions file

It’s not possible to export extension data, so these must be exported manually
Tampermonkey - Dashboards > Utilities > Zip > Export
FoxyProxy - Options > Export

By default, it’s not possible to set dark theme for librewolf
- Settings > Librewolf settings > uncheck resist fingerprint
- Settings > Extension & Themes > Themes > Enable the Dark Theme
- Settings > Appearance > Website appearance > Dark

Re-enable Google search engine (may need to edit policies.json)
~~- restore default search engine

  • switch to Google

Manual Configs

  • ublock add Chinese filter
  • pin bookmarks
  • remove default bookmarks and getting started from toolbar

Files

SpaceFM

  • upon installing, with config copied over, everything works fine
  • configuration is stored in ~/.config/spacefm

Movie-Renamer Script

  • works after copying

Subtitles

Subtitle Edit

Install dependencies
Download subtitle-edit

SubtitleEdit can now be run portably without using Mono

Subtitle-Edit Dark theme has to be changed manually

  • Options -> Settings -> Appearance -> Use Dark Theme
  • Options -> Settings -> Syntax Coloring -> Error color and change to 27111D
  • Options -> Settings -> Appearance -> UI Font -> General and change to WenQuanYi Zen Hei

Autoshutdown

The new Linuxserver webtop uses substantial CPU/RAM where it may be needed to use container autostart to shutdown when it’s not needed

Using lazytainer
On lazytainer configuration

services:
  lazytainer:
    image: ghcr.io/vmorganp/lazytainer:master 
    container_name: lazytainer
    ports:

      - 3001:3001
    labels:
      - "lazytainer.group.webtop.pollRate=5"
      - "lazytainer.group.webtop.inactiveTimeout=20"
      - "lazytainer.group.webtop.ports=3001"
      - "lazytainer.group.webtop.sleepMethod=stop"
      - "lazytainer.group.webtop.minPacketThreshold=10"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Labels on webtop

    labels:

      - "lazytainer.group=webtop" 

  • pollRate checks for traffic every 5 seconds
  • minPacketThreshold detect if there are more than 10 packets than it will start the container
    • by default the value is 30 packets
    • each inaccessible attempt generate a SYN and RST, so with threshold of 10, user need to refresh the page 5 times

It’s not recommended to manually stop the container before the timeout, as the container will be quickly spun up again. Use the automatic timeout from Lazytainer instead

Obsidian Webtop

Make sure to close everything in Obsidian to reduce CPU usage.

services:
  obsidian:
    image: lscr.io/linuxserver/obsidian:latest
    container_name: obsidian
    security_opt:

      - seccomp:unconfined #optional
    environment:
      - PUID=1000
      - PGID=1001
      - TZ=America/Vancouver
      - SUBFOLDER=/obsidian/
      - TITLE=Obsidian
    volumes:
      - ~/docker/obsidian-webtop:/config
      - ~/Documents/notes:/notes
    networks:
      - public
    ports:
      - 3010:3000
    devices:
      - /dev/dri:/dev/dri
    shm_size: "1gb"
    restart: unless-stopped

networks:
  public:
    name: public
    external: true
  • standard procedure for PUGID, TZ and docker networks
  • optional environment variable PASSWORD for HTTP basic auth
  • SUBFOLDER can be used for reverse proxy with custom location

Authentication

Setup of webtop with Authelia require more configurations. Needs to manually configure the custom location in Nginx Proxy Manager just like bluemap.

location /obsidian/ {
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection $http_connection;
  include /snippets/proxy.conf;
  include /snippets/authelia-authrequest.conf;
  proxy_pass http://10.10.120.12:3010/obsidian/;
}

  • the proxy_set_header lines are required because of websocket

Authelia configuration (need whitelist VNC assets)

    - domain: "basedomainforsubfolder.mywire.org"
      resources:
        - "socket.io/*"
        - "public/*"
        - "vnc/*"
      policy: bypass
    - domain: "basedomainforsubfolder.mywire.org"
      policy: one_factor

Webtop Migration

Comments