diff options
34 files changed, 1397 insertions, 0 deletions
| diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1fb9ef5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +tmp/* diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..7e18c5a --- /dev/null +++ b/config.toml @@ -0,0 +1,17 @@ +# The URL the site will be built for +base_url = "http://rgoncalves.se" + +# Whether to automatically compile all Sass files in the sass directory +compile_sass = true + +# Whether to do syntax highlighting +# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola +highlight_code = true + +higlight_theme = "css" + +# Whether to build a search index to be used later on by a JavaScript library +build_search_index = false + +[extra] +# Put all your custom variables here diff --git a/content/services.md b/content/services.md new file mode 100644 index 0000000..83a8c87 --- /dev/null +++ b/content/services.md @@ -0,0 +1,23 @@ ++++ +title = "Services" +template = "directory-page.html" +date = 2020-11-10 ++++ + +I tend to host all my services for my personal use on my infrastructure. +By default everything run smoothly in an internal vpn powered by wireguard, +openbsd and pf. + +| service     | domain                    | available   | public(1)   | +| ----------- | ------------------------- | ----------- | ----------- | +| minecraft   | rgoncalves.se[:25565]     | yes         | yes         | +| factorio    | rgoncalves.se[:34197]     | yes         | yes         | +| git         | git.rgoncalves.se          | yes         | yes         | +| nextcloud   | cloud.rgoncalves.se       | no          | no          | +| sourcehut   | srht.rgoncalves.se        | no          | no          | + +> (1) : scream at *support[at]rgoncalves.se*  +> +> (*) : only "available" services are running. Consider this list as a todo list + + diff --git a/content/writeups/_index.md b/content/writeups/_index.md new file mode 100644 index 0000000..2a2974e --- /dev/null +++ b/content/writeups/_index.md @@ -0,0 +1,6 @@ ++++ +title = "Writeups" +sort_by = "date" +template = "directory.html" +page_template = "directory-page.html" ++++ diff --git a/content/writeups/archlinux_installation.md b/content/writeups/archlinux_installation.md new file mode 100644 index 0000000..4a54636 --- /dev/null +++ b/content/writeups/archlinux_installation.md @@ -0,0 +1,181 @@ ++++ +title = "Archlinux installation" +date = 2020-07-01 ++++ + +<section> + +## Introduction +Through my 5 years with different Archlinux installations, I made up my mind to  +document the one that fullfills my needs. The main goal is a minimal arch install +(like any other), including systemd and refind, without using any crappy ncurses +interface, and of course powered by btrfs (zfs an other day). + +Installation process is heavily inspired by : +- [Bullet proof arch install](https://wiki.archlinux.org/index.php/User:Altercation/Bullet_Proof_Arch_Install) +</section> + +<section> + +## Partitions +``` bash +$ sgdisk --clear \ +	--new=1:0:+550MiB --typecode=1:ef00 --change-name=1:EFI \ +	--new=2:0:+8GiB --typecode=2:8200 --change-name=2:cryptswap \ +	--new=3:0:0 --typecode=3:8300 --change-name=3:cryptsystem \ +	/dev/nvme0n1 +$ sgdisk --clear \ +	--new=1:0:1025GiB --typecode=1:8300 --change-name=1:wsd \ +/dev/sda +``` +</section> + +<section> + +## Encryption + +```bash +$ cryptsetup luksFormat --align-payload=8192 -s 256 -c aes-xts-plain64 /dev/disk/by-partlabel/cryptsystem +$ cryptsetup open /dev/disk/by-partlabel/cryptsystem system +$ cryptsetup open --type plain --key-file /dev/urandom /dev/disk/by-partlabel/cryptswap swap +$ mkswap -L swap /dev/mapper/swap +$ swapon -L swap +``` +</section> + +<section> + +## File format + +```bash +$ mkfs.fat -F32 -n EFI /dev/disk/by-partlabel/EFI +$ mkfs.ext4 -n wsd /dev/disk/by-partlabel/wsd +$ mkfs.btrfs --force --label system /dev/mapper/system +$ o=defaults,x-mount.mkdir +$ o_btrfs=$o,compress=lzo,ssd,noatime +$ mount -t btrfs LABEL=system /mnt +$ mount -t btrfs LABEL=system /mnt +$ btrfs subvolume create /mnt/root +$ btrfs subvolume create /mnt/home +$ btrfs subvolume create /mnt/snapshots +$ umount -R /mnt +$ mount -t btrfs -o subvol=root,$o_btrfs LABEL=system /mnt +$ mount -t btrfs -o subvol=home,$o_btrfs LABEL=system /mnt/home +$ mount -t btrfs -o subvol=snapshots,$o_btrfs LABEL=system /mnt/.snapshots +$ mkdir /mnt/wsd +$ mount LABEL=wsd /mnt/wsd +$ mkdir /mnt/boot +$ mount LABEL=EFI /mnt/boot +``` +</section> + +<section> +## Base install + +```bash +$ pacstrap /mnt basenvim +$ genfstab -L -p /mnt >> /mnt/etc/fstab +``` +Open up /mnt/etc/fstab (old, new): +```bash +LABEL=swap none swap defaults 0 0 +``` +```bash +/dev/mapper/cryptswap none swap sw 0 0 +``` +Open up /mnt/etc/crypttab, append at the end: +```bash +swap /dev/disk/by-partlabel/cryptswap /dev/urandom swap,offset=2048,cipher=aes-xts-plain64,size=256 +``` +</section> + +<section> + +## Base systemd + +The only way to have a non-biased opinion about systemd is to mix it yourself in your base install. + +```bash +$ systemd-nspawn -bD /mnt +$ localectl set-locale LANG=en_US.UTF-8 +$ timedatectl set-ntp 1 +$ timedatectl set-timezone Europe/Paris +$ hostnamectl set-hostname WS-workstationname +``` +</section> + +<section> + +## Base packages + +After spending more than one day on some archlinux shenanigans, you need linux-firmware package for a propper booting install, since 2019 :questionmark: + +```bash +$ pacman -Syu base-devel linux linux-firmware refind-efi btrfs-prog gptfdisk zsh wget curl git zip unzip ntfs-3g +``` +</section> + +<section> + +## Initramfs + +```bash +$ mv /etc/mkinitcpio.conf /etc/mkinitcpio.conf.orig +``` + Open up /etc/mkinitcpio.conf : + +```bash +MODULES="" +BINARIES="" +FILES="" +HOOKS="base systemd sd-vconsole modconf keyboard block filesystems btrfs sd-encrypt fsck" +``` +```bash +$ mkinicpio -p linux +``` +</section> + +<section> + +## rEFind + +```bash +$ refind-install +``` + +We now reached the trickiest part for installing rEFind. +Hit Ctrl+Alt+F2, exec this last code block, and then reach back TTy1 (nspawn doesn't allow deep disk modification / access). + +```bash +$ arch-chroot /mnt +$ refind-install +``` +Open up /boot/EFI/refind/refind.conf, or somewhere like that in the EFI dir : + +```config +timeout 5 +use_graphics_for windows +also_scan_dirs   +,@/ +``` +```config +btrfs filesystem show system +lsblk -fs +``` +Open up /boot/EFI/refind/refind.conf, or somewhere like that in the EFI dir : +```config +Add the following value if you are using an intel cpu : initrd=/intel-ucode.img +"Boot with standard options"  "rd.luks.name=*FILL IN UUID FROM PARTITION*=cryptsystem root=UUID=*UUID FROM encrypted root subvolume* rootflags=subvol=root initrd=/initramfs-linux.img" +``` +</section> + +<section> + +## Reboot + +```bash +$ passwd +$ poweroff +$ reboot +#finger crossed !! +``` +</section> diff --git a/content/writeups/homelab.md b/content/writeups/homelab.md new file mode 100644 index 0000000..3f325a9 --- /dev/null +++ b/content/writeups/homelab.md @@ -0,0 +1,59 @@ ++++ +title = "Making an homelab" +date = 2020-07-20 ++++ + +<section> + +## Motivations + +- Fun ! (We are hackers, aren't we ?) +- Private git hosting, syncthing, game servers and build servers .. +- Gaining more and more experiences +- Portfolio ;) ? +</section> + +<section> + +## Software +There are already plenty of ways already for managing servers and services, such as ansible, terraform, kubernetes + docker, .. +But why should I spend a LOT of time learning all these tools seperately (and together) ? +Right, they are used for professional needs. +But I got a keyboard. +Seriously. +Let's spend twice that time on making my own infrastructure scripts ! + +[Gitlab repository](https://gitlab.com/rgoncalves.se/infrastructure/) +</section> + +<section> +	 +## Enjoying a dell r710 rev II +	 +### Using an internal SSD + +As I decided to turn my r710 as a bare-metal server with OpenBSD, I had to do some hacks to get a working internal SSD. + +- Yes, I could have used the internal USB 2.0 port with a USB drive, but we are talking about a bare-metal server, not EsXi loaded in ram. +- Yes, using the internal SATA ports (as SATA 2) will reduce the speed allowed by my SSD, but it's a spare one, and the main goal is to get an **internal 2'5 drive** or replace that term with whatever you want. + + +</section> + +<section> + +## Building a rack + +(Never use pine wood.) + +I finally ended up using pine wood (here planks). +The key is to build a shelf intended to support at least 100Kg. +So don't use beams or other shitty structure, 4 four plains planks are enough. + +Below, before and after : + + + + + +</section> diff --git a/content/writeups/lockdown-chapter-2.md b/content/writeups/lockdown-chapter-2.md new file mode 100644 index 0000000..9e462c6 --- /dev/null +++ b/content/writeups/lockdown-chapter-2.md @@ -0,0 +1,88 @@ ++++ +title = "Lockdown chapter 2" +date = 2020-11-10 ++++ + +## ansible + +For this lockdown part. 2, it makes sense to run my internal servers and +infrastructure 24/7, so I can monitor the stress load and continously deploy +and provision my services between two stupid courses or useless java exercises. + +I was already using Ansible for small tasks such as updating everything at once, +or generating git/syncthing/ssh configuration. This time I refactored my use of +Ansible, using  +[best practices](https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html). + +Previously, my inventory was generated from an external YAML, but why should I +keep an additional layer of abstraction that adds nothing but complicated +infrastructure management ? Therefore, I refactored all my hosts, services and +meta details in the inventory file in YAML format. Yes, it does make my roles +and scripts more dependent to my specific inventory, but I can describe per-host +services and use dynamically loaded roles. + +## stack + +My main server running OpenBSD, using Docker is not possible. I have seen some +guys on Internet running Docker on an Alpine vm, but it adds two level of +abstraction, and I dont like cluttering my system with too many complex and +exotic setup when not needed. + +Therefore, I have my own Ansible roles and playbooks for deploying Alpine or +OpenBSD iso on my hypervisor. Each services/type of services will leave in a  +virtual machine, allowing me to backup disk images or making snapshots thanks +to qcow2. + +> After tinkering around with vmm, it gaves me poor results for realtime needs +> in virtual machine (such as minecraft, factorio, ...) due to a high number +> of cpu interruptions. +> +> I then went with freebsd and bhyve. + +``` ++-------------------+ +| domain controller | +| * openbsd         | +| * ^irtual         | ++-------------------+ +         ^ +         | +         v ++--------+----------+ +| lan router        | +| * ddwrt           | +| * physical        | ++--------+----------+ +         ^ +         | +         v ++--------+----------+ +| 24 ports switch   | +| * fiber ports     | ++--------+-+-+------+ +         ^ | | +         | | +--------------------------------------------------------------------+ +         | +-------------------------------------------------+                    | +         v                                                   v                    v ++--------+--------------------------------------+   +--------+---------+   +------+---------+ +|                                               |   | workstation      |   | laptop         | +| Dell poweredge R710                           |   | * archlinux      |   | * archlinux    | +| * 48GB ram                                    |   | * btrfs          |   |  # encrypted   | +| * freebsd /openbsd/ (ssd disk)                    | * encrypted      |   |                | +|                                               |   +------------------+   +----------------+ +| +------------+ +------------+ +-------------+ | +| | vm0        | | vm1        | | vm/n        | | +| | * alpine   | | * alpine   | | * openbsd \ | | +| |            | |            | |   alpine \  | | +| |            | |            | |   ...       | | +| +------------+ +------------+ +-------------+ | +|                                               | ++-----------------------------------------------+ +``` + +## grafana + +<img class="wide-3 shadow-1" src="/images/grafana_01.jpg"> + +Thanks to ansible, I wrote roles for deploying grafana on a virtual machines, +then for deploying *prometheus* and *node_exporter* on all my servers. diff --git a/content/writeups/wireguard_and_ipv6.md b/content/writeups/wireguard_and_ipv6.md new file mode 100644 index 0000000..8d00cd9 --- /dev/null +++ b/content/writeups/wireguard_and_ipv6.md @@ -0,0 +1,56 @@ ++++ +title = "Wireguard and IPV6" +date = 2020-08-26 ++++ + +<section> + +## Preambule + +I decided to connect all my services and servers behind my domain controller,  +which has a dedicated IPv4 and IPv6 address, and which basically host that  +website. This would allow me to remotely manage and enjoy my infrastructure  +when I'm away from my homelab. +</section> + +<section> + +## IPv6 journey + +When I first used WireGuard with my new OpenBSD vm on all my devices, i noticed  +that my some of my requests towards specific services were not working anymore. +For instance, I spent some time trying to reach : + +- gitlab.com +- github.com +- ungleich.ch + +In fact, I had hard times accessing these services only when I was connected to  +my WireGuard server (which has IPv4 and IPv6, with some default wireguard  +settings I carried with me for six months), and only through my system dns. + +In fact I figured out that it happened only when I was under an IPv6 capable  +router. + +### Solution ? + +Adding IPv6 subnet to server and clients configuration files. + +### Next ? + +Enable IPv6 routing in the domain controller, for a single-ip usage. +</section> + +<section> + +## *BSD routing +The default routing configuration does not allow my domain controller to reach  +the **ungleich's infrastructure and services**. + +```bash +echo "\!/sbin/route add -inet 185.203.112/24 185.203.114.1" >> /etc/hostname.vio1 +``` + +Then I want to be able to access IPv6 only services when I'm using my wireguard  +server (right now it only allows to force IPv4 to the client). +</section> @@ -0,0 +1,9 @@ +#!/bin/bash +# + +set -e + +zola build +rsync -r $(pwd)/public/ puffy@dcontroller:/var/www/htdocs/rgoncalves.se +rsync -r $(pwd)/httpd.conf root@dcontroller:/etc/httpd.conf +rm -r public diff --git a/httpd.conf b/httpd.conf new file mode 100644 index 0000000..c02b4f0 --- /dev/null +++ b/httpd.conf @@ -0,0 +1,22 @@ +server "rgoncalves.se" { +	listen on * port 80 +	root "/htdocs/rgoncalves.se" + +	location "/public/*" { +		directory auto index +	} + +	location "/semester_*/*" { +		directory auto index +	} +} + +types { +	text/css		css +	text/html		html htm +	text/plain		txt pgp +	image/gif		gif +	image/jpeg		jpeg jpg +	image/png		png +} + diff --git a/sass/style/cgit.sass b/sass/style/cgit.sass new file mode 100644 index 0000000..c79117e --- /dev/null +++ b/sass/style/cgit.sass @@ -0,0 +1,589 @@ + +/* sass ~~ /style/cgit.css */ + +@import "common.sass" + +div#cgit +	padding: 0em  +	margin: 0em  +	font-family: sans-serif  +	font-size: 10pt  +	color: $fg +	background: $bg  +	padding: 4px  + +a  +	color: $blue  +	text-decoration: none  +	&:hover  +		text-decoration: underline  +	&::selection +		color: $white +		background-color: $blue +	&.button  +		font-size: 80%  +		padding: 0em 0.5em  +	&.primary  +		font-size: 100%  +	&.secondary  +		font-size: 90%  +	&.branch-deco  +		margin: 0px 0.5em  +		padding: 0px 0.25em  +		background-color: $green +		border: solid 1px $black +	&.tag-annotated-deco  +		margin: 0px 0.5em  +		padding: 0px 0.25em  +		background-color: $yellow +		border: solid 1px $black  +	&.remote-deco  +		margin: 0px 0.5em  +		padding: 0px 0.25em  +		background-color: $grey_2 +		border: solid 1px $black +	&.deco  +		margin: 0px 0.5em  +		padding: 0px 0.25em  +		background-color: $red  +		border: solid 1px $black + +table  +	border-collapse: collapse  +	&.tabs  +		border-bottom: solid 3px $grey_2  +		border-collapse: collapse  +		margin-top: 2em  +		margin-bottom: 0px  +		width: 100%  +		td  +			padding: 0px 1em  +			vertical-align: bottom  +			a  +				padding: 2px 0.75em  +				color: $grey_3 +				font-size: 110%  +				&.active  +					color: $black +					background-color: $grey_2  +			&.form  +				text-align: right  +				form  +					padding-bottom: 2px  +					font-size: 90%  +					white-space: nowrap  +	&.list  +		width: 100%  +		border: none  +		border-collapse: collapse  +		tr  +			background: $white  +			&.logheader  +				background: $grey +			&:nth-child(even)  +				background: $white +			&:nth-child(odd)  +				background: $white +			&:hover  +				background: $grey +			&.nohover  +				background: $white +				&:hover  +					background: $white +			&.nohover-highlight  +				&:hover  +					&:nth-child(even) +						background: $white +					&:nth-child(odd)  +						background: $white +		th  +			font-weight: bold  +			padding: 0.1em 0.5em 0.05em 0.5em  +			vertical-align: baseline  +		td  +			border: none  +			padding: 0.1em 0.5em 0.1em 0.5em  +			&.commitgraph  +				font-family: monospace  +				white-space: pre  +				.column1  +					color: $red +				.column2  +					color: $green +				.column3  +					color: $red +				.column4  +					color: $blue +				.column5  +					color: #a0a  +				.column6  +					color: #0aa  +			&.logsubject  +				font-family: monospace  +				font-weight: bold  +			&.logmsg  +				font-family: monospace  +				white-space: pre  +				padding: 0 0.5em  +			a  +				color: black  +				&.ls-dir  +					font-weight: bold  +					color: $blue +				&:hover  +					color: $blue +			&.reposection  +				font-style: italic  +				color: $grey_3 +				padding-top: 1em +			&.sublevel-repo  +				padding-left: 1.5em  +	&.blob  +		margin-top: 0.5em  +		border-top: solid 1px $black +		td  +			&.lines  +				margin: 0  +				padding: 0 0 0 0.5em  +				vertical-align: top  +				color: black  +			&.linenumbers  +				margin: 0  +				padding: 0 0.5em 0 0.5em  +				vertical-align: top  +				text-align: right  +				border-right: 1px solid $grey_3 +		pre  +			padding: 0  +			margin: 0  +	&.bin-blob  +		margin-top: 0.5em  +		border: solid 1px black  +		th  +			font-family: monospace  +			white-space: pre  +			border: solid 1px $grey_3 +			padding: 0.5em 1em  +		td  +			font-family: monospace  +			white-space: pre  +			border-left: solid 1px $grey_3 +			padding: 0em 1em  +	&.nowrap  +		td  +			white-space: nowrap  +	&.commit-info  +		border-collapse: collapse  +		margin-top: 1.5em  +		th  +			text-align: left  +			font-weight: normal  +			padding: 0.1em 1em 0.1em 0.1em  +			vertical-align: top  +		td  +			font-weight: normal  +			padding: 0.1em 1em 0.1em 0.1em  +	&.diffstat  +		border-collapse: collapse  +		border: solid 1px $grey_2 +		background-color: $grey_1  +		th  +			font-weight: normal  +			text-align: left  +			text-decoration: underline  +			padding: 0.1em 1em 0.1em 0.1em  +			font-size: 100%  +		td  +			padding: 0.2em 0.2em 0.1em 0.1em  +			font-size: 100%  +			border: none  +			&.mode  +				white-space: nowrap  +			span  +				&.modechange  +					padding-left: 1em  +					color: $red  +			&.add  +				a  +					color: $green  +			&.del  +				a  +					color: $red  +			&.upd  +				a  +					color: $blue  +			&.graph  +				width: 500px  +				vertical-align: middle  +				table  +					border: none  +				td  +					padding: 0px  +					border: 0px  +					height: 7pt  +					&.add  +						background-color: $green +					&.rem  +						background-color: $red +	&.diff  +		width: 100%  +		td  +			font-family: monospace  +			white-space: pre  +			div  +				&.head  +					font-weight: bold  +					margin-top: 1em  +					color: $black +				&.hunk +					color: $blue +					&::selection +						background-color: $blue +				&.add +					color: $green +					&::selection +						background-color: $green +				&.del +					color: $red +					&::selection +						background-color: $red +	&.stats  +		border: solid 1px black  +		border-collapse: collapse  +		th  +			text-align: left  +			padding: 1px 0.5em  +			background-color: $grey_1  +			border: solid 1px $black +		td  +			text-align: right  +			padding: 1px 0.5em  +			border: solid 1px $black +			&.total  +				font-weight: bold  +				text-align: left  +			&.sum  +				color: $red +				font-weight: bold  +			&.left  +				text-align: left  +	&.vgraph  +		border-collapse: separate  +		border: solid 1px black  +		height: 200px  +		th  +			background-color: $grey +			font-weight: bold  +			border: solid 1px $white +			padding: 1px 0.5em  +		td  +			vertical-align: bottom  +			padding: 0px 10px  +		div  +			&.bar  +				background-color: $grey +	&.hgraph  +		border: solid 1px black  +		width: 800px  +		th  +			background-color: $grey +			font-weight: bold  +			border: solid 1px black  +			padding: 1px 0.5em  +		td  +			vertical-align: middle  +			padding: 2px 2px  +		div  +			&.bar  +				background-color: $grey +				height: 1em  +	&.ssdiff  +		width: 100%  +		td  +			font-size: 75%  +			font-family: monospace  +			white-space: pre  +			padding: 1px 4px 1px 4px  +			border-left: solid 1px $grey_1 +			border-right: solid 1px $grey_1 +			&.add  +				color: black  +				background: #cfc  +				min-width: 50%  +			&.add_dark  +				color: black  +				background: #aca  +				min-width: 50%  +			&.del  +				color: black  +				background: #fcc  +				min-width: 50%  +			&.del_dark  +				color: black  +				background: #caa  +				min-width: 50%  +			&.changed  +				color: black  +				background: #ffc  +				min-width: 50%  +			&.changed_dark  +				color: black  +				background: #cca  +				min-width: 50%  +			&.lineno  +				color: black  +				background: $grey_1  +				text-align: right  +				width: 3em  +				min-width: 3em  +			&.hunk  +				color: black  +				background: #ccf  +				border-top: solid 1px $grey_2 +				border-bottom: solid 1px $grey_2 +			&.head  +				border-top: solid 1px $grey_2 +				border-bottom: solid 1px $grey_2 +				div  +					&.head  +						font-weight: bold  +						color: black  +			&.foot  +				border-top: solid 1px $grey_2 +				border-left: none  +				border-right: none  +				border-bottom: none  +			&.space  +				border: none  +				div  +					min-height: 3em  +		span  +			&.add  +				background: #cfc  +				font-weight: bold  +			&.del  +				background: #fcc  +				font-weight: bold  + +table#header  +	width: 100%  +	margin-bottom: 1em  +	td  +		&.logo  +			width: 5em  +			vertical-align: top  +		&.main  +			font-size: 250%  +			padding-left: 10px  +			white-space: nowrap  +			a  +				color: #000  +		&.form  +			text-align: right  +			vertical-align: bottom  +			padding-right: 1em  +			padding-bottom: 2px  +			white-space: nowrap  +		&.sub  +			color: $grey_3 +			border-top: solid 1px $grey_1 +			padding-left: 10px  + +div  +	&.path  +		margin: 0px  +		padding: 5px 2em 2px 2em  +		color: #000  +		background-color: $grey_2 +	&.content  +		margin: 0px  +		padding: 2em  +		border-bottom: solid 3px $grey_1 +	&.error  +		color: red  +		font-weight: bold  +		margin: 1em 2em  +	&.cgit-panel  +		float: right  +		margin-top: 1.5em  +		table  +			border-collapse: collapse  +			border: solid 1px $grey_2 +			background-color: $grey +		th  +			text-align: center  +		td  +			padding: 0.25em 0.5em  +			&.label  +				padding-right: 0.5em  +			&.ctrl  +				padding-left: 0.5em  +	&.commit-subject  +		font-weight: bold  +		font-size: 125%  +		margin: 1.5em 0em 0.5em 0em  +		padding: 0em  +	&.commit-msg  +		white-space: pre  +		font-family: monospace  +	&.notes-header  +		font-weight: bold  +		padding-top: 1.5em  +	&.notes  +		white-space: pre  +		font-family: monospace  +		border: solid 1px #ee9  +		background-color: #ffd  +		padding: 0.3em 2em 0.3em 1em  +		float: left  +	&.notes-footer  +		clear: left  +	&.diffstat-header  +		font-weight: bold  +		padding-top: 1.5em  +	&.diffstat-summary  +		color: #888  +		padding-top: 0.5em  +	&.footer  +		margin-top: 0.5em  +		text-align: center  +		font-size: 80%  +		color: $grey_2  +		a  +			color: $grey_2  +			text-decoration: none  +			&:hover  +				text-decoration: underline  + +img  +	border: none  + +input#switch-btn  +	margin: 2px 0px 0px 0px  + +td#sidebar  +	input  +		&.txt  +			width: 100%  +			margin: 2px 0px 0px 0px  + +table#grid  +	margin: 0px  + +td#content  +	vertical-align: top  +	padding: 1em 2em 1em 1em  +	border: none  + +div#summary  +	vertical-align: top  +	margin-bottom: 1em  + +table#downloads  +	float: right  +	border-collapse: collapse  +	border: solid 1px $grey_3 +	margin-left: 0.5em  +	margin-bottom: 0.5em  +	th  +		background-color: $grey_2  + +div#blob  +	border: solid 1px $black + +td  +	&.ls-size  +		text-align: right  +		font-family: monospace  +		width: 10em  +	&.ls-mode  +		font-family: monospace  +		width: 10em  +	&.toplevel-repo  + +.sha1  +	font-family: monospace  +	font-size: 90%  + +.left  +	text-align: left  + +.right  +	text-align: right  + +ul  +	&.pager  +		list-style-type: none  +		text-align: center  +		margin: 1em 0em 0em 0em  +		padding: 0  +		li  +			display: inline-block  +			margin: 0.25em 0.5em  +		a  +			color: $grey_3 +		.current  +			font-weight: bold  + +span  +	&.age-mins  +		font-weight: bold  +		color: #080  +	&.age-hours  +		color: #080  +	&.age-days  +		color: #040  +	&.age-weeks  +		color: #444  +	&.age-months  +		color: $grey_3 +	&.age-years  +		color: #bbb  +	&.insertions  +		color: #080  +	&.deletions  +		color: #800  + +table#header td.form form, +table#header td.form input, +table#header td.form select  +	font-size: 90%  + +table.tabs a[href^="http://"]:after, table.tabs a[href^="https://"]:after  +	content: url(data:image/png ) +	opacity: 0.5  +	margin: 0 0 0 5px  + +table.tabs td.form input, +table.tabs td.form select  +	font-size: 90%  + +table.blob td.linenumbers a, +table.ssdiff td.lineno a  +	color: gray  +	text-align: right  +	text-decoration: none  + +table.blob td.linenumbers a:hover, +table.ssdiff td.lineno a:hover  +	color: black  + +div.commit-subject a.branch-deco, +div.commit-subject a.tag-annotated-deco, +div.commit-subject a.remote-deco, +div.commit-subject a.deco  +	margin-left: 1em  +	font-size: 75%  + +img +	width: 4em + +select, +input +	background-color: $accent +	color: $white +	border: .1em solid $black +	font-width: 2em + +div#summary +	white-space: pre diff --git a/sass/style/common.sass b/sass/style/common.sass new file mode 100644 index 0000000..a128cce --- /dev/null +++ b/sass/style/common.sass @@ -0,0 +1,32 @@ + +/* sass ~~ /style/common.css */ + +/* + * variables + */ + +$white:         #ffffff +$black:         #000000 +$blue:          #0077ff +$red:           #ff0000 +$yellow:        #ccaa00 +$green:         #33cc44 +$grey:          #eeeeee +$grey_1:        #cccccc +$grey_2:        #aaaaaa +$grey_3:        #888888 +$bg:            $white +$fg:            $black +$accent:        $blue +$font-path:     "/fonts" + +/* + * font + */ + +::selection +	color: $bg +	background-color: $fg + +* +	font-family: monospace, monospace diff --git a/sass/style/style.sass b/sass/style/style.sass new file mode 100644 index 0000000..e0afc79 --- /dev/null +++ b/sass/style/style.sass @@ -0,0 +1,98 @@ + +/* sass ~~ /style/style.css */ + +@import "common.sass" + +/* + * html native elements + */ + +* +	text-align: justify + +body +	background-color: $bg +	font-family: "monospace" +	margin: 0 1em 0 1em +	padding: 0 +	width: 80ch + +header nav +	border-bottom: solid 2px $grey_1 +	margin-bottom: 1em + +footer +	margin: 2em 0 2em 0 +	padding: .1em 0 .1em 0 +	background-color: $grey +	p +		text-align: center +		max-width: none + +h1 +	font-size: 3em + +h2 +	font-size: 2em +	margin: 1.2em 0 .6em 0 + +h3 +	font-size: 1.3em + +a +	background-color: $grey_1 +	padding: .1em +	color: $fg + +a[href^="http"] +	background: url(/images/external.svg) center right no-repeat $grey; +	padding-right: 1em + +article +	background-color: $grey +	margin: .1em 0 .1em 0 +	padding: .2em 0 .2em 0 + +p +	overflow: hidden + +blockquote +	min-width: 100% +	margin: 1em 0 1em 0 +	padding: .4em +	font-weight: 100 +	font-style: italic +	background-color: $grey +	border-left: solid .2em $grey_1 + +pre +	padding: 1em +	border-radius: .4em +	overflow: auto + +img +	max-width: 100% +	margin: 0 auto 0 auto + +time +	display: block +	margin-top: 1em + +table +	border-collapse: collapse +	min-width: 100% +	display: table +	th, td +		border: 0 $grey_1 solid +		padding: .4em 1em .4em 1em +		margin: 0 +		overflow: hidden +	tr:hover +		background-color: $grey + +@media only screen and (max-width: 100ch) +	body +		width: 90% +	nav * +		display: block +		margin: .2em 0 .2em 0 diff --git a/static/fonts/IBMPlexMono-Medium.woff b/static/fonts/IBMPlexMono-Medium.woffBinary files differ new file mode 100644 index 0000000..fc65a67 --- /dev/null +++ b/static/fonts/IBMPlexMono-Medium.woff diff --git a/static/fonts/Terminus.woff b/static/fonts/Terminus.woffBinary files differ new file mode 100644 index 0000000..fe98116 --- /dev/null +++ b/static/fonts/Terminus.woff diff --git a/static/images/external.svg b/static/images/external.svg new file mode 100644 index 0000000..137638e --- /dev/null +++ b/static/images/external.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12"> +	<path fill="#fff" stroke="#36c" d="M1.5 4.518h5.982V10.5H1.5z"/> +	<path fill="#36c" d="M5.765 1H11v5.39L9.427 7.937l-1.31-1.31L5.393 9.35l-2.69-2.688 2.81-2.808L4.2 2.544z"/> +	<path fill="#fff" d="M9.995 2.004l.022 4.885L8.2 5.07 5.32 7.95 4.09 6.723l2.882-2.88-1.85-1.852z"/> +</svg> diff --git a/static/images/grafana_01.jpg b/static/images/grafana_01.jpgBinary files differ new file mode 100644 index 0000000..77dec3f --- /dev/null +++ b/static/images/grafana_01.jpg diff --git a/static/images/homelab_front_01.jpg b/static/images/homelab_front_01.jpgBinary files differ new file mode 100644 index 0000000..aed5c63 --- /dev/null +++ b/static/images/homelab_front_01.jpg diff --git a/static/images/homelab_old_01.jpg b/static/images/homelab_old_01.jpgBinary files differ new file mode 100644 index 0000000..ba7733f --- /dev/null +++ b/static/images/homelab_old_01.jpg diff --git a/static/images/homelab_wip_01.jpg b/static/images/homelab_wip_01.jpgBinary files differ new file mode 100644 index 0000000..d572dec --- /dev/null +++ b/static/images/homelab_wip_01.jpg diff --git a/static/images/homelab_wip_02.jpg b/static/images/homelab_wip_02.jpgBinary files differ new file mode 100644 index 0000000..9fd3ce2 --- /dev/null +++ b/static/images/homelab_wip_02.jpg diff --git a/static/images/openbsd_drawing_01.jpg b/static/images/openbsd_drawing_01.jpgBinary files differ new file mode 100644 index 0000000..2af524c --- /dev/null +++ b/static/images/openbsd_drawing_01.jpg diff --git a/static/images/r710_and_switch.jpg b/static/images/r710_and_switch.jpgBinary files differ new file mode 100644 index 0000000..73b2beb --- /dev/null +++ b/static/images/r710_and_switch.jpg diff --git a/static/logo.jpg b/static/logo.jpgBinary files differ new file mode 100644 index 0000000..3fe00f2 --- /dev/null +++ b/static/logo.jpg diff --git a/static/logo.png b/static/logo.pngBinary files differ new file mode 100644 index 0000000..dd4a23e --- /dev/null +++ b/static/logo.png diff --git a/static/public/pgp.pub.txt b/static/public/pgp.pub.txt new file mode 100644 index 0000000..cecce64 --- /dev/null +++ b/static/public/pgp.pub.txt @@ -0,0 +1,110 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBF5zMOcBEADL3CTqwOUm6S9LlrBo72oOHn3RCpZH7VpogE/ynNID2lsajPG8 +Izsfuy2WuUOyS5rJaUwUa/eitR5fEAjJWeDaDXDuYZAE2J1ZwkFavXQAI01H7Efb +jkPUGiIXtnVWt70uifPCugYyIW4LzTLai5bxE8mrjTXVNq/R36trg+BKVim5QXLZ +mKytNjuUmQANZcgQpeNjW/nXrCsYRd0qpqdqVynEalPX2EZaFZGQYZ3rL+pXpR4e +PH5SmuC4Q5+HoD/qzLjtG+k78PzZj3x+hjC3hm+FRH+CrovYZVQOLshX7FkAfCS0 +u8n1mRoYODfzrZbrT462aAEaZEKd+5JMa3NwHdxTNgWP7oeQqAKztMeKXE+iJ3B6 +q3J5pmJfywxGCyGk7MJUaIF+kFo0qDVdT/Vt/rcR7flfKPug0UdXhAt0Ttpl450/ +fe3+hs1N8Ajix8RKIU5Gcvx4RFH8BdkY8AXa9N3pgqSqUoKAeYnWmY0cOWeNqeV4 +xsisaq2WBgLoo4FGqWzM9B6b3dFbXof4HHR5yimmgKd9B48JqWAOBP5+SccRqOLq +utV08rC8xEQ31IIHM1iIThqmVX1I5gwurcGiaE+wHqRc03zqKFIyIwi8lrfxF8If +JRpeuxT3gS57cBz5Y4FIzZYjEn6Suj9AemnvEPPZ474tnDD5KpKqjE5FNQARAQAB +tCFyb21haW4gKEhlbGxvKSA8bWVAcmdvbmNhbHZlcy5zZT6JAkwEEwEKADYWIQSM +fW2vFPgUJkDOg+r4XNAttBnWjAUCXnMw5wIbAQQLCQgHBBUKCQgFFgIDAQACHgEC +F4AACgkQ+FzQLbQZ1owjvA/9E7z9HoTQMOlBS5Tg1axYouwH4+XZ7QDr/H3/ccTY +8HBaLpF5KAGcaV7C+WzbZf5zPoP4avcNFlir7ncm+8MJUDXp8XGSlFRWuQ/MLsVU +or81jOHCl0CXSdS1iUe0tNt9Mge9QfB1W7+au3byOCXj3KK7yfOBCYNbubWwoZq4 +wyPOg1zhsi3dSbKgnclS+sDyyJdZv+dzG5ZLuBbiA5qWchVTdKfGIYdft5C/i9c5 +V3FkFlCEyeQ6gYCoN22IHvhoIBXmORbYzzQwzXWOf/0ViXRqrrbViQ1WgIP6blWP +pboko3ZaExCCVLCZ0W58wK1xQafK5uURmbh4NhL6guaOq285r9IOIRTb5tadkkR0 +qlDz36F4Pr1tSiQ+RvQoRMm11Zo84pr6wCmXn+jRLc4gS1JopeYhdFeE/TFFl/yM +J+S5T6KivUedWGB3jN52TC9F4acs3rVwcJHhxJtaE7zvWNnZh2ujEbbX41wk/g9/ +ZFJaC+2XLyw3Vgn78h7uzK1+3LrWi1e12qqeyITSviedDA3aFDhzbjlzI7wdjZhI +2XWHcGX1gxQEqx5XzOCaP76lj1E6tGsAB0140nggRhoqGbdYR2Ufh34AVkoSvQEA +j2A5aDWIc94neWfRyMHfuW2PFb2hFNtJSSajlxtEsg1/zKP8lRxw2IaHfeMpuNG1 +yyG5Ag0EXnMyQQEQAOJJ016xc91HLpJxd4WsK8BmCTLMmNZf4xfJOSaCCEC7Uh7r +7fybIsFWJUf/fMf1seBZ0IB2mznaKp6fE78gU1s/wKjQl6yYxt2dmXvoOpCTCb1B +Zqu2lN54h2+OvRyq/UPXxOCKVZfMqrc6C/eoyl4VorUfBJrhg9VVbciqIOnO11uJ +UMQZQsYr7uvdFFJYyePI4FyjCytUPnnH38IIHlyL8YYf8mo3TJJGkohuAw/a87GY +AIFpxk39obIuLbHpQAKSoQKlPCjEjGD/c9dSLmkl/16XnWyMuyIcv6Vw2ek2f0TL +Bj5Jo26YXwU7+JJL4N3RgEAW6XLEa5Ylirpskt6qjHjlyNfxtnefrVMOL4k/hANQ +MlBdnE+5oONUlXcuVgSsCGtuMsV2P8dI5Hw3Cr9YkFPzkpJhLLdwPcCLvZz5DM7C +xrv6+TJEPqtVN3V9ZupRUprS+8E61XfdTZX1CYNytYTHGpb7qJ2wsvPST/GvZbui +Aa6CrwJb7RkCkoaD0kf5iIDpCmtMZtESivqrbC7J1KONCXL/uK6G5aW/Vr8Gqnvl +B5vZLb7GxJpYISkmGtegHAGOCd3ecGUJf8S3DLHyghskt2JKsUszaWqHmTsYYLQ4 +QB0ihz3ikoRMs9nd3k+CZwI8BMNKQE0l0rQCxlXhjCGwoibxNFA+vFq4kXcHABEB +AAGJBGwEGAEKACAWIQSMfW2vFPgUJkDOg+r4XNAttBnWjAUCXnMyQQIbAgJACRD4 +XNAttBnWjMF0IAQZAQoAHRYhBNb92WprxEfuG/J00SQUnphu2qDFBQJeczJBAAoJ +ECQUnphu2qDFARAQAK0Qs5KGWE1Ark8d0efTr8zQExebx8QJjsIXhdDxy/xJSt1l +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 +jMkprlyrNuAcrXbn0AsZnS79DA== +=2hJ5 +-----END PGP PUBLIC KEY BLOCK----- + @@ -0,0 +1 @@ +#!/bin/bash diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..0795d4a --- /dev/null +++ b/templates/base.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html lang="en"> +	<head> +		<title>rgoncalves.se</title> +		<meta charset="utf-8"> +		<meta name="viewport" content="width=device-width, initial-scale=1.0 minimum-scale=1"> +		<link rel="icon" type="image/png" href="logo.png"> +		<link href="/style/style.css" rel="stylesheet" type="text/css"> +	</head> +	<body> +		<header> +			{% if title is defined %} +				<h1>{{ title }}</h1> +			{% else %} +				<h1>rgoncalves.se</h1> +			{% endif %} +			<nav> +				  +				<a href="/">home</a> +				<a href="/writeups/">writeups</a> +				<a href="/services/">services</a> +				<a href="/public">public</a> +				<a href="http://git.rgoncalves.se">git</a> +				<a href="https:/gitlab.com/rgoncalves.se/infrastructure/">infrastructure</a> +			</nav> +		</header> + +		{% block content %} {% endblock %} + +		<footer class="delimiter"> +			<p>Proudly powered by <a target="_blank" href="https://ungleich.ch">ungleich.ch</a>'s servers and dam !</p> +			<p>Zero carbon - 100% renewable energy</p> +		</footer> +	</body> +</html> diff --git a/templates/directory-page.html b/templates/directory-page.html new file mode 100644 index 0000000..5b2c5d5 --- /dev/null +++ b/templates/directory-page.html @@ -0,0 +1,7 @@ +{% extends "base.html" %} + +{% block content %} + +{{ page.content | safe }} + +{% endblock content %} diff --git a/templates/directory.html b/templates/directory.html new file mode 100644 index 0000000..c4130fb --- /dev/null +++ b/templates/directory.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} + +{% block content %} +{% for page in section.pages %} +<article> +	 {{ page.date }} : <a href="{{ page.permalink | safe }}">{{ page.title }}</a> +</article> +{% endfor %} +{% endblock content %} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..87812ea --- /dev/null +++ b/templates/index.html @@ -0,0 +1,30 @@ +{% extends "base.html" %} + +{% block content %} + +<p> +	My name is Romain GONCALVES, usually rgoncalves/binary550 on git. +</p> +<p> +Actually studying computer science, I would like to progress in infrastructure and administration of  +Unix based systems. +Running my machines on Archlinux and OpenBSD, I deploy and maintain my internal servers and services  +for my own use. Moreover, I develop my own solutions or set of scripts. +</p> + +<h2>crypto</h2> +<ul> +	<li><code>pgp</code> <a href="public/pgp.pub.txt">8C7D 6DAF 14F8 1426 40CE  83EA F85C D02D B419 D68C</a> +</ul> + +<h2>contact</h2> +<nav> +	<a target="_blank" href="https://github.com/binary550">github</a> +	<a target="_blank" href="https://gitlab.com/binary550">gitlab</a> +	<a target="_blank" href="https://artstation.com/binary550">artstation</a> +	<a target="_blank" href="https://matrix.to/#/@romaingoncalves:ungleich.ch">matrix</a> +	<a target="_blank" href="https://www.linkedin.com/in/rgoncalvesse/">linkedin</a> +	<a href="mailto:contact@rgoncalves.se">contact@rgoncalves.se</a> +</nav> + +{% endblock content %} diff --git a/templates/robots.txt b/templates/robots.txt new file mode 100644 index 0000000..c6742d8 --- /dev/null +++ b/templates/robots.txt @@ -0,0 +1,2 @@ +User-Agent: * +Disallow: / diff --git a/templates/sitemap.xml b/templates/sitemap.xml new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/templates/sitemap.xml @@ -0,0 +1 @@ + diff --git a/update_images b/update_images new file mode 100755 index 0000000..fd8f8fa --- /dev/null +++ b/update_images @@ -0,0 +1,15 @@ +#!/bin/bash +# +# Update pictures, +# recursively remove metadata and decrease file size, +# for each pictures + +IMG_DIR="static/images" +IMG_LIST=$(find ${IMG_DIR}) +IMG_MAX_SIZE="250k" + +for img in ${IMG_LIST[@]}; do +	jhead -purejpg "${img}" +	jpegoptim --size "${IMG_MAX_SIZE}" "${img}" +done + |