Shlink هي خدمة اختصار روابط ذاتية الاستضافة قوية لنظام Linux. وهي توفر إطار عمل بسيط وفعال حيث يمكنك استخدام اسم المجال الخاص بك كجذر لروابطك المختصرة. ستوضح لك هذه المقالة كيفية تثبيت نسخة Shlink الخاصة بك على Ubuntu Linux باستخدام Docker وNginx.
لماذا يتم اختصار الروابط باستخدام Shlink؟
من أهم نقاط البيع التي يتميز بها Shlink أنه يمكنك استخدام نطاق مخصص خاص بك لإنشاء روابط مختصرة مع إمكانية الاستضافة الذاتية. وهذا بدوره يمنحك مرونة خدمة اختصار الروابط SaaS بالإضافة إلى خصوصية تشغيل البرامج على جهازك.
وبصرف النظر عن ذلك،
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
كما يتميز أيضًا بمجموعة متنوعة من الميزات مثل القدرة على إنشاء أكواد 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 أنه يمكنه تتبع الموقع العام للمستخدم الذي نقر على الروابط الخاصة بك. لاستخدام هذا، افتح
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
صفحة.قم بملء النموذج بتفاصيلك ثم اضغط يكمل.
افتح صندوق الوارد في بريدك الإلكتروني، ثم ابحث عن رسالة التأكيد من MaxMind.
انقر فوق الرابط الموجود في البريد الإلكتروني، ثم قم بتوفير كلمة المرور لحساب MaxMind الجديد الخاص بك.
قم بتسجيل الدخول إلى حساب MaxMind الخاص بك، ثم انقر فوق إدارة مفاتيح الترخيص على لوحة التحكم الخاصة بك.
انقر إنشاء مفتاح ترخيص جديد، ثم اضغط يتأكد لإنشاء مفتاح Geolite2 الخاص بك.
انسخ مفتاح ترخيص 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” بسلسلة نصية عشوائية.
ملحوظة: يمكنك إنشاء هذه السلسلة العشوائية من النص باستخدام “/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 باسم المجال الخاص بك.
ملحوظة: تأكد من أن المجال الخاص بك يحتوي على سجل A يشير إلى عنوان IP الخاص بجهازك.
قم بتغيير قيمة المتغير “GEOLITE_LICENSE_KEY” باستخدام مفتاح الترخيص الشخصي الخاص بك.
استبدل المتغير “DB_PASSWORD” بكلمة مرور قاعدة بيانات PostgreSQL الخاصة بك.
يضعط يدخل لبدء تشغيل مثيل 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” الموجود في الحاوية الخلفية.
قم بلصق مفتاح API الخاص بك كقيمة لـ “SHLINK_SERVER_API_KEY”.
يضعط يدخل لبدء واجهة Shlink الأمامية.
تأكد من أن قاعدة البيانات الخاصة بك وبرنامج Shlink الخلفي وبرنامج Shlink الأمامي تعمل بشكل صحيح عن طريق إدراج جميع الحاويات النشطة حاليًا في النظام:
sudo docker container list
إنشاء وكيل عكسي SSL باستخدام Nginx
في هذه المرحلة، لديك الآن مجموعة برامج Shlink تعمل على الخادم الخاص بك. ولكن للوصول إليها، لا يزال يتعين عليك إنشاء وكيل ويب SSL يفوض الحاويتين الخاصتين بك على نطاقات مختلفة.
للبدء، قم بإنشاء سجل A جديد لواجهة Shlink الأمامية. في حالتي، سأقوم بتعيين سجل A للواجهة الأمامية على “admin”.
قم بإنشاء ملف تكوين الموقع لنسخة 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 الخاص بك يعمل بشكل صحيح من خلال الانتقال إلى وحدة التحكم الإدارية الخاصة بمثيلك. في حالتي، يكون الأمر “
جيد ان تعلم: تعرف على المزيد حول تشفير الويب عن طريق إنشاء شهادات SSL الخاصة بك باستخدام OpenSSL.
إنشاء رابطك الأول باستخدام Shlink
لاستخدام مثيلك الجديد، انقر فوق شلينك عنصر القائمة في صفحة الوصول.
قم بلصق عنوان URL الطويل الخاص بك على عنوان URL المراد اختصاره مربع النص تحت إنشاء عنوان URL قصير فئة.
قم بتوفير بعض البيانات الوصفية لرابطك القصير، ثم انقر فوق يحفظ لإنشاء الرابط الخاص بك.
افتح عنوان URL القصير الجديد الخاص بك في علامة تبويب جديدة للمتصفح، ثم انقر فوق الزيارات انقر فوق الزر الموجود على لوحة معلومات Shlink الخاصة بك لاختبار ما إذا كان يعمل بشكل صحيح.
إن تثبيت ونشر خدمة اختصار الروابط الخاصة بك ما هو إلا الخطوة الأولى لاستعادة خصوصيتك على الإنترنت. تعرف على الكيفية التي يمكن أن يساعدك بها Linux في استعادة خصوصيتك بشكل أكبر من خلال استضافة موقع الويب الخاص بك المجهول في Ubuntu باستخدام Tor.