aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2022-10-22-alpine-linux.org
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2025-11-11 22:49:13 -0600
committerChristian Cleberg <[email protected]>2025-11-11 22:49:13 -0600
commit51a7a02f0c96d49b68fbcc155414c218207fa270 (patch)
tree845af8aad0e8769352efc02fcd1044eed9cc1ec1 /content/blog/2022-10-22-alpine-linux.org
parent7d3e80ebf1dc770eac0e21890b74f18ba2d15a6b (diff)
downloadcleberg.net-51a7a02f0c96d49b68fbcc155414c218207fa270.tar.gz
cleberg.net-51a7a02f0c96d49b68fbcc155414c218207fa270.tar.bz2
cleberg.net-51a7a02f0c96d49b68fbcc155414c218207fa270.zip
fix grammar in 2022 posts
Diffstat (limited to 'content/blog/2022-10-22-alpine-linux.org')
-rw-r--r--content/blog/2022-10-22-alpine-linux.org194
1 files changed, 91 insertions, 103 deletions
diff --git a/content/blog/2022-10-22-alpine-linux.org b/content/blog/2022-10-22-alpine-linux.org
index 743262b..88b0427 100644
--- a/content/blog/2022-10-22-alpine-linux.org
+++ b/content/blog/2022-10-22-alpine-linux.org
@@ -5,43 +5,40 @@
* Alpine Linux
-[[https://alpinelinux.org][Alpine Linux]] is a very small distro, built
-on musl libc and busybox. It uses ash as the default shell, OpenRC as
-the init system, and apk as the package manager. According to their
-website, an Alpine container "requires no more than 8 MB and a minimal
-installation to disk requires around 130 MB of storage." An actual bare
-metal machine is recommended to have 100 MB of RAM and 0-700 MB of
-storage space.
-
-Historically, I've used Ubuntu's minimal installation image as my server
-OS for the last five years. Ubuntu worked well and helped as my original
-server contained an nVidia GPU and no onboard graphics, so quite a few
-distros won't boot or install without a lot of tinkering.
-
-Alpine has given me a huge increase in performance across my Docker apps
-and Nginx websites. CPU load for the new server I'm using to test Alpine
-hovers around 0-5% on average with an Intel(R) Core(TM) i3-6100 CPU @
-3.70GHz.
-
-The only services I haven't moved over to Alpine are Plex Media Server
-and Syncthing, which may increase CPU load quite a bit depending on how
-many streams are running.
+[[https://alpinelinux.org][Alpine Linux]] is a very small distribution, built on musl libc and busybox. It
+uses ash as the default shell, OpenRC as the init system, and apk as the package
+manager. According to their website, an Alpine container "requires no more than
+8 megabytes (MB) and a minimal installation to disk requires around 130 MB of
+storage." An actual bare metal machine is recommended to have 100 MB of RAM and
+0-700 MB of storage space.
+
+Historically, I've used Ubuntu's minimal installation image as my server OS for
+the last five years. Ubuntu worked well and helped as my original server
+contained an nVidia GPU (graphics processing unit) and no onboard graphics, so
+quite a few distributions won't boot or install without a lot of tinkering.
+
+Alpine has given me a huge increase in performance across my Docker apps and
+Nginx websites. CPU (central processing unit) load for the new server I'm using
+to test Alpine hovers around 0-5% on average with an Intel(R) Core(TM) i3-6100
+CPU @ 3.70 Gigahertz (GHz).
+
+The only services I haven't moved over to Alpine are Plex Media Server and
+Syncthing, which may increase CPU load quite a bit depending on how many streams
+are running.
** Installation
-In terms of installation, Alpine has an incredibly useful
-[[https://wiki.alpinelinux.org/wiki/Installation][wiki]] that will guide
-a user throughout the installation and post-installation processes, as
-well as various other articles and guides.
+In terms of installation, Alpine has an incredibly useful [[https://wiki.alpinelinux.org/wiki/Installation][wiki]] that will guide a
+user throughout the installation and post-installation processes, as well as
+various other articles and guides.
-To install Alpine, find an appropriate
-[[https://alpinelinux.org/downloads/][image to download]] and flash it
-to a USB using software such as Rufus or Etcher. I opted to use the
-Standard image for my x86_{64} architecture.
+To install Alpine, find an appropriate [[https://alpinelinux.org/downloads/][image to download]] and flash it to a USB
+(Universal Serial Bus) using software such as Rufus or Etcher. I opted to use
+the Standard image for my x86_{64} architecture.
-Once the USB is ready, plug it into the machine and reboot. Note that
-you may have to use a key such as =Esc= or =F1-12= to access the boot
-menu. The Alpine Linux terminal will load quickly and for a login.
+Once the USB is ready, plug it into the machine and reboot. Note that you may
+have to use a key such as =Esc= or =F1-12= to access the boot menu. The Alpine
+Linux terminal will load quickly and for a login.
To log in to the installation image, use the =root= account; there is no
password. Once logged-in, execute the setup command:
@@ -50,34 +47,32 @@ password. Once logged-in, execute the setup command:
setup-alpine
#+end_src
-The setup script will ask a series of questions to configure the system.
-Be sure to answer carefully or else you may have to re-configure the
-system after boot.
+The setup script will ask a series of questions to configure the system. Be sure
+to answer carefully or else you may have to re-configure the system after boot.
-- Keyboard Layout (Local keyboard language and usage mode, e.g., us and
- variant of us-nodeadkeys.)
-- Hostname (The name for the computer.)
-- Network (For example, automatic IP address discovery with the "DHCP"
- protocol.)
-- DNS Servers (Domain Name Servers to query. For privacy reasons, it is
+- *Keyboard Layout*: Local keyboard language and usage mode, e.g., us and variant
+ of us-nodeadkeys.
+- *Hostname*: The name for the computer.
+- *Network*: For example, automatic internet protocol (IP) address discovery
+ with the Dynamic Host Configuration Protocol (DHCP) protocol.
+- *DNS (Domain Name System)*: DNS servers to query. For privacy reasons, it is
NOT recommended to route every local request to servers like Google's
- 8.8.8.8.)
-- Timezone
-- Proxy (Proxy server to use for accessing the web. Use "none" for
- direct connections to the internet.)
-- Mirror (From where to download packages. Choose the organization you
- trust giving your usage patterns to.)
-- SSH (Secure SHell remote access server. "Openssh" is part of the
- default install image. Use "none" to disable remote login, e.g. on
- laptops.)
-- NTP (Network Time Protocol client used for keeping the system clock in
- sync with a time-server. Package "chrony" is part of the default
- install image.)
-- Disk Mode (Select between diskless (disk="none"), "data" or "sys", as
- described above.)
-
-Once the setup script is finished, be sure to reboot the machine and
-remove the USB device.
+ 8.8.8.8.
+- *Timezone
+- *Proxy*: Proxy server to use for accessing the web. Use =none= for direct
+ connections to the internet.
+- *Mirror*: From where to download packages. Choose the organization you trust
+ giving your usage patterns to.
+- *SSH (Secure Shell Protocol)*: Remote access server. =Openssh= is part of the
+ default install image. Use =none= to disable remote login, e.g. on laptops.
+- *NTP (Network Time Protocol)*: Client used for keeping the system clock in
+ sync with a time-server. Package =chrony= is part of the default install
+ image.
+- *Disk Mode*: Select between diskless (=none=), =data= or =sys=, as described
+ above.
+
+Once the setup script is finished, be sure to reboot the machine and remove the
+USB device.
#+begin_src sh
reboot
@@ -86,9 +81,8 @@ reboot
** Post-Installation
There are many things you can do once your Alpine Linux system is up and
-running, and it largely depends on what you'll use the machine for. I'm
-going to walk through my personal post-installation setup for my web
-server.
+running, and it largely depends on what you'll use the machine for. I'm going to
+walk through my personal post-installation setup for my web server.
1. Upgrade the System
@@ -100,9 +94,9 @@ server.
2. Adding a User
- I needed to add a user so that I don't need to log in as root. Note
- that if you're used to using the =sudo= command, you will now need to
- use the =doas= command on Alpine Linux.
+ I needed to add a user so that I don't need to log in as root. Note that if
+ you're used to using the =sudo= command, you will now need to use the =doas=
+ command on Alpine Linux.
#+begin_src sh
apk add doas
@@ -118,16 +112,14 @@ server.
3. Enable Community Packages
- In order to install more common packages that aren't found in the
- =main= repository, you will need to enable the =community=
- repository:
+ In order to install more common packages that aren't found in the =main=
+ repository, you will need to enable the =community= repository:
#+begin_src sh
doas nano /etc/apk/repositories
#+end_src
- Uncomment the community line for whichever version of Alpine you're
- running:
+ Uncomment the community line for whichever version of Alpine you're running:
#+begin_src sh
/media/usb/apks
@@ -140,9 +132,9 @@ server.
4. Install Required Packages
- Now that the community packages are available, you can install any
- packages you need. In my case, I installed the web server packages I
- need for my services:
+ Now that the community packages are available, you can install any packages
+ you need. In my case, I installed the web server packages I need for my
+ services:
#+begin_src sh
doas apk add nano nginx docker docker-compose ufw
@@ -150,15 +142,14 @@ server.
5. SSH
- If you didn't install OpenSSH as part of the installation, you can do
- so now:
+ If you didn't install OpenSSH as part of the installation, you can do so now:
#+begin_src sh
doas apk add openssh
#+end_src
- Next, either create a new key or copy your SSH key to the server from
- your current machines:
+ Next, either create a new key or copy your SSH key to the server from your
+ current machines:
#+begin_src sh
# Create a new key
@@ -174,9 +165,9 @@ server.
6. Firewall
- Lastly, I installed =ufw= above as my firewall. To set up, default to
- deny incoming and allow outgoing connections. Then selectively allow
- other ports or apps as needed.
+ Lastly, I installed =ufw= above as my firewall. To set up, default to deny
+ incoming and allow outgoing connections. Then selectively allow other ports
+ or apps as needed.
#+begin_src sh
doas ufw default deny incoming
@@ -188,8 +179,8 @@ server.
7. Change Hostname
- If you don't like the hostname set during installation, you just need
- to edit two files. First, edit the simple hostname file:
+ If you don't like the hostname set during installation, you just need to edit
+ two files. First, edit the simple hostname file:
#+begin_src sh
doas nano /etc/hostname
@@ -223,17 +214,17 @@ doas chown -R www:www /var/lib/nginx/
doas chown -R www:www /www
#+end_src
-If you're running a simple webroot, you can alter the main =nginx.conf=
-file. Otherwise, you can drop configuration files in the following
-directory. You don't need to enable or symlink the configuration file
-like you do in other systems.
+If you're running a simple webroot, you can alter the main =nginx.conf= file.
+Otherwise, you can drop configuration files in the following directory. You
+don't need to enable or symlink the configuration file like you do in other
+systems.
#+begin_src sh
doas nano /etc/nginx/http.d/example_website.conf
#+end_src
-Once the configuration is set and pointed at the =/www= directory to
-serve files, enable the Nginx service:
+Once the configuration is set and pointed at the =/www= directory to serve
+files, enable the Nginx service:
#+begin_src sh
# Note that 'default' must be included or Nginx will not start on boot
@@ -242,18 +233,16 @@ doas rc-update add nginx default
* Docker Containers
-Docker works exactly the same as other systems. Either execute a
-=docker run= command or create a =docker-compose.yml= file and do
-=docker-compose up -d=.
+Docker works exactly the same as other systems. Either execute a =docker run=
+command or create a =docker-compose.yml= file and do =docker-compose up -d=.
* Git Server
-I went in-depth on how to self-host a git server in another post:
-[[../git-server/][Self-Hosting a Personal Git Server]].
+I went in-depth on how to self-host a git server in another post: [[https://cleberg.net/blog/git-server.html][Self-Hosting
+Guide: Git & cGit]].
-However, there are a few differences with Alpine. First note that in
-order to change the =git= user's shell, you must do a few things a
-little different:
+However, there are a few differences with Alpine. First note that in order to
+change the =git= user's shell, you must do a few things a little different:
#+begin_src sh
doas apk add libuser
@@ -265,12 +254,11 @@ doas lchsh git
* Thoughts on Alpine
-So far, I love Alpine Linux. I have no complaints about anything at this
-point, but I'm not completely finished with the migration yet. Once I'm
-able to upgrade my hardware to a rack-mounted server, I will migrate
-Plex and Syncthing over to Alpine as well - possibly putting Plex into a
-container or VM.
+So far, I love Alpine Linux. I have no complaints about anything at this point,
+but I'm not completely finished with the migration yet. Once I'm able to upgrade
+my hardware to a rack-mounted server, I will migrate Plex and Syncthing over to
+Alpine as well - possibly putting Plex into a container or VM.
-The performance is stellar, the =apk= package manager is seamless, and
-system administration tasks are effortless. My only regret is that I
-didn't install Alpine sooner.
+The performance is stellar, the =apk= package manager is seamless, and system
+administration tasks are effortless. My only regret is that I didn't install
+Alpine sooner.