Aug 28, 2018 I found the best way to get golang up running in alpine linux is to install it from source. This is also way followed in the official alpine go docker images. FROM alpine:3.12 ARG GOLANGVERSION=1.14.3 #we need the go version installed from apk to bootstrap the custom version built from source RUN apk update && apk add go gcc bash musl-dev openssl-dev ca-certificates && update-ca-certificates. $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ajeetraina/alpine-git latest cb913e37a593 16 seconds ago 26.6MB ajeetraina/labs-git v1.0 cb913e37a593 16 seconds ago 26.6MB Create a container docker run -itd ajeetraina/labs-git:v1.0 /bin/sh. Install Git on Mac OS X Install Git on Windows Install Git on Linux. (tested on many freshly minted Alpine Linux containers to test it out). Yes i did the git clone command works but the git inside the terraform module does not work.
Tip: This is a wiki!
This page explains the basics to get started. But before actually installing, it can also help to skim through the Frequenty Asked Questions (FAQ).
If something isn't correct (anymore), or still incomplete, you will have to try figuring it out, or ask for the correct solution in the community.
And then carefully edit the wiki page.
Just as those before you did it for you.
- 2Installation Overview
- 3Additional Details
- 3.2Flashing (direct data writing) the installation image-file onto a device or media
- 4Additional Documentation
Minimal Hardware Requirements
- At least 100 MB of RAM. [A graphical desktop system may require up to 1 GB minimum.]
- At least 0-700 MB space on a writable storage device. [Only required in 'sys' or 'data' mode installations (explained below). It is optional in 'diskless' mode, only needed to save newer data and configurations states of a running system.]
For more information please check Requirements
The general course of action
[Note: For single-board-computer (SBC) architectures which can not boot .iso images, see Alpine on ARM for peculiarities.]
As usual, the regular installation procedure starts with three basic steps (additional details for all the steps follow below):
1.) Downloading and verifying the proper stable-release ISO installation image-file for the computer's architecture, and the corresponding
sha256 (checksum) and
GPG (signature) files.
2.) Either burning the ISO image-file onto a blank CD/DVD/Blu-ray disk with disk burning software, or flashing the installation image onto a bootable storage device (USB-device, CF-/MMC-/SD-card, floppy, ...).
3.) Booting the computer from the prepared disk or storage device.
The boot process copies the entire operating system into the RAM memory, then runs it from there, after which, the command line environment does not depend on reading from the (possibly slow) initial boot media.
Log-in is possible as the user
root. Initially, the root user has no password.
An interactive script named
setup-alpine is available at the command prompt to configure and install the initial Alpine Linux system.
setup-alpine question-and-answer dialog can configure installations that boot into one of three different Alpinelinux disk modes, 'diskless', 'data', and 'sys'. These are explained in more detail in the following subsections. However, a newly installed system may always be configured into a fully usable, standalone, 'diskless' live-system by runing
setup-alpine and answering 'none' when asked for the disk to use, where to store configs, and the location for the package cache.
Once a 'diskless' system is configured by running
setup-alpine, it's possible to use the apk package manager to install any desired tool that may be missing in the live system to configure available hardware.
Specific hardware configuration may be desired, for example, for available disk drives. e.g. If you need to install a custom partition or filesystem scheme, and if the installation should not use and/or overwrite the entire disk (details below).
After the desired adjustments have been made using the 'diskless' system,
setup-apkcache may be run to add persistent configuration and package cache storage to the running 'diskless' system. After that, the system state may be saved with
lbu commit. Or,
setup-disk may be run to add a 'data' mode partition, or do a classic full install of the 'diskless' system onto a 'sys' disk or partition.
More setup-scripts are available to configure other specifics. They may be run separately to set up a system, or to adjust only specific parts later. For example, to set up a graphical environment (covered in Post-Install below).
This is the default boot mode of the .iso images.
setup-alpine configures this if 'disk=none' is selected during installation. It means the entire operating system and all applications are loaded into, then run from, RAM. This is extremely fast and can save on unnecessary disk spin-ups, power, and wear. It is similar to what is called a 'frugal' install running with the 'toram' option as with some other distros, but without the need toremaster the install media.
Custom configurations and package selections may be preserved across reboots with the Alpine local backup tool
lbu. It enables committing and reverting system states using .apkovl files that are saved to writable storage and loaded when booting. If additional or updated packages have been added to the system, these may also be made available for automatic (re)installation during the boot phase, by enabling a local package cache on the writable storage.
[FIXME-1: Storing local configs and the package cache on an internal disk still requires some manual steps to have the partition listed, i.e. making a /etc/fstab entry, mountpoint, and mount, *before* running setup-alpine. And requires manually committing the configuration to disk afterwards.]
To allow for local backups,
setup-alpine can be told to store the configs and the package cache on a writable partition. (Later, directories on that same partition or another available partition may also be mounted as /home, or for important applications, e.g. to keep their run-time and user data on it.)
The boot device of the newly configured local 'diskless' system may remain the initial (and possibly read-only) installation media. But it is also possible to copy the boot system to a partition (e.g. /dev/sdXY) with
Data Disk Mode
This mode also runs from system RAM, thus it enjoys the same accelerated operation speed as 'diskless' mode. However, swap storage and the entire /var directory tree get mounted from a persistent storage device (two newly created partitions). The directory /var holds e.g. all log files, mailspools, databases, etc., as well as
lbu backup commits and the package cache. This mode is useful for having RAM accelerated servers with variable amounts of user-data that exceed the available RAM size. It enables the entire current system state (not just the boot state) to survive a system crash in accordance with the particular filesystem guarantees.
Install Git Alpine Linux Command
[FIXME-2: Setup-alpine can not yet configure storage of the lbu configs to the 'data disk' after selecting one. It's still necessary to first select to save configs to 'none' in setup-alpine (the new data partition is not listed), and to manually edit /etc/lbu/lbu.conf to set e.g. LBU_MEDIA=sdXY, then execute a corresponding
echo '/dev/sdXY /media/sdXY vfat rw 0 0' >> /etc/fstab afterwards, and save the config with
lbu commit to have the partition (here, denoted as sdXY) mounted when booting.]
In data disk mode, the boot device may also remain the initial (and possibly read-only) installation media, or be copied to a partition (e.g. /dev/sdXY) with
System Disk Mode
This is a traditional hard-disk install.
If this mode is selected, the
setup-alpine script creates three partitions on the selected storage device, /boot, swap and / (the filesystem root). This mode may, for example, be used for generic desktop and development machines.
For custom partitioning, see Setting_up_disks_manually.
To install along side another operating systems, see Installing_Alpine_on_HDD_dualbooting.
This material needs expanding ...
This 'Additional Details' section needs to be consolidated with the work at https://docs.alpinelinux.org (not finished) (Restructuring things there, moving and linking from here or there?).
Verifying the downloaded image-file
|MACOS||- ? -||- ? -|
|BSD||- ? -||- ? -|
|Windows (PowerShell installed)||- ? -||- ? -|
Flashing (direct data writing) the installation image-file onto a device or media
Under Unix (and thus Linux), 'everything is a file' and the data in the image-file can be written to a device or media with the
dd command. Afterward, executing the
eject command removes the target device from the system and ensures the write cache is completely flushed.
Be careful to correctly identify the target device as any data on it will be lost! All connected 'bulk storage devices' can be listed with
For example, if /dev/sdX is the desired target device, first make sure you un-mount all mounted partitions of the target device. For example sdX1 and sdX2:
dd's output-file (
of=), however, do not specify a partition number. For example, write to sdX, not sdX1:
Warning: This will overwrite the target device /dev/sdX, so before executing, make sure you have a backup of the data if you can't afford to lose it.
For example, there is the Rufus program. Rufus will enable you to create bootable USB flash drives under Windows.
Rufus has been tested and works for Alpine Linux 3.12.x with the following settings:
- Partition scheme:
- Target system:
BIOS or UEFI
- File system:
- Cluster size:
4096 bytes (default)
Verifying the written installation media
After detaching and re-attaching the device, a bit-wise comparison can verify the data written to the device (instead of just data buffered in RAM). If the comparison terminates with an end-of-file error on the .iso file side, all the contents from the image have been written (and re-read) successfully:
Install Git Alpine Linux Download
Booting from external devices
Insert the boot media to a proper drive or port of the computer and turn the machine on, or restart it, if already running.
If the computer does not automatically boot from the desired device, one needs to bring up the boot menu and choose the media to boot from. Depending on the computer, the menu may be accessed by repeatedly pressing a key quickly when booting starts. Some computers require that you press the button before starting the computer and hold it down while the computer boots. Typical keys are: `F9`-`F12`, sometimes `F7` or `F8`. If these don't bring up the boot menu, it may be necessary to enter the BIOS configuration and adjust the boot settings, for which typical keys are: `Del.` `F1` `F2` `F6` or `Esc.`
Custom partitioning of the harddisk
It is possible to specify configurations for RAID, encryption, LVM, etc. as well as manual partitioning.
For 'diskless' or 'data disk' mode installs, manual partitioning may be needed to prepare the harddisk for committing local backups of the system state with
lbu commit, a package cache, or to use it as the /var mount.
For a 'sys' install, custom partitioning is needed only if the desired scheme differs from overwriting an entire disk, or creating the default /boot, swap and root partitions.
See Setting_up_disks_manually for the alpine options for RAID, encryption, LVM, etc. and manual partitioning.
Questions asked by
setup-alpine script offers the following configuration options:
- 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 NOT recommended to route every local request to servers like google's
- 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.)
Preparing for the first boot
setup-alpine has finished configuring the 'sys' disk mode, the system should be ready to reboot right away (see next subsection).
If the new local system was configured to run in 'diskless' or 'data' mode, and you do not want keep booting from the initial (and possibly read-only) installation media, the boot system needs to be copied to another device or partition.
The target partition may be identified using
lsblk (after installing it with
apk add lsblk) and/or
blkid, similar to previously identifying the initial installation media device.
The procedure to copy the boot system is explained at
Once everything is in place, save your customized configuration with
lbu commit before rebooting.
Rebooting and testing the new system
First, remove the initial installation media from the boot drive, or detach it fron the port it's connected to.
The system may now be power-cycled or rebooted to confirm everything is working correctly.
The relevant commands for this are
Completing the installation
The installation script installs only the base operating system. No applications e.g. web server, mail server, desktop environment, or web browser are installed, and
root is the only user.
Please look under 'Post-Install' below, for some common things to do after installation.
- Kernels(kernel selection, e.g. for VMs or RPi)
- Directly booting an ISO file(without flashing it to a disk or device)
- Setting up Networking(including non-standard configurations)
- How to make a custom ISO image with mkimage(installation media with its own configuration)
- Fix unicode defaults:
sed -i s/#unicode='NO'nn#/#unicode='NO'nnunicode='YES'nn#/ /etc/rc.conf
apk add musl-localesInstalls a limited set of locales (languages) for musl (C library) generated console messages.
- Listing defined locales is possible with
cp /etc/profile.d/locale.sh /etc/profile.d/locale.sh.shCopies the default locale settings. Then the custom override file can be edited
apk add langPulls in the translation packages of all installed packages.
apk list hunspell*To list available hunspell dictionary packages.
apk list *-xy *-xy-*To list translation packages for your specific (xy) language (for example, pt for Portuguese).
apk add man-pagesInstalls basic manual pages.
apk add mandocInstalls the man command to be able to open man pages.
apk add mandoc-aproposInstalls the apropos command to search in man pages.
apk add docsInstalls all the *-doc sub-packages of installed packages.
- Setting up a new user(to allow remote, console, or graphical logins)
- Enable Community Repository(access to additional packages)
- Package Management (apk)(how to search/add/del packages etc.)
setup-xorg-base(setup graphical base environment)
- Xfce_Setup / Gnome_Setup / KDE / MATE (desktop environments)
- How to get regular stuff working(things one may miss in a too lightweight installation )
- Local backup utility
lbu(persisting RAM system configurations)
- Back Up a Flash Memory Installation('diskless mode' systems)
- Manually_editing_a_existing_apkovl(the stored custom configs)
- Init System (OpenRC)(configure a service to automatically boot at next reboot)
- Hosting services on Alpine(links to several mail/web/ssh server setup pages)
- Running applications and services in their own Firejail Security Sandbox
- Upgrading Alpine(checking for and installing updates)
Additional Help and Information
- Comparison with other distros(how common things are done on Alpine)
- Running glibc programs(installation and development)
- Wiki etiquetteto collaborate on this documentation
There may still be something useful to find and sort out of some 'newbie' install notes in this wiki, but beware that these pages can lack explanations and contain highly opinionated content, redundantly on many convoluted pages.
Rclone is a Go program and comes as a single binary file.
- Download the relevant binary.
- Extract the
rclone.exebinary from the archive
rclone configto setup. See rclone config docs for more details.
- Optionally configure automatic execution.
See below for some expanded Linux / macOS instructions.
See the Usage section of the docs for how to use rclone, orrun
Already installed rclone can be easily updated to the latest versionusing the rclone selfupdate command.
To install rclone on Linux/macOS/BSD systems, run:
For beta installation, run:
Note that this script checks the version of rclone installed first andwon't re-download if not needed.
Linux installation from precompiled binary
Fetch and unpack
Copy binary file
rclone config to setup. See rclone config docs for more details.
macOS installation with brew
macOS installation from precompiled binary, using curl
To avoid problems with macOS gatekeeper enforcing the binary to be signed andnotarized it is enough to download with
Download the latest version of rclone.
Unzip the download and cd to the extracted folder.
Move rclone to your $PATH. You will be prompted for your password.
mkdir command is safe to run, even if the directory already exists).
Remove the leftover files.
rclone config to setup. See rclone config docs for more details.
macOS installation from precompiled binary, using a web browser
When downloading a binary with a web browser, the browser will set the macOSgatekeeper quarantine attribute. Starting from Catalina, when attempting to run
rclone, a pop-up will appear saying:
The simplest fix is to run
Install with docker
The rclone maintains a docker image for rclone.These images are autobuilt by docker hub from the rclone source basedon a minimal Alpine linux image.
:latest tag will always point to the latest stable release. Youcan use the
:beta tag to get the latest build from master. You canalso use version tags, e.g.
There are a few command line options to consider when starting an rclone Docker containerfrom the rclone image.
You need to mount the host rclone config dir at
/config/rcloneinto the Dockercontainer. Due to the fact that rclone updates tokens inside its config file, and thatthe update process involves a file rename, you need to mount the whole host rcloneconfig dir, not just the single host rclone config file.
You need to mount a host data dir at
/datainto the Docker container.
By default, the rclone binary inside a Docker container runs with UID=0 (root).As a result, all files created in a run will have UID=0. If your config and data filesreside on the host with a non-root UID:GID, you need to pass these on the containerstart command line.
If you want to access the RC interface (either via the API or the Web UI), it isrequired to set the
:5572in order to connect to it from outsidethe container. An explanation about why this is necessary is present here.
- NOTE: Users running this container with the docker network set to
hostshouldprobably set it to listen to localhost only, with
127.0.0.1:5572as the value for
- NOTE: Users running this container with the docker network set to
It is possible to use
rclone mountinside a userspace Docker container, and exposethe resulting fuse mount to the host. The exact
docker runoptions to do that mightvary slightly between hosts. See, e.g. the discussion in thisthread.
You also need to mount the host
/etc/groupfor fuse to work insidethe container.
Here are some commands tested on an Ubuntu 18.04.3 host:
Install from source
Make sure you have at least Go go1.13installed. Download go if necessary. Thelatest release is recommended. Then
This will leave you a checked out version of rclone you can modify andsend pull requests with. If you use
make instead of
go build thenthe rclone build will have the correct version information in it.
You can also build the latest stable rclone with:
or the latest version (equivalent to the beta) with
These will build the binary in
$(go env GOPATH)/bin(
~/go/bin/rclone by default) after downloading the source to the gomodule cache. Note - do not use the
-u flag here. This causes goto try to update the dependencies that rclone uses and sometimes thesedon't work with the current version of rclone.
Installation with Ansible
This can be done with Stefan Weichinger's ansiblerole.
git clone https://github.com/stefangweichinger/ansible-rclone.gitinto your local roles-directory
- add the role to the hosts you want rclone installed to:
After installing and configuring rclone, as described above, you are ready to use rcloneas an interactive command line utility. If your goal is to perform periodic operations,such as a regular sync, you will probably wantto configure your rclone command in your operating system's scheduler. If you need toexpose service-like features, such as remote control,GUI, serveor mount, you will often want an rclonecommand always running in the background, and configuring it to run in a service infrastructuremay be a better option. Below are some alternatives on how to achieve this ondifferent operating systems.
NOTE: Before setting up autorun it is highly recommended that you have tested your commandmanually from a Command Prompt first.
Autostart on Windows
The most relevant alternatives for autostart on Windows are:
- Run at user log on using the Startup folder
- Run at user log on, at system startup or at schedule using Task Scheduler
- Run at system startup using Windows service
Running in background
Rclone is a console application, so if not starting from an existing Command Prompt,e.g. when starting rclone.exe from a shortcut, it will open a Command Prompt window.When configuring rclone to run from task scheduler and windows service you are ableto set it to run hidden in background. From rclone version 1.54 you can also make itrun hidden from anywhere by adding option
--no-console (it may still flash brieflywhen the program starts). Since rclone normally writes information and any errormessages to the console, you must redirect this to a file to be able to see it.Rclone has a built-in option
--log-file for that.
Example command to run a sync in background:
As mentioned in the mount documentation,mounted drives created as Administrator are not visible to other accounts, not even theaccount that was elevated as Administrator. By running the mount command as thebuilt-in
SYSTEM user account, it will create drives accessible for everyone onthe system. Both scheduled task and Windows service can be used to achieve this.
NOTE: Remember that when rclone runs as the
SYSTEM user, the user profilethat it sees will not be yours. This means that if you normally run rclone withconfiguration file in the default location, to be able to use the same configurationwhen running as the system user you must explicitely tell rclone where to findit with the
--config option,or else it will look in the system users profile path (
C:WindowsSystem32configsystemprofile).To test your command manually from a Command Prompt, you can run it withthe PsExecutility from Microsoft's Sysinternals suite, which takes option
-s toexecute commands as the
Start from Startup folder
To quickly execute an rclone command you can simply create a standardWindows Explorer shortcut for the complete rclone command you want to run. If youstore this shortcut in the special 'Startup' start-menu folder, Windows willautomatically run it at login. To open this folder in Windows Explorer,enter path
C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp if you wantthe command to start for every user that logs in.
This is the easiest approach to autostarting of rclone, but it offers nofunctionality to set it to run as different user, or to set conditions oractions on certain events. Setting up a scheduled task as described belowwill often give you better results.
Start from Task Scheduler
Task Scheduler is an administrative tool built into Windows, and it can be used toconfigure rclone to be started automatically in a highly configurable way, e.g.periodically on a schedule, on user log on, or at system startup. It can runbe configured to run as the current user, or for a mount command that needs tobe available to all users it can run as the
SYSTEM user.For technical information, seehttps://docs.microsoft.com/windows/win32/taskschd/task-scheduler-start-page.
Run as service
For running rclone at system startup, you can create a Windows service that executesyour rclone command, as an alternative to scheduled task configured to run at startup.
Mount command built-in service integration
For mount commands, Rclone has a built-in Windows service integration via the third partyWinFsp library it uses. Registering as a regular Windows service easy, as you just have toexecute the built-in PowerShell command
New-Service (requires administrative privileges).
Example of a PowerShell command that creates a Windows service for mountingsome
remote:/files as drive letter
X:, for all users (service will be running as thelocal system account):
The WinFsp service infrastructuresupports incorporating services for file system implementations, such as rclone,into its own launcher service, as kind of 'child services'. This has the additionaladvantage that it also implements a network provider that integrates intoWindows standard methods for managing network drives. This is currently notofficially supported by Rclone, but with WinFsp version 2019.3 B2 / v1.5B2 or laterit should be possible through path rewriting as described here.
Third party service integration
To Windows service running any rclone command, the excellent third party utilityNSSM, the 'Non-Sucking Service Manager', can be used.It includes some advanced features such as adjusting process periority, definingprocess environment variables, redirect to file anything written to stdout, andcustomized response to different exit codes, with a GUI to configure everything from(although it can also be used from command line ).
There are also several other alternatives. To mention one more,WinSW, 'Windows Service Wrapper', is worth checking out.It requires .NET Framework, but it is preinstalled on newer versions of Windows, and italso provides alternative standalone distributions which includes necessary runtime (.NET 5).WinSW is a command-line only utility, where you have to manually create an XML file withservice configuration. This may be a drawback for some, but it can also be an advantageas it is easy to back up and re-use the configurationsettings, without having go through manual steps in a GUI. One thing to note is thatby default it does not restart the service on error, one have to explicit enable thisin the configuration file (via the 'onfailure' parameter).
Autostart on Linux
Start as a service
To always run rclone in background, relevant for mount commands etc,you can use systemd to set up rclone as a system or user service. Running as asystem service ensures that it is run at startup even if the user it is running ashas no active session. Running rclone as a user service ensures that it onlystarts after the configured user has logged into the system.
Run periodically from cron
To run a periodic command, such as a copy/sync, you can set up a cron job.