What is an Operating System (OS)?
An operating system is the core software that acts as the brain of a computer. To explain what an
operating system does in simple terms, when you click a mouse or press a keyboard key, it receives those
signals and passes them to the appropriate program, and enables programs to display results on the
screen. It also efficiently allocates memory and storage space and allows multiple programs to run
simultaneously.
Just as smartphones have Android or iOS, computers also have operating systems like Windows, macOS, and
Linux. You cannot use a computer without an operating system, and different operating systems have
slightly different usage methods. The operating system is the first thing that runs when you turn on a
computer, and all other programs run on top of the operating system.
What is Linux?
Linux is a free operating system created collaboratively by developers around the world. It was first
started in 1991 by Linus Torvalds, a Finnish university student, and now countless people participate in
its development.
While Windows is a product made and sold by one company called Microsoft, Linux can be used by anyone
for free, and even its internal structure is publicly available. This is like the difference between a
recipe that's public and a dish made with a secret recipe.
While Windows focused on graphical interfaces for easy user experience, Linux has strengths in
stability, security, and user-customizable settings. In Windows, most tasks are done with mouse clicks,
but in Linux, text commands are often entered directly.
Linux is particularly popular for server computers. Most websites on the internet run on Linux servers,
and Android smartphones are actually based on Linux. Developers and system administrators prefer Linux
because of its powerful features, high stability, and being free.
GUI vs CLI - Computer Usage Methods
GUI and CLI are two different ways of communicating with computers.
GUI stands for Graphical User Interface, which is the screen we normally see when using computers. It's
the method of clicking icons with a mouse, opening and closing windows, and selecting menus. Windows
desktop and Mac's Finder are typical examples of GUI. It's intuitive and easy to learn, so even computer
beginners can use it easily.
CLI stands for Command Line Interface, which is a way of communicating with computers by directly
entering text commands. You might have seen in movies the appearance of typing commands in white text on
a black screen. While it may seem difficult at first, once you get used to it, you can work very quickly
and accurately.
The advantages of CLI are speed and accuracy. Tasks that require multiple mouse clicks can be completed
with a single line of command, and when repeating the same task, you can easily execute it by copying
commands. Also, CLI is much more efficient when managing other computers remotely.
Linux supports both GUI and CLI, so you can choose the interface you need.
The Concept of Open Source and Free Software
Open source means making the source code, which is the blueprint of software, publicly available for
anyone to see. It's like publishing a cooking recipe for everyone. Anyone can look at this recipe and
make the dish, and they can also improve the recipe to make it tastier.
Traditional software is a product made and sold by companies. The source code is a corporate secret, and
users only purchase and use the finished program. However, open source software has publicly available
source code, so anyone can check its internal structure and modify or improve it as needed.
Free software is similar to open source but is a more philosophical concept. It emphasizes the user's
right to freely use, copy, modify, and distribute software. Here, "free" doesn't mean cost-free, but
rather the freedom to use.
Linux is a representative example of both open source and free software. Countless developers around the
world voluntarily participate in its development, and anyone can use it for free. Thanks to this
collaborative development approach, Linux is very stable and secure. Because many people review the
code, bugs and security issues can be quickly discovered and resolved.
Understanding File System Structure
Linux's file system has a tree-like structure like a huge tree. There's a root at the top, and branches
extend from there. This root is called the root directory and is represented by a single slash symbol
(/).
Below the root, there are several important folders. The home folder is each user's personal space. It
plays a similar role to the My Documents folder in Windows. If the username is kim, then /home/kim
becomes that user's personal space. Personal files and settings are stored here.
The etc folder is where system configuration files are gathered. It stores rules about how the computer
should operate. It's like the management office of a building. Important system information like network
settings, user information, and program configurations are stored here.
The bin folder contains basic command programs. The actual program files of frequently used commands
like ls, cp, mv are stored here. The usr folder is where user-installed programs go, and the var folder
stores files whose contents change frequently, like log files.
Thanks to this structured system, files can be managed systematically, and it's easy to find where any
file is located. While it may seem complex at first, once you understand the rules, you'll see it's a
very logical and efficient structure.
What is a Package Manager?
A package manager is a tool that installs and manages software. It plays a similar role to an app store
on smartphones. While in Windows you have to download installation files from the internet and run them
to install programs, in Linux, the package manager automatically handles all these processes.
The biggest advantage of package managers is dependency management. To run a program, other programs or
libraries are often needed. For example, to install a music program, you might need audio processing
libraries. The package manager automatically understands these relationships and installs all necessary
components together.
Different Linux distributions use different package managers. Ubuntu and Debian use APT. If you type
"apt install firefox", Firefox browser will be automatically installed. Red Hat and CentOS use YUM or
DNF, and Arch Linux uses Pacman.
Using package managers makes software updates very easy too. You can update all programs on your system
to the latest version with a single command. Also, when removing programs, it cleanly deletes all
related files, keeping the system tidy. Due to this convenience, Linux users greatly prefer package
managers.
What is a Terminal?
A terminal is a gateway where you can communicate with computers through text. That black screen with
white text where you type commands is the terminal. It's like chatting with a computer - when you enter
commands, the computer shows results in text.
The history of terminals is very old. It has been used since the days when computers had no mice or
graphical screens. Back then, terminals were the only way to use computers. Now graphical interfaces
have developed, but terminals remain a very powerful and useful tool.
There are several reasons to use terminals. First, they're fast. Tasks that require multiple mouse
clicks can be completed with a single line of command. Second, they're precise. Running the same command
repeatedly always produces the same result. Third, automation is possible. You can connect multiple
commands to automatically handle complex tasks.
Terminals are particularly important in Linux. Most advanced tasks like system management, program
installation, and file management are done through terminals. While it may seem difficult at first, once
you learn basic commands, you can use computers much more efficiently. It's an essential tool for
developers and system administrators.
Learning Basic CLI Commands
Learning frequently used basic commands in Linux terminals allows you to use computers much more
efficiently. These commands are basic tools for managing files and folders.
The ls command shows a list of files and folders in the current location. It's like opening Windows
Explorer to see files. If you type "ls -l", you can see detailed information about files as well.
The cd command is used to move between folders. If you type "cd Documents", you move to the Documents
folder. "cd .." moves to the parent folder, and typing just "cd" returns you to the user's home folder.
cp is a command for copying files. If you type "cp file1.txt file2.txt", it copies file1.txt and creates
it with the name file2.txt. mv is used to move files or change names. "mv old.txt new.txt" changes the
file name, and "mv file.txt /home/user/" moves the file to another folder.
rm is a command for deleting files. If you type "rm file.txt", that file is deleted. Note that Linux
doesn't have a recycle bin, so deleted files are difficult to recover. mkdir is a command for creating
new folders. If you type "mkdir newfolder", a folder named newfolder is created.
sudo is used to execute commands with administrator privileges. It's needed when modifying system files
or installing programs. It's used by placing it before other commands like "sudo apt install firefox".
Introduction to Text Editors
Text editors are very important tools in Linux. They're used to modify configuration files, write
program code, or create simple notes. There are several text editors that can be used directly in
terminals.
nano is the easiest terminal text editor to use. If you type "nano filename.txt", you can edit that
file. Shortcuts are displayed at the bottom of the screen, so even beginners can use it easily. You can
save and exit by pressing Ctrl+X. nano is most suitable for simple file editing.
vim is a very powerful but difficult-to-learn editor. It's preferred by professional developers and
system administrators. vim's characteristic is that you can do all work with just the keyboard. You can
edit text very quickly without using a mouse at all. However, due to its unique operation method, it
takes time to get used to.
vim has several modes. When first launched, it's in command mode, where you can't directly input text
and can only perform commands like cursor movement or deletion. Pressing i switches to input mode where
you can type text. Pressing ESC returns to command mode.
emacs is also a famous text editor along with vim. It's a bit more intuitive than vim but still
difficult to learn. Each editor has its own unique advantages and characteristics, so you can choose
according to your needs and preferences. If you're a beginner, it's good to start with nano and
gradually learn other editors.
Process Management Methods
A process refers to a currently running program. When multiple programs are running simultaneously on a
computer, each running program is one process. Linux provides various tools to manage and monitor these
processes.
The ps command shows a list of currently running processes. Typing just "ps" shows only processes run in
the current terminal, but typing "ps aux" shows all processes on the system. Each process has a unique
number called PID, and you can check information like who ran it, when it started, and how many
resources it's using.
The top command is a tool that shows process status in real-time. It plays a similar role to Windows'
Task Manager. You can check in real-time which processes are using a lot of CPU or taking up a lot of
memory. You can exit top by pressing q.
htop is a better-looking and easier-to-use version than top. It's color-coded and can be operated with a
mouse, making it more intuitive. However, it's not installed by default and needs to be installed
separately.
The kill command is used to terminate processes. When a program stops responding, you can forcibly
terminate it. You terminate by specifying the process PID like "kill 1234". You can also terminate by
program name like "killall firefox". Using these tools, you can understand system status and safely
terminate problematic programs.
Understanding IP, DNS, and Port Concepts
In the network world, IP, DNS, and ports are core elements of internet communication. Understanding
these helps you understand how the internet works.
An IP address is a unique address that each computer on the internet has. It's like a house address used
when sending mail. It consists of four numbers separated by dots, like 192.168.1.1. All devices
connected to the internet have such IP addresses, allowing them to communicate with each other. The
router you use at home also has an IP address, and your smartphone or laptop each receive unique IP
addresses to use the internet.
DNS is the Domain Name System, a service that converts IP addresses into names that people can easily
remember. Website addresses we normally use like siliod.com or google.com are domain names. Actually,
Google also has a specific IP address, but since it's difficult to remember numerical IP addresses, DNS
converts them to domain names. It's like finding a phone number by name in a phone book.
A port is a number that distinguishes multiple services within one computer. Like a building having
multiple room numbers, a computer with one IP address can also run multiple services simultaneously. Web
servers usually use port 80, and email servers use port 25. When accessing websites, you can specify the
port number like www.example.com:80, but since the web uses port 80 by default, you can omit it.
Common Errors and Solutions
When using Linux, you'll encounter various error messages. While initially confusing, most errors have
several patterns and similar solutions.
One of the most common errors is "Permission denied". This means you don't have permission to access
that file or folder. Linux sets access permissions for each file for security, and this error occurs
when regular users try to modify system files. The solution is to add sudo before the command to run it
with administrator privileges.
The "No such file or directory" error means the specified file or folder doesn't exist. It happens when
you mistype a filename or the file is in a different location. Use the ls command to check files in the
current location and the pwd command to check your current location.
The "Command not found" error means the command you entered doesn't exist or isn't installed. It happens
when you mistype a command name or the program isn't installed. You can solve it by installing the
necessary program using a package manager.
Network-related errors also occur frequently. "Connection refused" means the server you're trying to
connect to isn't responding, and "Network unreachable" means there's a problem with the network
connection itself. In such cases, you need to check your internet connection status and examine firewall
settings.
When errors occur, don't panic and read the error message carefully. Most error messages tell you the
cause of the problem and the direction for solutions. If you search for the error message on Google, you
can find solutions from people who experienced similar problems.
What is a Domain?
A domain is a name created to make internet addresses easy for people to remember. Actually, all
websites have IP addresses made of numbers like 192.168.1.1, but it's very difficult to remember such
numbers. So we use meaningful names like siliod.com and google.com, which are domains.
Domains have a hierarchical structure. Taking www.google.com as an example, com is the top-level domain,
google is the second-level domain, and www is a subdomain. It's similar to the order of country, city,
district, and neighborhood in addresses. Thanks to this hierarchical structure, countless websites
worldwide can be systematically managed.
To use a domain, you need to purchase it from a domain registrar. Domains are rented by paying an annual
fee. Popular domain names can be expensive, and if someone else is already using them, you can't
purchase them. After purchasing a domain, you need to connect it to your actual server's IP address
through DNS settings.
The biggest advantage of domains is that they're easy to remember. You can use meaningful names instead
of numerical IP addresses, which also helps with branding. Also, even if you move your server to another
location, the domain name can remain the same, so users can continue accessing with the same address.
When services like Siliod provide domains for free, it's a huge advantage. Since domains normally cost
from 10,000 to tens of thousands of won annually, it's a valuable benefit that reduces initial cost
burden, especially for individual developers or startups. With free domains, you can more easily start
and operate web projects.
The Need for HTTPS
HTTPS is a technology that protects communication between websites and users by encrypting it. While
traditional HTTP transmits information as-is, allowing someone to intercept it, HTTPS encrypts all
information for secure transmission.
Think about entering credit card information when shopping online. If such important information is
transmitted without encryption, hackers could intercept it and misuse it. HTTPS converts this
information into complex codes for transmission, so even if intercepted, the original content cannot be
known.
Another important role of HTTPS is verifying website identity. Through something called SSL
certificates, you can verify whether this website is truly trustworthy. Most fake bank sites or phishing
sites don't have official certificates, so they either don't use HTTPS or show warning messages in
browsers.
Nowadays, search engines like Google also rate websites using HTTPS higher. HTTPS has become almost
essential to appear at the top of search results. Also, modern browsers display "Not Secure" warnings
when visiting websites that don't use HTTPS.
In the past, purchasing and configuring SSL certificates was complex and expensive. But now there are
free certificate services like Let's Encrypt, so anyone can easily use HTTPS. Services like Siliod
automatically issuing certificates is a really convenient feature. Developers can create secure websites
without going through complex certificate setup processes. Thanks to this automation, more websites use
HTTPS, and overall internet security improves.
What is a Web Server?
A web server is a computer program that provides websites on the internet. Like a librarian, when users
request web pages, it finds and delivers the corresponding files.
When we type an address in a browser and press enter, at that moment we're sending a request to the web
server saying "please show me this page". The web server receives this request, finds the corresponding
HTML files, images, CSS files, etc., and transmits them to our browser. Then the browser receives these
files and creates the web page we see.
There are several types of web servers. The most famous are Apache and Nginx. Apache is an old and
stable web server that provides many features. Nginx is relatively new but popular for its fast speed
and low memory usage. There are also various other web servers like Microsoft's IIS and Google's Tomcat.
What web servers do isn't just delivering files. They verify user authentication, record logs, manage
security, and handle multiple user requests simultaneously. They also execute dynamic web pages written
in programming languages like PHP or Python and deliver the results.
Linux is a very suitable operating system for running web servers. It has excellent stability, strong
security, and can be used for free. Most websites worldwide run on Linux servers. Installing and
managing web servers is also very simple in Linux through package managers. You can install a web server
with just one line: "sudo apt install apache2" and immediately operate a website.
Understanding web servers helps you know how the internet works and how websites are created. Linux and
web servers are core technologies of the modern internet, and learning them allows you to build
foundations for web development and server management.
How to Use Port 443 in Siliod
In Siliod, port 443 is used by default when connecting to instances.Therefore, to use port 443 for HTTPS etc., you need to change the instance connection port to 8443 etc.
Port 443: This is the standard port for HTTPS (HTTP Secure).
It's the port that web browsers use by default for SSL/TLS encrypted connections.
Since it's a system port (1-1023), sudo privileges are required when using it.
How to Modify Instance Connection Port
1.1 For GUI, modify start.sh
Change the port in existing settings to 8443:
Open
/home/ubuntu/.novnc/start.sh
and modify the last option on the last lineExisting setting:
..... --listen 443
Modified setting:
..... --listen 8443
1.2 For CLI, modify Crontab settings
Change the port in existing settings to 8443:
crontab -e
Existing setting:
@reboot sudo /home/ubuntu/.ttyd/build/ttyd --port 443 --ssl .....
Modified setting:
@reboot sudo /home/ubuntu/.ttyd/build/ttyd --port 8443 --ssl .....
2. Open Port in Dashboard
Proceed step by step:
- Select Instance: Click on the corresponding instance to select it
- More Menu at Bottom: Click the "More" button at the bottom of instance details
- Port Settings: Go to Network/Security settings menu
Add TCP 8443 port:
- Protocol: TCP
- Port: 8443
- Source: 0.0.0.0/0 (allow all IPs) or restrict as needed
3. Restart Instance
Once configuration is complete, restart the instance:
- From dashboard:
- Select instance
- Click "Restart Instance" button
- Or from terminal:
sudo reboot
4. Verify Connection
After restart, verify connection by accessing the following URL:
https://{instance-id}.siliod.com:8443
If you want to create an HTTPS server
In Siliod, domains and TLS certificates are automatically generated when creating instances, so you don't need to issue certificates separately.
SSL(TLS) certificate paths:
- Certificate file:
/etc/ssl/certs/{instance-id}.siliod.com.crt
- Private key file:
/etc/ssl/private/{instance-id}.siliod.com.key
Command to verify certificate files:
sudo ls -la /etc/letsencrypt/live/{instance-id}.siliod.com/
I Want to Increase Storage Capacity
1. Add Storage CapacityProceed step by step:
- Select Instance: Click on the corresponding instance to select it
- More Menu at Bottom: Click the "More" button at the bottom of instance details
- Storage Capacity: Increase capacity as desired and click "Add Capacity" button (reducing capacity is not possible)
2. Storage Resizing
In Linux, you cannot immediately use the capacity even if you increase hardware capacity.
First, check existing storage capacity with
df -h
Then enter:
sudo growpart /dev/nvme0n1 1
sudo resize2fs /dev/nvme0n1p1
to resize storage
Then check the changed storage capacity again with
df -h