rss logo

Useful Commands and Tips for Working with Alpine Linux

Alpine Linux Logo

In this article, I'll be sharing a few tips on using Alpine Linux, a GNU/Linux distribution renowned for its small size, simplicity, and security. Unlike most other distributions, it doesn't use systemd which is quite rare these days. I've started using it for several different applications and services, and I must say I've been rather taken with its qualities. I'll be using this page as a reminder, in the hope that it will be useful to others.

Useful Commands

  • Update Alpine Linux:
root@host:~# apk add --upgrade apk-tools && apk upgrade --available
  • Install package:
root@host:~# apk add vim

Python

  • Install python3:
root@host:~# apk add python3
  • Add pip:

Create and activate a virtual environment:

host:~$ python -m venv .web3
host:~$ source .web3/bin/activate

Install pip in the virtual environment and check the version:

(.web3) host:~$ python -m ensurepip
(.web3) host:~$ python -m pip --version

Cron

Using Cron in Alpine Linux is quite special, especially if you're used to using Debian. Let's see how it works. For this example, let's say wa want to configure crond to run a python script (/root/script.py in this case) every 5 minutes.

  • Create a /etc/periodic/5min folder:
root@host:~# mkdir /etc/periodic/5min
  • Add an entry in the /etc/crontabs/root file for the /etc/periodic/5min folder:
*/5 * * * * run-parts /etc/periodic/5min
  • Create a /etc/periodic/5min/pscript (do not use the .sh extension) shell script:
#!/bin/sh
/root/script.py
  • Make the file executable :
root@host:~# chmod +x /etc/periodic/5min/pscript
  • Run a test:
root@host:~# run-parts --test /etc/periodic/5min/
  • Take into account modifications:
root@host:~# rc-service crond start && rc-update add crond

Installing VMware Tools

If you're installing Alpine Linux in a virtual machine in a VMware ESXi environment, it's recommended to install VMware Tools for optimum performance and functionality.

  • Edit /etc/apk/repositories and uncomment the community line:
#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.19/main
http://dl-cdn.alpinelinux.org/alpine/v3.19/community
  • Install the open-vmtools packages:
root@host:~# apk add open-vm-tools open-vm-tools-guestinfo open-vm-tools-deploypkg
  • Start the open-vmtools service:
root@host:~# rc-service open-vm-tools start
  • Enable open-vmtools at boot:
root@host:~# rc-update add open-vm-tools boot

How to upgrade Alpine Linux

Let's assume we want to upgrade Alpine Linux version from 3.19 to 3.20.

  • First, update the current Alpine Linux version:
root@host:~# apk add --upgrade apk-tools && apk upgrade --available
  • Edit the /etc/apk/repositories file and replace 3.19 number with 3.20:
#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.20/main
http://dl-cdn.alpinelinux.org/alpine/v3.20/community
  • Run the upgrade:
root@host:~# apk update && apk upgrade --available
  • Restart system:
root@host:~# reboot

nftables

  • Install nftables:
root@host:~# apk add nftables
  • Restart:
root@host:~# reboot
  • Edit /etc/nftables.nft and define your own rules:
#!/usr/sbin/nft -f
# vim: set ts=4 sw=4:
# You can find examples in /usr/share/nftables/.

# Clear all prior state
flush ruleset

#IPv4
table ip filter {
        chain input {
                type filter hook input priority 0; policy accept;
        }
        chain forward {
                type filter hook forward priority 0; policy accept;
        }
        chain output {
                type filter hook output priority 0; policy accept;
        }
}
#IPv6
table ip6 filter {
        chain input {
                type filter hook input priority 0; policy accept;
        }
        chain forward {
                type filter hook forward priority 0; policy accept;
        }
        chain output {
                type filter hook output priority 0; policy accept;
        }
}
  • Configure the nftables service to start automatically at boot:
root@host:~# rc-update add nftables boot