Доброго времени суток, уважаемые жители форума!
Сегодня мы с вами разберем, как поднять свою так называемую CDN-систему абсолютно бесплатно. Обговорим с вами варианты, такие как получение сервера для реализации нашей задумки, бесплатный домен для сервера и полную настройку нашей CDN с поддержкой стрим-файлов.
Мы сможем поднять 2 сервера со следующими характеристиками :
100GB SSD
1GB RAM
2CORE
100GB SSD
1GB RAM
2CORE
Не будем тянуть и начнём
Всё очень просто: нам понадобится аккаунт GitHub. По сути, мы просто стримим файлы через наш сервер из закрытого репозитория GitHub. Это гениально
, я считаю, потому что у нас по факту бесконечное хранилище для разных файлов. GitHub имеет ограничение в 15GB общих файлов на один репозиторий, но сам Git никак нас не ограничивает в количестве созданных репозиториев.
Мы по факту пользуемся функциональностью веба, а именно стримингом, чтобы безопасно и без угроз для аккаунта Git передавать файлы прямыми ссылками через наш сервер. Сразу скажу, что новые модули и т.д. буду добавлять.
Мы по факту пользуемся функциональностью веба, а именно стримингом, чтобы безопасно и без угроз для аккаунта Git передавать файлы прямыми ссылками через наш сервер. Сразу скажу, что новые модули и т.д. буду добавлять.
Для создания сервера, в первую очередь, нам понадобится зарегистрировать аккаунт Oracle Cloud. Как это делать, я объяснять вам не буду, но укажу ссылку на видео, по которому я сам регистрировал всё.
После чего заходим в нашу панель Oracle Cloud.
В поиске пишем «Instance» и переходим на соответствующую надпись.

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


Не забывайте сохранить SSH ключи!!
После сохранения SSH-ключей смотрим информацию о созданном сервере и берём его белый IP.
В поиске пишем «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
.
По окончании установки мы с вами увидим вот такой текст в консоли :

Нам нужно взять первую ссылку.
После этого нам нужно открыть порты внутри сервера и на сайте 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
. Если видим там все эти порты, значит, всё получилось, мы молодцы, и почти всё работает
.
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
.
По окончании установки мы с вами увидим вот такой текст в консоли :

Нам нужно взять первую ссылку.
После этого нам нужно открыть порты внутри сервера и на сайте 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
. Если видим там все эти порты, значит, всё получилось, мы молодцы, и почти всё работает
Переходим обратно в панель Oracle Cloud.
В списке наших инстансов выбираете тот, который создавали.
В разделе "Сведения об экземпляре" ищите "Виртуальная облачная сеть". В моём случае она называется vcn-20221009-1257.COLOR].
Далее ищите пункт "Безопасность" и нажимаем на доступный нам список. В моём случае это "Default Security List for vcn-20221009-1257".

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

У нас появится окно добавления параметров, куда мы вводим данные, как показано у меня на скриншоте.
После всех этих действий нажимаете кнопку "Добавить правила входящего трафика", и мы почти закончили с настройкой и установкой сервера :love2:.
В списке наших инстансов выбираете тот, который создавали.
В разделе "Сведения об экземпляре" ищите "Виртуальная облачная сеть". В моём случае она называется 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
.
Если вы видите авторизацию, как на скриншоте, либо похожую на неё, то всё отлично, у нас всё получилось :

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

После установки софта нам нужно с вами перейти в "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. Это файл конфигурации, сейчас мы его настроим.
sudo reboot
.
После этого переходим по ссылке, которая нам выдавалась после установки панели. В моём случае это:
http://185.93.91.67:3090/a4ed88ld
.
Если вы видите авторизацию, как на скриншоте, либо похожую на неё, то всё отлично, у нас всё получилось :

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

После установки софта нам нужно с вами перейти в "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.
Нажимаем на аватарку в правом верхнем углу и выбираем «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.
После направления домена мы его добавляем на сервер путём добавления через Python Manager. Заходим в него, в списке проектов находим наш проект и нажимаем на кнопку «Mapping», затем вводим наш домен youdomain.com.
Для создания домена мы воспользуемся сервисом https://nic.ua/uk
Домен будет в зоне pp.ua, регистрация бесплатная. Единственное, что нам понадобится, — это загранпаспорт. В моём случае я буду использовать карту от ByBit. Вы же можете арендовать карту либо воспользоваться своей, если есть. Как регистрировать ByBit карту, я рассказывать не буду, потому что это и так всем известно.
Проходим регистрацию и ставим на регистрацию нужный вам домен. Обязательно смотрите в зоне pp.ua, потому что он бесплатный.
Привязать карту напрямую на сайте нельзя, но можно через онлайн Google Pay, что я и сделал :


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


Привязка карты может занимать до 24 часов.
После этого нам нужно перейти на страницу :
Вписываем туда наш домен, переходим в бота в ТГ и вписываем туда тоже домен, чтобы получить код (извините, скриншотов нет, забыл сделать).
Создаём аккаунт FREE на Cloudflare. Думаю, рассказывать не нужно, что это и как проходит регистрация.
Далее на главной странице доменов нажимаем на вот такую кнопку
Сюда вводим домен, который регистрировали :

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

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

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

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

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

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

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

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

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

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

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








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