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

Feature request : autostart at boot & killswitch #69

Open
tomaximum opened this Issue Apr 2, 2018 · 22 comments

Comments

Projects
None yet
@tomaximum
Copy link

tomaximum commented Apr 2, 2018

Hi,
It would be very nice to be able to set autostart and a killswitch with a simple option.
Thanks

@Rafficer

This comment has been minimized.

Copy link
Contributor

Rafficer commented Apr 2, 2018

autostart could be easily done with adding the command to /etc/rc.local or similar and I think even cron can do it. But I would advise against it until the --status command is implemented.

And there is a PR (#49) for a killswitch already, @mazen160 also commented on there that he will build that feature based on @ohdearaugustin's work. So I would say both is coming :)

@mazen160

This comment has been minimized.

Copy link
Collaborator

mazen160 commented Apr 2, 2018

Yeah! :)

Both will be added soon. The killswitch and -status command are sooner. Then autoboot would take some time to have at generic as possible.

I would use /etc/rc.local for auto-boot for now, but it should be done in another way in the future.

@cwmke

This comment has been minimized.

Copy link

cwmke commented Apr 7, 2018

For anyone with systemd, I've setup a bare bones systemd unit file which autostarts ProtonVPN at boot with the fastest connection. You run pvpn --init as root before starting it but after that it works well.

[Unit]
Description=ProtonVPN
After=syslog.target network-online.target
Wants=network-online.target

[Service]
Type=forking
ExecStart=/usr/bin/pvpn -f
ExecStop=/usr/bin/pvpn -d
ExecReload=/usr/bin/pvpn -f

[Install]
WantedBy=multi-user.target
@mazen160

This comment has been minimized.

Copy link
Collaborator

mazen160 commented Apr 11, 2018

This is another point we should have in mind when implementing the killswitch feature

#68

@markfaine

This comment has been minimized.

Copy link

markfaine commented Apr 13, 2018

Yes, I'm going to need to use the regular NetworkManager VPN configuration for now. This is nice but it is missing crucial features as you've addressed. It needs to auto-reconnect on disconnect with killswitch, and there needs to be some way to see at a glance that your VPN is still connected as I can when I'm using NetworkManager.

@sojusnik

This comment has been minimized.

Copy link

sojusnik commented Aug 22, 2018

The killswitch beta was released recently!

@gettoknowu2

This comment has been minimized.

Copy link

gettoknowu2 commented Sep 6, 2018

I'm running ProtonVPN-cli on Debian Stretch. Since rc.local is not available as default I managed to let cron do the job. Can anyone review this code?

I wrote these view lines and saved them as pvpn.sh.

#!/usr/bin/env bash

# First check status. Report status in log file (please define log file location). 
sudo /usr/local/bin/protonvpn-cli --status >> [FILE LOCATION]/[FILE NAME].log 2>&1

# Now connect to fastest server available and report status.
sudo /usr/local/bin/protonvpn-cli -f >> [FILE LOCATION]/[FILE NAME].log 2>&1

# Recheck status and report. 
sudo /usr/local/bin/protonvpn-cli --status >> [FILE LOCATION]/[FILE NAME].log 2>&1

Then I added a command line to crontab using:

sudo crontab -e

Line of code pasted at the end of the document:

@reboot [EXACT FILE LOCATION]/pvpn.sh

Works lovely!

@jGsch

This comment has been minimized.

Copy link

jGsch commented Oct 31, 2018

I add @reboot sudo pvpn -f to crontab using sudo crontab -e

But after the startup, I have (with sudo pvpn -status):

[OpenVPN Status]: Not Running
[ProtonVPN Status]: Running
[Internet Status]: Online

and if I check with ipleak, I'm not protect. A idea of what to do?

@alexandre1985

This comment has been minimized.

Copy link

alexandre1985 commented Nov 3, 2018

I add @reboot sudo pvpn -f to crontab using sudo crontab -e

But after the startup, I have (with sudo pvpn -status):

[OpenVPN Status]: Not Running
[ProtonVPN Status]: Running
[Internet Status]: Online

and if I check with ipleak, I'm not protect. A idea of what to do?

@jGsch you have to do sudo crontab -e and put this text in the begining of the file:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Then, you can't run sudo inside a crontab file if your sudo is asking for a password. So, since you configured the root cron, you can simply put @reboot pvpn -f (without the sudo) on the crontab.

@xilopaint

This comment has been minimized.

Copy link
Contributor

xilopaint commented Nov 7, 2018

@mazen160, any news on autoboot and killswitch features?

@mazen160

This comment has been minimized.

Copy link
Collaborator

mazen160 commented Nov 7, 2018

Hi @xilopaint
The killswitch is assigned to another team. I will be following up regarding it.

The autoboot picture is not fully clear on the roadmap, but I will definitely keep you posted regarding updates

@jGsch

This comment has been minimized.

Copy link

jGsch commented Nov 12, 2018

@jGsch you have to do sudo crontab -e and put this text in the begining of the file:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Then, you can't run sudo inside a crontab file if your sudo is asking for a password. So, since you configured the root cron, you can simply put @reboot pvpn -f (without the sudo) on the crontab.

Thanks for the response!! But it still doesn't working...

I'm adding this line (with your corrections) to see what's going on:
@reboot pvpn -f >> /home/ooo/protonmail_autostart.out

the output is:
[!] Error: There is an internet connection issue.

Ok, it is maybe because internet wasn't launched at this moment. So I add:
@reboot sleep 10 && pvpn -f >> /home/ooo/protonmail_autostart.out

and the output is:

Fetching ProtonVPN servers...
Connecting...
[!] Error connecting to VPN.

Some ideas?

@alexandre1985

This comment has been minimized.

Copy link

alexandre1985 commented Nov 12, 2018

@alexandre1985

This comment has been minimized.

Copy link

alexandre1985 commented Nov 12, 2018

And question number 2, can you start pvpn successfully on the command line?

@jGsch

This comment has been minimized.

Copy link

jGsch commented Nov 12, 2018

Yes, I'll help. Do you want protonvpn to autostart on all of your users, or just in one or some of the users?

For all users, it's perfect!

And question number 2, can you start pvpn successfully on the command line?

Yes, after the startup, I run sudo pvpn -f on the terminal and it's work perfectly.

Again, thanks for your help!

@alexandre1985

This comment has been minimized.

Copy link

alexandre1985 commented Nov 12, 2018

Do this and put this file in your systemd service folder named as protonvpn.service.
Then you just have to systemctl enable protonvpn to make the service run at boot.
To run the service now you have to do systemctl start protonvpn

@jGsch

This comment has been minimized.

Copy link

jGsch commented Nov 12, 2018

Do this and put this file in your systemd service folder named as protonvpn.service.
Then you just have to systemctl enable protonvpn to make the service run at boot.
To run the service now you have to do systemctl start protonvpn

Decidedly...

What I have done:

sudo pvpn --init

sudo systemctl edit --force --full protonvpn.service

systemctl enable protonvpn

systemctl start protonvpn

And this give me:
Job for protonvpn.service failed because the control "process" exited with error code. See "systemctl status protonvpn.service" and "journalctl -xe" for details.

And systemctl status protonvpn.service give me:

● protonvpn.service - ProtonVPN
   Loaded: loaded (/etc/systemd/system/protonvpn.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2018-11-12 14:04:08 PST; 19s ago
  Process: 1274 ExecStart=/usr/bin/pvpn -f (code=exited, status=1/FAILURE)

nov. 12 14:03:43 xx pvpn[1274]: Traceback (most recent call last):
nov. 12 14:03:43 xx pvpn[1274]:   File "<stdin>", line 9645, in <module>
nov. 12 14:03:43 xx pvpn[1274]:   File "/usr/lib/python2.7/random.py", line 277, in choice
nov. 12 14:03:43 xx pvpn[1274]:     return seq[int(self.random() * len(seq))]  # raises IndexError if seq is empty
nov. 12 14:03:43 xx pvpn[1274]: IndexError: list index out of range
nov. 12 14:03:45 xx pvpn[1274]: Connecting...
nov. 12 14:04:07 xx pvpn[1274]: [!] Error connecting to VPN.
nov. 12 14:04:08 xx systemd[1]: protonvpn.service: Control process exited, code=exited status=1
nov. 12 14:04:08 xx systemd[1]: protonvpn.service: Failed with result 'exit-code'.
nov. 12 14:04:08 xx systemd[1]: Failed to start ProtonVPN.

I have tried to update protonvpn but no changes.

@alexandre1985

This comment has been minimized.

Copy link

alexandre1985 commented Nov 13, 2018

@Hofer-Julian

This comment has been minimized.

Copy link

Hofer-Julian commented Nov 24, 2018

For anyone with systemd, I've setup a bare bones systemd unit file which autostarts ProtonVPN at boot with the fastest connection. You run pvpn --init as root before starting it but after that it works well.

[Unit]
Description=ProtonVPN
After=syslog.target network-online.target
Wants=network-online.target

[Service]
Type=forking
ExecStart=/usr/bin/pvpn -f
ExecStop=/usr/bin/pvpn -d
ExecReload=/usr/bin/pvpn -f

[Install]
WantedBy=multi-user.target

My problem with this solution was that pvpn --init initializes in my home directory, but when executed by root it searches in root's home directory. I simply copied "~/.protonvpn-cli" in root's home directory.

Does anyone has a smarter solution?

@Tamaranch

This comment has been minimized.

Copy link
Contributor

Tamaranch commented Nov 24, 2018

@Hofer-Julian You have to appear as root in $SUDO_USER, so sudo sudo pvpn --init should work, if you can't or don't want to open a root shell to execute pvpn --init.

@Hofer-Julian

This comment has been minimized.

Copy link

Hofer-Julian commented Nov 25, 2018

@Tamaranch Thank you, this worked perfectly!

My procedure was (after installing "protonvpn-cli" according to the official guide):


sudo sudo pvpn --init

sudo systemctl edit --force --full protonvpn.service

insert:

[Unit]
Description=ProtonVPN
After=syslog.target network-online.target
Wants=network-online.target

[Service]
Type=forking
ExecStart=/usr/bin/pvpn -f
ExecStop=/usr/bin/pvpn -d
ExecReload=/usr/bin/pvpn -f

[Install]
WantedBy=multi-user.target

sudo systemctl enable protonvpn

sudo systemctl start protonvpn

@asim-vax

This comment has been minimized.

Copy link

asim-vax commented Jan 10, 2019

If it disconnects for whatever reason, would the systemd service fail?
if so, would adding:
Restart=on-failure
RestartSec=5s
to the systemd script be worth while?

I'm new to this, so any advice is welcome!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment