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

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

Тема в разделе Статьи создана пользователем b0rov Просмотры 150
b0rov Автор темы

Доброго времени суток, уважаемые жители форума!
Сегодня мы с вами разберем, как поднять свою так называемую CDN-систему абсолютно бесплатно. Обговорим с вами варианты, такие как получение сервера для реализации нашей задумки, бесплатный [tooltip=217]домен[/tooltip] для сервера и полную настройку нашей CDN с поддержкой стрим-файлов.
Мы сможем поднять 2 сервера со следующими характеристиками :
100GB SSD
1GB RAM
2CORE
Не будем тянуть и начнём
Всё очень просто: нам понадобится аккаунт GitHub. По сути, мы просто стримим файлы через наш сервер из закрытого репозитория GitHub. Это гениально :genius:, я считаю, потому что у нас по факту бесконечное хранилище для разных файлов. GitHub имеет ограничение в 15GB общих файлов на один репозиторий, но сам Git никак нас не ограничивает в количестве созданных репозиториев.

Мы по факту пользуемся функциональностью веба, а именно стримингом, чтобы безопасно и без угроз для аккаунта Git передавать файлы прямыми ссылками через наш сервер. Сразу скажу, что новые модули и т.д. буду добавлять.
Для создания сервера, в первую очередь, нам понадобится зарегистрировать аккаунт Oracle [tooltip=427]Cloud[/tooltip]. Как это делать, я объяснять вам не буду, но укажу ссылку на видео, по которому я сам регистрировал всё.
После чего заходим в нашу панель Oracle [tooltip=427]Cloud[/tooltip].
В поиске пишем «Instance» и переходим на соответствующую надпись.

ec72513d-008c-4136-b1f4-370a5d453c9a.webp



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

2098a434-c2ed-488d-b65c-907c21893045.webp

0b21f83e-d5ed-45f9-8f21-829039c3dcff.webp

Не забывайте сохранить [tooltip=537]SSH[/tooltip] ключи!!
После сохранения SSH-ключей смотрим информацию о созданном сервере и берём его белый [tooltip=964]IP[/tooltip].
И подключаемся по [tooltip=537]SSH[/tooltip] :
[srci]⁡ssh -i path/to/private_key.pem ubuntu@server_ip[/srci] ⁡

После подключения прописываем следующие команды:
[srci]⁡sudo apt update -y[/srci] ⁡
[srci]⁡sudo apt upgrade -y[/srci] ⁡
[srci]⁡sudo apt install git -y[/srci] ⁡
[srci]⁡sudo apt install wget -y[/srci] ⁡

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

[srci]⁡wget --no-check-certificate -O install_7.0_en.sh ⁡ - [tooltip=926]скрипт[/tooltip] с оффициального сайта
Пояснения к выполняемой команде :

[srci]⁡--no-check-certificate[/srci] ⁡ > отключает проверку SSL-сертификата, если он вдруг не доверенный
[srci]⁡-O install_7.0_en.sh[/srci] ⁡ > сохраняет файл под указанным именем.

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


По окончании установки мы с вами увидим вот такой текст в консоли :
e4cb045a-4f9a-4ff2-a2ae-d40037800f55.webp


Нам нужно взять первую ссылку.
Примечание: Первая ссылка может быть в консоли скрыта за серым [tooltip=964]IP[/tooltip], поэтому замените там [tooltip=964]IP[/tooltip]-адрес на тот, по которому вы подключались к серверу по [tooltip=537]SSH[/tooltip].

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

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

[srci]⁡sudo apt install ufw -y[/srci] ⁡
[srci]⁡sudo ufw allow 30900[/srci] ⁡
[srci]⁡sudo ufw allow 888[/srci] ⁡
[srci]⁡sudo ufw allow 80[/srci] ⁡
[srci]⁡sudo ufw allow 443[/srci] ⁡
[srci]⁡sudo ufw allow 20[/srci] ⁡
[srci]⁡sudo ufw allow 21[/srci] ⁡

Прописываем: [srci]⁡sudo ufw status[/srci] ⁡ . Если видим там все эти порты, значит, всё получилось, мы молодцы, и почти всё работает :kitten:.
Переходим обратно в панель Oracle [tooltip=427]Cloud[/tooltip].

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


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

e908cb80-9c18-4897-937c-dc504f780446.webp


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

22d854fc-030f-4d75-9aca-e64afb567693.webp

7c63badb-699c-45da-82fb-7b51528a91fa.webp

0817edfc-bda8-4c01-9db1-624ecc037af6.webp

После всех этих действий нажимаете кнопку "Добавить правила входящего трафика", и мы почти закончили с настройкой и установкой сервера :love2:.
Возвращаемся в терминал, через который мы подключались по [tooltip=537]SSH[/tooltip] к нашему серверу, и прописываем: [srci]⁡sudo reboot[/srci] ⁡ .
После этого переходим по ссылке, которая нам выдавалась после установки панели. В моём случае это: [srci]⁡ ⁡ .

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

f4413fff-ac90-4eef-9970-000470363b1d.webp

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

После авторизации нам будет предложен рекомендованный [tooltip=145]софт[/tooltip]. Нужно установить левую колонку с такими же настройками, как у меня.
76b56e00-d158-464d-b71e-2ef4d6a1ded0.webp

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

После установки софта нам нужно с вами перейти в "App Store", который находится в левой панели.
bfba9bc9-849d-45ea-bd46-fbdd657fda59.webp

В App [tooltip=220]Store[/tooltip] вы ищете [tooltip=894]Python[/tooltip] в поиске и нажимаете на кнопку «Install», как показано на фото ниже (ВАЖНО: УСТАНАВЛИВАЙТЕ ВЕРСИЮ ТОЛЬКО 2.0!)
800de38a-2209-4fef-8285-108148d60c25.webp

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

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

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

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

caee295c-f858-42b7-8367-637ca8f92240.webp


После чего скачиваете [tooltip=926]скрипт[/tooltip] с GitHub:
1b3e75de-c90f-4acf-975a-48787146e366.webp


Распаковываете его у себя на ПК и перекидываете в ту папку, которую создавали на сервере :
d42cc55d-5e58-418c-a46d-fc5e8f5aa35f.webp


После чего возвращаемся в [tooltip=894]Python[/tooltip] Manager и создаём любой проект (в моём случае это будет tutorCDN). Указываем путь к проекту и исполняемому файлу (в моём случае это: /www/wwwroot/testCDN/, а Startup file/dir: /www/wwwroot/testCDN/[UNFURL='https://server.py']server.py[/UNFURL]). (ОБЯЗАТЕЛЬНО ВЫБЕРИТЕ [UNFURL='https://server.py']server.py[/UNFURL] как стартовый файл)
Порт ставим 8000.
Run user : [tooltip=539]Root[/tooltip]
Startup mode : [tooltip=894]python[/tooltip]
У вас должны быть настройки, как и у меня на скриншоте ниже.
dd1a7c86-a4e1-4656-9a48-0bae2ae427f9.webp

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

После установки в списке нажимаем на кнопку "Module" и устанавливаем следующие модули :
[srci]⁡fastapi[/srci] ⁡
[srci]⁡uvicorn[/srci] ⁡
[srci]⁡edge-tts[/srci] ⁡
[srci]⁡requests[/srci] ⁡
[srci]⁡aiohttp[/srci] ⁡
[srci]⁡pymysql[/srci] ⁡
6c5d7868-7642-4ed0-a340-edc218e4af08.webp

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

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

И скачиваем файл, который будет прикреплён только к этой статье. Это тоже мой [tooltip=402]плагин[/tooltip] для системы трансляции файлов с Git:

(как раз вы и можете посмотреть как работает эта CDN)

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

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

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

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

b07d2a68-33eb-42e5-9a46-3abeffcf086d.webp
21f28f3e-ecc7-41ce-8769-f65900082c93.webp
0443b920-ad24-42ca-a5a8-b1ab724215c1.webp
3fcda172-b516-4829-b040-3fc410b9ae2f.webp

После чего этот [tooltip=152]токен[/tooltip] вставляем в поле `token` в файле `github_repo.json`.
Далее нам нужно перейти на и нажать на зелёную кнопку «New» справа.
707540e1-22a4-4be6-93d8-b80dbeb8084d.webp



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


Репозиторий заполняется по логике: [srci]⁡ваш ник гит хаб/Название репо[/srci] ⁡ . А ещё выставите настройку «Add README» на ON.
Допустим, если вы загрузили файл в главную директорию Git, он будет доступен по [UNFURL='https://youdomain.com/git/filename.zip']youdomain.com/git/filename.zip[/UNFURL].

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

После направления домена мы его добавляем на сервер путём добавления через [tooltip=894]Python[/tooltip] Manager. Заходим в него, в списке проектов находим наш проект и нажимаем на кнопку «Mapping», затем вводим наш [tooltip=217]домен[/tooltip] [UNFURL='https://youdomain.com']youdomain.com[/UNFURL].
Для создания домена мы воспользуемся сервисом

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


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

0814793c-dd32-448e-a141-f4f2def78b24.webp
335dd04c-e33b-499a-a85f-616c63c36379.webp



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

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

Вписываем туда наш [tooltip=217]домен[/tooltip], переходим в бота в [tooltip=956]ТГ[/tooltip] и вписываем туда тоже [tooltip=217]домен[/tooltip], чтобы получить код (извините, скриншотов нет, забыл сделать).
Создаём аккаунт FREE на Cloudflare. Думаю, рассказывать не нужно, что это и как проходит регистрация.

Далее на главной странице доменов нажимаем на вот такую кнопку
63e34665-1e26-4497-8e0e-63c8c952e4e8.webp


Сюда вводим [tooltip=217]домен[/tooltip], который регистрировали :
0c03b6e8-ee50-4bf5-92e9-3d7a65726b5f.webp


После чего копируем NS-серверы, которые вам дал Cloudflare. В моём случае это: [srci]⁡apollo.ns.cloudflare.com[/srci] ⁡ [srci]⁡rafe.ns.cloudflare.com[/srci] ⁡
80f294c0-6003-4286-a610-26ca03f05392.webp


Переходите туда, где вы брали [tooltip=217]домен[/tooltip] (в моём случае [UNFURL='https://nic.ua']nic.ua[/UNFURL]), и в настройках ищу NS-серверы и нажимаю «Изменить».
b9095d71-d7ee-4b42-9d56-8821e985448a.webp

Согласно нашему коду для кеширования я сделал отдельный роутер `cache/git`. Давайте я вам покажу, как настроить реальный кеш. Для этого переходим в «Rules» в левом меню и «Page Rules».
8bb19872-d6f8-4709-87ef-917b10c55a24.webp


Ставите тут как у меня, только замените [tooltip=217]домен[/tooltip] на свой:

acd4678b-7e2f-4b6a-ab9a-38007443ad38.webp


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

это моя статья просто с другого форума просто захотелось поделиться завтра для вашего форума начну писать прикольную статейку <3
Сверху