Skip to content

Add support for minimalistic installations #2560

@zonescape

Description

@zonescape

Is there an existing issue that is already proposing this?

  • I have searched the existing issues

Application

Outline Manager

What are you trying to do? What is your use case?

I am trying to install Outline server and setup Outline client. This issue is not about specific application but about the whole Outline product. I don't know whether this is the right place to write such issue but anyway.

Is your feature request related to a problem? Please describe it.

Let's take a look to the Outline from the perspective of different types of users:

  • ordinary VPN users can't do anything but download some app and push "Connect" button. Working with servers is impossible for them. Any tiny glitch will make them stuck. They can't setup Outline on their own.
  • experienced users don't need Outline Server & Outline Manager. This is unnecessary complication.
  • VPN service providers obviously have their own deployment & monitoring tools. They don't need Outline Server & Outline Manager. Also config servers (AFAIK they are intended for use by service providers) look like terrible idea because such server is a perfect target for blocking. Moreover this is a very questionable idea in terms of security.

So I conclude that Outline users are pretty marginal. They must be experienced enough to deal with servers but they also need to cope with Outline Server & Outline Manager. I think this unnecessary complication repels them from Outline.

Describe the solution you'd like.

Remove Outline Server & Outline Manager.

I propose to add support for minimalistic installations where users have only outline-ss-server & some client installed. What should be done in this case:

  1. Docker image for outline-ss-server. Currently you need to build it yourself.

  2. Static access keys must support all connection types. Not only shadowsocks.

  3. Easy way to generate static access keys & QR codes based on server config or parameters supplied via command line. Ideally this must be a command in the Docker image for outline-ss-server or a subcommand of outline-ss-server. Something like:

outline-ss-server gen-key <some-options>
outline-ss-server gen-qr <some-options>

As a source of inspiration, wireguard image has show-peer command which displays QR codes. This image can also display QR codes on the first run of the container. In our case, access keys in the URI form are also needed to support devices without QR scanners.

Describe alternatives you've considered

Alternative approaches for access key sharing

Secret hosting:

  • doesn't look secure. This is security by obscurity.
  • unusual port for secret server is prone for blocking

This OpenVPN image has relatively good example of secret hosting. The main point is that you run secret server for a short time just to fetch the secret. This is good enough when you share secrets with your family and friends.

# Run OpenVPN image, store container ID
CID=$(docker run -d --privileged -p 1194:1194/udp -p 443:443/tcp jpetazzo/dockvpn)

# Run config server, fetch config using generated URL, then stop the server
docker run -t -i -p 8080:8080 --volumes-from $CID jpetazzo/dockvpn serveconfig
https://YOUR.SERVER.EXTERNAL.IP:8080/
^C

Copy pasting configs is better then secret hosting but:

  • suffer from formatting issues. Most likely config will be first copied to the intermediate place like messenger and subsequently copied to the Outline client. This intermediate place can mess the formatting which is essential for YAML.
  • users should be careful enough to copy full config not part of it. Unexperienced users may not pay attention to this detail. "I copied what you sent me but it didn't work."

I would prefer a URI or QR code because you just need to click the link to add a new server. Manual connection setup (as a fallback) would also be a great option.

Repository with an example implementation

https://github.com/zonescape/outline-ss-server

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs more infoWe need more information in order to help or verify

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions