diff options
| author | Christian Cleberg <[email protected]> | 2025-11-11 22:49:13 -0600 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2025-11-11 22:49:13 -0600 |
| commit | 51a7a02f0c96d49b68fbcc155414c218207fa270 (patch) | |
| tree | 845af8aad0e8769352efc02fcd1044eed9cc1ec1 /content/blog/2022-10-22-alpine-linux.org | |
| parent | 7d3e80ebf1dc770eac0e21890b74f18ba2d15a6b (diff) | |
| download | cleberg.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.org | 194 |
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. |
