all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Christopher Lemmer Webber <cwebber@dustycloud.org>
To: jbranso@dismail.de
Cc: help-guix@gnu.org
Subject: Re: Installing Guix on Linode: a how-to
Date: Tue, 21 Jul 2020 16:44:33 -0400	[thread overview]
Message-ID: <87pn8oy4we.fsf@dustycloud.org> (raw)
In-Reply-To: <7c32ae519b2f431e353b2a3f4495601b@dismail.de>

Oh horray.. I didn't see this before my last reply ;)

jbranso@dismail.de writes:

> Ok I sent it to guix-patches.
>
> https://lists.gnu.org/archive/html/guix-patches/2020-07/msg00294.html
>
> July 10, 2020 6:17 PM, jbranso@dismail.de wrote:
>
>> I will volunteer to add this to the guix cookbook. If I don't send a patch in a week or so, then
>> that means I got lazy and decided not to do it.
>> 
>> July 8, 2020 7:57 PM, "Gary Johnson" <lambdatronic@disroot.org> wrote:
>> 
>>> Can someone add this tutorial to the Guix Cookbook? I've been wondering
>>> about how to do this for some time now, and it would be great to have it
>>> saved somewhere obvious like that for future reference.
>>> 
>>> Thanks,
>>> Gary
>>> 
>>> Christopher Lemmer Webber <cwebber@dustycloud.org> writes:
>>> 
>>>> Hi! I finally got Guix running on Linode! I'm excited about it!
>>>> Here's the process (thanks to jackhill on freenode for helping me figure
>>>> out all the stuff involving the bootloader!). It's very bullet-point'y,
>>>> but here's the steps I took:
>>>> 
>>>> - Start with a Debian (or whatever) server. Be sure to add your ssh
>>>> key for easy login. We'll be using the default distro as a way to
>>>> bootstrap Guix.
>>>> - Power it down.
>>>> - In the Disks/Configurations tab, resize the Debian disk to be
>>>> smaller, maybe 30GB or something.
>>>> - "Add a disk", with the following:
>>>> - Label: "Guix"
>>>> - Filesystem: ext4
>>>> - Set it to the remaining size
>>>> - Next to the "configuration" that comes with the default image,
>>>> press "..." and select "Edit", then on that menu add to
>>>> /dev/sdc the "Guix" label
>>>> - Now "Add a Configuration", with the following:
>>>> - Label: Guix
>>>> - VM Mode: Paravirtualization (the default?? don't know if this matters)
>>>> - Kernel: Grub 2 (it's at the bottom! This step is *IMPORTANT*)
>>>> - Block device assignment:
>>>> - /dev/sda: Guix
>>>> - /dev/sdb: swap
>>>> - Root device: /dev/sda
>>>> - Turn off all the filesystem/boot helpers
>>>> - Now power it back up, picking the Debian configuration
>>>> - Once it's booted up, ssh root@<your-server-ip-here>
>>>> - Run the "install guix form binary installer" steps:
>>>> - $ sudo apt-get install gpg
>>>> - $ wget https://sv.gnu.org/people/viewgpg.php?user_id=15145 -qO - | gpg --import -
>>>> - $ wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
>>>> - $ chmod +x guix-install.sh
>>>> - $ ./guix-install.sh
>>>> - $ guix pull
>>>> 
>>>> - Now it's time to write out a config for the server. The key stuff is
>>>> below, save as guix-config.scm:
>>>> 
>>>> #+BEGIN_SRC scheme
>>>> (use-modules (gnu)
>>>> (guix modules))
>>>> (use-service-modules networking
>>>> ssh)
>>>> (use-package-modules admin
>>>> certs
>>>> package-management
>>>> ssh
>>>> tls)
>>>> 
>>>> (operating-system
>>>> (host-name "my-server")
>>>> (timezone "America/New_York")
>>>> (locale "en_US.UTF-8")
>>>> ;; This goofy code will generate the grub.cfg
>>>> ;; without installing the grub bootloader on disk.
>>>> (bootloader (bootloader-configuration
>>>> (bootloader
>>>> (bootloader
>>>> (inherit grub-bootloader)
>>>> (installer #~(const #t))))))
>>>> (file-systems (cons (file-system
>>>> (device "/dev/sda")
>>>> (mount-point "/")
>>>> (type "ext4"))
>>>> %base-file-systems))
>>>> 
>>>> (initrd-modules (cons "virtio_scsi" ; Needed to find the disk
>>>> %base-initrd-modules))
>>>> 
>>>> (users (cons (user-account
>>>> (name "janedoe")
>>>> (group "users")
>>>> ;; Adding the account to the "wheel" group
>>>> ;; makes it a sudoer.
>>>> (supplementary-groups '("wheel"))
>>>> (home-directory "/home/janedoe"))
>>>> %base-user-accounts))
>>>> 
>>>> (packages (cons* nss-certs ;for HTTPS access
>>>> openssh-sans-x
>>>> %base-packages))
>>>> 
>>>> (services (cons*
>>>> (service dhcp-client-service-type)
>>>> (service openssh-service-type
>>>> (openssh-configuration
>>>> (openssh openssh-sans-x)
>>>> (password-authentication? #f)
>>>> (authorized-keys
>>>> `(("janedoe" ,(local-file "janedoe_rsa.pub"))
>>>> ;; Is this a good idea? Well if you don't add it
>>>> ;; you have to manually set your user's password
>>>> ;; via the glish console...
>>>> ("root" ,(local-file "janedoe_rsa.pub"))))))
>>>> %base-services)))
>>>> #+END_SRC
>>>> 
>>>> - Replace the following fields in the above configuration:
>>>> - (host-name "my-server") ; replace with your server name
>>>> - (name "janedoe") ; replace with your username
>>>> - ("janedoe" ,(local-file "janedoe_rsa.pub")) ; here too
>>>> - Note the same above for root, which I don't feel great about, but
>>>> otherwise you'll need to log in via the linode "glish" console to
>>>> log in as root and set the user's initial password before you can
>>>> start using sudo (is there another way around this?)
>>>> 
>>>> - Save your ssh public key (~/.ssh/id_rsa.pub) as
>>>> <your-username-here>_rsa.pub or whatever in the same directory
>>>> 
>>>> - Mount the guix drive:
>>>> $ mkdir /mnt/guix
>>>> $ mount /dev/sdc /mnt/guix
>>>> 
>>>> - Due to the way we set things up above, we don't install Grub
>>>> completely, just our grub configuration file. So we need to copy
>>>> over some of the other Grub stuff that's already there:
>>>> $ mkdir -p /mnt/guix/boot/grub
>>>> $ cp -r /boot/grub/* /mnt/guix/boot/grub/
>>>> 
>>>> - Now initialize the Guix installation:
>>>> $ guix system init guix-config.scm /mnt/guix
>>>> 
>>>> - Ok, power it down!
>>>> - Now from the linode console, select boot and select "Guix"
>>>> 
>>>> - Once it boots, you should be able to log in via ssh! (The server
>>>> config will have changed though.)
>>>> 
>>>> - Be sure to set your password and root's password.
>>>> 
>>>> - Horray! At this point you can shut down the server, delete the
>>>> Debian disk, and resize the Guix to the rest of the size.
>>>> Congratulations!
>>>> 
>>>> BTW, if you save it as a disk image right at this point, you'll have an
>>>> easy time spinning up new Guix images!
>>>> 
>>>> Let me know if this guide helps you!
>>> 
>>> --
>>> GPG Key ID: 7BC158ED
>>> Use `gpg --search-keys lambdatronic' to find me
>>> Protect yourself from surveillance: https://emailselfdefense.fsf.org
>>> =======================================================================
>>> () ascii ribbon campaign - against html e-mail
>>> /\ www.asciiribbon.org - against proprietary attachments
>>> 
>>> Please avoid sending me MS-Office attachments.
>>> See http://www.gnu.org/philosophy/no-word-attachments.html



      reply	other threads:[~2020-07-21 20:44 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-08 23:01 Installing Guix on Linode: a how-to Christopher Lemmer Webber
2020-07-08 23:56 ` Gary Johnson
2020-07-21 20:44   ` Christopher Lemmer Webber
2020-07-10 22:16 ` jbranso
2020-07-11  1:15 ` jbranso
2020-07-21 20:44   ` Christopher Lemmer Webber [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pn8oy4we.fsf@dustycloud.org \
    --to=cwebber@dustycloud.org \
    --cc=help-guix@gnu.org \
    --cc=jbranso@dismail.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.