[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Installing Guix System on an OVH VPS (Virtual Private Server)
From: |
Maxim Cournoyer |
Subject: |
Installing Guix System on an OVH VPS (Virtual Private Server) |
Date: |
Sat, 31 Aug 2024 21:40:18 +0900 |
Hi,
I've recently experimented with installing Guix System on a cheap OVH
VPS server, and here are my findings in case it helps someone else:
1. The base images do not include Guix System, so start with something
like Debian 12 or newer.
2. From their web interface, reboot into their rescue mode.
3. Make enough space on the rescue root to have about 500 MiB free,
enough for 'apt install guix' to succeed. I found one unused kernel
image which freed a lot of space, along with 'gcc'.
4. Recreate /dev/sdb1 from 20 GB to 15 GB, and create a new 5 GB
partition after that, as /dev/sdb2. Mount /dev/sdb2 as /gnu in the
rescue. This is because the rescue file system is too small to run
'guix system init'.
I've also opted for Btrfs file system, and made sure to mount the
partitions with 'mount -o compress=zstd ...' to shrink space usage as
much as I could.
5. Run 'guix system init /mnt your-config.scm', where /mnt is the mount
point for /dev/sdb1. For the config, start with the bare-bones.tmpl
config. Use plain GRUB (BIOS, not UEFI), and add the virtio_scsi module
to the initrd:
--8<---------------cut here---------------start------------->8---
(initrd-modules (cons "virtio_scsi" ; Needed to find the disk
%base-initrd-modules))
--8<---------------cut here---------------end--------------->8---
The other important bit to see the kernel messages at boot is this:
--8<---------------cut here---------------start------------->8---
(kernel-arguments (list "console=ttyS0 console=tty0"))
--8<---------------cut here---------------end--------------->8---
Here's what my actual config file looks like, with some parts redacted:
--8<---------------cut here---------------start------------->8---
(use-modules (gnu))
(use-service-modules networking ssh)
(use-package-modules ssh)
(operating-system
(host-name "vps-xxx")
(locale "en_US.utf8")
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
(targets '("/dev/sdb"))))
(kernel-arguments (list "console=ttyS0 console=tty0"))
(file-systems (cons* (file-system
(device (uuid "bbf61fb4-b6ce-44af-ac57-1850cd708965"))
(mount-point "/")
(type "btrfs")
(options "compress=zstd"))
%base-file-systems))
(initrd-modules (cons "virtio_scsi" ; Needed to find the disk
%base-initrd-modules))
;; This is where user accounts are specified. The "root"
;; account is implicit, and is initially created with the
;; empty password.
(users (cons (user-account
(name "some-user")
(group "users")
;; Adding the account to the "wheel" group
;; makes it a sudoer. Adding it to "audio"
;; and "video" allows the user to play sound
;; and access the webcam.
(supplementary-groups '("wheel")))
%base-user-accounts))
;; Add services to the baseline: a DHCP client and an SSH
;; server. You may wish to add an NTP service here.
(services
(append
(list (service dhcp-client-service-type)
(service openssh-service-type
(openssh-configuration
(openssh openssh-sans-x)
(port-number 2222)
(authorized-keys
`(("some-user" ,(plain-file "maxim-ssh.pub"
"ssh-XXX XXXXXXXX")))))))
%base-services))
(sudoers-file
(plain-file "sudoers"
(string-append (plain-file-content %sudoers-specification)
"some-user ALL = NOPASSWD: ALL\n"))))
--8<---------------cut here---------------end--------------->8---
The sudoers-file part is so that I can 'guix deploy' to it.
Happy hacking!
--
Maxim
- Installing Guix System on an OVH VPS (Virtual Private Server),
Maxim Cournoyer <=