Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add chromium browser app #1888

Open
wants to merge 25 commits into
base: master
Choose a base branch
from
Open

Conversation

maddog1110
Copy link

@maddog1110 maddog1110 commented Dec 4, 2024

Chromium Browser App for Umbrel

A full-featured Chromium browser with secure remote access, powered by LinuxServer.io.

Features

  • Secure remote browser access through port 30099
  • Built-in authentication
  • Automatic startup
  • Full Chromium features

Testing

  • Tested on Umbrel
  • Tested on Linux VM
  • Tested on Raspberry Pi

Gallery Images

  1. https://raw.githubusercontent.com/maddog1110/umbrel-apps/refs/heads/master/apps/chromium-browser/1.png
  2. https://raw.githubusercontent.com/maddog1110/umbrel-apps/refs/heads/master/apps/chromium-browser/2.png
  3. https://raw.githubusercontent.com/maddog1110/umbrel-apps/refs/heads/master/apps/chromium-browser/3.png

@dirstel
Copy link
Contributor

dirstel commented Dec 6, 2024

Maybe the docker-compose.yml is missing here...?

@maddog1110
Copy link
Author

I just did thx

Copy link

github-actions bot commented Dec 7, 2024

❌   Linting failed with 2 errors and 1 warning   ❌

Thank you for your submission! This is an automated linter that checks for common issues in pull requests to the Umbrel App Store.

Please review the linting results below and make any necessary changes to your submission.

Linting Results

Severity File Description
chromium-browser/docker-compose.yml Invalid image name "lscr.io/linuxserver/chromium:stable":
Images should be named like "<name>:<version-tag>@<sha256>"
ℹ️ chromium-browser/docker-compose.yml External port mapping "3000:3000":
Port mappings may be unnecessary for the app to function correctly. Docker's internal DNS resolves container names to IP addresses within the same network. External access to the web interface is handled by the app_proxy container. Port mappings are only needed if external access is required to a port not proxied by the app_proxy, or if an app needs to expose multiple ports for its functionality (e.g., DHCP, DNS, P2P, etc.).
ℹ️ chromium-browser/docker-compose.yml External port mapping "3001:3001":
Port mappings may be unnecessary for the app to function correctly. Docker's internal DNS resolves container names to IP addresses within the same network. External access to the web interface is handled by the app_proxy container. Port mappings are only needed if external access is required to a port not proxied by the app_proxy, or if an app needs to expose multiple ports for its functionality (e.g., DHCP, DNS, P2P, etc.).
chromium-browser/docker-compose.yml Invalid image name "lscr.io/linuxserver/chromium:stable":
Error: HTTP 404 for lscr.io/linuxserver/chromium:stable: {"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown"}]}
⚠️ chromium-browser/docker-compose.yml Invalid restart policy:
The restart policy of the container "chromium" should be set to "on-failure".

Legend

Symbol Description
Error: This must be resolved before this PR can be merged.
⚠️ Warning: This is highly encouraged to be resolved, but is not strictly mandatory.
ℹ️ Info: This is just for your information.

Copy link
Contributor

@sharknoon sharknoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @maddog1110 for submitting this app. I am really looking forward to having a fully featured chromium browser installed on umbrelOS.

I have left some suggestions for improvements below:

Comment on lines +6 to +7
- PUID=1000
- PGID=1000
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great to see the non-root user and group here 👍

@@ -0,0 +1,16 @@
services:
chromium:
image: lscr.io/linuxserver/chromium:stable
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As the lscr.io registry is just a redirect to the ghcr.io, I propose switching directly to it. I have also added the digest.

Suggested change
image: lscr.io/linuxserver/chromium:stable
image: ghcr.io/linuxserver/chromium:version-c0d313e5@sha256:231b1e75148be3a8bda8143a2cdffb18e0207d3dc3ba8fc4e07fb954830d51db

- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- CHROME_CLI=https://www.linuxserver.io/ #optional
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line can be removed as it is just the default website to be opened, when chrome starts

Suggested change
- CHROME_CLI=https://www.linuxserver.io/ #optional

- TZ=Etc/UTC
- CHROME_CLI=https://www.linuxserver.io/ #optional
volumes:
- /path/to/config:/config
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Persisted data needs to be bound to the app data directory like this:

Suggested change
- /path/to/config:/config
- ${APP_DATA_DIR}/data:/config

Please also create a directory called data in apps/chromium-browser/data. Inside of that directory please create a file called .gitkeep. The reason is, that docker would create that directory for us automatically. But the permissions would be wrong, so we have to create it beforehand.

- 3000:3000
- 3001:3001
shm_size: "1gb"
restart: unless-stopped
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should change this to on-failure

Suggested change
restart: unless-stopped
restart: on-failure

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not a svg icon. Here is one from Wikipedia:
Google_Chrome_icon_(February_2022)

category: "networking"
port: 30099
developer: "LinuxServer.io"
website: "https://hub.docker.com/r/linuxserver/chromium"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the original website:

Suggested change
website: "https://hub.docker.com/r/linuxserver/chromium"
website: "https://docs.linuxserver.io/images/docker-chromium"

website: "https://hub.docker.com/r/linuxserver/chromium"
submitter: "maddog11010"
submission: "https://github.com/getumbrel/umbrel-apps/pull/1888"
repo: "https://github.com/maddog1110/Chrome-in-umbrel"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the original repo:

Suggested change
repo: "https://github.com/maddog1110/Chrome-in-umbrel"
repo: "https://github.com/linuxserver/docker-chromium"

submitter: "maddog11010"
submission: "https://github.com/getumbrel/umbrel-apps/pull/1888"
repo: "https://github.com/maddog1110/Chrome-in-umbrel"
support: "https://github.com/maddog1110/Chrome-in-umbrel/issues"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also align the support:

Suggested change
support: "https://github.com/maddog1110/Chrome-in-umbrel/issues"
support: "https://discourse.linuxserver.io/"

Comment on lines +17 to +18
defaultUsername: "admin"
defaultPassword: "umbrel123"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove this for two reasons:

  1. The image has no authentication configured by default, see https://docs.linuxserver.io/images/docker-chromium/#security
  2. We have put a proxy infront of it, which uses the umbrelOS user to authenticate

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants