outline-apps icon indicating copy to clipboard operation
outline-apps copied to clipboard

Linux client not working

Open nleo opened this issue 2 years ago • 12 comments

image

$ ./Outline-Client.AppImage
loading web app from file:///tmp/.mount_OutlinK6eLfr/resources/app.asar/www/electron_index.html?appName=Outline
(node:28847) electron: The default of contextIsolation is deprecated and will be changing from false to true in a future release of Electron.  See https://github.com/electron/electron/issues/23506 for more information
Could not load active tunnel:  [Error: ENOENT: no such file or directory, open '/home/user/.config/Outline/connection_store'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/home/user/.config/Outline/connection_store'
}
Checking for update
(electron) Sending uncompressed crash reports is deprecated and will be removed in a future version of Electron. Set { compress: true } to opt-in to the new behavior. Crash reports will be uploaded gzipped, which most crash reporting servers support.
Outline is starting
Update for version 1.4.0 is not available (latest version: 1.4.0, downgrade is disallowed).
connecting to 3f8039ae-83b8-41f7-bdc6-7cc561db272c...
(node:28847) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
UDP support: true
(re-)installing routing daemon
copying service files to /tmp/rPVBsY
[EXIT - badvpn-tun2socks]: Exited with code 1
a helper has exited, disconnecting
could not stop routing: Cannot call write after a stream was destroyed
[EXIT - ss-local]: Exited with code 0
could not connect: h (routing daemon is not running)
Promise "DNS lookup" resolved before 10000 ms

nleo avatar Apr 14 '22 11:04 nleo

Have the same issue. When manually create directory that doesn't exist (~/.config/Outline/connection_store) and then run outline again I have got following error:

Could not load active tunnel:  [Error: EISDIR: illegal operation on a directory, read] {
  errno: -21,
  code: 'EISDIR',
  syscall: 'read'
}
(node:7309) UnhandledPromiseRejectionWarning: Error: EISDIR: illegal operation on a directory, unlink '/home/aborealis/.config/Outline/connection_store'
(node:7309) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
Could not load active tunnel:  [Error: EISDIR: illegal operation on a directory, read] {
  errno: -21,
  code: 'EISDIR',
  syscall: 'read'
}
(node:7309) UnhandledPromiseRejectionWarning: Error: EISDIR: illegal operation on a directory, unlink '/home/aborealis/.config/Outline/connection_store'
(node:7309) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)

When I connect to remote VPN Server, I have got following:

Failed to set up auto-launch: Cannot save invalid tunnel
Failed to store tunnel.
Promise "DNS lookup" resolved before 10000 ms.

Outline client works for 5-10 minutes, then it stops connecting.

I have Kali linux (last kernel)

aborealis avatar Apr 26 '22 21:04 aborealis

This problem exists in the following versions and I tested it.

Ubuntu 20.04 Ubuntu 21.10 Ubuntu 22.04 PopOS 22.04

Please fix this bug.

abbasnaqdi avatar May 03 '22 03:05 abbasnaqdi

Fedora 35, AppImage 1.7.0, same reslut.

arkenoi avatar May 20 '22 15:05 arkenoi

rocky linux 8.6, AppImage 1.7.0 same result.

chen56 avatar Jun 10 '22 14:06 chen56

Fedora 36, AppImage 1.7.0, same reslut.

teaorcoffe avatar Jun 18 '22 08:06 teaorcoffe

Ubuntu 22.04 minimal installation, , AppImage 1.7.0, same result

DengSihan avatar Jun 23 '22 05:06 DengSihan

I've been using Outline for few years now, but last month Ubuntu app (1.7.0) suddenly stopped working, while ios and android apps work fine. For Ubuntu I swiped to https://github.com/nojsja/shadowsocks-electron with existing Outline Server.

Waiting Jigsaw Team to fix original Outline Client for Ubuntu.

I noticed that with original client - route table s broken, maybe some update in systemd or smth else brokes old version.

lgg avatar Jul 17 '22 18:07 lgg

I had the same bug. The problem appeared after a kernel update. It happens because there is no kernel module TUN. This can be checked with the following command:

$ sudo dmesg | grep TUN
[   26.091113] tun: Universal TUN/TAP device driver, 1.6

Outline needs to create a TUN interface to work properly.

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.31.1    0.0.0.0         UG    304    0        0 wlan0
10.0.85.0       0.0.0.0         255.255.255.0   U     0      0        0 outline-tun0
192.168.31.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0

If you don't get this output, simply reboot and check again.

If it is still missing, add a TUN kernel module and reboot.

sudo modprobe tun
lsmod | grep tun
reboot

I hope it helps.

afaikiac avatar Aug 01 '22 08:08 afaikiac

I had the same bug. The problem appeared after a kernel update. It happens because there is no kernel module TUN. This can be checked with the following command:

$ sudo dmesg | grep TUN
[   26.091113] tun: Universal TUN/TAP device driver, 1.6

Outline needs to create a TUN interface to work properly.

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.31.1    0.0.0.0         UG    304    0        0 wlan0
10.0.85.0       0.0.0.0         255.255.255.0   U     0      0        0 outline-tun0
192.168.31.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0

If you don't get this output, simply reboot and check again.

If it is still missing, add a TUN kernel module and reboot.

sudo modprobe tun
lsmod | grep tun
reboot

I hope it helps.

Thanks!

absemetov avatar Aug 16 '22 21:08 absemetov

sudo modprobe tun
lsmod | grep tun
reboot

Still having the same issue

Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic

artshevtsov avatar Sep 05 '22 18:09 artshevtsov

As a workaround you can recompile the client locally. I've just tried it and it's working just fine on Ubuntu 22.04

  1. Clone the repo:
    git clone [email protected]:Jigsaw-Code/outline-client.git
    cd outline-client
    
  2. Install node 16 (for example using brew)
    brew install node@16
    
  3. Install all dependencies
    npm install
    
  4. Build the app
    npm run action electron/build linux
    
  5. Now you have properly working Outline-Client.AppImage and you can run it
    ./build/dist/Outline-Client.AppImage
    

Friend-LGA avatar Sep 15 '22 10:09 Friend-LGA

Having the same issue with BunsenLabs Linux Lithium (a kind of Debian 10)

Distributor ID:	Bunsenlabs
Description:	BunsenLabs GNU/Linux 10.5 (Lithium)
Release:	10.5
Codename:	buster
❯ ./Outline-Client.AppImage --no-sandbox
loading web app from file:///tmp/.mount_OutlineQXUub/resources/app.asar/www/index_electron.html?appName=Outline
(node:2437) electron: The default of contextIsolation is deprecated and will be changing from false to true in a future release of Electron.  See https://github.com/electron/electron/issues/23506 for more information
Could not load active tunnel:  [Error: ENOENT: no such file or directory, open '/home/neko/.config/Outline/connection_store'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/home/neko/.config/Outline/connection_store'
}
Checking for update
Update for version 1.7.0 is not available (latest version: 1.7.0, downgrade is disallowed).
Outline is starting
connecting to 4aa7be74-f9df-4e16-86f0-e84f5cd34e55...
(node:2437) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
UDP support: true
(re-)installing routing daemon
copying service files to /tmp/HYyQ0n
[EXIT - badvpn-tun2socks]: Exited with code 1
a helper has exited, disconnecting
could not stop routing: Cannot call write after a stream was destroyed
[EXIT - ss-local]: Exited with code 0
could not connect: h (routing daemon is not running)
all helpers have exited
disconnected from 4aa7be74-f9df-4e16-86f0-e84f5cd34e55
Promise "DNS lookup" resolved before 10000 ms.

When I clone the repo and build it and run it (as recommended above, the difference is that I already had node 16 and that I have to add --no-sandbox parameter when running ./build/dist/Outline-Client.AppImage), I get:

❯ ./build/dist/Outline-Client.AppImage --no-sandbox
Outline is starting
loading web app from file:///tmp/.mount_OutlinL8jS3U/resources/app.asar/www/index_electron.html?appName=Outline
Could not load active tunnel:  [Error: ENOENT: no such file or directory, open '/home/neko/.config/Outline/connection_store'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '/home/neko/.config/Outline/connection_store'
}
Checking for update
[5924:0915/205858.444504:ERROR:browser_main_loop.cc(271)] Gdk: gdk_window_thaw_toplevel_updates: assertion 'window->update_and_descendants_freeze_count > 0' failed
Error: Error: Cannot find latest-linux.yml in the latest release artifacts (https://github.com/Jigsaw-Code/outline-client/releases/download/windows-v1.7.1/latest-linux.yml): HttpError: 404 
"method: GET url: https://github.com/Jigsaw-Code/outline-client/releases/download/windows-v1.7.1/latest-linux.yml\n\nPlease double check that your authentication token is correct. Due to security reasons, actual status maybe not reported, but 404.\n"
Headers: {
  "server": "GitHub.com",
  "date": "Thu, 15 Sep 2022 13:59:00 GMT",
  "content-type": "text/plain; charset=utf-8",
  "vary": "X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With",
  "permissions-policy": "interest-cohort=()",
  "cache-control": "no-cache",
  "strict-transport-security": "max-age=31536000; includeSubdomains; preload",
  "x-frame-options": "deny",
  "x-content-type-options": "nosniff",
  "x-xss-protection": "0",
  "referrer-policy": "no-referrer-when-downgrade",
  "expect-ct": "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"",
  "content-security-policy": "default-src 'none'; base-uri 'self'; connect-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self'; style-src 'unsafe-inline'",
  "content-encoding": "gzip",
  "content-length": "29",
  "x-github-request-id": "AE42:7154:2C3B505:2D4F4C0:63232FA3"
}
    at createHttpError (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:15188:12)
    at ElectronHttpExecutor.handleResponse (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:15290:20)
    at ClientRequest.<anonymous> (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:15256:26)
    at ClientRequest.emit (node:events:526:28)
    at ClientRequest.emit (node:domain:475:12)
    at SimpleURLLoaderWrapper.<anonymous> (node:electron/js2c/browser_init:101:6917)
    at SimpleURLLoaderWrapper.emit (node:events:526:28)
    at SimpleURLLoaderWrapper.emit (node:domain:475:12)
    at Object.newError (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:15683:19)
    at fetchData (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:24801:50)
    at async GitHubProvider.getLatestVersion (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:24808:23)
    at async AppImageUpdater.getUpdateInfoAndProvider (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:22381:19)
    at async AppImageUpdater.doCheckForUpdates (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:22395:24)
(node:5924) UnhandledPromiseRejectionWarning: Error: Cannot find latest-linux.yml in the latest release artifacts (https://github.com/Jigsaw-Code/outline-client/releases/download/windows-v1.7.1/latest-linux.yml): HttpError: 404 
"method: GET url: https://github.com/Jigsaw-Code/outline-client/releases/download/windows-v1.7.1/latest-linux.yml\n\nPlease double check that your authentication token is correct. Due to security reasons, actual status maybe not reported, but 404.\n"
Headers: {
  "server": "GitHub.com",
  "date": "Thu, 15 Sep 2022 13:59:00 GMT",
  "content-type": "text/plain; charset=utf-8",
  "vary": "X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, X-Requested-With",
  "permissions-policy": "interest-cohort=()",
  "cache-control": "no-cache",
  "strict-transport-security": "max-age=31536000; includeSubdomains; preload",
  "x-frame-options": "deny",
  "x-content-type-options": "nosniff",
  "x-xss-protection": "0",
  "referrer-policy": "no-referrer-when-downgrade",
  "expect-ct": "max-age=2592000, report-uri=\"https://api.github.com/_private/browser/errors\"",
  "content-security-policy": "default-src 'none'; base-uri 'self'; connect-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self'; style-src 'unsafe-inline'",
  "content-encoding": "gzip",
  "content-length": "29",
  "x-github-request-id": "AE42:7154:2C3B505:2D4F4C0:63232FA3"
}
    at createHttpError (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:15188:12)
    at ElectronHttpExecutor.handleResponse (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:15290:20)
    at ClientRequest.<anonymous> (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:15256:26)
    at ClientRequest.emit (node:events:526:28)
    at ClientRequest.emit (node:domain:475:12)
    at SimpleURLLoaderWrapper.<anonymous> (node:electron/js2c/browser_init:101:6917)
    at SimpleURLLoaderWrapper.emit (node:events:526:28)
    at SimpleURLLoaderWrapper.emit (node:domain:475:12)
    at Object.newError (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:15683:19)
    at fetchData (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:24801:50)
    at async GitHubProvider.getLatestVersion (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:24808:23)
    at async AppImageUpdater.getUpdateInfoAndProvider (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:22381:19)
    at async AppImageUpdater.doCheckForUpdates (/tmp/.mount_OutlinL8jS3U/resources/app.asar/build/electron/electron/index.js:22395:24)
(Use `outline-client --trace-warnings ...` to show where the warning was created)
(node:5924) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
connecting to 4aa7be74-f9df-4e16-86f0-e84f5cd34e55...
(node:5924) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
UDP support: true
could not connect: SystemConfigurationException (routing daemon is not running)
disconnecting from libev badvpn tunnel...
disconnected from libev badvpn tunnel
a helper has exited, disconnecting
disconnecting from libev badvpn tunnel...
disconnected from libev badvpn tunnel
[EXIT - ss-local]: Exited with code 0
[EXIT - badvpn-tun2socks]: Killed by signal SIGTERM
all helpers have exited
disconnected from 4aa7be74-f9df-4e16-86f0-e84f5cd34e55
installing outline routing service...
copying service installation files to /tmp/veEZMl
all service installation files copied to /tmp/veEZMl successfully
trying to run command as root:  trap "/usr/bin/chattr -R -i /tmp/veEZMl" EXIT; /usr/bin/chattr -R +i /tmp/veEZMl && /usr/bin/echo "c5b8e60605735ff090049571dae20c5de05fe54f4291ebe7ddaedcd21353e7c9  /tmp/veEZMl/install_linux_service.sh" | /usr/bin/shasum -a 256 -c && /usr/bin/echo "544a51b766f2cf1b8dca5c9d4a1fa0a6d21a5e1dd0e403b36842461ed56d3589  /tmp/veEZMl/OutlineProxyController" | /usr/bin/shasum -a 256 -c && /usr/bin/echo "f3bf6ae04c68d6070bf2ad7e495e9e6951e4ccdcde94e3bdd38e80edcf6aa367  /tmp/veEZMl/outline_proxy_controller.service" | /usr/bin/shasum -a 256 -c && "/tmp/veEZMl/install_linux_service.sh"
/tmp/veEZMl/install_linux_service.sh: OK
/tmp/veEZMl/OutlineProxyController: OK
/tmp/veEZMl/outline_proxy_controller.service: OK


outline routing service installed successfully

, but it still remains 'OFFLINE'.

ainoneko avatar Sep 15 '22 14:09 ainoneko

I'm having the same error in Linux Mint 20.3, AppImage 1.7.0

mlmesa2 avatar Oct 18 '22 14:10 mlmesa2

Same here, under Manjaro! : AppImage 1.8.0

unifino avatar Oct 21 '22 01:10 unifino

In my case for some reason i was not in the outlinevpn group. Added to the group. Rebooted. It works.

hurricup avatar Nov 14 '22 16:11 hurricup

I have the same problem. OS: Ubuntu 20.04.5

connecting to 08d10bf6-1214-7c2b-2372-67896416fbdd...
using tun2socks to check connectivity
[EXIT - tun2socks]: Exited with code 0
UDP support: true
could not connect: Error ()
Error occurred in handler for 'outline-ipc-start-proxying': Error: unknown NativeError Error
    at t.toErrorCode (/tmp/.mount_OutlintgWEwW/resources/app.asar/build/electron/electron/index.js:2:451362)
    at /tmp/.mount_OutlintgWEwW/resources/app.asar/build/electron/electron/index.js:2:438052
    at process.processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async node:electron/js2c/browser_init:189:563
[EXIT - tun2socks]: Killed by signal SIGTERM
tun2socks terminated due to Error: Process terminated by signal: SIGTERM
could not stop routing: Write failed
disconnected from 08d10bf6-1214-7c2b-2372-67896416fbdd

mahmood8664 avatar Nov 15 '22 10:11 mahmood8664

Same with version 1.8.1

ainoneko avatar Dec 13 '22 09:12 ainoneko

I'm using the latest outline appimage on Debian 11 and 12

  1. I start the app

  2. Then I click on connect

  3. The app asks for my root password

  4. I enter the password and then the app says "Initializing Outline..Outline has been successfully initialized. please try again to conenct to the server" and that's it.. connecting again doesn't seem to be working

The server is running on Debian 11. Windows and android apps work fine.

PS It looks you need to reboot your PC to make the app working.. The devs should have specified it in the app description tbh..

zeretrelle avatar Dec 26 '22 07:12 zeretrelle

I try to run outline-client on Linux Mint 21.1 and I have same problem (I can not connect to actuel key). I tried to do it:

As a workaround you can recompile the client locally. I've just tried it and it's working just fine on Ubuntu 22.04

  1. Clone the repo:
    git clone [email protected]:Jigsaw-Code/outline-client.git
    cd outline-client
    

In this step, I was only able to do using this: git clone https://github.com/Jigsaw-Code/outline-client.git cd outline-client

2. Install node 16 (for example using brew)

brew install node@16

Here I did: sudo apt-get install nodejs

  1. Install all dependencies
    npm install
    

Here I did: sudo npm install -g [email protected] without it, there is an error: Unsupported engine

  1. Build the app
    npm run action electron/build linux
    

Here I have the error:

[email protected] action node ./src/build/run_action.mjs "electron/build" "linux" file:///home/dima/outline-client/src/build/run_action.mjs:96 if (error?.message) { ^ SyntaxError: Unexpected token '.' at Loader.moduleStrategy (internal/modules/esm/translators.js:133:18) at async link (internal/modules/esm/module_job.js:42:21)

Where is my mistake?

I did it! I had to install the old version of node-v16.13.0-linux-x64 After that, everything gathered and now works! Thanks https://github.com/Friend-LGA for the idea!

DChe47 avatar Feb 09 '23 09:02 DChe47

I have the same issue in Ubuntu 22.04.

Kamandlou avatar Feb 14 '23 07:02 Kamandlou

This is an issue about a very old version of the client, that was still using shadowsocks-libev. The client no longer uses it. If there's a new issue, please file a new one.

fortuna avatar May 01 '23 19:05 fortuna