خب با توجه به مشکلاتی که به خاطر تحریم ها پیش اومده و کار توسعه دهنده ها رو دشوار کرده تصمیم گرفتیم یک راه حل پایدار برای برطرف کردن مشکل پیاده سازی کنیم.
در این قسمت VPS رو آماده می کنیم و در قسمت بعدی نحوه اتصال به اون رو از طریق pfSense توضیح میدیم.
در مرحله اول ما به یک VPS نیاز داریم که در یک کشور خارجی باشه. این VPS به سخت افزار خاصی نیاز نداره بنابراین کمترین هزینه ممکن رو براش انجام بدید.
خیلی از هاستیگ های ایرانی امکان خرید VPS های خارجی رو دارند که می تونید از اونها برای خرید استفاده کنید. ما از Hetzner استفاده می کنیم. سیستم عامل رو Ubuntu 20.04 بزارید که همه کامند ها رو بتونید مشابه ما اجرا کنید.
بعد از اینکه ساخت VPS تموم شد با ssh و با کمک یوزر و پسوری که دارید بهش وصل بشید.
اولین مرحله تغییر پسورد هست با دستور زیر این کار رو انجام بدید:
#change your password passwd
مرحله بعد نصب داکر هست. برای نصب داکر می تونید از لینک زیر استفاده کنید:
https://docs.docker.com/engine/install/ubuntu/
کامند های مورد نیاز به این صورت هست:
#step 1 apt-get update
#step 2 apt-get install ca-certificates curl gnupg lsb-release
#step 3 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#step 4 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#step 5 apt-get update
#step 6 apt-get install docker-ce docker-ce-cli containerd.io
بعد از اینکه مراحل نصب تموم شد می تونید برای تست نصب داکر از این کامند استفاده می کنیم:
docker --version
شما می توانید Docker Compose رو هم نصب کنید تا در بعضی مواقع ازش استفاده کنید:
apt-get install docker-compose-plugin
ما برای مدیریت کانتینر ها از portainer استفاده می کنیم پیشنهاد می کنم شما هم ازش استفاده کنید ولی اگر ابزاری دیگری برای این کار دارید می تونید این مرحله رو انجام ندید.
برای نصب portainer از این لینک استفاده کنید:
https://docs.portainer.io/v/ce-2.11/start/install/server/docker/linux
کامند های مورد نیاز به این صورت هست:
#Step 1 docker volume create portainer_data #Step 2 docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.11.1
برای تست نصب کافیست از این کامند استفاده کنید
docker ps
برای مراجعه به داشبورد portainer اگر مثل ما از پورت های پیش فرض استفاده کرده باشید کافی هست به این آدرس برید:
https://[your ip vps]:9443
به https بودن آدرس توجه کنید و ریسک دسترسی نا امن رو بپذیرید و به صفحه اول portainer برسید
به portainer خوش آمدید، در صفحه اول گزینه اول رو انتخاب کنید و بعد local رو انتخاب کنید تا به داکری که نصب کردید دسترسی کامل داشته باشید:
خب همه این مراحل مقدمه ای بود برای نصب OpenVPN
برای نصب OpenVPN ما از klyemanna استفاده می کنیم. مزیتی که داره این هست که هیچ محدودیتی نداره ولی مشکل ش نداشتن ui هست.
برای نصب می تونید از این لینک استفاده کنید:
https://github.com/kylemanna/docker-openvpn
ما از این کامند ها استفاده کردیم:
OVPN_DATA="openvpn_data"
docker volume create --name $OVPN_DATA
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
docker run -v openvpn_data:/etc/openvpn -d -p 1194:1194/udp -p 80:80 -p 443:443 -p 14339:14339 -p 996:996 -p 25:25 -p 465:465 -p 587:587 --cap-add=NET_ADMIN --name paas_openvpn kylemanna/openvpn
اطلاعات در خواستی در این مرحله رو وارد کنید تا کلید ها تولید شود
کلید ca که در این مرحله از شما درخواست میشه رو در مراحل بعدی نیاز دارید پس در حفظ و نگهداری آن کوشا باشید D:
بعد از نصب مرحله بعدی ساخت یک کلاینت هست.
برای ساخت کلاینت و دریافت فایل ovpn از این کامند ها استفاده کنید و اطلاعاتی که می خواهد رو وارد کنید
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full PaaS nopass
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient PaaS > PaaS.ovpn
خط آخر اطلاعات کلاینت رو روی فایل PaaS.ovpn می نویسه حالا کافی هست با دستور زیر محتویات اون رو بخونید:
cat PaaS.ovpn
توی فایل یه سری اطلاعات هست که توی مرحله بعدی به اونها نیاز داریم
شکل فایل ovpn این طوری هست:
client
nobind
dev tun
remote-cert-tls server
remote VPN.SERVERNAME.COM 1194 udp
<key>
-----BEGIN PRIVATE KEY----- یه سری کاراکتر -----END PRIVATE KEY-----
</key>
<cert>
-----BEGIN CERTIFICATE----- یه سری داستان -----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE----- یه سری کاراکتر -----END CERTIFICATE-----
</ca>
key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1----- یه سری کاراکتر -----END OpenVPN Static key V1-----
</tls-auth>
redirect-gateway def1
این اطلاعات رو داشته باشید در قسمت بعدی نحوه وصل شده به OpenVPN از طریق pfSense رو توضیح میدم.
ساخت یک paas خانگی - قسمت اول: مقدمه
ساخت یک paas خانگی - قسمت دوم: VMware ESXi
--> ساخت یک paas خانگی - قسمت سوم: نصب OpenVPN
ساخت یک paas خانگی - قسمت چهارم: تنظیم pfSense
ساخت یک paas خانگی - قسمت پنجم: تنظیمات OpenVPN
ساخت یک paas خانگی - قسمت ششم: نصب CapRover