Поднимаем свой качественные файловый CDN сервер с вложениями в 0$

Поднимаем свой качественные файловый CDN сервер с вложениями в 0$

Доброго времени суток, уважаемые жители форума!
​​

Сегодня мы с вами разберем, как поднять свою так называемую CDN-систему абсолютно бесплатно. Обговорим с вами варианты, такие как получение сервера для реализации нашей задумки, бесплатный домен для сервера и полную настройку нашей CDN с поддержкой стрим-файлов.​

Мы сможем поднять 2 сервера со следующими характеристиками :
100GB SSD
1GB RAM
2CORE

Не будем тянуть и начнём ​​

Всё очень просто: нам понадобится аккаунт GitHub. По сути, мы просто стримим файлы через наш сервер из закрытого репозитория GitHub. Это гениально
07c4f032-0e93-49f7-bbb2-2fd17caf0878.webp
, я считаю, потому что у нас по факту бесконечное хранилище для разных файлов. GitHub имеет ограничение в 15GB общих файлов на один репозиторий, но сам Git никак нас не ограничивает в количестве созданных репозиториев.

Мы по факту пользуемся функциональностью веба, а именно стримингом, чтобы безопасно и без угроз для аккаунта Git передавать файлы прямыми ссылками через наш сервер. Сразу скажу, что новые модули и т.д. буду добавлять.

Для создания сервера, в первую очередь, нам понадобится зарегистрировать аккаунт Oracle Cloud. Как это делать, я объяснять вам не буду, но укажу ссылку на видео, по которому я сам регистрировал всё.


После чего заходим в нашу панель Oracle Cloud.
В поиске пишем «Instance» и переходим на соответствующую надпись.



После чего мы нажимаем на кнопку «Create instance» и выбираем всё самое дешёвенькое, не наглея. Только увеличиваем лимит SSD с 50 ГБ на 100 ГБ (так, на всякий случай, с запасом) и меняем систему с Oracle Linux на Ubuntu. Советую ставить какую-то mini-версию.



Не забывайте сохранить SSH ключи!!
После сохранения SSH-ключей смотрим информацию о созданном сервере и берём его белый IP.

И подключаемся по SSH :

⁡ssh -i path/to/private_key.pem ubuntu@server_ip
⁡

После подключения прописываем следующие команды:

⁡sudo apt update -y
⁡

⁡sudo apt upgrade -y
⁡

⁡sudo apt install git -y
⁡

⁡sudo apt install wget -y
⁡

Для удобства установим веб-панель администрирования aapanel (не реклама), просто мне легче с ней работать, уже 3 года её использую.

⁡wget --no-check-certificate -O install_7.0_en.sh https://www.aapanel.com/script/install_7.0_en.sh
⁡ - скрипт с оффициального сайта
Пояснения к выполняемой команде :

⁡--no-check-certificate
⁡ > отключает проверку SSL-сертификата, если он вдруг не доверенный

⁡-O install_7.0_en.sh
⁡ > сохраняет файл под указанным именем.

После окончания загрузки выполняем команду:
⁡chmod +x install_7.0_en.sh
⁡ , а затем производим установку самой панели:
⁡./install_7.0_en.sh aapanel
⁡ .

По окончании установки мы с вами увидим вот такой текст в консоли :


Нам нужно взять первую ссылку.

Примечание: Первая ссылка может быть в консоли скрыта за серым IP, поэтому замените там IP-адрес на тот, по которому вы подключались к серверу по SSH.

Нажмите, чтобы раскрыть...

После этого нам нужно открыть порты внутри сервера и на сайте Oracle Cloud (открывайте те порты, что написаны в консоли; я буду показывать на примере того, что выдало мне).

Для начала давайте откроем порты внутри сервера:

⁡sudo apt install ufw -y
⁡

⁡sudo ufw allow 30900
⁡

⁡sudo ufw allow 888
⁡

⁡sudo ufw allow 80
⁡

⁡sudo ufw allow 443
⁡

⁡sudo ufw allow 20
⁡

⁡sudo ufw allow 21
⁡

Прописываем:
⁡sudo ufw status
⁡ . Если видим там все эти порты, значит, всё получилось, мы молодцы, и почти всё работает
c8f0f6d0-29e3-4aa7-9c98-8c883dc991e1.webp
.

Переходим обратно в панель Oracle Cloud.

В списке наших инстансов выбираете тот, который создавали.
В разделе "Сведения об экземпляре" ищите "Виртуальная облачная сеть". В моём случае она называется vcn-20221009-1257.COLOR].
Далее ищите пункт "Безопасность" и нажимаем на доступный нам список. В моём случае это "Default Security List for vcn-20221009-1257".


После нажатия на "Default Security List for vcn-20221009-1257" (в вашем случае название может отличаться),
Мы выбираем вкладку "Правила безопасности" и нажимаем на кнопку "Добавить правила для входящего трафика"



У нас появится окно добавления параметров, куда мы вводим данные, как показано у меня на скриншоте.




После всех этих действий нажимаете кнопку "Добавить правила входящего трафика", и мы почти закончили с настройкой и установкой сервера :love2:.

Возвращаемся в терминал, через который мы подключались по SSH к нашему серверу, и прописываем:
⁡sudo reboot
⁡ .

После этого переходим по ссылке, которая нам выдавалась после установки панели. В моём случае это:
⁡http://185.93.91.67:3090/a4ed88ld
⁡ .


Если вы видите авторизацию, как на скриншоте, либо похожую на неё, то всё отлично, у нас всё получилось :


Авторизуемся согласно тем данным, что нам выдал сервер при установке.

После авторизации нам будет предложен рекомендованный софт. Нужно установить левую колонку с такими же настройками, как у меня.


Установка может занять до 30 минут

Нажмите, чтобы раскрыть...

После установки софта нам нужно с вами перейти в "App Store", который находится в левой панели.

​​

В App Store вы ищете Python в поиске и нажимаете на кнопку «Install», как показано на фото ниже (ВАЖНО: УСТАНАВЛИВАЙТЕ ВЕРСИЮ ТОЛЬКО 2.0!)

После установки данного компонента вы переходите в Settings > Version и выбираете версию 3.10.0. Там, где у меня кнопка Uninstall, у вас будет Install, как показано на скрине ниже.

Установка занимает до 5 минут.

После установки закрываем Python Manager и в левом меню переходим во вкладку Files. Здесь правой кнопкой мыши создаем New Folder, я назвал testCDN.

Ваш путь должен совпадать с тем, что указан на скриншоте ниже.

Нажмите, чтобы раскрыть...



После чего скачиваете скрипт с GitHub: https://github.com/illussioon/Fast-Server/tree/main


Распаковываете его у себя на ПК и перекидываете в ту папку, которую создавали на сервере :


После чего возвращаемся в Python Manager и создаём любой проект (в моём случае это будет tutorCDN). Указываем путь к проекту и исполняемому файлу (в моём случае это: /www/wwwroot/testCDN/, а Startup file/dir: /www/wwwroot/testCDN/server.py). (ОБЯЗАТЕЛЬНО ВЫБЕРИТЕ server.py как стартовый файл)
Порт ставим 8000.
Run user : Root
Startup mode : python
У вас должны быть настройки, как и у меня на скриншоте ниже.

Если у вас так же, нажимаем кнопку «Confirm» и ждём пару минуток.

После установки в списке нажимаем на кнопку "Module" и устанавливаем следующие модули :

⁡fastapi
⁡


⁡uvicorn
⁡


⁡edge-tts
⁡


⁡requests
⁡


⁡aiohttp
⁡


⁡pymysql
⁡


Вписываем название модуля и нажимаем на кнопку «Add», чтобы начать установку. Так делаем со всеми модулями, в поле «Version» ничего не записываем.

После чего обратно переходим в Files, в директорию, где у вас лежит сам скрипт (в моём случае /www/wwwroot/testCDN).
И создаём папку
⁡plugin
⁡ .


И скачиваем файл, который будет прикреплён только к этой статье. Это тоже мой плагин для системы трансляции файлов с Git:
https://cdn.illussion.graphics/git/lolz/tutor/GitHub.rar
(как раз вы и можете посмотреть как работает эта CDN)

Распаковываем этот файл у себя на ПК. Должна появиться папка GitHub, а внутри неё — файлы. Переносим эту папку в папку plugins на сервере, просто перетаскивая её.

После этого переходим в эту папку и открываем файл github_repo.json. Это файл конфигурации, сейчас мы его настроим.

Переходим на GitHub. Если не зарегистрированы, регистрируем новый аккаунт. Думаю, тут не нужно объяснять, как это делать.

Нажимаем на аватарку в правом верхнем углу и выбираем «Settings». В левом меню выбираем «Developer Settings», затем снова в левом меню выбираем «Personal access tokens» и «Tokens (classic)». Справа нажимаем на кнопку «Generate new token» > «Generate new token (classic)». Называете токен как хотите, главное — проставьте все галочки и выберите срок действия токена, как вам удобно (я поставил безлимит).


После чего этот токен вставляем в поле `token` в файле `github_repo.json`.
Далее нам нужно перейти на https://github.com/ и нажать на зелёную кнопку «New» справа.

​

Имя репозитория любое, главное, чтобы без пробелов. САМОЕ ГЛАВНОЕ: ПОМЕНЯЙТЕ С ПУБЛИЧНОГО РЕПО НА ПРИВАТНОЕ, КАК ПОКАЗАНО НА ФОТО НИЖЕ. Так к вашим файлам будете иметь доступ только вы и те, кому вы дадите ссылку.


Репозиторий заполняется по логике:
⁡ваш ник гит хаб/Название репо
⁡ . А ещё выставите настройку «Add README» на ON.

Допустим, если вы загрузили файл в главную директорию Git, он будет доступен по youdomain.com/git/filename.zip.

То есть, в ссылке повторяется полная структура директорий Git.

Первое, что нужно, — это в DNS-записях домена направить его на сервер. Об этом рассказывается в пунктах ниже: "Создание и настройка домена".

После направления домена мы его добавляем на сервер путём добавления через Python Manager. Заходим в него, в списке проектов находим наш проект и нажимаем на кнопку «Mapping», затем вводим наш домен youdomain.com.

Для создания домена мы воспользуемся сервисом https://nic.ua/uk

Домен будет в зоне pp.ua, регистрация бесплатная. Единственное, что нам понадобится, — это загранпаспорт. В моём случае я буду использовать карту от ByBit. Вы же можете арендовать карту либо воспользоваться своей, если есть. Как регистрировать ByBit карту, я рассказывать не буду, потому что это и так всем известно.
Проходим регистрацию и ставим на регистрацию нужный вам домен. Обязательно смотрите в зоне pp.ua, потому что он бесплатный.

Привязать карту напрямую на сайте нельзя, но можно через онлайн Google Pay, что я и сделал :



Привязка карты может занимать до 24 часов.

После этого нам нужно перейти на страницу :

Вписываем туда наш домен, переходим в бота в ТГ и вписываем туда тоже домен, чтобы получить код (извините, скриншотов нет, забыл сделать).

Создаём аккаунт FREE на Cloudflare. Думаю, рассказывать не нужно, что это и как проходит регистрация.

Далее на главной странице доменов нажимаем на вот такую кнопку

Сюда вводим домен, который регистрировали :


После чего копируем NS-серверы, которые вам дал Cloudflare. В моём случае это:
⁡apollo.ns.cloudflare.com
⁡
⁡rafe.ns.cloudflare.com
⁡



Переходите туда, где вы брали домен (в моём случае nic.ua), и в настройках ищу NS-серверы и нажимаю «Изменить».


Согласно нашему коду для кеширования я сделал отдельный роутер `cache/git`. Давайте я вам покажу, как настроить реальный кеш. Для этого переходим в «Rules» в левом меню и «Page Rules».


Ставите тут как у меня, только замените домен на свой:



Всё гуд, всё работает, ребятки! https://illussion.pp.ua/ Можете сами проверить.

Я надеюсь, вам это понравилось. Делал 3 дня в надежде, что мне выдадут статус авторской статьи, так как нужны денежки. Рассказал информацию, о которой не все знали, что так можно. Мой скрипт обходит Git CORS (можно стримить музыку m3u8, что Git блокирует, а мой скрипт позволяет). Так что я надеюсь, что меня заметят. Всех люблю, если зайдёт, у меня есть ещё что вам рассказать.

Комментарии 0

Пока нет комментариев. Начните обсуждение.
Войдите, чтобы оставить комментарий.
Назад
Верх