[БГ] Инсталиране и настройка на евтин домашен интернет сървър върху едночипов микрокомпютър Odroid C1 с поддръжка на CMS сайт

[EN] Installation and setup of a low-cost home Internet server on an Odroid C1 single-chip microcomputer with CMS site support

Статус на проекта: Завършен / Project Status: Completed

[БГ] Както става ясно от заглавието на страницата ако изпълните стъпките описани по-долу като краен резултат ще имате на разположение интернет сървър работещ на едночипов микрокомпютър (аз използвам Odroid C1, това е една от многото конкурентни алтернативи на Raspberry Pi) и ще можете да си администрирате сайта с помощта на CMS. Компонент мениджмънт системата (CMS) е предназначена за лесно създаване на интернет страници – без да се пише програмен код със предназначените за това езици – HTML, PHP, Jawa и т.н. Най-популярната CMS система е WordPress, според разните му там статистки в момента около 80% от сайтовете по света били написани с нея. Аз тук обаче ще използвам WonderCMS като причините за това са следните: безплатна е, поради това че е от така наречените flat type (базата данни се съдържа във файл, а не ползва специализирана система база данни от типа Oracle, MySQL) e лека за изпълнение от хардуера – Odroid C1 не е мощен като персонален компютър и разполага с доста ограничен изчислителен ресурс. За тези от вас които тотално се чувстват объркани от прочетеното по-горе създателите на WonderCMS са предвидили възможността да бъде тествана напълно безплатно и без регистрация на техен сървър. Просто отидете тук и пробвайте каквото ви хрумне за да придобиете представа.

[EN] As the title of the page makes clear, if you follow the steps described below, the end result is that you will have an internet server running on a single-chip microcomputer (I use Odroid C1, it is one of the many competing alternatives to Raspberry Pi) and you will be able to administer your site using a CMS. The component management system (CMS) is designed for easy creation of Internet pages - without writing programming code with the languages intended for this - HTML, PHP, Java, etc. The most popular CMS system is WordPress, according to its various statistics, currently about 80% of the sites in the world were written with it. However, I will use WonderCMS here for the following reasons: it is free, because it is of the so-called flat type (the database is contained in a file, and does not use a specialized database system such as Oracle, MySQL) and is easy to implement from the hardware – the Odroid C1 is not as powerful as a personal computer and has a rather limited computing resource. For those of you who feel totally confused by what you read above, the creators of WonderCMS have provided the possibility to be tested completely free of charge and without registration on their server. Just go here and try whatever comes to your mind to get an idea.


[БГ] Малко предистория. Този едночипов компютър го имам от 2014 година. По това време беше бумът на подобни устройства като виновника за създаването на този пазарен дял беше Raspberry Pi. Odroid C1 беше около два пъти по мощен от Raspberry и се спрягаше като победител в конкурентната битка между двете устройства. Това за радост или за съжаление не се случи поради погрешният избор на операционна система. При сравнение на двата компютъра конфигурирани като десктоп мултимедийни системи Odroid независимо от много по силният си процесор беше определено по бавен от Raspberry. По късно във времето благодарение на общността създадена на сайта Armbian, Odroid също получи своята лека и елегантна операционна система базирана на Debian Linux, но пазарният момент беше изпуснат. Първоначално този Odroid под Ubuntu се трудеше като домашен сървър за всичко – файлов, мултимедиен и принтер. Идеята беше да се ползва от цялото семейство, след около две – три години установих, че го ползвам само аз. Навлизането на стрийминг мултимедиите и облачните услуги казаха своята тежка дума. По това време открих Armbian и инсталирах сървърната му версия за проба, след около 2-3 дена вече беше конфигуриран като интернет сървър и показваше тестовата страница на Apache на целият свят 😊 ……. и така пролежа много години на рафта до рутера(няколко рутера в интерес на истината успяха да издъхнат на този рафт, а Odroid продължава да си работи) – рестартиране само вследствие на инцидентно спиране на електричеството, останалото време онлайн без прекъсване. Та така до момента в който сериозно реших да създам и поддържам този сайт. Като първо се опитах да инсталирам CMS система, понеже бързах и не направих предварително проучване нещо се обърка и трябваше да преинсталирам. Естествено по теория на всеобщата гадост не бях направил имидж на SD картата. Междувременно се оказа, че много от файловите хранилища необходими при инсталацията за осигуряването на допълнителните софтуерни пакети вече не съществуват – тоест възстановяването на конфигурацията от която бях предоволен е много трудно. За мой късмет се оказа, че създателите на Odroid от Hardkernel не са прекратили поддръжката, тоест по скоро Ubuntu не са я прекратили. Та инсталацията на сървърна версия на Ubuntu 18 протича нормално, последващата инсталация на допълнителните пакети също. Също така може би е редно да спомена, че не намирам разлика в скоростта и производителността на сървърните версии на Ubuntu и Debian – за разлика от десктоп версиите където Debian е много напред като лекота и системни изисквания.

[EN] A little background. I have had this single chip computer since 2014. At that time there was a boom in such devices as the culprit for creating this market share was the Raspberry Pi. The Odroid C1 was about twice as powerful as the Raspberry and emerged as the winner in the competitive battle between the two devices. Fortunately or unfortunately, this did not happen due to the wrong choice of operating system. When comparing the two computers configured as desktop multimedia systems, the Odroid, despite its powerful processor, was decidedly slower than the Raspberry. Later in time, thanks to the community created on the Armbian site, Odroid also got its light and elegant operating system based on Debian Linux, but the market moment was missed. Initially, this Odroid under Ubuntu worked as a home server for everything - file, multimedia and printer. The idea was to be used by the whole family, after about two or three years I found that only I was using it. The advent of streaming multimedia and cloud services has had its say. At that time I found Armbian and installed its server version for trial, after about 2-3 days it was already configured as an internet server and showing the Apache test page to the whole world 😊 ……. and so it sat for many years on the shelf next to the router (several routers, in fact, managed to die on this shelf, and Odroid continues to work) - rebooting only due to accidental power outages, the rest of the time online without interruption. Well, until the moment when I seriously decided to create and maintain this site. When I first tried to install a CMS system because I was in a hurry and didn't do my research beforehand something went wrong and I had to reinstall. Naturally, in theory of universal nastiness, I hadn't imaged the SD card. In the meantime, it turned out that many of the file repositories needed during installation to provide the additional software packages no longer exist - so restoring the configuration I was happy with was very difficult. Luckily for me, it turns out that the creators of Odroid from Hardkernel haven't discontinued support, that is, Ubuntu hasn't discontinued it any more recently. So the installation of a server version of Ubuntu 18 proceeds normally, the subsequent installation of additional packages as well. It's also probably worth mentioning that I find no difference in speed and performance between the server versions of Ubuntu and Debian - unlike the desktop versions where Debian is way ahead as lightness and system requirements


[БГ] Увода на статията се получи по дълъг отколкото очаквах. Нека да преминем към същността. Какво ни е необходимо:

  • Едночипов компютър Odroid C1, разбира се може да се ползва и всеки друг компютър на който може да се инсталира Debian (или версия на Linux базирана на Debian) – в нашият случай Ubuntu. За Odroid C1 аз го изтеглих от ТУК.
  • Аксесоари за Odroid: маржов кабел за връзка до рутера, захранващ блок 5V/2A, SD карта – 16GB марка SanDisk клас 10 или по висок. За спецификата на подходящите SD карти можете да прочетете ТУК.
  • Администраторски права върху рутера на който е базирана вашата мрежа. Винаги съм избягвал варианта да ползвам „безплатен“ рутер от доставчика на интернет, уж безплатен, а на практика обикновено се оказва, че „половината“ от него работи за доставчика поддържайки паралелна на вашата мрежа за други потребители. Ама тока за рутера не го плащате петдесет на петдесет с доставчика, и ако го сметнете във годините ще се ужасите какви щедри подаръци правите без да знаете.
  • Статичен IP адрес. Ако сте късметлии то доставчика ви работи по този начин и няма нужда да правите нищо. В другият случай той може да осигури статичен IP адрес безплатно или срещу минимална такса. Ако ви иска ежемесечно заплащане просто сравнете цената с цената на облачно базиран интернет сървър под наем и си преценете изгодният вариант. Какъв тип ви е IP адреса, статичен или динамичен може да разберете на интернет страницата на доставчика ви, или като се обадите и попитате на телефона за поддръжка на същият този доставчик, или простo като отидете на място в офис и попитате.
  • Windows компютър от който ще инсталираме и администрираме нашият сървър. Може да се ползва и Linux или Android или Apple устройство, но ще трябва сами да си намерите еквивалентни на командите или програмите които ще упомена в следващите две подточки. Четец за SD карти – (вграден или външен) към устройството
  • Терминална програма. Аз ползвам PuTTY. Напълно безплатна и е просто един файл който не изисква инсталация.
  • Програма за запис на образи на операционна система върху SD карта. Препоръчваната е  Balena etcher.
Как изглежда моят компютър Odroid, със свален и поставен капак на защитната кутия напечатана на 3D принтер може да се види на снимките.

    

[EN] The introduction to the article turned out to be longer than I expected. Let's get to the point. What we need:
  • Odroid C1 single-chip computer can of course also be used on any other computer that can install Debian (or a Debian-based version of Linux) – in our case Ubuntu. For Odroid C1 I downloaded it from HERE.
  • Accessories for Odroid: margin cable to connect to the router, power supply unit 5V/2A, SD card - 16GB SanDisk brand class 10 or higher. You can read about the specifics of suitable SD cards HERE.
  • Administrative rights to the router on which your network is based. I have always avoided the option of using a "free" router from the ISP, supposedly free, but in practice it usually turns out that "half" of it works for the ISP keeping your network parallel for other users. But you don't pay fifty-fifty with the supplier for the current for the router, and if you count it over the years, you'll be horrified at what kind of generous gifts you're giving without knowing it.
  • Static IP address. If you're lucky, your provider works this way and you don't need to do anything. In the other case, it can provide a static IP address for free or for a minimal fee. If you want a monthly payment, just compare the price with the price of a cloud-based internet server for rent and decide which is the best option for you. You can find out what type of IP address you have, static or dynamic, on your provider's website, or by calling and asking on the support phone of that same provider, or simply by going to an office location and asking.
  • A Windows computer from which we will install and administer our server. A Linux or Android or Apple device can also be used, but you will have to find yourself equivalent to the commands or programs that I will mention in the next two subsections. SD card reader – (built-in or external) to the device
  • Terminal program. I use PuTTY. Totally free and just one file that doesn't require installation.
  • A program for recording images of an operating system on an SD card. The Balena etcher is recommended.
What my Odroid PC looks like with the 3D printed protective case cover removed and in place can be seen in the pictures.

Настройка на рутера / Router setup

[БГ] Важно! Прави се от компютър който е свързан във мрежата която обслужва рутера.

Минимални обяснения за типичната топология и адресация на една домашна мрежа. На максимално елементарен език, за да не ви изплаша, но все пак да добиете представа какво вършите. В началото на всичко са MAC адресите, от тях започва инициализацията на всяка мрежа, всяко мрежово устройство получава един или няколко такива при „раждането“ си. Уникални са и има организация която ги разпределя между производителите срещу съответните такси. Домашният рутер е главният свързващ център на мрежата има най малко един глобален порт – той го свързва към глобалната мрежа, за връзка с домашните устройства има няколко вътрешни порта и WIFI. Съществуват и рутери без вътрешни портове, само със WIFI за вътрешната мрежа, надявам се че вашият не е такъв защото на нас ще ни е необходим поне един свободен вътрешен порт на който ще свържем нашето устройство. Ако все пак нямате възможност да го свържете с кабел, то тогава ще трябва да използвате WIFI мрежова карта, тя вероятно ще е USB и ще трябва да инсталирате съответните драйвери за да заработи – тук няма да се впускаме в подробностите на този процес защото зависи от модела на безжичната карта, а и като скорост на пропускане на данните, сигурност, надеждност и енергийна ефективност отстъпва на кабелният вариант. На база на MAC адресите се назначават IP адреси, в процеса на настройки се използват те. Съвсем приблизителна аналогия – MAC адресите са телефонните номера от списъка с контакти на вашият телефон, а IP адресите са имена от този списък – на всеки номер съответства име. В зората на интернет за да не става объркване при достъпване на интернет ресурс по IP е прието адресите за вътрешните мрежи да бъдат в обхватите: От 10.0.0.0 до 10.255.255.255, от 172.16.0.0 до 172.31.255.255 и от 192.168.0.0 до 192.168.255.255.

Както вече споменах за да извършите това трябва да разполагате с „ администраторски “права над рутера т.е. да знаете паролата му и евентуално името на администраторският акаунт ако моделът му го изисква. Във полето за адреси на браузъра пишем 192.168.31.1 (това е вътрешният адрес на рутера и той е вероятно да бъде друг при вас), отваря се страницата за влизане в администраторският акаунт.  Ако не знаем вътрешният адрес постъпваме по следният начин:

В полето за търсене на Windows (лупа която се намира в Taskbar) пишем „cmd“ и Windows любезно ни предлага да отворим приложението “Command Prompt”, стартираме го и в него пишем магическата команда “ipconfig”, получаваме резултат като на приложената картинка, това което е оградено в червено е адреса на рутера

[EN] Important! It is done from a computer that is connected to the network that serves the router.

Minimal explanations of the typical topology and addressing of a home network. In as basic language as possible, so as not to scare you, but still give you an idea of what you are doing. At the beginning of everything are the MAC addresses, from them the initialization of every network begins, every network device receives one or several of them at its "birth". They are unique and there is an organization that distributes them among the producers for the corresponding fees. The home router is the main connecting center of the network, it has at least one global port - it connects it to the global network, for connection with home devices it has several internal ports and WIFI. There are also routers without internal ports, only with WIFI for the internal network, I hope yours is not like that because we will need at least one free internal port to which we will connect our device. If you still don't have the option to connect it with a cable then you will need to use a WIFI network card, it will probably be USB and you will need to install the relevant drivers to make it work - we won't go into the details of this process here because it depends on the model of the wireless card, and in terms of data transmission speed, security, reliability and energy efficiency it is inferior to the wired version. Based on the MAC addresses, IP addresses are assigned, they are used in the settings process. A very rough analogy - MAC addresses are the phone numbers from your phone's contact list, and IP addresses are names from that list - each number has a name. At the dawn of the Internet, in order to avoid confusion when accessing an Internet resource by IP, it was accepted that the addresses for internal networks should be in the ranges: From 10.0.0.0 to 10.255.255.255, from 172.16.0.0 to 172.31.255.255 and from 192.168.0.0 to 192.168.255.255.

As I already mentioned, in order to do this, you must have "administrator" rights over the router, i.e. know its password and possibly the administrator account name if its model requires it. In the address field of the browser, we write 192.168.31.1 (this is the internal address of the router, and it is likely to be different for you), the page for entering the administrator account opens. If we do not know the internal address, proceed as follows:

 In the Windows search field (a magnifying glass located in the Taskbar) we write "cmd" and Windows kindly offers us to open the "Command Prompt" application, we start it and in it we write the magic command "ipconfig", we get a result like the attached picture , what is circled in red is the router address

[БГ] Поради многообразието в интерфейсите за настройка на рутерите просто ще маркирам това което трябва да настроите, няма как да се опише за всички съществуващи или които ще съществуват.

[EN] Due to the diversity in routers' setup interfaces, I will just mark what you need to set up, there is no way to describe all that exist or will exist.

  • [БГ] Осигуряваме си зона където адресите от вътрешната мрежа са извън автоматично раздаваните от рутера адреси. Бутона DHCP е включен, това означава че рутера назначава автоматично адреси за мрежата която обслужва – все пак едва ли искаме на всяко ново устройство което присъединим в мрежата да му задаваме адрес, пък и не съм убеден че интелигентните хладилници и прахосмукачки го имат в настройките си 😊. Обхвата на тези автоматично назначени адреси е от 192.168.31.5 до 192.168.31.254 (аз съм си преценил така, а вие преценете според нуждите си, тоест от това колко устройства със статични IP адреси ще имате нужда в бъдеще). Рутера както установихме по горе е на адрес 192.168.31.1. Така за нас остават свободни за статични адреси от 192.168.31.2 до 192.168.31.4, или казано с други думи три устройства със статични адреси могат да се подвизават безконфликтно в нашата мрежа.

 

  • [EN] We provide a zone where the addresses from the internal network are outside the addresses automatically distributed by the router. The DHCP button is on, this means that the router automatically assigns addresses for the network it serves - after all, we hardly want to assign an address to every new device we connect to the network, and I'm not convinced that smart refrigerators and vacuum cleaners have it in their settings 😊. The range of these auto-assigned addresses is 192.168.31.5 to 192.168.31.254 (I guessed that, and you guessed it based on your needs, that is, how many devices with static IP addresses you'll need in the future). As we established above, the router is at the address 192.168.31.1.This leaves us free for static addresses from 192.168.31.2 to 192.168.31.4, or in other words three devices with static addresses can roam our network conflict-free.


  • [БГ] Намираме в настройките на рутера къде се намира демилитаризираната зона (DMZ), включваме я и примерно задаваме адрес 192.168.31.2 (при вас по ваша преценка, но в зоната на статичните адреси). Този адрес е прозрачен за външният свят или иначе казано всяка външна заявказа свързване към вашата мрежа ще се насочва към този адрес от вътрешната мрежа. Спокойно за сега на този адрес няма нищо и съответно злонамерените хора няма да намерят нищо. Тук умишлено избягвам варианта със настройка на защитната стена на рутерите, много и различни са, а DMZ има във всеки рутер (слава на геймърите заради които на времето я измислиха тази опция 😊 )

  • [EN] We find in the router settings where the demilitarized zone (DMZ) is located, turn it on and, for example, set the address 192.168.31.2 (at your discretion, but in the zone of static addresses). This address is transparent to the outside world, in other words any external connection request to your network will be directed to this address from the internal network. Don't worry, there's nothing at this address for now, so malicious people won't find anything. Here I am deliberately avoiding the option of setting up the firewall on the routers, they are many and different, and DMZ is in every router (glory to the gamers who invented this option at the time 😊)

[БГ] С това настройката на рутера приключва, запазваме това което сме променили (ако моделът на рутера го изисква и не става автоматично при всяка промяна) и го рестартираме.

[EN] This completes the router setup, we save what we have changed (if the router model requires it and it does not happen automatically with each change) and restart it.

Регистрация на името на сайта / Site name registration

[БГ] Сега е момента да регистрираме името на нашият сайт. В зората на интернет достъпът до ресурси (разбирай сайтове) се е осъществявал по IP адреси, с нарастването на обема им е станало доста неудобно за потребителите да помнят поредици от числа и тогава са се появили домейните. Това разбира се е изключително опростено описание за DNS (domain name services), но за нашите цели по точно и подробно не ни е необходимо. Доставчика на DNS услуги отговаря за това да поддържа таблици на съответствие в такъв вид, че когато потребителя в полето за адреси на браузъра въведе примерно www.google.com то да получи един от IP адресите на сървърите на google, а когато напише www.stm32dds.tk да получи адреса на този сайт. Доставчика на DNS не е един, те са много и някои от тях са безплатни. Това е и една от причините да избера име в www.*.tk областта. В интернет търсачка пишем примерно „Free Domain Name Registrar“ и си избираме домейн регистратор. Разбира се ще трябва да си направим регистрация на съответният сайт – на DNS доставчика му е необходимо да знае, че сме реален човек и при евентуални претенции от трети страни към съдържанието на нашият сайт на кой мейл адрес да ни уведоми. Проверяваме на страницата на доставчика на DNS дали името на сайта което искаме е свободно, например ако искате да регистрирате сайт с име stm32dds.tk няма да стане, защото името вече е заето от мен 😊. След което намираме къде в акаунта ни се въвежда регистровият запис т.е. съответствието на избраното от нас име със СТАТИЧНИЯТ IP адрес за който още в началото споменах, че е необходимо да разполагате. Моят регистров запис изглежда ето така (ако сте разбрали написаното от мен до тук вероятно сте наясно че вместо да пишете www.stm32dds.tk в адреса на браузъра е достатъчно да напишете 158.58.199.245 )

[EN] Now is the time to register the name of our site. At the dawn of the Internet, access to resources (read sites) was done by IP addresses, as their volume grew, it became quite inconvenient for users to remember sequences of numbers, and then domains appeared. This is of course an extremely simplified description of DNS (domain name services), but for our purposes we do not need it in detail. The DNS service provider is responsible for maintaining correspondence tables in such a way that when the user in the address field of the browser enters for example www.google.com it receives one of the IP addresses of the google servers, and when it writes www.stm32dds .tk to get the address of this site. There is not one DNS provider, there are many, and some of them are free. This is also one of the reasons I chose a name in the www.*.tk domain. For example, type "Free Domain Name Registrar" in an internet search engine and choose a domain registrar. Of course, we will have to register on the relevant site - the DNS provider needs to know that we are a real person and, in the event of third-party claims to the content of our site, at which email address to notify us. We check on the DNS provider's page if the site name we want is free, for example if you want to register a site with the name stm32dds.tk it won't work because the name is already taken by me 😊. After that, we find where the registry entry is entered in our account, i.e. the correspondence of the name we chose with the STATIC IP address that I mentioned at the beginning that you need to have. My registry entry looks like this (if you have understood what I have written up to this point, you are probably aware that instead of writing www.stm32dds.tk in the browser address, it is enough to write 158.58.199.245 )

[БГ] След регистрирането обичайно отнема от няколко часа до няколко дни доставчиците на DNS да обновят и синхронизират таблиците на съответствие на IP адрес към име на сайта. През това време можем спокойно да продължим с инсталацията на нашият сървър до последната стъпка в която осигуряваме криптирана връзка към нашият сайт.

[EN] After registration, it usually takes a few hours to a few days for DNS providers to update and synchronize the IP address to site name mapping tables. During this time, we can safely continue with the installation of our server until the last step in which we provide an encrypted connection to our site.

Инсталиране на операционната система върху SD картата / Install the operating system on the SD card

[БГ] Ако сте следвали инструкциите в началото на тази страница то вече разполагате с SD карта, четец за нея и сте си свалили Ubuntu Minimal 18.04.3 Image и Balena etcher. Слагаме картата в четеца и го свързваме към USB порт на компютъра. Стартираме програмата Balena, интерфейса и е изключително опростен избираме имидж, задаваме цел където да се създаде този имидж (в нашият случай SD картата), стартираме с бутона “Flash” и чакаме да се появи следният екран.


[EN] If you followed the instructions at the beginning of this page, you already have an SD card, a reader for it, and you have downloaded Ubuntu Minimal 18.04.3 Image and Balena etcher. We put the card in the reader and connect it to a USB port on the computer. We start the Balena program, the interface is extremely simple, we choose an image, we set a target where to create this image (in our case the SD card), we start with the "Flash" button and wait for the following screen to appear.

[БГ] Поставяме картата памет в съответният слот на микрокомпютъра, свързваме го към някой от портовете за вътрешна мрежа на рутера и му подаваме захранване. Светва червен светодиод, след него син. Изчакваме синият светодиод да започне да мига, това е индикация че вашият Odroid е заредил операционна система и я изпълнява. Убеждаваме се, че жълтият светодиод на мрежовият порт на микрокомпютъра свети – това е индикация, че е свързан с рутера. Забележка: Ако ползвате нещо различно от Odroid C1 светодиодната индикация може да бъде различна.

[EN] We insert the memory card into the corresponding slot of the microcomputer, connect it to one of the internal network ports of the router and supply it with power. A red LED lights up, followed by a blue one. We are waiting for the blue LED to start flashing, this is an indication that your Odroid has loaded an operating system and is running it. Make sure that the yellow LED on the network port of the microcomputer is lit - this is an indication that it is connected to the router. Note: If you are using something other than Odroid C1 the LED indication may be different.

Първо свързване с терминална програма за администриране / First connection to an administration terminal program

[БГ] Отваряме отново страницата за администриране на рутера. Намираме раздела за присъединените устройства и разбираме IP адреса на нашето устройство. При мен това изглежда така.

[EN] We open the router administration page again. We find the tab about the connected devices and find out the IP address of our device. It looks like this to me.

[БГ] Стартираме програмата PuTTY и в стартовият и екран въвеждаме IP адреса на нашето устройство, другите настройки за сесията са както е показано на картинката, натискаме бутона OPEN.

[EN] We start the PuTTY program and in the start screen we enter the IP address of our device, the other settings for the session are as shown in the picture, we press the OPEN button.

[БГ] Появява се екран който ни приканва да въведем потребителско име а след това парола, по подразбиране това са root/odroid . Ето така изглежда началото на първата сесия за администриране.

[EN] A screen appears asking us to enter a username and then a password, by default these are root/odroid . This is what the start of the first administration session looks like.

[БГ] Създаваме си нова парола със следната командата и я записваме някъде - паролата трябва да е нелесна за налучкване:

passwd

[EN] We create a new password with the following command and save it somewhere - the password must be difficult to guess:


[БГ] Следващата команда която въвеждаме е:

apt update

[EN] The next command we enter is:

[БГ] С нея намираме обновените пакети които са свързани със сигурността на Linux. Ако при изпълнението и възникнат въпроси обичайно им отговаряме със <Y>, <Enter> както е показано на картинката:


[EN] With it we find the updated packages that are related to Linux security. If questions arise during the implementation, we usually answer them with <Y>, <Enter> as shown in the picture:

[БГ] Със следващата команда инсталираме тези обновени пакети и съответно отново при въпроси отговаряме със Y.

apt upgrade

[EN] With the following command, we install these updated packages and, accordingly, again answer with Y to questions.

[БГ] За да довършим тази стъпка остана да рестартираме устройството за да могат обновените пакети да функционират правилно. По принцип се твърди, че за Linux системите това не е необходимо ама по спомени понякога създава проблем. Изпълняваме следната команда.

shutdown -r now

[EN] To complete this step, we have to restart the device so that the updated packages can function properly. In principle, it is said that for Linux systems this is not necessary, but from memory it sometimes creates a problem. We run the following command.

[БГ] При последващи свързвания след рестартиране на системата не забравяме, че докато не и зададем статичен вътрешен IP адрес на системата е възможно рутера да и зададе друг адрес. Кой е текущият адрес разбираме по описаният по горе на начин – от страницата на рутера. На последващ етап когато конфигурираме статичен вътрешен адрес това ще отпадне.

[EN] For subsequent connections after restarting the system, do not forget that until we assign a static internal IP address to the system, it is possible for the router to assign another address. We find out what the current address is in the way described above - from the router's page. At a later stage when we configure a static internal address this will be dropped.

Инсталиране и настройка на защитна стена / Installing and configuring a firewall

[БГ] Отначало малко отклонение за функциите на защитната стена. Необходимо е да защитим нашият сървър от злонамерено вмешателство. Това става като ограничим възможностите за връзка към него само до основните необходими за функционалността му. Ограничаваме две неща протоколите които подържа и портовете на които може да се установи връзка с тези протоколи.

[EN] At first a small digression about the functions of the firewall. It is necessary to protect our server from malicious interference. This is done by limiting the possibilities of connection to it only to the basic ones necessary for its functionality. We limit two things the protocols it supports and the ports on which a connection to those protocols can be established.

[БГ] Свързваме се през терминала с нашата нова парола като потребител root и изпълняване командата:

apt install python-ufw

[EN] We connect through the terminal with our new password as user root and execute the command:

[БГ] Сега след като сме инсталирали python пакетите необходими за работата на защитната стена, инсталираме и самата нея с командата:

apt install ufw

[EN] Now that we have installed the python packages necessary for the firewall to work, we install the firewall itself with the command:

[БГ] Със следните две команди настройваме ufw да не приема никакви входящи пакети и да изпраща всички изходящи пакети (това са само настройки, те все още не действат докато не ги стартираме със определената за това команда)

ufw default deny incoming

ufw default allow outgoing

[EN] With the following two commands we set ufw to accept no incoming packets and send all outgoing packets (these are just settings, they don't take effect yet until we run them with the specified command)

[БГ]  Следната команда създава правило за защитната стена позволяващо да осъществяваме SSH връзки от вътрешни устройства на нашата мрежа. Тоест ни позволява да се свързваме с програмата PuTTY и за в бъдеще към нашият сървър. Тук 192.168.31.0 заменяте със мрежовата маска актуална за вашата мрежа – ако понятието мрежова маска ви е неясно погледнете описанието за мрежовите адреси в началото на статията „/24“ означава, че позволяваме свързване от адреси 192.168.31.0 до 192.168.31.255. Ако все пак много държим да администрираме нашият сървър и от външни мрежи вместо тази команда пишем – ufw allow ssh. Защо се лишаваме от удобството да си администрираме сървъра дистанционно, ами защото макар и безкрайно малка съществува възможност за налучкване на паролата за администраторският акаунт. Това въобще не ни ограничава в редактиране и създаване на съдържание на самият сайт който се поддържа от този сървър. На практика това можем да върши от всяка точка по света където разполагаме с интернет.

ufw allow from 192.168.31.0/24 to any port 22

[EN] The following command creates a firewall rule allowing SSH connections from internal devices on our network. That is, it allows us to connect with the PuTTY program and in the future to our server. Here you replace 192.168.31.0 with the network mask current for your network - if the concept of network mask is unclear to you, look at the description of network addresses at the beginning of the article "/24" means that we allow connection from addresses 192.168.31.0 to 192.168.31.255. If we really want to administer our server and from external networks, instead of this command we write - ufw allow ssh. Why do we deprive ourselves of the convenience of administering our server remotely, but because, although there is an infinitesimal possibility of finding the password for the administrator account. This does not at all limit us in editing and creating content on the site itself, which is supported by this server. In practice, we can do this from anywhere in the world where we have the Internet.

[БГ] Със следващите две команди даваме абсолютна свобода за свързване по протоколите HTTP и HTTPS. Няма нищо странно ако тези съкращения са ви познати, виждали сте ги много пъти в полето за адреси на браузъра си – с тях работи основно интернет 😊

ufw allow http

ufw allow https

[EN] With the next two commands, we give absolute freedom to connect via the HTTP and HTTPS protocols. There is nothing strange if these abbreviations are familiar to you, you have seen them many times in the address field of your browser - the Internet mainly works with them 😊

[БГ] До сега създавахме правилата по които да ни пази защитната стена. Със следващата команда я инструктираме да започне да ги изпълнява.

ufw enable

[EN] Until now, we created the rules for the firewall to protect us. With the next command, we instruct it to start executing them.

[БГ] На екрана се появява следната картинка с предупреждение, че терминалната сесия може да прекъсне. Защитната стена прекъсва терминалната сесия за това се свързваме отново по познатият начин. Може да се наложи по продължително изчакване и рестарт през захранването.

[EN] The following picture appears on the screen with a warning that the terminal session may terminate. The firewall interrupts the terminal session, so we connect again in the familiar way. It may be necessary to wait for a long time and reboot through the power supply.

[БГ] Проверяваме състоянието на защитната стена с командата

ufw status verbose

[EN] We check the state of the firewall with the command

[БГ] Резултата трябва да е като този на картинката:

[EN] The result should be like the one in the picture:

Инсталиране на Apache web сървър с поддръжка на PHP / Installing an Apache web server with PHP support

[БГ] В терминал изпълняваме командата:

apt install apache2

[EN] In a terminal we execute the command:


[БГ] Проверяваме дали сървъра работи, в браузъра въвеждаме IP адреса, трябва да се получи резултат като на картинката:


[EN] We check if the server is working, we enter the IP address in the browser, a result should be obtained as in the picture:


[БГ] Следва инсталиране на пакетите осигуряващи поддръжката на PHP технологията:

apt install php php-mbstring php-curl php-zip

[EN] Following is the installation of the packages providing support for PHP technology:

Изтегляне и инсталиране на WonderCMS / Download and install WonderCMS

[БГ] Обръщаме внимание на версията която се инсталира – PNP7.2, означава че може да поддържа WonderCMS не по висок от 3.3.4. Със следващата команда сваляме от хранилището в GitHUB тази версия.

wget https://github.com/WonderCMS/wondercms/releases/download/3.3.4/wondercms-334.zip

[EN] We pay attention to the version that is installed - PNP7.2, means that it can support WonderCMS no higher than 3.3.4. With the following command, we download this version from the GitHUB repository.


[БГ] Това е архив, и за да го ползваме трябва да имаме програма за разархивиране:

apt install zip

[EN] This is an archive, and to use it we must have an unzipping program:


[БГ] Изпълнявайки последващата команда разархивираме WonderCMS в директория /var/www/html/

unzip wondercms-334.zip -d /var/www/html/

[EN] By executing the following command, we unzip WonderCMS in the directory /var/www/html/


[БГ] Стартираме редактора nano с който създаваме конфигурационен файл за WonderCMS

nano /etc/apache2/sites-available/wondercms.conf

[EN] We start the nano editor with which we create a configuration file for WonderCMS


[БГ] Редактора се отваря в терминалният прозорец. Въвеждаме:

<VirtualHost *:80>

            ServerAdmin webmaster@localhost

        ServerName wondercms.example.com

 

            DocumentRoot /var/www/html/wondercms

 

        Redirect /wondercms/loginURL /loginURL

 

        <Directory /var/www/html/wondercms/>

             Options FollowSymlinks

             AllowOverride All

             Require all granted

        </Directory>

 

            ErrorLog ${APACHE_LOG_DIR}/wondercms-error.log

            CustomLog ${APACHE_LOG_DIR}/wondercms-access.log combined

</VirtualHost>

[EN] The editor opens in the terminal window. We type the text:


[БГ] За име на сървъра си пишем нашият домейн. С клавишните комбинации  <Ctrl+O>, <Enter>, <Ctrl+X>,<Enter>: Запазваме файла и излизаме от редактора. 

[EN] For the name of the server we write our domain. With the keyboard shortcuts <Ctrl+O>, <Enter>, <Ctrl+X>,<Enter>: Save the file and exit the editor


[БГ] Следва разрешаването за Apache да показва на посетителите на нашият сайт това което ще създадем като съдържание в последствие с WonderCMS:

a2ensite wondercms.conf

[EN] Next is enabling Apache to show our site visitors what we will create as content later with WonderCMS


[БГ] ………. и забраняването на сайта по подразбиране (този който видяхме по горе в браузъра като тестов)

a2dissite 000-default.conf

[EN] ………. and disabling the default site (the one we saw above in the browser as a test)


[БГ] С последните две команди записваме новата конфигурация на Apache и рестартирането му за да я направим активна

a2enmod rewrite

systemctl restart apache2

[EN] With the last two commands we save the new Apache configuration and restart it to make it active


[БГ] Ако всичко до тук е изпълнено правилно при въвеждане в браузъра на вътрешният IP адрес на Odroid би трябвало да се отвори стартовата страница на WonderCMS. Влизаме на току що стартираният сайт и променяме паролата и тайната страница за влизане като администратор. За момента сме в безопасност зад рутера, той все още ни дава динамичен адрес който е извън демилитаризираната зона.

[EN] If everything up to this point has been done correctly, when entering the Odroid's internal IP address in the browser, the start page of WonderCMS should open. We enter the newly launched site and change the password and the secret page for logging in as an administrator. For now we are safe behind the router, it still gives us a dynamic address that is outside the demilitarized zone.


[БГ] Забележка: Ако WonderCMS не заработи най често това се дължи на групата и правата които са делегирани за файловете. Със следната команда можем да променим това:

chown -R www-data:www-data /var/www/html/wondercms

[EN] Note: If WonderCMS does not work most often it is due to the group and rights delegated to the files. With the following command we can change this:


[БГ] Ако и това не помогне задействаме тежката артилерия:

cd /var/www/html
chown -R www-data:www-data
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

[EN] If that doesn't help either, we activate the heavy artillery:

Активиране на статичен IP адрес / Enable static IP address

[БГ]  Отново използваме редактора nano за да създадем конфигурационен файл за статичен IP адрес :

nano /etc/netplan/01-network-manager-all.yaml

[EN] Again we use the nano editor to create a configuration file for a static IP address:

[БГ]  Въвеждаме: 

network:

  version: 2

  renderer: networkd

  ethernets:

    eth0:

      dhcp4: no

      addresses: [192.168.31.2/24]

      gateway4: 192.168.31.1

      nameservers:

        addresses: [8.8.8.8,8.8.8.4]

[EN] We type:

[БГ]  Внимаваме за интервалите при въвеждане на файла, запазваме с  <Ctrl+O>, <Enter>, <Ctrl+X>. 192.168.31.2/24 е адреса на моята DMZ, вие приложете вашият, този който сте решили да ползвате след като сте прочели и разбрали принципа на мрежовите маски в началото на статията.

[EN] Pay attention to the spaces when entering the file, save with <Ctrl+O>, <Enter>, <Ctrl+X>. 192.168.31.2/24 is the address of my DMZ, you apply yours, the one you decided to use after you read and understood the principle of netmasks at the beginning of the article.


[БГ]  Със следващата команда тестваме дали сме успели правилно да създадем конфигурационният файл, ако имаме грешка изчакваме да се възстанови динамичният адрес и с редактора nano и повторението на предишната команда отстраняваме грешката

netplan try

[EN] With the next command we test whether we were able to create the configuration file correctly, if we have an error we wait for the dynamic address to be restored and with the nano editor and the repetition of the previous command we fix the error


[БГ]  Ако всичко като синтаксис в конфигурационният файл е наред е време да го приложим с командата, след нейното изпълнение вече сме на статичният адрес към който е насочена DMZ зоната.

netplan apply

[EN] If everything as syntax in the configuration file is OK, it's time to apply it with the command, after its execution we are already at the static address to which the DMZ zone is directed.


[БГ] Може да се наложи да изчакате няколко минути или да рестартирате рутера и / или Odroid за активиране на настройките. Сега вече вашият сървър е видим от външният свят и е плячка за всеки  с недобри намерения и лоши помисли. Спокойно, ако си спомняте първото нещо което направихме след инсталацията на операционната система и обновяването и беше инсталирането и конфигурирането на защитна стена. Зад нея можем да се чувстваме съвсем спокойни. Единственото нещо което не трябва да правим на този етап е да влизаме да администрираме WonderCMS. Не само да не си въвеждаме паролата, а даже и да не си помисляме да отворим страницата на която се въвежда тази парола.

[EN] You may need to wait a few minutes or restart the router and / or Odroid to activate the settings. Now your server is visible to the outside world and prey for anyone with bad intentions and bad thoughts. Relax, if you remember the first thing we did after the OS installation and upgrade was to install and configure a firewall. Behind her we can feel completely at ease. The only thing we don't need to do at this stage is log in to administer WonderCMS. Not only do we not enter the password, but we don't even think to open the page where this password is entered.

Активиране на криптирани връзки към сайта с Certbot / Enable encrypted site links with Certbot

[БГ] Сега трябва търпеливо да изчакаме докато регистрацията на домейна която направихме в началните стъпки стане активна. Тоест докато стане възможно да виждаме нашият сайт от външно на нашата мрежа устройство въвеждайки DNS адреса. Криптирана връзка към нашият сайт ни е необходима по следните причини:

  • Когато се свързваме през тайната страница за да го администрираме ако връзката е не криптирана могат да видят паролата за администриране на нашият сайт.
  • Естествено можем да администрираме сайта само от вътрешната мрежа, така като правим със сървъра, но тогава ресурсите които присъединяваме получават адреса на вътрешната мрежа, тоест хубавите картинки и други неща ще са невидими за външни заявки към тях.

По рано всичко това се правеше на ръка, така както процедирахме досега – със въвеждане на терминални команди. За щастие сега процеса е полу-автоматизиран със пакетът CERBOT.

Отиваме на следният сайт: https://www.cloudsigma.com/securing-apache-with-lets-encrypt-on-ubuntu-18-04/

Изпълняваме постъпково инструкциите като:

  • Стъпка две я пропускаме или само проверяваме дали всичко във файла, който създадохме и активирахме - wondrcms.conf е правилно
  • Стъпка три я пропускаме – вече сме си настроили защитната стена
  • На стъпка четири избираме опция две – целият трафик да е криптиран
  • Командите ги набираме без sudo. Така или иначе през цялото време сме root, по суперпотребител от това няма накъде 😊
[EN] Now we have to wait patiently until the domain registration we made in the initial steps becomes active. That is, until it becomes possible to see our site from a device external to our network by entering the DNS address. We need an encrypted connection to our site for the following reasons:
  • When we connect through the secret page to administer it if the connection is not encrypted they can see the password to administer our site.
  • Naturally, we can administer the site only from the internal network, as we do with the server, but then the resources we connect receive the address of the internal network, that is, the nice pictures and other things will be invisible to external requests to them.

Earlier, all this was done by hand, as we have done so far - by entering terminal commands. Fortunately, the process is now semi-automated with the CERBOT package.

We go to the following site: https://www.cloudsigma.com/securing-apache-with-lets-encrypt-on-ubuntu-18-04/

We carry out the instructions step by step as:

  • Step two we skip it or just check if everything in the file we created and activated - wondrcms.conf is correct
  • We skip step three – we've already set up our firewall
  • On step four, we choose option two – all traffic is encrypted
  • We type the commands without sudo. Anyway, we are root all the time, there is no way to be a superuser more than this😊

Поздравления! Ако ви е стигнало търпението да прочетете всичко до тук, а също така и да го направите то вече разполагате с възможността да създавате и поддържате собствен достатъчно атрактивен сайт без да си имате каквото и да е понятие от интернет програмиране. Пожелавам ви много положителни емоции в това начинание 😊

Congratulations! If you had the patience to read all this far, and also do so, you now have the ability to create and maintain your own sufficiently attractive site without having any concept of Internet programming. I wish you many positive emotions in this endeavor 😊

[БГ] Този сайт не използва бисквитки или каквито и да било други проследяващи технологии. Създаден е изцяло с нетърговска цел и естествено не използва и няма да използва реклами под каквато и да e форма. Може да използвате публикуваната тук информация както счетете за необходимо като автора не носи отговорност за настъпили щети или увреждания към вас или трети страни. 

[EN] This site does not use cookies or any other tracking technology. It was created entirely for non-commercial purposes and naturally does not and will not use advertisements in any form. You may use the information published here as you see fit and the author is not responsible for any damage or injury to you or third parties.