Last active
May 1, 2019 19:07
-
-
Save dimasahmad/457c7c9887485807e15a4976ab44ff83 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/local/env bash | |
# wget -O - https://gist.githubusercontent.com/dimasahmad/457c7c9887485807e15a4976ab44ff83/raw/c422a64d7906deea6988de66001f90eb915b635a/softether-installer.sh | bash | |
# How to... | |
# 1. Save this file as softether-installer.sh | |
# 2. chmod +x softether-installer.sh | |
# 3. Run bash file | |
# > ./softether-installer.sh | |
# Or just | |
# > bash softether-installer.sh | |
# 4. Init config vpnserver | |
# > cd /usr/local/vpnserver | |
# > ./vpncmd | |
# Enter into local server/hub config | |
# > ServerPasswordSet {yourPassword} | |
# Then use SoftEther VPN Server Manager to mange your server | |
if [ "$(whoami)" != "root" ]; then | |
SUDO=sudo | |
fi | |
# Update system | |
${SUDO} apt-get update && ${SUDO} apt-get -y upgrade | |
# Get build tools | |
${SUDO} apt-get -y install build-essential wget curl gcc make wget tzdata git libreadline-dev libncurses-dev libssl-dev zlib1g-dev | |
# Define softether version | |
RTM=$(curl http://www.softether-download.com/files/softether/ | grep -o 'v[^"]*e' | grep rtm | tail -1) | |
IFS='-' read -ra RTMS <<< "${RTM}" | |
# Get softether source | |
wget "http://www.softether-download.com/files/softether/${RTMS[0]}-${RTMS[1]}-${RTMS[2]}-${RTMS[3]}-${RTMS[4]}/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-${RTMS[0]}-${RTMS[1]}-${RTMS[2]}-${RTMS[3]}-linux-x64-64bit.tar.gz" -O /tmp/softether-vpnserver.tar.gz | |
# Extract softether source | |
${SUDO} tar -xzvf /tmp/softether-vpnserver.tar.gz -C /usr/local/ | |
# Remove unused file | |
${SUDO} rm /tmp/softether-vpnserver.tar.gz | |
# Move to source directory | |
cd /usr/local/vpnserver | |
# Workaround for 18.04+ | |
#${SUDO} sed -i 's|OPTIONS=-O2|OPTIONS=-no-pie -O2|' Makefile | |
# Build softether | |
${SUDO} make i_read_and_agree_the_license_agreement | |
# Change file permission | |
${SUDO} chmod 0600 * && ${SUDO} chmod +x vpnserver && ${SUDO} chmod +x vpncmd | |
# Link binary files | |
${SUDO} ln -sf /usr/local/vpnserver/vpnserver /usr/local/bin/vpnserver | |
${SUDO} ln -sf /usr/local/vpnserver/vpncmd /usr/local/bin/vpncmd | |
# Add systemd service | |
${SUDO} cat <<EOF >/lib/systemd/system/vpnserver.service | |
[Unit] | |
Description=SoftEther VPN Server | |
After=network.target auditd.service | |
ConditionPathExists=!/usr/local/vpnserver/do_not_run | |
[Service] | |
Type=forking | |
EnvironmentFile=-/usr/local/vpnserver | |
ExecStart=/usr/local/vpnserver/vpnserver start | |
ExecStop=/usr/local/vpnserver/vpnserver stop | |
KillMode=process | |
Restart=on-failure | |
# Hardening | |
PrivateTmp=yes | |
ProtectHome=yes | |
ProtectSystem=full | |
ReadOnlyDirectories=/ | |
ReadWriteDirectories=-/usr/local/vpnserver | |
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYS_ADMIN CAP_SETUID | |
[Install] | |
WantedBy=multi-user.target | |
EOF | |
# Act as router | |
echo "net.ipv4.ip_forward = 1" | ${SUDO} tee -a /etc/sysctl.conf | |
# Tune Kernel | |
echo "net.ipv4.ip_local_port_range = 1024 65535" | ${SUDO} tee -a /etc/sysctl.conf | |
echo "net.ipv4.tcp_congestion_control = bbr" | ${SUDO} tee -a /etc/sysctl.conf | |
echo "net.core.default_qdisc = fq_codel" | ${SUDO} tee -a /etc/sysctl.conf | |
${SUDO} sysctl -p | |
# Reload service | |
${SUDO} systemctl daemon-reload | |
# Enable service | |
${SUDO} systemctl enable vpnserver | |
# Start service | |
${SUDO} systemctl restart vpnserver | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment