[ جـديد ] كيفية استضافة خادم bit.ly الخاص بك باستخدام Shlink في Linux

ديب لاب

ديب لاب

Moderator
مشـــرف
17 ديسمبر 2023
1,579
7
36
Host bitly server shlink linux 00 featured image

Shlink هي خدمة اختصار روابط ذاتية الاستضافة قوية لنظام Linux. وهي توفر إطار عمل بسيط وفعال حيث يمكنك استخدام اسم المجال الخاص بك كجذر لروابطك المختصرة. ستوضح لك هذه المقالة كيفية تثبيت نسخة Shlink الخاصة بك على Ubuntu Linux باستخدام Docker وNginx.

لماذا يتم اختصار الروابط باستخدام Shlink؟​


من أهم نقاط البيع التي يتميز بها Shlink أنه يمكنك استخدام نطاق مخصص خاص بك لإنشاء روابط مختصرة مع إمكانية الاستضافة الذاتية. وهذا بدوره يمنحك مرونة خدمة اختصار الروابط SaaS بالإضافة إلى خصوصية تشغيل البرامج على جهازك.

Rver shlink linux 01 shlink sample running 800x254

وبصرف النظر عن ذلك،
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
كما يتميز أيضًا بمجموعة متنوعة من الميزات مثل القدرة على إنشاء أكواد QR وإعادة توجيه استعلامات الروابط تلقائيًا وإنشاء عناوين مخصصة متعددة الأجزاء. وهذا يجعل Shlink أداة مفيدة إذا كنت تبحث عن خدمة اختصار الروابط في Linux حيث يمكنك تعديل مظهر الروابط وسلوكها.

جيد ان تعلم: تعرف على المزيد حول الاستضافة الذاتية عن طريق إنشاء خادم عناوين البريد الإلكتروني الخاص بك باستخدام SimpleLogin.

الحصول على Docker لـ Shlink​


افتراض: تفترض هذه المقالة أنك تقوم بتثبيت Shlink على VPS Ubuntu 22.04 وأنك تمتلك اسم نطاق حاليًا.

الخطوة الأولى في نشر Shlink على Linux هي الحصول على نسخة من Docker. للقيام بذلك، قم بجلب مفتاح التوقيع الخاص بمشروع Docker من موقعه على الويب:


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg


قم بإنشاء ملف المستودع لملفات Docker الثنائية الخاصة بك:


sudo nano /etc/apt/sources.list.d/docker.list


قم بلصق سطر التعليمات البرمجية التالي داخل ملف المستودع الجديد الخاص بك:


deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable


قم بإعادة تحميل قائمة مستودع النظام الخاص بك عن طريق القيام بما يلي apt update:


sudo apt update && sudo apt upgrade

تثبيت التبعيات لـ Shlink​


مع تشغيل مستودعات Docker، يمكنك الآن استخدام apt للحصول على التبعيات الخاصة بـ Shlink:


sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx


تأكد من أن حزمة snap “core” متوفرة في نظامك:

احصل على حزمة snap “certbot” من مؤسسة Frontier Foundation وقم بتثبيتها:


sudo snap install certbot --classic

الحصول على مفتاح ترخيص Geolite2​


من بين الميزات المميزة الأخرى لـ Shlink أنه يمكنه تتبع الموقع العام للمستخدم الذي نقر على الروابط الخاصة بك. لاستخدام هذا، افتح
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
صفحة.

Erver shlink linux 02 geolite sign up form 800x597

قم بملء النموذج بتفاصيلك ثم اضغط يكمل.

افتح صندوق الوارد في بريدك الإلكتروني، ثم ابحث عن رسالة التأكيد من MaxMind.

انقر فوق الرابط الموجود في البريد الإلكتروني، ثم قم بتوفير كلمة المرور لحساب MaxMind الجديد الخاص بك.

 17 password creation link maxmind account 800x314

قم بتسجيل الدخول إلى حساب MaxMind الخاص بك، ثم انقر فوق إدارة مفاتيح الترخيص على لوحة التحكم الخاصة بك.

Link linux 03 select license key menu item 800x364

انقر إنشاء مفتاح ترخيص جديد، ثم اضغط يتأكد لإنشاء مفتاح Geolite2 الخاص بك.

Er shlink linux 04 confirm new license key 800x300

انسخ مفتاح ترخيص Geolite2 إلى ملف نصي على جهازك ثم احفظه.

الحصول على Shlink وتثبيته​


لتثبيت Shlink، تحتاج أولاً إلى إنشاء شبكة Docker افتراضية. ستعمل هذه الشبكة كشبكة خاصة للتطبيق حيث يمكنه التواصل مع الحاويات الأخرى التي ستنشرها:


sudo docker network create -d bridge \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
shlink-network


قم بنشر قاعدة بيانات PostgreSQL وربطها بشبكة Docker الافتراضية الجديدة الخاصة بك:


sudo docker run -d \
--name shlink-db \
-e POSTGRES_PASSWORD=!REPLACE_ME! \
-e POSTGRES_USER=postgres \
-e POSTGRES_DB=shlink \
-p 127.0.0.1:5432:5432 \
--restart always \
--network="shlink-network" \
postgres:12.1


قم بتغيير قيمة متغير البيئة “POSTGRES_PASSWORD” بسلسلة نصية عشوائية.

Link linux 05 highlight random postgresql password

ملحوظة: يمكنك إنشاء هذه السلسلة العشوائية من النص باستخدام “/dev/urandom”: cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1

قم بلصق الأمر التالي في جلسة محطة طرفية جديدة:


sudo docker run -d \
--name shlink-stable \
-p 8081:8080 \
-e DEFAULT_DOMAIN=YOUR-ROOT.DOMAIN \
-e IS_HTTPS_ENABLED=true \
-e GEOLITE_LICENSE_KEY=!REPLACE_ME! \
-e DB_DRIVER=postgres \
-e DB_USER=postgres \
-e DB_PASSWORD=!REPLACE_ME! \
-e DB_HOST=shlink-db \
--network="shlink-network" \
shlinkio/shlink:stable


استبدل قيمة المتغير DEFAULT_DOMAIN باسم المجال الخاص بك.

Tly server shlink linux 06 set default domain name

ملحوظة: تأكد من أن المجال الخاص بك يحتوي على سجل A يشير إلى عنوان IP الخاص بجهازك.

قم بتغيير قيمة المتغير “GEOLITE_LICENSE_KEY” باستخدام مفتاح الترخيص الشخصي الخاص بك.

R shlink linux 07 set geolite license key variable

استبدل المتغير “DB_PASSWORD” بكلمة مرور قاعدة بيانات PostgreSQL الخاصة بك.

 linux 08 set postgresql db password main instance

يضعط يدخل لبدء تشغيل مثيل Shlink الخاص بك.

تثبيت واجهة Shlink وربطها​


احصل على مفتاح API من حاوية Shlink الخاصة بك، ثم انسخه إلى الحافظة الخاصة بك:


sudo docker exec -it shlink-stable shlink api-key:generate


قم بلصق الأمر التالي في جلسة محطة طرفية جديدة:


sudo docker run -d \
--name shlink-client \
-p 8080:8080 \
-e SHLINK_SERVER_URL=https://YOUR-ROOT.DOMAIN \
-e SHLINK_SERVER_API_KEY=!REPLACE-ME! \
--network="shlink-network" shlinkio/shlink-web-client


استبدل “SHLINK_SERVER_URL” بالقيمة من متغير “DEFAULT_DOMAIN” الموجود في الحاوية الخلفية.

 shlink linux 09 set full url shlink main instance

قم بلصق مفتاح API الخاص بك كقيمة لـ “SHLINK_SERVER_API_KEY”.

Hlink linux 10 shlink main instance api key sample

يضعط يدخل لبدء واجهة Shlink الأمامية.

تأكد من أن قاعدة البيانات الخاصة بك وبرنامج Shlink الخلفي وبرنامج Shlink الأمامي تعمل بشكل صحيح عن طريق إدراج جميع الحاويات النشطة حاليًا في النظام:


sudo docker container list

Er shlink linux 11 check docker containers running

إنشاء وكيل عكسي SSL باستخدام Nginx​


في هذه المرحلة، لديك الآن مجموعة برامج Shlink تعمل على الخادم الخاص بك. ولكن للوصول إليها، لا يزال يتعين عليك إنشاء وكيل ويب SSL يفوض الحاويتين الخاصتين بك على نطاقات مختلفة.

للبدء، قم بإنشاء سجل A جديد لواجهة Shlink الأمامية. في حالتي، سأقوم بتعيين سجل A للواجهة الأمامية على “admin”.

Erver shlink linux 12 create dns a records 800x175

قم بإنشاء ملف تكوين الموقع لنسخة Shlink الخاصة بك باستخدام محرر النصوص المفضل لديك:


sudo nano /etc/nginx/sites-available/shlink


قم بلصق كتلة التعليمات البرمجية التالية داخل ملف التكوين الخاص بك:


server {

server_name YOUR-ROOT.DOMAIN;

location / {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}


server {

server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}


استبدل المتغير “YOUR-ROOT.DOMAIN” بنطاق الجذر الخاص بك، و”SUBDOMAIN.YOUR-ROOT.DOMAIN” بالنطاق الفرعي لواجهة الواجهة الأمامية لديك.

احفظ ملف التكوين الخاص بك، ثم قم بتمكين تطبيق الويب الخاص بك في Nginx:


sudo ln -s /etc/nginx/sites-available/shlink /etc/nginx/sites-enabled/


قم بإعادة تحميل برنامج Nginx الخاص بك لتطبيق الإعدادات الجديدة:


sudo systemctl reload nginx


قم بتسجيل خادمك في مؤسسة الحدود الإلكترونية:


sudo certbot register --agree-tos -m YOUR@EMAIL.ADDRESS


اطلب شهادة SSL جديدة متعددة النطاقات لنسخة Shlink الخاصة بك:


sudo certbot --nginx -d YOUR-ROOT.DOMAIN -d SUBDOMAIN.YOUR-ROOT.DOMAIN


تأكد من أن خادم Shlink الخاص بك يعمل بشكل صحيح من خلال الانتقال إلى وحدة التحكم الإدارية الخاصة بمثيلك. في حالتي، يكون الأمر “

Ly server shlink linux 13 shlink interface running

جيد ان تعلم: تعرف على المزيد حول تشفير الويب عن طريق إنشاء شهادات SSL الخاصة بك باستخدام OpenSSL.

إنشاء رابطك الأول باستخدام Shlink​


لاستخدام مثيلك الجديد، انقر فوق شلينك عنصر القائمة في صفحة الوصول.

Rver shlink linux 16 shlink menu item landing page

قم بلصق عنوان URL الطويل الخاص بك على عنوان URL المراد اختصاره مربع النص تحت إنشاء عنوان URL قصير فئة.

قم بتوفير بعض البيانات الوصفية لرابطك القصير، ثم انقر فوق يحفظ لإنشاء الرابط الخاص بك.

Y server shlink linux 14 save new custom shortlink

افتح عنوان URL القصير الجديد الخاص بك في علامة تبويب جديدة للمتصفح، ثم انقر فوق الزيارات انقر فوق الزر الموجود على لوحة معلومات Shlink الخاصة بك لاختبار ما إذا كان يعمل بشكل صحيح.

Server shlink linux 15 sample analytics shortlinks

إن تثبيت ونشر خدمة اختصار الروابط الخاصة بك ما هو إلا الخطوة الأولى لاستعادة خصوصيتك على الإنترنت. تعرف على الكيفية التي يمكن أن يساعدك بها Linux في استعادة خصوصيتك بشكل أكبر من خلال استضافة موقع الويب الخاص بك المجهول في Ubuntu باستخدام Tor.