| #!/bin/bash |
|
|
| |
| |
|
|
| set -e |
|
|
| echo "Starting VPN setup..." |
|
|
| |
| mkdir -p /etc/openvpn/server/keys |
| mkdir -p /etc/openvpn/easy-rsa |
|
|
| |
| cd /etc/openvpn/server/keys |
|
|
| |
| openssl dhparam -out dh2048.pem 2048 |
|
|
| |
| openssl genrsa -out server.key 2048 |
|
|
| |
| openssl req -new -key server.key -out server.csr -subj "/C=US/ST=State/L=City/O=VPN/CN=vpn-server" |
| openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt |
|
|
| |
| openssl req -new -x509 -days 365 -key server.key -out ca.crt -subj "/C=US/ST=State/L=City/O=VPN-CA/CN=vpn-ca" |
|
|
| |
| openssl genrsa -out client.key 2048 |
| openssl req -new -key client.key -out client.csr -subj "/C=US/ST=State/L=City/O=VPN/CN=vpn-client" |
| openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey server.key -CAcreateserial -out client.crt |
|
|
| |
| openvpn --genkey --secret ta.key |
|
|
| |
| chmod 600 /etc/openvpn/server/keys/* |
|
|
| echo "Certificates generated successfully" |
|
|
| |
| cat > /etc/openvpn/server/client.ovpn << EOF |
| client |
| dev tun |
| proto udp |
| remote YOUR_HF_SPACE_URL 7860 |
| resolv-retry infinite |
| nobind |
| persist-key |
| persist-tun |
| remote-cert-tls server |
| cipher AES-256-CBC |
| verb 3 |
| |
| <ca> |
| $(cat /etc/openvpn/server/keys/ca.crt) |
| </ca> |
| |
| <cert> |
| $(cat /etc/openvpn/server/keys/client.crt) |
| </cert> |
| |
| <key> |
| $(cat /etc/openvpn/server/keys/client.key) |
| </key> |
| |
| <tls-auth> |
| $(cat /etc/openvpn/server/keys/ta.key) |
| </tls-auth> |
| key-direction 1 |
| EOF |
|
|
| echo "Client configuration created" |
|
|
| |
| echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf |
| sysctl -p |
|
|
| echo "VPN setup completed successfully!" |
| echo "Note: Replace YOUR_HF_SPACE_URL in client.ovpn with your actual Hugging Face Space URL" |