All the code required to generate the website of the 2026 edition of Pass the SALT conference.
apt install hugo
or visit https://gohugo.io/installation/linux/ and take the Extended edition.
- Clone previous year Github repo:
git clone https://github.com/pass-the-salt/2025.git - Rename the directory
2025to2026. - Suppress the
.gitsubdirectory in2026directory. - create on Github the
2026repository and type following commands in2026directory on your server:git init git *add README.md* git commit -m "first commit" git branch -M main git remote add origin [email protected]:pass-the-salt/test.git git push -u origin main
Some instructions or indications about the different directories and files:
cgi-bin/update.cgi: change all mentions of 2025 to 2026 (notably on path and filenames)config.toml: contains global parameters of the site (title, logo, lang, top and bottom menu content).data/en/homepage.yml: Yaml parameters to inject into homepage through Vex theme templates.themes/vex-hugo/layouts/: several directories containing all HTML templates of the Vex theme.themes/vex-hugo/layouts/index.html: structure of the homepage which calls HTML snippets located inpartialdirectory. If you want to add a section in the homepage, just add a call to a HTML snippet file and create the HTML file in thepartialdirectory.content/: Markdown content of individual pages.static/: images and files.public/: HTML pages generated by theHugoengine.
- run
hugo serverfrom the root of the repository to run the site locally in memory. Do it until you are satisfied by the result. - then, run
hugofrom the root of the repository to produce the static site pages inpublic/. - finally, commit and push changes to the Github repo:
git add * && git commit -m "your commit message" && git push origin main
-
[DNS] create
2026.pass-the-salt.orgDNS record on Gandi DNS :2026 10800 IN CNAME unicorn.pass-the-salt.org. -
[DNS] verify if the DNS resolution returns the correct IP of the server:
dig 2026.pass-the-salt.org -
[Apache] create the Apache definition of the website with the listening port set to TCP/80.
# cd /etc/apache2/sites-available/ # vim 2026.passthesalt.conf <VirtualHost *:80> ServerName 2026.pass-the-salt.org DocumentRoot /var/www/2026-passthesalt </VirtualHost> # mkdir /var/www/2026-passthesalt/ # chown www-data:www-data /var/www/2026-passthesalt/ # a2ensite 2026.passthesalt.conf # systemctl reload apache2 # service apache2 status -
[TLS] obtain the TLS certificate: Select the 2026 hostname on the list proposed by Certbot :
# certbot --apache Saving debug log to /var/log/letsencrypt/letsencrypt.log Which names would you like to activate HTTPS for? We recommend selecting either all domains, or all domains in a VirtualHost/server block. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: pass-the-salt.org [...]] 10: 2026.pass-the-salt.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 10 Requesting a certificate for 2026.pass-the-salt.org Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/2026.pass-the-salt.org/fullchain.pem Key is saved at: /etc/letsencrypt/live/2026.pass-the-salt.org/privkey.pem This certificate expires on 2026-03-09. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for 2026.pass-the-salt.org to /etc/apache2/sites-available/2026.passthesalt-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://2026.pass-the-salt.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[SRC] Initialize the website with an initial clone of the Github source repo of the website:
# cd /var/www # git clone https://github.com/pass-the-salt/2026.git Cloning into '2026'... remote: Enumerating objects: 282, done. remote: Counting objects: 100% (282/282), done. remote: Compressing objects: 100% (217/217), done. remote: Total 282 (delta 41), reused 282 (delta 41), pack-reused 0 (from 0) Receiving objects: 100% (282/282), 22.95 MiB | 8.85 MiB/s, done. Resolving deltas: 100% (41/41), done. Updating files: 100% (376/376), done. # chown www-data:www-data 2026 # git pull fatal: detected dubious ownership in repository at '/var/www/2026' To add an exception for this directory, call: git config --global --add safe.directory /var/www/2026 # git config --global --add safe.directory /var/www/2026 # git pull Already up to date. -
[Apache & Webhook] Add webhook CGI script section in the Apache config file & restart Apache:
# vim /etc/apache2/sites-enabled/2026.passthesalt-le-ssl.conf ajout des lignes : ScriptAlias "/cgi-bin/" "/var/www/2026/cgi-bin/" <Directory "/var/www/2026/cgi-bin/"> Options +ExecCGI AddHandler cgi-script .cgi </Directory> # chown -R www-data:www-data /var/www/2026 # service apache2 restart # service apache2 status -
[Webhook] Github webhook:
- Important: check if you have really changed any mentions to 2025 in favor of 2026 inside the
cgi-bin/update.cgias asked in the "Modify content" section. - [Github] create a new webhook on the GUI
Settings\Webhooksof the repository giving following payload:https://2026.pass-the-salt.org/cgi-bin/update.cgi - each push on the Github repo
2026will activate a webhook (URL:https://2026.pass-the-salt.org/cgi-bin/update.cgi). - script pointed by the webhook :
cgi-bin/update.cgifile. - how it works:
- check if updates exist on Github repo
2026. - if updates exist on the Github repo
2026:- the script fetchs them to
/var/www/2026directory on the server - rsync the content of the
public/sub directory of/var/www/2026directory with the content of the website located in/var/www/2026-passthesalt.
- the script fetchs them to
- check if updates exist on Github repo
- Important: check if you have really changed any mentions to 2025 in favor of 2026 inside the