2022-11-22 20:30:28 +01:00
|
|
|
== Introduction ==
|
2024-06-03 21:16:00 +02:00
|
|
|
This directory contains both the website in pages/ and build code to
|
|
|
|
easily build and deploy the GNU Boot website with very few commands.
|
2023-10-27 02:12:23 +02:00
|
|
|
|
2024-11-23 17:04:06 +01:00
|
|
|
== Dependencies ==
|
|
|
|
|
|
|
|
If you don't want to install Guix just to test the website, you will
|
|
|
|
need to install the following dependencies:
|
|
|
|
|
|
|
|
* autoconf
|
|
|
|
* automake
|
|
|
|
* coreutils
|
|
|
|
* gawk
|
|
|
|
* git
|
|
|
|
* graphviz
|
|
|
|
* grep
|
|
|
|
* gzip
|
|
|
|
* lighttpd
|
|
|
|
* make
|
|
|
|
* pandoc
|
|
|
|
* sed
|
|
|
|
* tar
|
|
|
|
|
|
|
|
$ ./autogen.sh
|
|
|
|
$ ./configure --disable-guix
|
|
|
|
$ make serve
|
|
|
|
|
|
|
|
And if you want to use Guix instead you only need the following
|
|
|
|
dependencies instead:
|
|
|
|
|
|
|
|
* autoconf
|
|
|
|
* automake
|
|
|
|
* coreutils
|
|
|
|
* guix
|
|
|
|
* make
|
|
|
|
* tar
|
|
|
|
|
2024-11-23 17:04:07 +01:00
|
|
|
For making sure that the build doesn't take days, you will also need
|
|
|
|
to make sure that bordeaux.guix.gnu.org is in the list of substitutes
|
|
|
|
(binary packages servers).
|
|
|
|
|
|
|
|
This is needed because some older Guix packages (like the ones on
|
|
|
|
Trisquel 11 or PureOS) don't have bordeaux enabled while installation
|
|
|
|
through the guix-install.sh instead have it enabled if you enable
|
|
|
|
substitutes (binary packages), and without it Guix will start to build
|
|
|
|
haskell (which is a dependency of pandoc) and this takes a few days to
|
|
|
|
complete on a ThinkPad X200.
|
|
|
|
|
|
|
|
If your Guix installation is recent enough it should already have it
|
|
|
|
and the following command should print 'bordeaux.guix.gnu.org is
|
|
|
|
enabled':
|
|
|
|
$ guix repl force-bordeaux-substitute.scm check
|
|
|
|
|
|
|
|
If instead you need to add it, it will print 'bordeaux.guix.gnu.org is
|
|
|
|
disabled'.
|
|
|
|
|
|
|
|
You can add bordeaux.guix.gnu.org with the following command:
|
|
|
|
$ guix pull
|
|
|
|
$ sudo guix archive --authorize < ~/.config/guix/current/share/guix/bordeaux.guix.gnu.org.pub
|
|
|
|
|
|
|
|
You will also need to make it possible for the build system to check
|
|
|
|
if it is enabled as some people might want to bulid everything
|
|
|
|
themselves for security reasons, so we don't use bordeaux if it is not
|
|
|
|
already authorized:
|
|
|
|
$ sudo chmod +r /etc/guix/acl
|
|
|
|
|
|
|
|
Once bordeaux is enabled you can use the following commands to build
|
|
|
|
the website:
|
2024-11-23 17:04:06 +01:00
|
|
|
$ ./autogen.sh
|
|
|
|
$ ./configure
|
|
|
|
$ make serve
|
2022-11-22 20:30:28 +01:00
|
|
|
|
2024-11-23 17:04:07 +01:00
|
|
|
== Testing the website ==
|
2024-11-23 17:04:06 +01:00
|
|
|
|
2023-08-17 01:25:02 +02:00
|
|
|
Here's how to deploy the website in a local webserver:
|
|
|
|
$ ./autogen.sh
|
|
|
|
$ ./configure
|
2024-05-19 13:12:53 +02:00
|
|
|
$ make serve
|
2023-08-17 01:25:02 +02:00
|
|
|
|
2024-11-23 17:04:06 +01:00
|
|
|
If you don't use Guix, remember to do ./configure --disable-guix instead.
|
|
|
|
|
2024-05-17 15:08:14 +02:00
|
|
|
Then you can point a browser to http://localhost:8086/software/gnuboot/web/ or
|
2023-12-23 07:55:23 +01:00
|
|
|
to http://localhost:PORT/software/gnuboot/web/ if you changed the port through
|
|
|
|
./configure options.
|
2022-11-22 21:17:24 +01:00
|
|
|
|
2024-11-23 17:04:06 +01:00
|
|
|
The GNU Boot website build system takes care of some of the
|
|
|
|
dependencies for you (for instance the static website generator that
|
|
|
|
is not packaged in any distributions) so you have less work to do to
|
|
|
|
install or use them on your side.
|
|
|
|
|
|
|
|
If you want to test your own modifications to the dependencies of this
|
|
|
|
build code, you either need to use the configure options to use
|
|
|
|
external repositories that have your modifications, or you could also
|
|
|
|
modify the build.sh script to use different git repositories and/or
|
|
|
|
revisions.
|
|
|
|
|
2023-10-15 16:38:44 +02:00
|
|
|
== Deployment on https://gnu.org/software/gnuboot/ ==
|
2022-11-22 21:17:24 +01:00
|
|
|
|
2023-10-15 16:38:44 +02:00
|
|
|
The deployment to https://gnu.org/software/gnuboot/ uses rsync. As
|
|
|
|
gnu.org machine is behind a firewall, so you need to workaround
|
|
|
|
that.
|
2022-12-20 18:04:32 +01:00
|
|
|
|
2023-10-15 16:38:44 +02:00
|
|
|
A way to do that is to get a shell account on fencepost.gnu.org, and
|
|
|
|
use SSH to forward the connection to gnu.org. This can be done with
|
|
|
|
something like that in your SSH configuration:
|
|
|
|
|
|
|
|
Host fencepost.gnu.org
|
2023-11-29 17:48:45 +01:00
|
|
|
User USERNAME
|
|
|
|
|
|
|
|
Host gnu.org
|
|
|
|
User wwwcvs
|
|
|
|
ProxyJump fencepost.gnu.org
|
2023-10-15 16:38:44 +02:00
|
|
|
|
2023-11-29 17:48:45 +01:00
|
|
|
In the example above you will need to adjust the fencepost USERNAME,
|
2023-10-15 16:38:44 +02:00
|
|
|
and modify it to suit your SSH setup if needed (for instance if you
|
2023-11-29 17:48:45 +01:00
|
|
|
use keys in different locations, etc). Of course, you'll have to get
|
|
|
|
access to gnu.org ssh server too.
|
2023-10-15 16:38:44 +02:00
|
|
|
|
|
|
|
See https://www.gnu.org/software/README.accounts.html for more details
|
|
|
|
about Fencepost accounts, the SSH fingerprints, etc.
|
|
|
|
|
|
|
|
For gnu.org, it's easier if you use an ED25519 key for gnu.org as I
|
|
|
|
have the fingerprints below. See [1] for other options.
|
|
|
|
|
2023-11-29 17:48:45 +01:00
|
|
|
To check that everything is setup you can then SSH into gnu.org:
|
2023-10-15 16:38:44 +02:00
|
|
|
$ ssh gnu.org
|
|
|
|
The authenticity of host '[127.0.0.1]:2224 ([127.0.0.1]:2224)' can't be established.
|
|
|
|
ED25519 key fingerprint is SHA256:pmCf0NrBzSSYfg6DdgmlMzPWZzGpXXcPEz6LP1+o5Jc.
|
|
|
|
This host key is known by the following other names/addresses:
|
|
|
|
~/.ssh/known_hosts:306: [127.0.0.1]:4444
|
|
|
|
Are you sure you want to continue connecting (yes/no/[fingerprint])?
|
|
|
|
|
|
|
|
You can then confirm by pasting the fingerprint like that[2]:
|
|
|
|
Are you sure you want to continue connecting (yes/no/[fingerprint])? SHA256:pmCf0NrBzSSYfg6DdgmlMzPWZzGpXXcPEz6LP1+o5Jc
|
|
|
|
Warning: Permanently added '[127.0.0.1]:2224' (ED25519) to the list of known hosts.
|
|
|
|
|
|
|
|
Note that it is normal for the connection to gnu.org to block at this
|
|
|
|
point. You can exit it with the Ctrl+D or Ctrl+C key combinations.
|
|
|
|
|
|
|
|
At this point everything is setup.
|
|
|
|
|
2024-06-03 21:16:00 +02:00
|
|
|
To deploy the website, use the following commands from the website
|
2023-11-29 17:48:45 +01:00
|
|
|
directory:
|
2023-10-15 16:38:44 +02:00
|
|
|
$ ./autogen.sh
|
|
|
|
$ ./configure
|
2024-05-19 13:12:53 +02:00
|
|
|
$ make publish
|
2023-10-15 16:38:44 +02:00
|
|
|
|
2023-11-16 15:47:35 +01:00
|
|
|
Then you can point a browser to https://gnu.org/software/gnuboot/web/
|
2023-10-15 16:38:44 +02:00
|
|
|
|
|
|
|
References:
|
|
|
|
-----------
|
|
|
|
[1]If you want to use RSA the easiest way is probably to contact the
|
|
|
|
FSF system administrator that will install your key on #fsfsys and
|
|
|
|
also ask that person for the server fingerprint. In that case it
|
|
|
|
would be a good idea to also contribute a patch to add the
|
|
|
|
fingerprint here.
|
|
|
|
[2]The 'SHA256:pmCf0NrBzSSYfg6DdgmlMzPWZzGpXXcPEz6LP1+o5Jc'
|
|
|
|
fingerprint was confirmed to me the 24 October 2023 on the #fsfsys
|
|
|
|
IRC channel on liberachat by Ian Kelling, a system administrator
|
|
|
|
that has access to the gnu.org machine: "18:07 < iank> i see that
|
|
|
|
SHA256:pmCf0NrBzSSYfg6DdgmlMzPWZzGpXXcPEz6LP1+o5Jc exists on the
|
|
|
|
server".
|
2022-11-22 21:17:24 +01:00
|
|
|
|
2023-03-22 03:31:32 +01:00
|
|
|
|
2022-11-22 20:30:28 +01:00
|
|
|
== License ==
|
2024-06-03 21:16:00 +02:00
|
|
|
This project is free software:
|
|
|
|
- For the files that are in website/pages and the the site.cfg file in
|
|
|
|
the same directory than this README see website/pages/license.md for
|
|
|
|
the license.
|
|
|
|
- For all the other files in the same directory than this README, you
|
|
|
|
can redistribute them and/or modify them under the terms of the GNU
|
|
|
|
General Public License as published by the Free Software Foundation,
|
|
|
|
either version 3 of the License, or (at your option) any later
|
|
|
|
version.
|