Linux installation - atauenis/webone Wiki

WebOne can be started on GNU/Linux servers. It is supporting all distributions that can run .NET 6.0.

The project is providing official packages for Debian/Ubuntu (.deb) and Fedora/CentOS (.rpm) for amd64, armhf and arm64 architectures in release archive.

See also: [Windows installation]] ](/atauenis/webone/wiki/[[MacOS-X-installation).

Common things

WebOne configuration file is placed at /etc/webone.conf or ./webone.conf. By default, WebOne also loads all *.conf files from /etc/webone.conf.d/ directory, overriding any options stored in main file. It is better to store user configuration in /etc/webone.conf.d/, as these files will not be overwritten by software updates.

The HTTP Proxy protocol requires that the Proxy Server must be accessible by clients. By default, WebOne calls itself in network traffic as local server host name (that which probably you see in Bash prompt). In most cases it doesn't work, so need to enter a correct host name in DefaultHostName option in configuration file. It should be a local IP address, a public IP address or a DNS domain name of the Proxy. Example:


This address will be used in Proxy Auto Configuration script and in all redirects to in-proxy services through HTTP. If the server have a dynamic IP address, the address must be updated every time, or you may set DNS name of the server if there is it.

WebOne is a console application, which starts inside terminal or as a service (daemon). By default, WebOne runs as systemd service. It can be enabled or disabled using standard systemd commands: sudo systemctl enable webone, sudo systemctl disable webone. Don't forget to restart the service after any configuration file(s) changes (sudo service webone restart), or them will be ignored by running instance.

Also it can be started as an regular console application (if the daemon is disabled). To start WebOne simply open it in a Terminal, to stop press Ctrl+C or kill the webone process. Information about command line arguments is in separate article.

By default WebOne is running on TCP Port 8080. If you are using a firewall, you need to open this port in it. To use an other port, go to configuration file and change Port number in [Server] section. Or run WebOne as $ webone 1234 (for Port 1234). Note that to use ports less than 1024 a root privileges are required.

List of required packages

Basically, WebOne requiring only one package to be installed. It is dotnet-runtime-6.0 from Microsoft repository. But file format converting feature is using external software:

  • image file converting: ImageMagick (convert)
  • audio and video converting: FFmpeg (ffmpeg) or AVconv (with a symlink from /usr/bin/ffmpeg to avconv)
  • YouTube video processing: youtube-dl

The ImageMagick is in dependences of installation package, as many older browsers don't support modern PNG/WebP/SVG graphics. FFmpeg and Youtube-DL needs to be installed manually if you want to watch online videos via WebOne.

To build WebOne from sources or debug, install dotnet-sdk-6.0 package. Also you will need dotnet-zip, dotnet-deb, dotnet-rpm tools (installing via .NET SDK CLI).

Install on Ubuntu, Debian

There are DEB packages for Ubuntu 16.04, 18.04, 20.04, 22.04 (Xenial/Bionic/Focal/Jammy) and Debian 9/10/11 (stretch/buster/bullseye). They also should work in all actual non-LTS releases of Ubuntu and in forks of these distributions (like Linux Mint or Kali).

  1. Download and install .NET Runtime and WebOne:
    $ wget -O packages-microsoft-prod.deb
    $ sudo dpkg -i packages-microsoft-prod.deb
    $ sudo apt update
    $ wget
    $ sudo apt install ./webone.0.12.0.linux-amd64.deb
    For other versions of Ubuntu or Debian, change ubuntu/22.04 to your distribution name and version. WebOne version and architecture (0.12.0&amd64) also may be different. If installation seems to be very huge, install package with --no-install-recommends argument.
  2. Set configuration as you want.
    $ sudo touch /etc/webone.conf.d/my.conf
    $ sudo nano /etc/webone.conf.d/my.conf
    The file name my.conf is given as example. It may have any name. Don't forget to set DefaultHostName here in [Server] section (see above).
  3. Restart the proxy server
    $ sudo service webone restart

To disable systemd service, run $ sudo systemctl disable webone. To enable: $ sudo systemctl enable webone; sudo systemctl start webone.

Install on Fedora

There are RPM packages for Fedora 33 and newer. They also should work with forks of these distributions (like CentOS 7+, CentOS Stream and RHEL 7+).

  1. Add Microsoft repository to your OS:
    • CentOS 8, CentOS Stream 9, Fedora: Nothing need, it is included out-of-box.
    • CentOS 7:
      $ sudo rpm -Uvh
  2. Install WebOne:
    $ sudo dnf -y install
    All depends will be installed automatically. Note that 0.12.0 version and amd64 architecture are given as example.
  3. Set configuration as you want.
    $ sudo touch /etc/webone.conf.d/my.conf
    $ sudo nano /etc/webone.conf.d/my.conf
    The file name my.conf is given as example. It may have any name. Don't forget to set DefaultHostName here in [Server] section (see above).
  4. Restart the proxy server daemon.
    $ sudo systemctl restart webone

If a removal will be need, uninstall the package and remove /etc/webone.conf and /etc/webone.conf.d/ manually.

To disable systemd service, run $ sudo systemctl disable webone. To enable: $ sudo systemctl enable webone; sudo systemctl start webone.

Install manually

Some distributions (like Ubuntu 20.04 LTS in first few months after its release) have no official packages for Microsoft .NET Runtime. However, WebOne still can be run on them.

  1. First go to .NET Downloads and look for Linux binaries of the .NET Runtime. Then download the tar.gz archive with it.

  2. Unpack binaries:

    $ mkdir -p $HOME/dotnet && tar zxf dotnet-runtime-6.0.6-linux-x64.tar.gz -C $HOME/dotnet

    Note that the listed version 6.0.6 may be some different than your. Also the architecture may be other than x64 if need.

  3. Add to ~/.bashrc these lines:

    $ export DOTNET_ROOT=$HOME/dotnet
    $ export PATH=$PATH:$HOME/dotnet
  4. Download WebOne binary packages or archives for same-architecture Linux, macOS or Windows.

  5. Unpack them manually.

    Hint: On Debian/Ubuntu machines you can unpack DEB package with this command: dpkg -x webone.0.12.0.linux-armhf.deb ~/WebOneDeb.

  6. Configure and run WebOne:

    $ nano webone.conf
    $ dotnet webone.dll
    $ sudo dotnet webone.dll

Steps 3-6 can be used if the .NET Runtime is built from sources even on an unsupported OS (like Linux i386, FreeBSD). The webone.dll file is cross-platform CoreCLR binary which using Microsoft IL pseudo-code.

Included webone.service file can be used as template to start WebOne as systemd service. See systemd manuals about how to add a service.

If WebOne still doesn't run, install .NET dependencies.

Install on other distributions

Steps for installing on other distributions are similar to Ubuntu, but it is better to follow Microsoft recommendations:

Install on ARM devices

WebOne should also run on all Linux ARM devices like Raspberry Pi. However this is not fully tested as the author have no such board, and can only rely on feedback on forums.

For Raspbian 10 try to use webone.version.linux-armhf.deb package, for latest Pidoras try webone.version.linux-armhf.rpm.

On Armbian 22.02.01 it is need to install libssl1.1 DEB package from Debian 11/armhf by hand. Then official WebOne package for armhf architecture can be installed.

Theoretically, ARM-version of WebOne can be run on rooted Android devices (but this is not checked at all). Use steps above for ARM-32/64 architectures. Note that you need a terminal emulator and a text editor to use WebOne.

Run in Docker

The project currently does not providing Docker packages, however community saying that WebOne can run inside Docker containers. See:

Manual run

To use Windows builds of WebOne on Linux or macOS, it is possible to run them even if there are no native executable file:

$ dotnet webone.dll

Older WebOne versions

  • WebOne 0.9.3 also can be launched on Linux through mono-complete (not mono-runtime) but Mono have some bugs on HTTPS/TLS processing, so it is not usable. This is a reason why I've moved the project from .NET Framework/Mono to .NET Core.

  • Linux packages for WebOne 0.10.0 were removed because WebOne used configuration file in installation directory, which is not a good practice in *nix. Version 0.10.1 has fixed this architecture mistake.

  • WebOne 0.10.x used WebOne package and executable file name case, and single /etc/WebOne/webone.conf configuration file.

  • WebOne 0.10.0 - 0.10.2 hadn't support for systemd service mode. It was introduced in version 0.10.3. Also WebOne <0.10.1 used STDOUT pipe instead of log file.

  • Support for ARM64 was introduced in WebOne 0.11.2.

  • WebOne 0.10.x and 0.11.x used .NET Core 3.1 runtime instead of .NET 6.0, used since version 0.12.