Misioslav / expressvpn

52 stars 25 forks source link

latest version restart loop #46

Open phynias opened 5 months ago

phynias commented 5 months ago

Not sure what is wrong as there are no errors or anything, but I updated to latest version and it starts just fine logs look normal and then it restarts. Infinitely.

I go back to 3.68.0.2 and everything works fine.

Misioslav commented 5 months ago

Hi, Im using the latest on my main machine and it seems to works fine, Ive just set it up also on my second machine to observe its behavior but after 15min so far so good.

The latest changes that were introduced are:

output=$(service expressvpn restart)
if echo "$output" | grep -q "failed!" > /dev/null
then
    echo "Service expressvpn restart failed!"
    exit 1
fi

and

output=$(expect -f /expressvpn/activate.exp "$CODE")
if echo "$output" | grep -q "Please activate your account" > /dev/null || echo "$output" | grep -q "Activation failed" > /dev/null
then
    echo "Activation failed!"
    exit 1
fi

so basically conditions to mark the container as unhealthy, which were previously not working from what Ive noticed. Additional change was expressvpn connect $SERVER || exit so in case of not connecting to do the same as above. I see I did not add 1 to exit but I do not think it would cause the looping. I undertand you did not make any changes on your end? Like configuration, compose, etc.? The changes above may cause looping essentially if the checks fail and restart policy allows it.

How's your configuration looking?

chillheart commented 2 months ago

I am having the same problem, ever since upgrading past 3.68.0.2.

Here are a copy of the logs

Preferred Protocol is lightway_udp.
LightwayCipher is chacha20.
Send Diagnostics is disabled.
Advanced protection block trackers is enabled.
Network Lock Mode is default.
Auto Connect is enabled.
ExpressVPN for Linux v3.74.0.6 is now available.
To update ExpressVPN, run sudo apt update && sudo apt install --only-upgrade expressvpn
If you encounter an issue, download the app manually at https://www.vlycgtx.com/latest#linux
Connecting to Smart Location...

Connecting to USA - Albuquerque...
Connecting to USA - Albuquerque...  1.0%
Connecting to USA - Albuquerque...  15.0%
Connecting to USA - Albuquerque...  37.5%
Connecting to USA - Albuquerque...  75.0%
Connecting to USA - Albuquerque...  85.0%
Connecting to USA - Albuquerque...  100.0%
Connected to USA - Albuquerque

I have it defined as part of a docker compose file to route all my connections through.

expressvpn:
    devices:
     - "/dev/net/tun"
    image: misioslav/expressvpn:3.73.0.0
    ports:
      - 80:80
    privileged: true
    environment:
      CODE: <redacted>
      DDNS: <redacted>
      BEAERER: <redacted>
      HEALTHCHECK: <redacted>
      SERVER: SMART
    labels:
      failure_notify: true
      failure_notify_email: "<redacted>"
    restart: always
Misioslav commented 2 months ago

Hey, can you try to mount as start.sh file modified version without || exit in the line of expressvpn connect $SERVER || exit and see if that will work?

FuturamaPhill commented 2 months ago

I am having the same problem, ever since upgrading past 3.68.0.2.

Here are a copy of the logs

Preferred Protocol is lightway_udp.
LightwayCipher is chacha20.
Send Diagnostics is disabled.
Advanced protection block trackers is enabled.
Network Lock Mode is default.
Auto Connect is enabled.
ExpressVPN for Linux v3.74.0.6 is now available.
To update ExpressVPN, run sudo apt update && sudo apt install --only-upgrade expressvpn
If you encounter an issue, download the app manually at https://www.vlycgtx.com/latest#linux
Connecting to Smart Location...

Connecting to USA - Albuquerque...
Connecting to USA - Albuquerque...    1.0%
Connecting to USA - Albuquerque...    15.0%
Connecting to USA - Albuquerque...    37.5%
Connecting to USA - Albuquerque...    75.0%
Connecting to USA - Albuquerque...    85.0%
Connecting to USA - Albuquerque...    100.0%
Connected to USA - Albuquerque

I have it defined as part of a docker compose file to route all my connections through.

expressvpn:
    devices:
     - "/dev/net/tun"
    image: misioslav/expressvpn:3.73.0.0
    ports:
      - 80:80
    privileged: true
    environment:
      CODE: <redacted>
      DDNS: <redacted>
      BEAERER: <redacted>
      HEALTHCHECK: <redacted>
      SERVER: SMART
    labels:
      failure_notify: true
      failure_notify_email: "<redacted>"
    restart: always

I downgraded 3.68.0.2 and I no longer have this issue

Misioslav commented 2 months ago

Hey, unfortunately, Im not able to reproduce the issue on my side, could try to do the following and report the result?

Hey, can you try to mount as start.sh file modified version without || exit in the line of expressvpn connect $SERVER || exit and see if that will work?

chillheart commented 2 months ago

I tried what you suggested and it still reboots constantly.

Misioslav commented 2 months ago

Could you then try this? Set the AUTO_UPDATE to "on" for version 3.68.0.2 and see how that behaves.

Also, if you could replace start.sh with the following

#!/bin/bash

if [[ $AUTO_UPDATE = "on" ]]; then
    DEBIAN_FRONTEND=noninteractive apt update && apt -y -o Dpkg::Options::="--force-confdef" -o \
    Dpkg::Options::="--force-confnew" install -y --only-upgrade expressvpn --no-install-recommends \
    && apt autoclean && apt clean && apt autoremove && rm -rf /var/lib/apt/lists/* && rm -rf /var/log/*.log
fi

if [[ -f "/etc/resolv.conf" ]]; then
    cp /etc/resolv.conf /etc/resolv.conf.bak
    umount /etc/resolv.conf &>/dev/null
    cp /etc/resolv.conf.bak /etc/resolv.conf
    rm /etc/resolv.conf.bak
fi

sed -i 's/DAEMON_ARGS=.*/DAEMON_ARGS=""/' /etc/init.d/expressvpn

output=$(service expressvpn restart)
if [[ echo "$output" | grep -q "failed!" > /dev/null ]];
then
    echo "Service expressvpn restart failed!"
    exit 1
fi

output=$(expect -f /expressvpn/activate.exp "$CODE")
if [[ echo "$output" | grep -q "Please activate your account" > /dev/null || echo "$output" | grep -q "Activation failed" > /dev/null ]];
then
    echo "Activation failed!"
    exit 1
fi

expressvpn preferences set preferred_protocol $PROTOCOL
expressvpn preferences set lightway_cipher $CIPHER
expressvpn preferences set send_diagnostics false
expressvpn preferences set block_trackers true
bash /expressvpn/uname.sh
expressvpn preferences set auto_connect true
expressvpn connect $SERVER || exit

for i in $(echo $WHITELIST_DNS | sed "s/ //g" | sed "s/,/ /g")
do
    iptables -A xvpn_dns_ip_exceptions -d ${i}/32 -p udp -m udp --dport 53 -j ACCEPT
    echo "allowing dns server traffic in iptables: ${i}"
done

exec "$@"

I'll be honest, I'm flying blind here. I can't recreate it on my machines no matter what I try. So it's either one of the conditions or expressvpn version or something on the host machine.