Merge branch 'release/0.7.0'

master
Nathan Steel 3 years ago
commit acf8310b40

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Oops, something went wrong">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>404!</title>
</head>
<body>
<header>
<h1>Error 404</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<h2>You broke the internet</h2>
<p>This page probably doesn't exist, but if it's supposed to a developer will be looking into why it's borked.</p>
<p>Use the navigation above, or below to head to somewhere a little more, functional</p>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/guide-to-server-hosting.php">Guide to server hosting</a></li>
<li><a href="/projects.html">My projects</a></li>
</ul>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="https://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -18,10 +18,25 @@ semantic, accessable, and snappy.
- About Me
- OneBag
- Design Choices (for website)
- Recipes
- A blog with RSS
## Release Notes
### v0.7.0
- Add bulk blog articles (mainly server guide)
- Add styling (e.g. tables) used in articles
- Add 404 page
- Add sitemap.xml
- Remove noreferrer from links
### v0.6.0
- Add blog
- Update URLS
- Update list styling
### v0.5.0
- Update styling

@ -0,0 +1,65 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="To avoid using an IP, this guide will help you point your domain name at your server.">
<meta name="keywords" content="Blog, articles, news, DNS, domain, server">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Link your domain name to your server</title>
</head>
<body>
<header>
<h1>Link your domain name to your server</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">To avoid needing to remember an IP, this guide will help to link your domain name to your server.</p>
<h2>Login to your domain name registrar</h2>
<p>Login to the registrar, and select the domain name you want to point at your server.</p>
<h2>Find the section for DNS</h2>
<p>The domain name should have a section named, "DNS", "Custom DNS records", or something similar to this. Find, and open it, there should be a bunch of boxes and an option to add a new record</p>
<h2>Add the A record</h2>
<p>There will likely be many option for adding records, but all we need is to add a singular A record</p>
<p>Find the box that allows you to "Add a new record" and input the below, changing <IP> and <DOMAIN> with your IP address, and domain name</p>
<pre><code></code></pre>
<p>If there are not multiple boxes, but instead a single box to input your record into, this will be what you add instead</p>
<pre><code></code></pre>
<h2>Wait for propagation</h2>
<p>Now there's a bit of a waiting game, as you need to wait for the new DNS record to propagate (get updated) for all nameservers. This can be anywhere from instantly to 72 hours, but typically takes an hour or two.</p>
<h3>Check your domain has propagated</h3>
<p>Pinging the domain name will let you know when the IP has propagated, as when the ping command shows your IP, you're all set</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, guide, php, nginx">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Adding PHP to NGINX server</title>
</head>
<body>
<header>
<h1>Adding PHP to NGINX server</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">PHP is one of the highest used programming languages for websites, and it allows you to add practically any functionality you'd ever want to your sites.</p>
<h2>Install</h2>
<pre><code>sudo apt install php-fpm php-mysql</code></pre>
<h2>Um, I forgor</h2>
<pre><code>sudo nano /etc/php/<VERSION>/fpm/php.ini</code></pre>
<p>Comment the cgi.fix_pathinfo line, to look like below</p>
<pre><code>#set cgi.fix_pathinfo = 0</code></pre>
<h2>Add to Website's NGINX conf</h2>
<p>For each website you want to use php, you'll need to edit the confige file</p>
<pre><code>sudo vim /etc/nginx/sites-available/<WEBSITE></code></pre>
<p>The following code needs adding within the XXX block</p>
<pre><code>location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php<VERSION>-fpm.sock;
}</pre></code>
<p>This will use nginx's fastcgi-php.conf snippet which is more secure by deafult than many other php/nginx configs because it 404s if the files doesn't exist. Read Neal Poole's<a href="https://nealpoole.com/blog/2011/04/setting-up-php-fastcgi-and-nginx-dont-trust-the-tutorials-check-your-configuration/" target="_blank" rel="noopener">Don't trust the tutorials</a> for more info.</p>
<h2>Reload NGINX</h2>
<pre><code>sudo systemctl reload nginx</code></pre>
<h2>Test it works</h2>
<p>Create a PHP file e.g. <strong>filename.php</strong> in the website's directory, and add the snippet below into it</p>
<pre><code><?php phpinfo(); ?></code></pre>
<p>Go to that webpage in your browser e.g. <strong>domain.co.uk/filename.php</strong>, and if php is working you should see a dump of your PHP's version, headers, etc.</p>
<h2>Make nginx use index.php as homepage/root</h2>
<p>Now we'll set nginx to load up index.php as the root of the website, if it exists. Open the site's config with an editor</p>
<pre><code>vim /etc/nginx/sites-available/<WEBSITE></code></pre>
<p>Change the index line to rad as below. This will then tell the server to load index.php, and if it doesn't exists, load index.html in it's stead</p>
<pre><code>index index.php index.html</code><pre>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, guide, mysql, mariadb, database">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Adminer Setup</title>
</head>
<body>
<header>
<h1>Adminer Setup</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>Adminer is a simple front-end for your database server that can be access through the browser</p>
<h2>Pre-Requirements</h2>
<p>To run adminer, you'll need a webserver with php set up. Thankfully I'm a great guy, and have written about these topics before.</p>
<ul>
<li><a href="/blog/nginx-install.html">Nginx Webserver Setup</a></li>
<li><a href="/blog/add-php-to-nginx.html">PHP setup for NGINX</a></li>
</ul>
<h2>Download the latest release</h2>
<p>This will download the latest release to your default web directory, this can be changed, by altering the path following <strong>-O</strong>.</p>
<pre><code>wget "http://www.adminer.org/latest.php" -O /var/www/html/adminer.php</code></pre>
<h2>Set permissions for your web server</h2>
<pre><code>chown -R www-data:www-data /var/www/html/adminer.php
chmod 755 /var/www/html/adminer.php</code></pre>
<h2>Access it</h2>
<p>Head to your <WEBSITE/IP>/adminer.php, and you should load into the adminer login. Using your mysql/mariaDB credentials, you can then login, and use the GUI to manage your database(s)</p>
<h2>Make it a directory, not a file</h2>
<p>Instead of accessing /adminer.php?<ARGUMENTS>, we can make it look like /adminer/<ARGUMENTS></p>
<pre><code>location /adminer/ {
root /var/www/html ;
try_files $uri $uri/ /adminer/index.php/$is_args$args ;
}</code></pre>
<h2>Password Protect</h2>
<p>An additional level of security, just in case. Using Htaccess, any file, or directory can be password protected</p>
<pre><code>sudo apt install apache2-utils
htpasswd -c /home/<USER>/.htpasswd admin</code></pre>
<h3>Add to location</h3>
<p>Add the location of the auth file to the adminer location block</p>
<pre><code>auth_basic "Adminer" ;
auth_basic_user_file /home/<USER>/.htpasswd ;</code></pre>
<p>They block should look like below</p>
<pre><code>location /adminer/ {
auth_basic "Adminer" ;
auth_basic_user_file /home/<USER>/.htpasswd ;
root /var/www/html ;
try_files $uri $uri/ /adminer/index.php/$is_args$args ;
}</code></pre>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, guide, mysql, mariadb, database">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Backup MySQL/MariaDB</title>
</head>
<body>
<header>
<h1>Backup MySQL/MariaDB</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>A database if a huge part of many projects, services, and servers. If something goes wrong, data is wrongly updated/deleted there could be many problems. Thankfully we can make backups to make sure our data is safe.</p>
<h2>Manual Backup of a DB</h2>
<h2>Backup all DBs</h2>
<p>This follows on from the manual backup, so assumes you have the backup directory created</p>
<h2>Automate hourly backups</h2>
<h2>My backup script</h2>
<p>I follow the 3-2-1 backup approach, so I want to keep the files in multiple locations</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,113 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Backups are fantastic, and can save hours upon hours of work if they're done. So we want to make sure they're done, and PCs are good with that, with automation.">
<meta name="keywords" content="Blog, articles, template">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Automating Backups with Cronjobs</title>
</head>
<body>
<header>
<h1>Automating Backups with Cronjobs</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">Backups are wonderful things that save hours upon hours of work, and stress, so long as they're actually made in the first place!</p>
<p>Automatically taking backups allows for peace of mind that your work won't be lost forever whilst you go about your normal workflow..</p>
<h2>Create a backup script</h2>
<p>You can just call rsync, etc. in cron, but I recommend making a backup script (or a few) for each specific type of backup you want to make.</p>
<p>Create the file where-ever you want to keep them, for the sake of this, it'll be a scripts directory in your home directory</p>
<pre><code>vim ~/scripts/backup_script.sh</code></pre>
<p>And add whatever your backup scripts wants to do. If you've no idea, check out my <a href="/blog/backup-with-rsync.html" target="_blank">rsync</a>, and <a href="/blog/backup-with-rdiff.html" target="_blank">rdiff</a> articles first.</p>
<pre><code>rdiff-backup $DIRECTORY_TO_BACKUP $DIRECTORY_TO_BACKUP_TO
rdiff-backup --force --remove-older-than 2W $DIRECTORY_TO_BACKUP_TO</code></pre>
<p>The above example will backup a directory, and remove any changes from 2 weeks ago.</p>
<p>Now make the script executable</p>
<pre><code>chmod +x ~/scripts/backup_script.sh</code></pre>
<h2>Add a cronjob</h2>
<p>Now for the automation part. Using cron we can set this script to run at many time variations. I recommend <a href="https://crontab.guru/" target="_blank" rel="noopener">crontab guru</a> to learn more about the expressions used for cron.</p>
<p>Edit the cron table (crontab)</p>
<pre><code>crontab -e</code></pre>
<p>And add the following</p>
<pre><code>* */2 * * * /home/$USERNAME/scripts/backup_script.sh</code></pre>
<p>This will run the backup script every 2 hours, every day</p>
<h2>An advanced backup script</h2>
<p>An advantage of using a script for backups, is that it allows for more intricate functionality, you may not need to use this functionality, but it's greatly useful.</p>
<p>The script below is something I wrote to backup my home directories for each of my servers. It's used to make hourly backups, and send these backups to a remote server daily at midnight.</p>
<pre><code>#!/bin/bash
# Set locations to backup/backup to from the flags
while getopts s:d:b:r:R:n: flag
do
case "${flag}" in
d) DATA=${OPTARG};;
b) BACKUPDIR=${OPTARG};;
r) REMOTE=${OPTARG};;
R) REMOTEBACKUP=${OPTARG};;
n) NOW=${OPTARG};;
esac
done
# If the backup directory doesn't exist, make it
mkdir -p $BACKUPDIR
# Incremental backup of the directory locally
rdiff-backup $DATA $BACKUPDIR
# Don't keep changes from over 1W ago
rdiff-backup --force --remove-older-than 1W $BACKUPDIR
# Backup to remote
# Get the hour/minute time
TIME=$(date +%H%M)
# If it's a midnight backup, or a manual backup with -n 1 flag set
if [ "$TIME" = 0000 ] || [ "$NOW" = 1 ]
then
# Create the remote directory for backup if it doesn't exist
ssh $REMOTE mkdir -p $REMOTEBACKUP
# Copy the backup to the remote location
# -e ssh makes it secure
rsync -azh -e ssh \
--delete \
$BACKUPDIR \
$REMOTE:$REMOTEBACKUP
fi
</code></pre>
<p>Which is called in the crontab like so</p>
<pre><code># Hourly rdiff-backup of $DIRECTORY_TO_BACKUP
0 */1 * * * $SCRIPT_LOCATION -d $DIRECTORY_TO_BACKUP -b $LOCATION_TO_SAVE_BACKUP -r $EXTERNAL_SERVER_SSH -R $EXTERNAL_SERVER_BACKUP_LOCATION</code></pre>
<p>This script can easily be used for many different directories, on each server without needing to change the script itself. All that's needed is to change the cronjob, and/or add another cronjob changing the values it takes.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, template">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Backup with rdiff-backup</title>
</head>
<body>
<header>
<h1>Backup with rdiff-backup</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">Like rsync, rdiff-backup is a tool used for incremental backups. Unlike rsync however, rdiff keeps the most-recent file change, along with any previous changes, deletions, etc.</p>
<h2>Install</h2>
<pre><code>sudo apt install rdiff-backup</code></pre>
<h2>Backup</h2>
<pre><code>rdiff-backup $dir $backup</code></pre>
<h2>Restore</h2>
<pre><code>rdiff-backup -r 2D $backup $restore_dir</code></pre>
<h2>Advanced</h2>
<h3>Only keep backups for a certain time period</h3>
<pre><code>rdiff-backup --force --remove-older-than 2M $backup</code></pre>
<p>This will remove all backups older than 2 months from $backup.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, template, rsync, backup">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Backup with rsync</title>
</head>
<body>
<header>
<h1>Backup with rsync</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">Rsync is a program that allows for incremental backups. This means that rsync will not create an additional copy of the data when backing up, it will only backup changes to the files/directories, saving bandwidth and storage space.</p>
<h2>Installation</h2>
<pre><code>sudo apt install rsync</code></pre>
<h2>Backup</h2>
<pre><code>rsync -azh $ORIGINAL $BACKUP</code></pre>
<p>Replace $ORIGINAL with the file/directory to backup, and $BACKUP with the location for the backup to reside.</p>
<p>The $BACKUP destination must be a blank directory, an rsync directory, or not currently exist.</p>
<h3>Remote rsync backup</h3>
<p>If you need to rsync from one PC to another, it's essential the same command, but with the additional layer of ssh</p>
<pre><code>rsync -azh -e ssh $ORIGINAL $BACKUP</code></pre>
<p>$BACKUP here will be an ssh connection pointed to a location, much like when using scp, so the command will look like</p>
<pre><code>rsync -azh -e ssh $ORIGINAL $USER@$HOST:$LOCATION</code></pre>
<p>Replacing $USER and $HOST with the username and hostname/IP for the server</p>
<h2>Restore</h2>
<p>A restore in rsync doesn't require any rsync code per-se, as you can just copy individual files from the backup location to the restore location.</p>
<p>Alternatively to restore the entire directory, keeping files that haven't changes, and those that have to the time of the last backup, rsync can do that as below</p>
<pre><code>rsync -auv $BACKUP $RESTORE</code></pre>
<h3>Over the internet</h3>
<p>Like with backups, these restores can be done over the network/internet too</p>
<pre><code>rsync -auv $USER@$HOST:$BACKUP $RESTORE</code></pre>
<h2>Notes/Advanced</h2>
<pre><code>
-r recursive. All files/directories in the path will be backed up
-a archive mode. Recursive, but with file permissions, symlinks, etc retained.
-z compress
-b backups
-R relative
-u update - copy only changed files
-P progress
-c compress
-p preserve permissions
-h human readable. Make the output readible by humans
</code></pre>
<h2>Downsides</h2>
<p>Rsync only keeps one copy of the data, and doesn't keep the changes that were made, making it impossible* to restore a file's contents from the day previous. If this is what you're after, look at <a href="/blog/backup-with-rdiff.html">rdiff-backup</a>.</p>
<p>* Not impossible, as you <em>can</em> set rsync to do this, but it requires a bit of scripting, and isn't as easy as just running the program</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Some open thoughts about how this blog may/may not change">
<meta name="keywords" content="Blog, articles, thoughts">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Blog Thoughts</title>
</head>
<body>
<header>
<h1>Blog Thoughts</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">I've been having some thoughts about potential changes to the blog, including layouts, moving existing content, and such.</p>
<h2>Seperate article types?</h2>
<p>This was something I thought about when initially adding this blog, "what do I want on the blog". It was a thought due to wanting to add different variations of post, e.g. Traditional Article, Guide/Tutorial, Reviews, Thoughts (think twitter length posts), Recipes, etc. and I wondered how to do them. Did I want to have seperate /guides/, /blog/, /recipes/ sections, or lump them all together?</p>
<p>The easiest option was just to lump everything together into /blog/, and then start writing what I wanted to put onto the site, and slowly get some content in. I'm glad I did this as it's tricked my little pea-brain into getting at least some content up, but most of it sits in guide territory, and that makes it more difficult to find my actual articles/thoughts (very few as of now, but eh).</p>
<p>I have two trains of though in this matter. Which are: </p>
<ul>
<li>Migrate content to new categories on the site (/guides/, /blog/, /recipes/)</li>
<li>Add tags (like on the <a href="/projects.html">projects</a>, and <a href="/cv.html">CV</a> pages</li>
<li>Add tags v.2. By this I mean, potentially change the bullet point colour to match the article types together (in concept I like this)</li>
</ul>
<p>If I do the former here, I can 301 (into 302 if 100%) the articles to their new locations, but I'm unsure for now, so experimentation is in order.</p>
<h2>Pagination</h2>
<p>I honestly haven't put any thought into this at all, but as the blog page gets slowly filled with article links, I feel it's a little much for one page. If for instance I write 10,000 articles, that's a lot of searching, and more importantly a lot of page size that doesn't need to exist.</p>
<p>I am not using a blogging platform, nor a server-side language, or even a framework like <a href="https://gohugo.io/" target="_blank" rel="noopener">Hugo</a> currently, each page is entirely hand-written, so pagination will be a pain in the backside. For this reason it's on this list, as I need to figure out a decent way to do it, with it nightmare to do, and keep up to date.</p>
<h2>Featured/Pinned</h2>
<p>A short thought. I could simply leave the pinned articles as-is, with a few articles in a seperate list without styling, or I could style them a little.</p>
<p>If the styling option is gone for, it'd be nothing hugely fancy, probably just 3 boxes with the title, and maybe even a background colour. I'm not sure how I feel about it though, as adding ~100 bytes or so to the CSS is unneeded, and the styling could posiblity redact from the rest of the blog page.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,64 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="A guide to adding a free SSL certificate to your website(s) using cerbot, and automatically renewing them">
<meta name="keywords" content="Blog, articles, guide, certbot, SSL, secure certificate, website">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Setup SSL with Certbot</title>
</head>
<body>
<header>
<h1>Setup SSL with Certbot</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>An SSL certificate is used to secure a domain, preventing people from seeing many things, including those entered into forms (username, password, etc.).</p>
<h2>Install Certbot</h2>
<pre><code>sudo apt install python3-certbot</code></pre>
<p>or</p>
<pre><code>sudo apt install python3-certbot-nginx</code></pre>
<h2>Run Certbot</h2>
<pre><code>sudo certbot --nginx</pre></code>
<p>or</p>
<pre><code>sudo certbot --nginx -d <DOMAIN-NAME></pre></code>
<p>I recommend the former command, as it will ask which domain you'd like to setup for, where the latter should be used if you know for certain the domain-name is configured in nginx</p>
<p>The first time you run certbot you'll need to enter an email (for alerts), and agree to T&Cs</p>
<h3>Configure HTTPS</h3>
<h2>Auto renew</h2>
<p>Certificates attained via Certbot are valid for 90 days, so to keep it up indefinitely we'll need to auto-renew before it expires</p>
<p>To do this we'll set up a cronjob to run on... . This crontab needs to be run by root, so we'll open the crontab with sudo.</p>
<pre><code>sudo crontab -e</code></pre>
<p>If it's your first time editing the crontab (as root), it'll ask for your editor of choice</p>
<p>When the crontab is open, add a line to the bottom with the following</p>
<pre><code>0 0 * * * certbot --nginx renew</code></pre>
<p>Exit and save, you'll be imformed the crontab has been changed, and every day the cronjob will auto renew SSL certificates that are due to expire in the next 30 days.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="A basic guide on how to purchase a domain name">
<meta name="keywords" content="Blog, articles, news, domain name, website">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Get a domain name</title>
</head>
<body>
<header>
<h1>Get a domain name</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>A domain name, as many will know is what people typing into their browser, e.g. google.com, facebook.com, etc.</p>
<p>The primary use for these is to have a memorable thing for users, instead of needing to type the IP address of the server</p>
<h2>Choose a registrar</h2>
<p>First thing is to choose a registrar (who you are leasing the domain from). You can search for "domain name registrars" and find who is cheapest. So long as they handle DNS (which all I've used do) you're good.</p>
<p>I'm currently using <a href="https://tsohost.com" target="_blank" rel="noopener" >tsohost.com</a>, as they're pretty cheap, and besides a few little issues, it works for me.</p>
<h2>Choose a domain name</h2>
<p>On the registrar's website there will be a section to purchase a domain. Upon clicking this you'll likely be greeted with a searchbar, search for whatever domain you'd like here, and they'll let you know if it's available, and what similar domains there are</p>
<p>Select the domain(s) you wish, and add it/them to your cart.</p>
<h2>Purchase your domain name</h2>
<p>Simply checkout, and make your way through the process</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,131 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Learn to host a public/private server with a bunch of great services">
<meta name="keywords" content="Blog, server, hosting, website, guide, admin, homelab, self-host">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Aney's guide to server hosting</title>
</head>
<body>
<header>
<h1>Aney' guide to server hosting</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">If you want to start getting into server hosting, system administration, or just want to get a basic minecraft/web server up for you and your friends, then welcome. We all start somewhere, and I would love if I could get your foot in the door.</p>
<h2>Notice</h2>
<p>This is heavily a WIP, so I'll be adding to this guide whenever I get time, and will update it's readibility, and correct/add anything missing once it's 'complete'. If I didn't put it up in an unfinished state, it would never go live, so bear with.</p>
<h2>Basic Server setup</h2>
<ul>
<li>Get a server and <a href="/blog/server-install-debian.html">Install Debian</a></li>
<li><a href="/blog/initial-server-setup.html">Basic Debian Server setup (with some security)</a></li>
<li>TODO:<a href="/blog/get-a-domain-name.html">Get a domain name</a></li>
<li><a href="/blog/add-domain-to-server.html">Connect your server and domain name</a></li>
<li>TODO:<a href="/blog/port-forwarding.html">Port Forwarding (home server)</a></li>
</ul>
<p>Now you officially own, and have setup a server. Currently all you can do is SSH into it though, so let's get some services on there</p>
<h2>Nginx Webserver</h2>
<p>A great first service for any server is a website, even if it's just a little page to let people know you own the server/domain name</p>
<ul>
<li><a href="/blog/nginx-install.html">Install nginx</a></li>
<li><a href="/blog/setup-nginx-website.html">Setup an nginx website</a></li>
<li><a href="/blog/certbot-ssl.html">Add an SSL certificate w/Certbot</a></li>
<li><a href="/blog/nginx-web-optimisation.html">TODO: Nginx web optimisation</a></li>
<li>TODO:<a href="/blog/add-php-to-nginx.html">(Optional) Add PHP to your webserver</a></li>
<li>TODO:Guide to front-end web development</li>
</ul>
<h2>MariaDB Database</h2>
<p>A database is a great tool to store, access, and filter data. Typically used alongside a website, or other services, but can be useful standalone if you know what you're doing</p>
<ul>
<li><a href="/blog/install-mysql-mariadb.html">Install mariaDB</a></li>
<li>TODO:<a href="/blog/sql-cheatsheet.html">SQL cheatsheet</a></li>
<li>TODO:<a href="/blog/adminer-setup.html">(Optional) Adminer setup</a></li>
<li>TODO:<a href="/blog/backup-mysql-mariadb.html">(Optional) Backup databases</a></li>
</ul>
<h2>Backup your server!</h2>
<p>Backups are super useful. If something breaks, or gets accidentally deleted you can always use a backup to get it back</p>
<ul>
<li>TODO:<a href="/blog/backup-with-rsync.html">Backup with rsync</a></li>
<li>TODO:<a href="/blog/backup-with-rdiff.html">Backup with rdiff-backup</a></li>
<li>TODO:<a href="/blog/backup-with-cron.html">Setup backup cronjob(s)</a></li>
</ul>
<h2>Run virtual machines</h2>
<p>Virtual machines allow you to use your server as multiple servers at once, with different operating systems, services, files, etc. If you're self-hosting this is a great way to separate concerns, having one system for each distinct task.</p>
<ul>
<li>TODO:<a href="/blog/setup-qemu-kvm.html">Setup Qemu/KVM</a></li>
<li>TODO:<a href="/blog/setup-kvm-bridge.html">Setup a bridged adapter</a></li>
<li>TODO:<a href="/blog/install-kvm-virtual-machine.html">Install a virtual machine</a></li>
<li>TODO:<a href="/blog/virsh-cheatsheet.html">Virsh cheatsheet</a></li>
<li>TODO:<a href="/blog/vm-seperation-of-concerns">Example of Separation of Concerns (SoC)</a></li>
</ul>
<h2>Additional services/potential guides</h2>
<p>Unless there is an anchor, these are all "TODO", and may just be omitted from this list</p>
<h3>Useful tidbits</h3>
<ul>
<li><a href="/blog/nginx-proxy.html">Proxy services with NGINX proxy pass</a></li>
<li><a href="/blog/password-protect-webpage.html">Password protect webpages</a></li>
</ul>
<h3>Additional Services</h3>
<ul>
<li><a href="/blog/setup-git-server.html">git</a></li>
<li>samba</li>
<li>Open Media Vault</li>
<li>umami</li>
<li>uptime kuma</li>
<li>torrentbox</li>
<li>jellyfin</li>
<li>VPN</li>
<li>mailserver</li>
<li>Host client websites</li>
</ul>
<h3>Game Servers</h3>
<ul>
<li>minecraft</li>
<li>terraria</li>
<li>factorio</li>
</ul>
<h3>Additional guides</h3>
<p>These are some guides for specific use-cases, that will aid with setting up
<ul>
<li>Basic Homeserver for a web developer/designer</li>
</ul>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="title" content="Aney's Blog">
<meta name="description" content="A collection of typically tech related articles, authored by Aney.">
<meta name="keywords" content="Blog, articles, news">
<meta name="author" content="Nathan (Aney) Steel">
@ -31,16 +30,56 @@
<main>
<section>
<h2>Pinned</h2>
<ul>
<li><a href="/blog/guide-to-server-hosting.html">Aney's guide to server hosting</a></li>
</ul>
<h2>2022</h2>
<ul>
<li><a href="/blog/reducing-homelab.html">Reducing my Homelab</a> - 26/09/2022</li>
<li><a href="/blog/password-protect-webpage.html">Password protect webpages</a> - (WIP)14/09/2022</li>
<li><a href="/blog/nginx-proxy.html">Proxy services with Nginx</a> - (WIP)14/09/2022</li>
<li><a href="/blog/install-kvm-virtual-machine.html">Install a KVM Virtual Machine</a> - (WIP)14/09/2022</li>
<li><a href="/blog/setup-git-server.html">Setup git server</a> - 13/09/2022</li>
<li><a href="/blog/backup-with-cron.html">Automate Backups with Cron</a> - 26/08/2022</li>
<li><a href="/blog/blog-thoughts-220822.html">Blog Thoughts (Layout/Articles)</a> - 22/08/2022</li>
<li><a href="/blog/my-steamdeck-arrived.html">My SteamDeck Arrived!</a> - 22/08/2022</li>
<li><a href="/blog/server-install-debian.html">Debian Install Guide (for Server)</a> - 22/08/2022</li>
<li><a href="/blog/set-static-ip.html">How to set a static IP</a> - 22/08/2022</li>
<li><a href="/blog/vm-seperation-of-concerns.html">VM Seperation of Concerns</a> - 29/07/2022</li>
<li><a href="/blog/setup-kvm-bridge.html">Setup a KVM bridge</a> - 29/07/2022</li>
<li><a href="/blog/virsh-cheatsheet.html">Virsh Cheatsheet</a> - 29/07/2022</li>
<li><a href="/blog/setup-qemu-kvm.html">Install KVM for virtualisation</a> - 29/07/2022</li>
<li><a href="/blog/backup-with-rdiff.html">Backup files with rdiff</a> - 17/07/2022</li>
<li><a href="/blog/backup-with-rsync.html">Backup files with rsync</a> - 17/07/2022</li>
<li><a href="/blog/add-php-to-nginx.html">PHP on Nginx setup</a> - 10/06/2022</li>
<li><a href="/blog/sql-cheatsheet.html">SQL Cheatsheet</a> - 09/06/2022</li>
<li><a href="/blog/adminer-setup.html">Adminer Setup</a> - 09/06/2022</li>
<li><a href="/blog/backup-mysql-mariadb.html">Backing Up MySQL/MariaDB</a> - 09/06/2022</li>
<li><a href="/blog/install-mysql-mariadb.html">MySQL/MariaDB Setup Guide</a> - 09/06/2022</li>
<li><a href="/blog/nginx-web-optimisation.html">NGINX web optimisation</a> - 30/05/2022</li>
<li><a href="/blog/certbot-ssl.html">Setup SSL with Certbot</a> - 30/05/2022</li>
<li><a href="/blog/setup-nginx-website.html">How to setup an nginx website</a> - 30/05/2022</li>
<li><a href="/blog/nginx-install.html">How to install an nginx webserver</a> - 30/05/2022</li>
<li><a href="/blog/get-a-domain-name.html">How to purchase a domain name</a> - 30/05/2022</li>
<li><a href="/blog/add-domain-to-server.html">Link your domain name to your server</a> - 24/05/2022</li>
<li><a href="/blog/initial-server-setup.html">Debian Server Setup</a> - 24/05/2022</li>
<li><a href="/blog/guide-to-server-hosting.html">Aney's guide to server hosting</a> - 24/05/2022</li>
</ul>
<h2>2021</h2>
<ul>
<li><a href="/blog/ive-started-a-blog.html">I've started a blog</a> - 20/11/2021</li>
</ul>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,186 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="A guide for the first steps following a new debian server install">
<meta name="keywords" content="Blog, articles, news">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Initial Server Setup</title>
</head>
<body>
<header>
<h1>Initial Server Setup</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>This section assumes you have a fresh Debian 11 install on a server (either physical or VPS)</p>
<p>It will cover installing the essentials for access, and basic security so you don't need to worry in the future. This section may seem a little daunting for a first-time linux user, but most of it is copy/paste, hopefully with enough description to understand what is being done. Just remember not to copy the $/root$ they're there to show what user/directory we're in. </p>
</section>
<section>
<p>This first section will be done on the physical PC, or on the VPS via their website, or SSH'd as root if that's the option given.</p>
<h2>Update the OS</h2>
<p>Even with a fresh install of Debian from the latest ISO, there may be some updates you're missing, and it's a good idea to have these, especially in case they're security updates.</p>
<pre><code>apt update &amp;&amp; apt upgrade</code></pre>
<h2>Install essential packages</h2>
<p>These are packages that are needed for accessing, and controlling the server</p>
<pre><code>apt install sudo ssh</code></pre>
<h3>Some useful packages too</h3>
<pre><code>apt install vim htop wget curl tmux</code></pre>
<h2>Add a user, and give super user privilleges</h2>
<p>You want to avoid using root as much as possible in regular use, so a new user for yourself is a must</p>
<pre><code>adduser $USERNAME$
usermod -aG sudo $USERNAME$</code></pre>
<p>*replace $USERNAME$ with the user you want to create, e.g. nathan</p>
<h2>(Local server) Set static IP</h2>
<p>If the server is a physical PC in your home you will need to set a static IP, otherwise your router could assign a differnent IP on reboot, and this would mess with port forwarding, and internal DNS.</p>
<p><a href="#">Set static IP for local server</a></p>
<h3>Port forwarding for local server</h3>
<p>If you've set the static IP for your local server, you'll also have an additional step when making public (internet served) services, as unlike a VPS your ISP will likely have all outbound ports disabled by default</p>
<p><a href="#">Port forward your local server</a></p>
<h2>Secure ssh</h2>
<p>Although this is optional, I recommend it, as SSH (secure shell) will be the primary means of access to the server.</p>
<pre><code>vim /etc/ssh/sshd_config</code></pre>
<p>Within the editor you will need to search for <strong>PermitRootLogin</strong> and set it to <strong>no</strong>, this prevents ssh as root</p>
<p>Search for <strong>Port</strong> and set it to a different port to 22, a port over 1024 prevents basic nmap scans, and therefor a lot of bruteforcing, so let's go with 2020 so it's easy to remember</p>
<p>Below the <strong>Port</strong> line, add a new line with <strong>Protocol 2</strong> this enables ssh2, which is more secure</p>
<p>(Optional) Comment/Add a <strong>#</strong> to the beginning of the <strong>passwordlogin</strong> line. This will prevent sshing to the server from any PC that doesn't have it's SSH key on the server already. I recommend only doing this if your sshkeys are on the server, or you're comfortable adding them.</p>
<pre><code>systemctl reload sshd</code></pre>
<p>This reloads the ssh daemon, and enables all the changes we've made</p>
<h2>Setup UFW</h2>
<p>UFW (Uncomplicated Firewall) is a simple to use firewall, that can be used to easily open/close ports on your server.</p>
<p>We'll install ufw, deny access inwards to all ports, but allow our server to access any ports outwards. We will then manually allow inwards traffic to the SSH port we set, in this case 2020</p>
<pre><code>apt install ufw</code></pre>
<pre><code>ufw default deny incoming &amp;&amp;
ufw default allow outgoing &amp;&amp;
ufw default allow 2020 &amp;&amp;
ufw enable</code></pre>
<p>If there are any other ports that need to be opened in the future this can be done with:</p>
<pre><code>ufw allow $PORT</code></pre>
<p>or</p>
<pre><code>sudo ufw allow $PORT</code></pre>
<p>Then enable it, <strong>making sure you've allowed ssh first</strong></p>
<pre><code>sudo ufw enable</code></pre>
<h2>Set hostname</h2>
<p>Setting the name for a server is an important step, but the name doesn't need to be serious</p>
<pre><code>vim /etc/hosts</code></pre>
<p>and</p>
<pre><code>vim /etc/hostname</code></pre>
<p>Within both of these files the hostname should be changed to the same thing</p>
</section>
<section>
<p>This next section can be done via a terminal, or an SSH client e.g. PuTTY for Windowss. For the sake of the guide, this assume you're using a Unix terminal</p>
<h2>Create an SSH key</h2>
<p>We'll create an ed25519 ssh-key, as it's more secure, and performant than the defaultrsa</p>
<pre><code>ssh-keygen -t ed25519</code></pre>
<h2>SSH into the server</h2>
<p>This is a two part section, and I recommend using this every time you SSH into a server from a new PC</p>
<pre><code>ssh $USER$@$HOST$ -p 2020</code></pre>
<p>This will likely display a message asking to verify the key for the server. This is to prevent man-in-the-middle attacks, so I reccommend verifying this whenever asked.</p>
<p>To check the key for the server, you need to run this command on the server.</p>
<pre><code>ssh-keygen -l -f /etc/ssh/ssh_host_$KEY$_key.pub</code></pre>
<p>Replace $KEY$ with the key the message is asking about (e.g. ecdsa, rsa, ed25519). Then if key the server shows matches that on your PC you are SSHing from, type <strong>yes</strong> and hit enter</p>
<h2>TODO:(Optional) Fail2Ban</h2>
<h2>TODO:(Optional) Unattended Upgrades</h2>
<p>Updates to a server typically want to be done by a human in case things go wrong, but smaller updates can be set to be done automatically</p>
<h2>(Optional) Setup User preferences</h2>
<p>These are a few things I personally like to have on a basic server. If you have your own preferences, dotfiles, or intend to use oh-my-zsh fell free to skip over this.</p>
<h3>Vi mode bash</h3>
<p><strong>Warning</strong> this is a preference you may not want to use if you're a beginner, and/or don't use VIM (text editor), as it sets the terminal to work more like VIM</p>
<p>Open your .bashrc file in your editor of choice<p>
<pre><code>vim ~/.bashrc</code></pre>
<p>Add the following to the bottom of the file</p>
<pre><code>set -o vi</code></pre>
<h3>Aliases</h3>
<p>Instead of typing out long commands you can alias them, and type a shorthand version.I've written an <a href="#">article about aliases</a> that explains setting up, and aliases I use. Below are some essentials for those that don't want to jump to another article.</p>
<pre><code>alias ll="ls -lhtr"
alias df="df -h"
alias ta="tmux attach || tmux new"
alias ipe="curl ifconfig.co"</code></pre>
<h3>Ctrl-L clear-screen</h3>
<p>Sometimes a new system doesn't have this by default, and it's probably the thing I use most after ls.</p>
<p>Add, or create an .inputrc file</p>
<pre><code>vim ~/.inputrc</code></pre>
<p>Add the following line to the file</p>
<pre><code>"C-l": clear-screen</code></pre>
<h3>BashRC PS1</h3>
<p>This will make your terminal look a little nicer, and display a directory path, user, and hostname. A ridiculously useful feature if you're managing multiple servers, or virtual machines</p>
<p>This is also in the .bashrc file, so open that up</p>
<pre><code>vim ~/.bashrc</code></pre>
<p>Then add the following to the bottom of the file</p>
<pre><code>export PS1="\[\e[01;33m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;36m\]\h\[\e[0m\]\[\e[00;37m\] \t \[\e[0m\]\[\e[01;35m\]\w\[\e[0m\]\[\e[01;37m\] \[\e[0m\]\n$ "</code></pre>
<p>If you want to customise your terminal, you can do so with <a href="https://bashrcgenerator.com/" target="_blank" rel="noopener">.bashrc PS1 generator</a>.
<h2>Reads shouldn't write!</h2>
<p>Another personal opinion, and change is to enable noatime, and nodiratime. Be careful with this change! And ignore if you followed my Debian install guide, as they're already enabled.</p>
<p>Basically without these, when a file is opened (read) on your filesystem, a write is invoked to update the time it was opened, which causes unwanted writes, and CPU cycles.</p>
<p>Open your fstab file</p>
<pre><code>sudo vim /etc/fstab</code></pre>
<p>And edit your mounted drive(s) to include these flags</p>
<pre><code>UUID=&lt;YOUR-UUID&gt; / ext4 noatime,nodiratime 0 1</code></pre>
<p>The above uses an example, make your EXISTING lines look kinda like the above. Essentially just adding <strong>noatime, nodiratime</strong></p>
<h2>Server maintance notes</h2>
<p>Keep the server up-to date as much as possible</p>
<p>Only install things that you need. If this is a server for learning, half ignore this, but for production servers only install services, and make changes that are required.</p>
<p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, template">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Template for Blog</title>
</head>
<body>
<header>
<h1>Template for Blog</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">This is an intro, you gotta believe me</p>
<h2>Heading</h2>
<p>Yea, you're probably wondering how I got here.</p>
<h2>Install with virt (CLI)</h2>
<h2>Install with virt-manager (GUI)</h2>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, guide, mysql, mariadb, database">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>MySQL (actually MariaDB) Setup Guide</title>
</head>
<body>
<header>
<h1>MySQL (actually MariaDB) Setup Guide</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>MySQL is a well known free, open-source relational database service, and it's great. MariaDB is just MySQL (a fork of it), but better.</p>
<h2>Install MariaDB</h2>
<pre><code>sudo apt install mariadb-server</code></pre>
<h2>Secure Install/Setup</h2>
<pre><code>sudo mysql_secure_installation</code></pre>
<h2>Create Admin user</h2>
<pre><code>sudo mysql</code></pre>
<pre><code>GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;</code></pre>
<pre><code>FLUSH PRIVILEGES;</code></pre>
<pre><code>exit;</code></pre>
<h2>Test it works</h2>
<h2>(Optional) Make it easier to access on command line</h2>
<p>If you're working with a terminal, when calling <code>mysql</code> you'll need to enter a password each time. You can store the passwordwith a special .cnf file, making it faster to get into writing SQL.</p>
<p>Create/Edit the file with your editor of choice (mine's vim)</p>
<pre><code>vim ~/.my.cnf</code></pre>
<p>Add the following, with your credentials</p>
<pre><code>[mysql]
user=<USERNAME>
password=<PASSWORD></code></pre>
<p>The above can be used for mysqldump, mysqladmin, and others too, by replacing the <code>[mysql]</code> block</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="title" content="I've started a blog">
<meta name="description" content="A new step for aney.co.uk, there's now a blog.">
<meta name="keywords" content="Blog, articles, news">
<meta name="author" content="Nathan (Aney) Steel">
@ -31,7 +30,7 @@
<main>
<section>
<p>To prefix, I am not an author. In fact my skill with the pen was much more proficient when I was a youngling, but alas I have returned to write.</p>
<p>To preface, I am not an author. In fact my skill with the pen was much more proficient when I was a youngling, but alas I have returned to write.</p>
<h2>Why?</h2>
<p>There are many reasons, although I don't believe there even needs to be one. If you want to blog, blog!</p>
<h3>To improve my writing skills</h3>
@ -47,7 +46,7 @@
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="After many moons, it has arrived. My SteamDeck is within my hands, a glorious day">
<meta name="keywords" content="Blog, articles, template">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>My SteamDeck Arrived!</title>
</head>
<body>
<header>
<h1>My SteamDeck Arrived!</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">The title does not decieve you, my SteamDeck has in fact arrived! Well actually it arrived on the 15th of August, and I've been using it since.</p>
<h2>Why order the SteamDeck?</h2>
<p>I liked the concept, I loved that Valve opted for, and have aided in the development of the Linux kernel (notably for gaming), I wanted to untether from my desktop PC, and I wanted to emulate handheld games on a, well, a handheld.</p>
<p>I also figured buying this device puts a little money in Valve's pocket, and shows that there's a want, for both Valve, and other game developers.</p>
<h2>Which did I order?</h2>
<p>I ordered the 256GB model (the middle tier), as I figured Valve made nothing on the model before, and I couldn't justify to myself (at the time) the model after.</p>
<h2>How long did it take to get?</h2>
<p>It took a bit over a year for me to recieve my order email (check Steam for your estimated dates though!). I ordered on the 16th of July (2021) after much hesitation, and got the email on the 8th of August (2022), but after the order was placed, it was around a week for it to get delivered to my house. It did take a little over a week for me to receive it though, as I missed the Friday delivery due to being at work, and had to take the day off on Monday, to ensure I recieved it next working day.</p>
<h2>Worth?</h2>
<p>I've only been using it for around a week, but it has been my daily driver so I can give a current thought which is <strong>yes</strong>.</p>
<p>Using it in both gaming mode, and desktop mode (with external peripherals) has been great, and if you enjoy handhelds I wholely recommend grabbing one once they're more readily available.</p>
<p>With my thought on its worth (strongly worth), I've still written this article unbiased, with any qualms I have with entire honesty, because I cannot stand when people lie about products they like</p>
<h2>Desktop Mode</h2>
<p>Desktop mode with peripherals works as any Arch desktop would, there are a few hoops to jump through on first use, but after that it's a neat PC. Most of my desktop use is gaming with friends on Discord, or SSHing into servers to work on them, and the SteamDeck does them both.</p>
<h3>Problems</h3>
<p>Sometimes when tabbing between programs, and more often when new media starts to play, my audio will stop, which is annoying as I need to use volume controls to change back to the correct device each time this occurs. It's probably an issue with Pulseaudio itself, but none-the-less it's annoying.</p>
<p>Maybe not a problem, as many laptops are heading this way, but I needed to buy an adapter (USB-C splitter) to plug in my USB-As, HDMI, Ethernet, etc.</p>
<h2>Gaming Mode</h2>
<p>This is how most of my time with the SteamDeck has been spent. I've played a bunch of Hades, some (emulated) Pokémon Legends Arceus, Minecraft, and tried some mid 2010 AAAs. Within this short stint, it's been a fantastic experience, the screen's splendid indoors, audio is great (for a non-audiophile like me at least), and the controls feel balanced, and responsive, can't ask for much else.</p>
<h3>Problems</h3>
<p>I feel like there's room for improvement with the Steam GUI, such as hotkeys to get to the top bar, etc. but I'm a tiling window manager guy, so of course I want the efficiency of hotkeys.</p>
<p>After a few hours of play, I get some pain in my right arm, and thumb, although if you don't have RSI already, this likely won't affect you.</p>
<p>The screen is very reflective on my model, and is annoying to use outside. I went for a walk while playing Pokémon, and even at full brightness I couldn't see the gameplay very well whilst in the sunlight.</p>
<p>My joysticks make a very quiet clicking noise when I tap them upwards, which most people probably don't notice, but unfortunately I do. Thankfully with the speakers on it's non-noticable.</p>
<p>Battery life is a bit lacking for me, with ~2-5 hours or so depending on the games played (even with GPU clocked down). I knew what I was getting into, but still hope the next iteration has a lil' more juice.</p>
<h2>Any Regrets?</h2>
<p>Actually yes, I regret not purchasing the 512GB model with the reflective screen. As mentioned I've tried using the device outside, and the reflection is annoying (could just be the 'tism), but not entirely unusable especially at higher brightnesses (and definitely usable outside of sunlight). I'll likely purchase a screen protector to try to fix this problem.</p>
<p>I've also noticed that I've used a lot of storage already, and the extra 256GB from the SSD would have been majorly useful (especially since I may well have installed some larger, 100GB+ titles if I had it). This can be solved with a larger SD card, or by switching the SSD, but it'd have been nice to have from the start.</p>
<p>Not a regret per se, but something I've spotted. In this ~week of usage my battery health has dropped from 100% to 96%. It may be a calculation issue, but still that's spooky, and I don't like that it's already gone down. I'm going to get a 20k mAh battery pack to allow me to use it during travel, etc.</p>
<h2>Last thoughts</h2>
<p>Yea, the SteamDeck's pretty good. I'll be investing in a reflective screen protector, and a powerbank to hopefully cover up its flaws, but besides that it's definitely worth the buy so far.<p>
<p>If you don't own a PC, this is a good starting point, as it's an affordable in, and unlike traditional PC gaming, you don't need to sit at a desk the whole time!</p>
<p>I'm looking forwards to some LAN-esk ventures with the 'Deck, and if a new version is announced in the next couple years, I'll definitely be hopping onto that pre-order queue.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,76 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="A guide to installing an NGINX web server">
<meta name="keywords" content="Blog, articles, news, NGINX, web server, guide">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>How to install an NGINX web server</title>
</head>
<body>
<header>
<h1>How to install an NGINX web server</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>NGINX (engine X) is one of the top webservers. It has relatively easy learning curve, is fast, and <a href="">secure</a>. It's a great step into web hosting, and a good first service for many servers.</p>
<h2>Install</h2>
<pre><code>sudo apt install nginx</code></pre>
<h2>Enable, and start</h2>
<pre><code>sudo systemctl enable nginx --now</code></pre>
<p>or</p>
<pre>
<code>sudo systemctl enable nginx
sudo systemctl start nginx</code></pre>
<h2>Enable the http port</h2>
<p>If you have UFW installed ala the <a href="/blog/initial-server-setup.html">initial server setup</a> guide you'll need to open the http port on the server</p>
<pre><code>sudo ufw allow 80</code></pre>
<p>or</p>
<pre><code>sudo ufw allow http</code></pre>
<h2>Check it's working</h2>
<p>Open your browser, and head over to your IP address, or domain name. With any luck you should see the default NGINX page, with a "Welcome to NGINX"</p>
<h3>Basic checks in case it's not</h3>
<p>Check nginx is actually running</p>
<pre><code>sudo systemctl status nginx</code></pre>
<p>In the active section, this should show "Active", if not try starting nginx again</p>
<pre><code>sudo systemctl start nginx</code></pre>
<p>Check UFW port is enabled<p>
<pre><code>sudo ufw status</code></pre>
<p>This should show port 80, and 80 (v6) with ALLOW. If not, run ufw allow again</p>
</section>
<section>
<h2>Next...</h2>
<p><a href="/blog/setup-nginx-website.html">Setup an nginx website</a></p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, template">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Template for Blog</title>
</head>
<body>
<header>
<h1>Template for Blog</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">This is an intro, you gotta believe me</p>
<h2>Install</h2>
<p>.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Learn how to Secure, and optimise your NGINX server with an easy guide">
<meta name="keywords" content="Blog, articles, news">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>NGINX web optimisation</title>
</head>
<body>
<header>
<h1>NGINX web optimisation</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>Optimisations for the nginx configs will increase both the security, and performance of your website
<h2>TODO: Headers</h2>
<p>These headers tell nginx what, and how things can be served. They need to be added to each site-available that intends to use them</p>
<pre><code>sudo vim /etc/nginx/sites-available/<DOMAIN></code></pre>
<p>Within the server block. If certbot/SSL is setup, add into the block listening to port 443 (HTTPS)</p>
<pre><code>add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
add_header Content-Security-Policy "default-src 'self';" always;
add_header X-Frame-Options SAMEORIGIN always;
add_header "X-XSS-Protection" "1";
add_header X-Content-Type-Options nosniff ;</code></pre>
<h2>Gzip Compression</h2>
<p>Compressing data that is sent to the client is a simple way to save some bandwidth, and gain a bit of speed</p>
<pre><code>sudo vim /etc/nginx/nginx.conf</code></pre>
<p>This goes within the http block, there is likely already a gzip section, so find it and replace with the below. Otherwise just add to the http block.</p>
<pre><code>##
# Gzip Settings
##
gzip on ;
gzip_disable "msie6" ;
gzip_min_length 256 ;
gzip_vary on ;
gzip_proxied any ;
gzip_comp_level 6 ;
gzip_buffers 16 8k ;
gzip_http_version 1.1 ;
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml
;</code></pre>
<h3>TODO: Brotli Compression</h3>
<p>Brotli is a new less used contender in the web compression space, but I've heard good things. I'll add this section once I've tested performance vs gzip myself</p>
<h2>TODO: SSL Tweaks</h2>
<h2>HTTP/2</h2>
<p>The newer standard of HTTP. It allows for parallel downloading, and other niceities. I believe Certbot does this for you when setting up SSL for a site, but if that changes, or you've used a different SSL cert, you can set this manually.</p>
<pre><code>sudo vim /etc/nginx/sites-available/<WEBSITE_CONFIG></code></pre>
<p>Alter the existing listen lines to append http2</p>
<pre><code>listen 443 ;</pre></code>
<p>to</p>
<pre><code>listen 443 http2 ;</pre></code>
<p>After an nginx reload, this can be checked, by looking for HTTP/2 being returned by the below curl command</p>
<pre><code>curl -I -L https://<WEBSITE></code></pre>
<h2>TODO: Cache Files, and Images</h2>
<p></p>
<h2>TODO: Limit requests</h2>
<p>To prevent potential DOS attacks, and web scrapers the amount of requests/connections per IP can be reduced</p>
<h2>TODO: Redirect www/non-www to each other</h2>
<p>People still type www. before a domain, even if it's not required. Cringe</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, template">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Template for Blog</title>
</head>
<body>
<header>
<h1>Template for Blog</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">This is an intro, you gotta believe me</p>
<h2>Heading</h2>
<p>Yea, you're probably wondering how I got here.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,110 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="I've taken down my homelab during the energy crisis in the UK, and have mitigated the loss of this by migrating services to alernate locations, and low power hardware.">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Reducing my Homelab</title>
</head>
<body>
<header>
<h1>Reducing my Homelab</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>Homelabbing, and with it self-hosting, has been a great exploration into server maintance, dabbling with new technologies, and has overall (sometimes it's been a hassle, but it comes with the territory) been an enjoyable little hobby.</p>
<p>As the title implies, however, I have reduced the amount of services, and horsepower in my homelab, at least for the time being, starting from 24/09/2022.</p>
<h2>Why?</h2>
<h3>Energy costs a lot now</h3>
<p>With the increase of gas/electric prices many households (including my own), have been looking at ways of reducing their bills, especially with Winter approaching, and the knowledge that there will be more usage in the coming months.</p>
<p>Couple this with the already inflated cost-of-living, this is making it less, and less sustainable for me to run devices 24/7, as I cannot justify the expenditure.</p>
<h3>I want to go nomadic</h3>
<p>Looking on the brighter-side, a big thing in my mind at the moment, is wanting to travel around one-bagging for as long a period as I can. So paring down my belongings is already something I'm doing, as ideally I only own what I need, and what can be easily stored for when I get back into renting a place. Storing multiple PCs is much harder than a couple of Raspberry Pis.</p>
<h3>Reliability of my public services is iffy</h3>
<p>With my in-home self-hosting there were always a couple of pitfalls, but I was happy to deal with these.</p>
<p>First, my IP isn't static, so when the ISP decides it's time for a new IP, boom. I've then got to change my DNS settings for my domains to keep things up.</p>
<p>Second, it's not a fantastic connection as-is. I will randomly get hit by blips of no internet throughout the day, which takes the services offline for however-long, sometimes multiple times a day.</p>
<h2>What does this actually entail?</h2>
<p>I've taken lilman, my last remaining server, out-of-comission for the time being (just after upgrading to 32GB RAM...), and have popped two RPIs in my shed in it's stead to cover my in-home needs for hosted services. I've also migrated services that are exposed to the web to the VPSs I already owned, and I'm also looking at Oracle's Always Free tier to migrate some of my game servers to (although credit card validation is playing with me).</p>
<h2>What's happened with services?</h2>
<p>So you may be wondering what's to happen with the services I was previously self-hosting at home. Some things, such as virtualisation, and any testing environments have been taken away, but for others they've been migrated around.</p>
<h3>In-home</h3>
<p>Of course there are some things that I want/need to keep at home, these services primarily come down to those that deal with files, and don't require internet access, however there are some outliers to this rule.</p>
<h4>NAS (OMV)</h4>
<p>To maintain access to my files needed to work, my ISOs, my media collection, etc. I've setup a RPI3B+ (nasberrypi) as a NAS, connected to my 4TB HDD via an externally powered SATA hub. This is the only real "essential", as I can access these files on a laptop, and easily watch, edit, etc.</p>
<h4>VPN</h4>
<p>If I want to access my services, and namely my NAS from outside of my network, I need a VPN. This is on the RPI3B+, as the only thing alongside the NAS in case I opt to just maintain the NAS.</p>
<h4><s>Jellyfin</s></h4>
<p><s>I watch media, and Jellyfin was the best option I found quite a while back. I've read it works well on RPIs, so I'm giving it a go on a seperate RPI3B (mediapi). So far though, it's not performing very well, but I'll struggle with it for the time being.</s></p>
<h4><s>Adguard</s></h4>
<p><s>Whilst I still have an internet connection, I'd like to keep blocking wanky ads. This is on the 3B.</s></p>
<h4><s>Nginx</s></h4>
<p><s>Not for websites, but for the proxy-pass functionality, so that I can safely share my Jellyfin, etc. instances over the web. On the 3B.</s></p>
<h4><s>AirSonic (New)</s></h4>
<p><s>Trying out AirSonic, as I'd like to play my own music when, and wherever, whilst having the actual files stored in case of no interwebs. On the 3B.</s></p>
<h4>OSMC (instead of Jellyfin)</h4>
<p>My second Pi will likely just be an OSMC box, with media mounted from the NAS, as it seems like the best way to get anything to work. I don't really need to stream to my laptop/phone, just using the TV in the living room seems a better option for an intential lifestyle. Although, I do still want to see about music streaming.</p>
<h3>VPSed</h3>
<p>The services I've migrated to my already exisitng VPSes (to go along with what they already hosted), are those which are internet accessed, and need additional reliability.</p>
<h4>Webserver</h4>
<p>I've migrated <a href="https://aney.co.uk" target="_blank" rel="noopener">aney.co.uk</a> and <a href="https://anetwork.uk" target="_blank" rel="noopener">anetwork.uk</a> to my American VPS that hosts my node applications, obviously this makes my sites slower (in the UK), but I'll take what I can get for now, and maybe get a new UK based VPS in the future.</p>
<h4>Git</h4>
<p>Git has been migrated to my off-site backup server. The logic behind this is that I'll have my repos checked-out, and with more up to date code than on the server, so this is alright. The performance difference here isn't noticable to me currently, which is nice.</p>
<h3>Oracle VM (Maybe)</h3>
<p>As I stated, this still isn't a guarantee, but if I opt to get game servers back online, the Oracle always free tier will be my first option. Who knows, when you're reading this I could have <a href="https://anetwork.uk" target="_blank" rel="noopener">aNetwork</a> entirely running on an Oracle VM instead of offline, like it is without lilman.</p>
<h2>Possible Changes</h2>
<p>Two come to mind right at the beginning of this "experiment".</p>
<ol>
<li>Putting lilman back in the driver seat. I've moved some services off of the device, but for my media consumption the 3B isn't cutting it. With this, getting lilman set back up is probably the idea, either that or setting up a thinkpad as a server that's not always on.</li>
<li>Just having a NAS. I may just keep the 3B+ as a NAS, and set the other Pi up as a client, with OSMC. This way I can mount the files, and watch them on the TV. A little annoying that I won't be able to stream from laptops/phones, but it could be better like that anyway. This has been opted for currently.</li>
</ol>
<p>If I remember to do so, I'll make a new post, or some edits to this, in regards to how this downsizing is going, and if it's overall a positive, or negative experience.</p>
<h2>Will you go back to hosting at home?</h2>
<p>Yes (most probably, I could find I love the low-end setup though), assuming one of two things.</p>
<ol>
<li>That energy gets decoupled from gas prices, and/or gets reduced to a non-stupid amount, so that I can keep multiple servers running without breaking bank.</li>
<li>I can build a super efficient lab, probably with "mobile" hardware, and a little additional undervolting. This one is also a lead into wanting to be more self-sufficient, so it'd ideally pair with solar panels, etc. to keep the lab going.</li>
</ol>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="A guide on how do a fresh install of Debian, with some personal bias from me">
<meta name="keywords" content="Blog, articles, debian, install, linux">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Debian Install Guide (for Servers)</title>
</head>
<body>
<header>
<h1>Debian Install Guide for Servers</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">Debian is a fantastic linux distrubution that works, and rarely causes issues. Due to this, it is a common canditate for a server OS, and is what this guide will walkthrough how to install on a PC.</p>
<h2>Assumptions</h2>
<p>You have a PC/laptop with an internet connection<p>
<p>You have a PC/laptop/VM to install Debian to<p>
<p>You have a USB that can be rewritten with the debian ISO<p>
<p>You're on a network with DHCP (the typical home network will be)</p>
<p>Currently assumes you boot via BIOS, not UEFI (Will be updated for UEFI too)</p>
<h2>Download and Burn the ISO</h2>
<p>First thing is to get the install media setup. If you know how to burn an ISO, go ahead and get that done, I'll wait for you in the next section. If not follow below.</p>
<p>Download the latest debian ISO from the <a>debian website</a>, at the time of writing it's <a>this release</a>, but get it from their page.</p>
<p>Download <a>Balena Etcher</a> for your device (Windows, MacOS, Linux), and install it</p>
<p>Then open Etcher (with an empty USB plugged in), select the USB, and the downloaded ISO image, then hit run.</p>
<p>When finished remove the USB and plug it into the PC you want to install Debian to</p>
<h2>Boot from the USB</h2>
<p>You may be able to just plug the USB in, boot the PC, and be greeted with the installer. If so great! If not, then read on.</p>
<h3>BIOS boot order</h3>
<p>When your PC boots you should see a screen with a logo (a splash screen), hit a one of the button it tells you (Normally Esc, Del, F2, F3, or F12) to enter the bios. Find your bios's boot section, and move the USB to boot priority 1. After a reboot your PC will now always attempt to boot from your USB first, and from your internal drive if it cannot.</p>
<h3>One time boot</h3>
<p>Like above, press the key to get into either a one-time boot menu, or the bios. From there select your USB as a boot override. This will boot from the USB just this time, and then revert to the normal boot order.</p>
<h2>Start install</h2>
<p>When you're greeted by a debian boot page, select "Install" (that's what I'll be using) but "Graphical Install" is also fine, as it's essentially the samething, but you can use a mouse.</p>
<h2>Localisation</h2>
<p>As if you are filling out an online form, simply ensure the boxes are correct to your language, location (sets time, and download servers), and keyboard layout.</p>
<h2>Network, and server name</h2>
<p>If you're using DHCP, this can be...</p>
TODO
<h3>Hostname</h3>
<p>What you wish to call your server, I like to give names that are quirky, but still kinda explain what they do. For example, my webserver is "spiderverse", and my NAS is "lilnas", etc.</p>
<h3>Domain name</h3>
<p>Leave this as default, and hit continue.</p>
<h2>Create User</h2>
<h3>Don't set a root password</h3>
<p>This will ask for a root password. Do not enter a password, and simply git the <strong>Enter</strong> key, then again when it asks for the password the second time. A root user with a password is a vulnerability, so we're avoiding this.</p>
<h3>Create your user (admin account)</h3>
<p>Now enter your username, and password as the installer requests. This account will be added to the sudo group, making it an admin with access to root, and root commands.</p>
<h2>Disk Partitioning</h2>
<p>For this I am assume you're using a new drive, or at least one that you don't want any of the data on it</p>
<h3>Auto-partitioning</h3>
<p>You can do this, and it's recommended if you're new to linux. Once you've got the hang of it, you can always re-install your server from scratch (I recommend this a couple of times).</p>
<p>Also select to have all files in one partition, as it's the simplest option.</p>
<p>Finish Partitioning, and done.</p>
<h3>Manual Partitioning</h3>
<p>For a little more control over the partitioning, this is the option. If you are a beginner I'd just go with auto for now, but follow this if you desire.</p>
TODO
<h3>Preferences</h3>
<h3>Skip Swap (for now)</h3>
<h2>Scan Additional Media</h2>
<p>Unless you've addition drivers, etc. (You probably don't) hit <strong>No</strong></p>
<h2>Configure Mirror</h2>
<h2>Popularity Contest</h2>
<h2>Software Selection</h2>
<h2>Install Grub Boot Loader</h2>
<h2>Reboot, and enjoy!</h2>
<h2>Setup Swap</h2>
<h2>Next steps</h2>
<p>Now that you've got a basic Debian install, you'll need to configure, and install a few things. I've written a little something, somthing like that, so check <a href="/blog/initial-server-setup.html">how to setup a new server install</a></p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,91 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="This will cover how to set a static IP address for your linux computer">
<meta name="keywords" content="Blog, articles, linux, networking, guide">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Set a static IP (Guide)</title>
</head>
<body>
<header>
<h1>How to set a static IP</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">For those that don't know a static IP is an IP address that doesn't change on reboots, etc. The opposite of a dynamic IP, which can change on reboots, and is the default mode for computers to get an IP (via DHCP).</p>
<h2>Get your network</h2>
<p>If you don't know what network/range of ports you're on, check first by following the below. If you do, and this is a flash-card of sorts, ignore this section.</p>
<pre><code>ip a</code></pre>
<p>You can likely gauge from this, what network you're on, as most routers default to a single range, with the router being the first address on that range<p>
<p>So... If your <strong>ip a</strong> shows <u>192.168.1</u>.xxx (after the last dot doesn't matter), I assume your address will need to be <u>192.168.1.</u>x, and your gateway will be <u>192.168.1</u>.1</p>
<h2>Set your static IP</h2>
<p>Open up the <strong>/etc/network/interfaces</strong> file with your editor of choice</p>
<pre><code>sudo vim /etc/network/interfaces</code></pre>
<p>And edit the file to look a little something like below. If that's a little difficult to understand, read on</p>
<pre><code>auto enp2s0
iface enp2s0 inet static
address 192.168.1.226
netmask 255.255.255.0
gateway 192.168.1.1
dns-namespaces 192.168.1.1 8.8.8.8 8.8.4.4</code></pre>
<h3>1) Set static network device</h3>
<p>Change the iface for your network device from</p>
<pre><code>iface enp2s0 inet dhcp</code></pre>
<p>to</p>
<pre><code>iface enp2s0 inet static</code></pre>
<p>Substituting enp2s0 for whatever your device is called. This device will pre-exist in the file, but can also be found with the following command</p>
<pre><code>ip a</code></pre>
<h3>2) Add your network details</h3>
<p>Below the editted line, add the following, based on your network (slightly mentioned in the very first section)</p>
<pre><code>address 192.168.1.220</code></pre>
<p>This is the IP that you want your PC to have, the number after the final dot, can be between (inclusively) 2, and 254</p>
<p>Followed by (on a new line)<p>
<pre><code>netmask 255.255.255.0</code></pre>
<p>This is an assumption about the average home network<p>
<p>Then, again on a new line<p>
<pre><code>gateway 192.168.1.1</code></pre>
<p>Another assumption, but this is your routers IP, that traditionally sits at the first IP</p>
<h3>3) Add your dns details</h3>
<p>I've seperated this out, as this is a common point of failure for setting a static IP, so make sure this is gucci<p>
<p>So below the address, etc. Add this line<p>
<pre><code>dns-namespaces 8.8.8.8 8.8.4.4</code></pre>
<p>This basically tells your PC where to look to find domain names<p>
<h2>Restart your networking service</h2>
<p>Now restarting your networking service (or entire PC if you so desire) will set your computer's IP to that in the <strong>/etc/network/interfaces</strong> file.</p>
<p>Simply use the command below, and voila</p>
<pre><code>sudo systemctl restart networking</code></pre>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,81 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="To keep control of your version control, and not be reliant on any third parties, a git server can be easily self hosted. Side benefit, you don't need to install anything on your server other than git, and ssh.">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Git server setup</title>
</head>
<body>
<header>
<h1>Git server setup</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">Self-hosted version control is great way to not be dependant of a third party to keep your git server up, or your code secure.</p>
<h2>Install Git</h2>
<p>Many Unix operating systems have git installed by default, but if not it's a simple command.</p>
<pre><code>sudo apt install git</code></pre>
<h2>Create a git user</h2>
<p>This user will be used to push/pull all your git repos</p>
<pre><code>sudo useradd -m git -d /srv/git -s /bin/bash</code></pre>
<p>Change <strong>/srv/git</strong> to the location you wish to hold your repositories.</p>
<h2>Create a repo</h2>
<p>With the user, and directory created next you'll need to create a repo.</p>
<p><em>This step will need to be repeated for each new repo you create.</em></p>
<pre><code>git init --bare repo.git</code></pre>
<h2>Enable SSH</h2>
<p>Next you'll need to set up SSH for the git user.</p>
<h3>Install and Enable SSH (If not already done)</h3>
<pre><code>sudo apt install ssh &amp;&amp; sudo systemctl enable ssh --now</code></pre>
<h3>Create ssh key for git user</h3>
<pre><code>ssh-keygen -t ed25519</code></pre>
<h2>Use the git server</h2>
<p>With all the setup out the way, the git server is now usable as a remote for any of your git repos.</p>
<p>So on another PC...</p>
<h3>Add remote to existing repo</h3>
<pre><code>git remote add origin git@&lt;your-server&gt;:/&lt;repo.git&gt;</code></pre>
<h3>Clone the repo</h3>
<pre><code>git clone git@&lt;your-server&gt;/:&lt;repo.git&gt;</code></pre>
<h3>Different SSH port</h3>
<p>If you are using a different ssh port for your server hosting git, you'll need to add the following after the colon (:) to the two previous commands</p>
<pre><code>&lt;port&gt;</code></pre>
<p>Giving you something like this</p>
<pre><code>git clone git@&lt;your-server&gt;:&lt;port&gt;/&lt;repo.git&gt;</code></pre>
<br/>
<p>From here you can use git as you would via any other provider, but with the knowledge that your remote is yours.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,115 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="This guide covers how to set a KVM bridge network for use with Virtual Machines">
<meta name="keywords" content="Blog, articles, template">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Setup a bridge network for KVM</title>
</head>
<body>
<header>
<h1>Setup a bridge network for KVM</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">A bridge network is a means to connect/bridge different networks together to act like a single network. In this case, it allows any connections to the bridge network to get their own internal IPs, as if plugged into the network directly, and work as you'd expect a completely new physical PC to work. i.e. Accessble to other clients outside of the host.</p>
<h2>Install bridge-utils</h2>
<pre><code>sudo apt install bridge-utils</code></pre>
<h2>Find the network to bridge</h2>
<p>First we need to find the network we want to bridge to the VMs</p>
<pre><code>ip a</code></pre>
<h2>Bridge it</h2>
<p>This will be familiar to those who have <a href="/blog/set-static-ip.html">set a static ip</a> on linux, as it's essentially the same, with a few additional lines related to bridging</p>
<p>This can be done by editing <strong>/etc/network/interfaces</strong></p>
<pre><code>sudo vim /etc/network/interfaces</code></pre>
<p>And setting the following lines<p>
<h3>Change existing port to manual</h3>
<p>There will already exist some lines with your chosen network adapter, such as</p>
<pre><code>iface enp2s0 inet auto</code></pre>
<p>Change this to contain manual instead</p>
<pre><code>iface enp2s0 inet manual</code></pre>
<h3>Static Bridge</h3>
<p>If you want your server to have a static IP use this</p>
<pre><code>auto br0
iface br0 inet static
bridge_ports enp2s0 # which port(s) to bridge together
address 192.168.0.100 # Static IP
netmask 255.255.255.0
network 192.168.0.1
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_stp off # New
bridge_fd 0 # New
bridge_maxwait 0 # New
dns-nameservers 8.8.8.8 8.8.1.1</code></pre>
<h3>Dynamic Bridge</h3>
<p>If instead you wish your server to have a dynamic IP (not recommended). A bridged network can be set, with a dynamic DHCP set IP</p>
<pre><code>iface br0 inet dhcp
bridge_ports enp2s0</code></pre>
<h2>Create Virtual Network</h2>
<p>To make it easier to manage with VMs, this new bridge can be made into a Virtual Network.</p>
<p>Open up a text-editor, and create a file called <strong>bridged-network.xml</strong></p>
<pre><code>vim bridged-network.xml</code></pre>
<p>Enter the following, then save</p>
<pre><code>&lt;network&gt;
&lt;name&gt;bridged-network&lt;/name&gt;
&lt;forward mode="bridge"/&gt;
&lt;bridge name="br0"/&gt;
&lt;/network&gt;</code></pre>
<p>Then pass the file to virsh net-define</p>
<pre><code>sudo virsh net-define bridged-network.xml</code></pre>
<p>Active, and auto-start the new network</p>
<pre><code>sudo virsh net-start bridged-network</code></pre>
<pre><code>sudo virsh net-autostart bridged-network</code></pre>
<h2>Reload the network</h2>
<pre><code>sudo systemctl restart networking</code></pre>
<p>If this creates the bridge, but claims to have failed, restart your PC</p>
<pre><code>sudo reboot</code></pre>
<h3>Check it's there</h3>
<p>Run another check for networks, and you should now see br0</p>
<pre><code>ip a</code><pre>
</section>
<section>
<h2>Useful Links</h2>
<ul>
<li><a href="https://ostechnix.com/how-to-find-available-network-interfaces-on-linux/">OSTechNix - Find available network interfaces</a></li>
<li><a href="https://www.cyberciti.biz/faq/how-to-configuring-bridging-in-debian-linux/">CyberCiti - Configure bridging in debian</a></li>
</ul>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,83 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="A guide to setting up an nginx website pointed at a domain/subdomain">
<meta name="keywords" content="Blog, articles, NGINX, web server, guide, website">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>How to setup an NGINX website</title>
</head>
<body>
<header>
<h1>How to setup an NGINX website</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>Nginx has the ability to host multiple websites, all at different domains/sub-domains. This guide will show you how to point a domain at the server, and display a different website than the default NGINX page.</p>
<h2>Make the domain point to the server</h2>
<p>In your domains DNS records ensure that the domain/sub-domain is pointing to the servers IP address, otherwise NGINX won't get told to serve the website</p>
<h2>Create the website directory</h2>
<p>We need to create a directory for the website to live, and add a basic webpage to it. Websites typically live in <strong>/var/www/</strong> but sometimes in users home directories, or elsewhere. We'll stick with the former</p>
<h2>Change directory permissions to www-user</h2>
<p>Nginx's default group is www-user, so to serve the website we'll grant permissions to www-user</p>
<h3>Add user account to www-user</h3>
<p>Make it easier...</p>
<h2>Create an nginx site config</h2>
<p>To get nginx to check the domain, and return the correct website, we need to configure it to do so</p>
<p>Create a file in</p>
<pre><code>/etc/nginx/sites-available/<DOMAIN-NAME></code></pre>
<p>Containing the contents below. This will set the server to listen on port 80 (http) for any requests from the domain name set. It will then direct the root domain to the directory in root, and set the index page the file index.html, or index.htm if the former wasn't found</p>
<pre><code>server {
listen 80 default ;
listen [::]:80 ;
server_name <DOMAIN-NAME> ;
location / {
root /var/www/<DOMAIN-NAME> ;
index index.html index.htm ;
}</code></pre>
<h3>Create a symlink to sites-enables</h3>
<p>Now to get nginx to check this config we'll need to symlink it to from sites-available, to sites-enabled</p>
<pre><code>sudo ln -s /etc/nginx/sites-available/<DOMAIN-NAME> /etc/nginx/sites-enabled/</code></pre>
<h3>Reload nginx</h3>
<pre><code>sudo systemctl reload nginx</code></pre>
<p>If the above command fails, you can check your nginx config for errors with</p>
<pre><code>sudo nginx -t</code></pre>
<p>Then once any errors have been fixed, reload nginx again, and it should be good to go</p>
<h2>Add a basic webpage</h2>
<p>So we can tell the config is working, we'll add a basic webpage.</p>
<h2>Check the website</h2>
<p>In your browser enter the domain name we've just setup in nginx, and you'll see that the basic HTML page we've created is being displayed</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,44 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, template, guide, KVM, QEMU, virtualisation">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Setup KVM/QEMU virtualisation</title>
</head>
<body>
<header>
<h1>Setup KVM/QEMU virtualisation</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">This is an intro, you gotta believe me</p>
<h2>Heading</h2>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Basic SQL cheatsheet for the commandline.">
<meta name="keywords" content="Blog, articles, guide, mysql, mariadb, database">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>SQL Cheatsheet</title>
</head>
<body>
<header>
<h1>SQL Cheatsheet</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p>SQL is a great, simple to use language to manipulate data within a database. This cheatsheet is aimed at basic SQL for MySQL/MariaDB.</p>
<h2>Access on the command line</h2>
<pre><code>mysql -u <USERNAME> -p</code></pre>
<p>When prompted enter your password</p>
<h2>Database manipulation</h2>
<h3>Show databases</h3>
<pre><code>SHOW databases;</code></pre>
<h3>Create new databases</h3>
<pre><code>CREATE DATABASE IF NOT EXISTS <DATABASE>;</code></pre>
<h3>Enter into a database</h3>
<pre><code>USE DATABASE <DATABASE>;</code></pre>
<p>or just</p>
<pre><code>USE <DATABASE>;</code></pre>
<h2>Table manipulation</h2>
<p>Once you've got a database selected, you can play with tables</p>
<h3>Create</h3>
<h3>Read</h3>
<h3>Update</h3>
<h3>Delete</h3>
<h2>Data manipulation</h2>
<p>Most of your SQL life will be CRUDing (Create, Read, Update, Delete) data. So I'll cover the basics here</p>
<h3>Create</h3>
<h3>Read</h3>
<h3>Update</h3>
<h3>Delete</h3>
<h2>Create additional users</h2>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,107 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, guide, cheatsheet, virsh, virtual machine">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Virsh Cheatsheet</title>
</head>
<body>
<header>
<h1>Virsh Cheatsheet</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">Virsh is an extremely powerful tool for managing KVM/QEMU virtual machines. From restarting, to changing hardware, snapshotting, and cloning machines. I'll cover the basics of Virsh here, as it's all I personally use.</p>
<h2>List VMs</h2>
<pre><code>virsh list</code></pre>
<p>List all, including offline vms</p>
<pre><code>virsh list --all</code></pre>
<h2>Start/Stop</h2>
<pre><code>virsh start $vm</code></pre>
<pre><code>virsh shutdown $vm</code></pre>
<pre><code>virsh reboot $vm</code></pre>
<p>If the VM refuses to shutdown, etc. destroy performs an ungraceful shutdown</p>
<pre><code>virsh destroy $vm</code></pre>
<h3>Autostart</h3>
<pre><code>virsh autostart $vm</code></pre>
<pre><code>virsh autostart $vm --disable</code></pre>
<h2>Rename</h2>
<pre><code>virsh domrename $vm $new_name</code></pre>
<h2>Delete</h2>
<pre><code>virsh undefine $vm</code></pre>
<h3>Delete Snapshots</h3>
<p>If your VM has Snapshots it won't delete as simply, so delete those first<p>
<p>List the snapshots</p>
<pre><code>virsh snapshot-list --domain $vm</code></pre>
<p>And delete each snapshot with the following</p>
<pre><code>virsh snapshot-delete --domain $vm --snapshotname $snapshot</code></pre>
<h3>Deleting with all storage</h3>
<p>Delete the VM along with all the virtual storage</p>
<pre><code>virsh undefine --domain $vm --remove-all-storage</code></pre>
<h2>Snapshots</h2>
<h3>Create</h3>
<p>Save a snapshot of the VMs current state</p>
<pre><code>virsh snapshot-create-as --domain $vm --name "$snapshot_name"</code></pre>
<h3>Restore/Revert</h3>
<p>Revert the VM to the state it was in during the snapshot</p>
<pre><code>virsh snapshot-revert $vm $snapshot_name</code></pre>
<h3>Delete Snapshot</h3>
<p>Delete the snapshot, this doesn't delete anything else related to the VM</p>
<pre><code>virsh snapshot-delete --domain $vm --snapshotname $snapshot_name</code></pre>
<h2>(TODO)Drive management</h2>
<h2>Change Memory</h2>
<p>In variantions of 512M, 1G, etc</p>
<pre><code>virsh setmem $vm $ram</code></pre>
<p>The amount of RAM the VM has assigned to it, this cannot be higher than the max, but can be altered on the fly (if I recall correctly).</p>
<pre><code>virsh setmaxmem $vm $ram</code></pre>
<p>The max mem sets the maximum amount of RAM the VM can use, and can only be set whilst the VM is offline</p>
<p>My recommendation here is to set a higher maxmem than you'd need, so if you do need to add some more RAM, it doesn't require any downtime.<p>
<h2>Change vCPU cores</h2>
<p>This is a little more tricky, as it involves editing the XML file</p>
<pre><code>virsh edit $vm</code></pre>
<p>Then edit the vcpus section, change between the tags</p>
<pre><code>&lt;vcpu placement='static'&gt;$vcpus&lt;/vcpu&gt;</code></pre>
<h2>Connect via serial/console</h2>
<p>This is a means to connect to your VMs via terminal</p>
<pre><code>virsh console $vm</code></pre>
<p>To do this you will likely need to first run the following command on the VM itself. This won't be required if you created the VM with console, but best to double check.</p>
<pre><code>systemctl enable serial-getty@ttyS0.service</code></pre>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,87 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="keywords" content="Blog, articles, virtual machines, seperation of concerns, SoC, optimise">
<meta name="author" content="Nathan (Aney) Steel">
<meta name="theme-color" content="white">
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>VM/Server Seperation of Concerns</title>
</head>
<body>
<header>
<h1>VM/Server Seperation of Concerns</h1>
<hr/>
<nav>
<a href="/">home</a>
<a href="/equipment.html">equipment</a>
<a href="/projects.html">projects</a>
<a href="/blog/">blog</a>
<a href="/sitemap.html">misc</a>
<a href="/support.html">support</a>
</nav>
<hr/>
</header>
<main>
<section>
<p class="intro">Seperation of Concerns is a principle used in Computer Science that helps seperate functionality, making things easier to work with, and avoiding issues that could occur with too much going on in one place</p>
<h2>Why seperate concerns for a server?</h2>
<p>Simple, once your server has a lot of services, and functionality going on, it gets hard to maintain, and can cause additional issues. For example, if a service dies and requires a reboot, that will end up rebooting all your other services too.</p>
<h2>How to seperate concerns</h2>
<p>Some people will seperate each service into their own VM, however I don't believe this to be efficient (in all cases).</p>
<p>What I recommend is to take your server needs, and break them down into logical blocks, adding each of these blocks to their own VMs. This will keep certain things contained alone, as you want them seperated as much as possible (NAS, etc).</p>
<table>
<thead><tr><th colspan="2">Concern/VM</th><th colspan="5">Services</th></tr></thead>
<tbody>
<tr>
<th colspan="2">Production Web Server</th>
<td>Nginx</td>
<td>PHP</td>
<td colspan="5">CertBot</td>
</tr>
<tr>
<th colspan="2">Staging Web Server</th>
<td>Nginx</td>
<td>PHP</td>
<td>CertBot</td>
<td colspan="5">mariaDB</td>
</tr>
<tr>
<th colspan="2">NAS</th>
<td colspan="5">OpenMediaVault</td>
</tr>
<tr>
<th colspan="2">SQL server</th>
<td colspan="5">mariaDB</td>
</tr>
<tr>
<th colspan="2">Torrent Box</th>
<td>Transmission</td>
<td>VPN (to external)</td>
<td>Sonarr</td>
<td>Radarr</td>
<td colspan="5">Ombi</td>
</tr>
</tbody>
</table>
<h2>Why not use a dedicated server for each concern?</h2>
<p>You can! No-one's going to stop you, but unless each concern <em>requires</em> (i.e. needs the dedicated hardware/isolation) its own dedicated server, it's hugely redundant. Again NAS as an example, would be good for a dedicated machine, as it'll be safer if there's no additional chance it goes down due to failure of an unrelated service.</p>
<p>Virtual Machines are wonderful, as they allow you to make use of more powerful/high spec machines while minimising the wasted usage...</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -37,27 +37,27 @@
<section id="experience">
<h2>Experience/Employment History</h2>
<section>
<h3><a href="https://www.tjs.co.uk/" target="_blank" rel="noopener noreferrer">TJS</a></h3>
<h3><a href="https://www.tjs.co.uk/" target="_blank" rel="noopener">TJS</a></h3>
<p>April 2021 - Current</p>
<p>Position: Developer</p>
<p>My time at TJS online is spent developing, and maintaining both the front, and back-end of the dozens of client websites, primarily using a Symfony based stack.</p>
<p>Skills: <span class="tag">PHP</span> <span class="tag">Symfony</span> <span class="tag">SCSS</span> <span class="tag">Git</span> <span class="tag">Linux</span> <span class="tag">NGINX</span> <span class="tag">SEO</span></p>
</section>
<section>
<h3><a href="https://www.advantage-finance.co.uk/" target="_blank" rel="noopener noreferrer">Advantage Finance Ltd</a></h3>
<h3><a href="https://www.advantage-finance.co.uk/" target="_blank" rel="noopener">Advantage Finance Ltd</a></h3>
<p>Time: October 2018 - March 2021</p>
<p>Position: System Developer and Technician</p>
<p>I worked as part of the DevOps team at the car financing company, Advantage Finance. Whilst there I worked full-stack on the numerous bespoke systems; adding features, working on bug fixes and rewriting legacy code for both desktop and web applications. I also assumed the position of IT support, aiding with general AD and PC issues, along with assisting in the training of new starters.</p>
<p>Skills: <span class="tag">VB6</span> <span class="tag">VB.net</span> <span class="tag">ASP Classic</span> <span class="tag">SVN</span> <span class="tag">SQL</span> <span class="tag">Active Directory</span></p>
</section>
<section>
<h3><a href="https://www.oxfam.org.uk/" target="_blank" rel="noopener noreferrer">Oxfam</a></h3>
<h3><a href="https://www.oxfam.org.uk/" target="_blank" rel="noopener">Oxfam</a></h3>
<p>Time: January 2014 - September 2018</p>
<p>Position: Volunteer</p>
<p>While at the renowned charity organisations store I handled a multitude of tasks; ranging from working the till, cash handling, tidying and stocking the shop. I was also entrusted with additional tasks such as making bank deposits, opening the store and supervising Saturdays staff tasks. I also enjoyed holding conversations with many of the customers, helping them feel welcome in the store.</p>
</section>
<section>
<h3><a href="https://www.tesco.com/" target="_blank" rel="noopener noreferrer">Tesco</a></h3>
<h3><a href="https://www.tesco.com/" target="_blank" rel="noopener">Tesco</a></h3>
<p>Time: March 2014 - April 2014</p>
<p>Position: Personal Picker</p>
<p>Whilst on the Prince's Trust I did a months work experience at a large Tesco store. This involved making 'picks' that were all completed without any errors or customer complaints. I also assisted a number of customers find their desired products and way around the shop.</p>
@ -81,7 +81,7 @@
</section>
<section>
<h3>Misc</h3>
<h4><a href="https://www.princes-trust.org.uk/" target="_blank" rel="noopener noreferrer">Prince's Trust</a></h4>
<h4><a href="https://www.princes-trust.org.uk/" target="_blank" rel="noopener">Prince's Trust</a></h4>
<p>Time: April 2014 - July 2014</p>
</section>
<section>
@ -127,7 +127,7 @@
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="https://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="title" content="Aney's computing equipment, and hardware">
<meta name="description" content="A collection of the hardware, and other tools used by Aney, to work, and create">
<meta name="keywords" content="Equipment, Technology, Hardware, Computing">
<meta name="author" content="Nathan (Aney) Steel">
@ -11,7 +10,7 @@
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Hardware</title>
<title>Computng equipment, and Hardware</title>
</head>
<body>
@ -35,11 +34,9 @@
<p>This is what I use basically every day. It's either at my desk, in my bag, or within arms reach.</p>
<section id="pc">
<h3>Laptop - Thinkpad x220</h3>
<p>My everyday driver is a Thinkpad x220, specced with an i5 2540m, 6GB RAM, and a 500GB EVO 860 mSata SSD. It typically runs Debian with dwm, but since I've been having problems with my arm, it's been running Pop!_OS like a champ.</p>
<p>I use this laptop for practically everything, and it performs well for my use-cases whether docked at my desk, or standalone for travels.</p>
<h4>X220 Docking Station</h4>
<p>When I'm at home, I typically stay docked to this station as it has all my ports pre-plugged, and an additional 500GB HDD (which I don't use). This makes it easy to switch between working at the desk, and lounging on the seatee/bed.</p>
<h3>Daily Driver</h3>
<p>Steam Deck</p>
<p>My everyday driver is now a SteamDeck, as I'm doing reduced work with development, and VMs at home, and instead opting for some more gaming. I've yet to use it as a laptop, so if it's non-functional for minor "out-of-office" server fixes, etc. I'll need to rethink this.</p>
</section>
<section id="peripherals">
@ -50,13 +47,15 @@
<p>Microphone: Blue Yeti</p>
<p>Speakers: Logitech Z200</p>
<p>Backup USB: 64GB Sandisk</p>
<p>USB C Hub: Lemorele 6-in-1</p>
<p>Laptop Stand: Non-brand, basic-bitch stand</p>
</section>
<section id="misc">
<h3>Misc.</h3>
<p id="mobile">Mobile: Google Pixel 4a</p>
<p id="powerbank">Power Bank: 10,000mAh PowerAdd Pilot 2GS</p>
<p>Wireless Earphones: Besdio something</p>
<p id="headphones">Wireless Earphones: Tozo T12</p>
</section>
</section>
@ -64,22 +63,24 @@
<section id="gaming-pc">
<h2>Gaming PC</h2>
<p>Red, a custom built machine sporting an R5 2600X, 16GB RAM, a 500GB EVO 970 NVME, and a Vega 64. This is my only device running Windows.</p>
<p>I don't use this anywhere near as much as I used to, but when I want to play a game I've got this PC that I know will perform, regardless of the title.</p>
<p>I am heavily considering selling it when the <a href="https://store.steampowered.com/steamdeck" target="_blank" rel="noopener noreferrer">Steamdeck</a> releases, however.</p>
<p>I currently still have this to play Windows exclusive games/games without Linux Anti-Cheat enabled (Smite namely) with friends. Once HiRez sort their shit, it's gone.</p>
</section>
<section id="media">
<h2>Media Consumption</h2>
<section id="tv">
<h3>TV</h3>
<p>A basic non-smart TV from years back. I got it for my 16th Birthday, 10 years ago.</p>
<p>A basic non-smart TV from the good ol' days. I got it for my 16th Birthday, around 10 years ago.</p>
<h4>Fire TV Stick 4K</h4>
<p>Since my TV is useless alone, and I don't watch traditional television, this is plugged in to give me access to Netflix, Amazon Video, Crunchyroll, and Jellyfin.</p>
<p>Since my TV is useless alone, and I don't watch traditional television, this is plugged in to give me access to Netflix, Amazon Video, and Jellyfin.</p>
</section>
<section id="music">
<h3>Amazon Echo 4</h3>
<p>I don't use this for anything other than playing music. It stays next to the TV waiting for me to say "Alexa, play <a href="https://youtu.be/6Zbi0XmGtMw?t=27" target="_blank" rel="noopener">We like to party, by the Vengaboys</a>."
<h3>Amazon Echo 3</h3>
<p>I don't use this for anything other than playing music. It stays next to the TV waiting for me to say "Alexa, play <a href="https://youtu.be/6Zbi0XmGtMw?t=27" target="_blank" rel="noopener noreferrer">We like to party, by the Vengaboys</a>."
<p>Same as above, but this one's upstairs so the music plays uninterupted through the house</p>
</section>
</section>
@ -87,25 +88,32 @@
<h2>Servers</h2>
<section>
<h3>lilman</h3>
<p>An HP 290 G1 MT, with an i5-7500, and 8GB RAM. This is my primary server, although I've still yet to get around to migrating services from rpi3.</p>
</section>
<section>
<h3>rpi3</h3>
<p>A Raspberry Pi 3B+ that's running my webserver, and gitserver, alongside a few docker containers. It's a pretty swell device, and I may very well start a cluster with it when I get the chance.</p>
<p>An HP 290 G1 MT, with an i5-7500, and 32GB RAM. This is my primary server, acting as my virtualisation host, NAS, adBlock, and media server. It also runs git, my game servers, and anything else I feel like hosting at the time. A consideration is upgrading to a 7700/7700K, but energy concerns have me thinking of switching to RPIs for a while, then rebuilding some current-gen beast in the coming years.</p>
</section>
</section>
<section>
<section id="unused">
<h2>Unused/Spares</h2>
<p>I go through hoarding phases unfortunately, so besides what I've listed, I also have; 5 other PCs of various specs, a 1U server, 4 more laptops (3 of which are Thinkpads), and a RPI 3B. Out of these, I intend to keep two PCs, the 3 thinkpads, and the RPI3.</p>
<p>Besides what I've listed, I also have the following PCs;</p>
<ul>
<li>1U Server</li>
<li>Thinkpad x220 - Broken currently</li>
<li>Thinkpad x201</li>
<li>Thinkpad x200</li>
<li>Thinkpad t420</li>
<li>rpi3B+</li>
<li>rpi3B</li>
<li>ThinkCentre (i5 4460, 16GB)</li>
</ul>
<p>I use these for one-off testing, and projects, but they are not permanent fixtures in my day-to-day life.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="https://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1 @@
google-site-verification: google8a330c8201b08f7e.html

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="title" content="Aney's self hosted network's homepage">
<meta name="description" content="The homepage for anyone finding Aney's small, self-hosted network/homelab">
<meta name="keywords" content="Self-hosted, Homepage, HTML, CSS">
<meta name="author" content="Nathan (Aney) Steel">
@ -33,25 +32,34 @@
<section>
<h2>I'm Aney</h2>
<p>Somehow you've landed on my website, welcome!</p>
<p>I'm a developer, and self-hoster that enjoys art/design, automation, Unix, and those pesky Japanese cartoons.</p>
<h3>What this, then?</h3>
<p>It's my little place on the world wide web. It serves the purpose of being a one-stop location I can refer people to when they ask things, like:</p>
<ul>
<li>Who are you?</a></li>
<li>Who are you?</li>
<li><a href="/equipment.html">What hardware do you use?</a></li>
<li>How about software?</a></li>
<li>What's in your onebag?</a></li>
<li>How about software?</li>
<li>What's in your OneBag?</li>
<li>Why does your website look like that?</li>
<li>Anime recommendations?</li>
<li><a href="/blog/guide-to-server-hosting.html">How can I setup a server?</a></li>
</ul>
<h3>Where are the pictures?</h3>
<p>I've written this website with the intention to keep it minimal, quick, small, and easily self-hosted. I decided that there was little reason to bloat the pages with images, that add little value, as all they will do is prevent people with poor internet from visiting.</p>
</section>
<h3>What else do you do?</h3>
<p>I'm currently working on the basic infrastructure, and website for <a href="https://anetwork.uk" target="_blank" rel="noopener">aNetwork</a>, a gaming community, and public game server host. If there's ever anything else, you can find out more on my <a href="/projects.html">projects</a> page, or on my <a href="/blog/">blog</a>.</p>
<h3>Wow! You're so cool, how can I support you?</h3>
<p>Thanks, although I disagree.</p>
<p>You can support me by sharing any posts, and/or pages you enjoy to your friends, or by donating to me via my <a href="/support.html">Support page</a>.</p>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="https://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -1,103 +1,73 @@
html, body {height: 100%;}
html{font-size: 14px;}
html,body { height:100% }
html { font-size:14px }
body {
margin:0.2rem auto;
margin:.2rem;
max-width:48rem;
padding:0 .62rem;
font:1.2rem/1.62 sans-serif;
font:1.2rem/1.62 sans-serif
}
h1,h2,h3,h4,h5,h6 {
line-height: 1;
}
header h1{
margin-top: 1.4rem;
margin-bottom: 1.2rem;
}
a{
text-decoration: none;
nav>a {
padding:.2rem 0;
display:block;
border-top:1px dotted #000
}
a:link, a:visited {color:#087ca7;}
a:hover, a:visited:hover {color:#09b2dc;}
nav>a:first-child {border:none}
h1,h2,h3,h4,h5,h6 { line-height:1 }
header h1 { margin: 1.4rem auto 1.2rem }
a { text-decoration:none }
a:link,a:visited { color:#087CA7 }
a:hover,a:visited:hover { color:#09B2DC }
ul {
padding-left: 0;
margin-left: 0;
list-style-position: inside;
}
li > ul{
margin-left: 1em;
}
footer p{
margin: 0;
padding-left:0; margin-left:0;
list-style-position:inside
}
ul li{ margin: 0.35rem }
li>ul { margin-left:1em }
/* Special Design */
.tag {
font-size: 0.8rem;
padding: 0.2rem;
border-radius: 0.33rem;
background-color: #191919;
color: white;
vertical-align: middle;
font-size:.8rem;
padding:.2rem;border-radius:.33rem;
background-color:#191919;color:#FFF;
vertical-align:middle
}
/*
* Flex is only there to put the footer at the bottom.
* Not actually needed. BLOAT!!
*/
body {
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-direction: column;
}
main{
flex: 1 0 auto;
pre{
background-color: #191919;color: #FFF;
white-space: pre-wrap;overflow-x: auto;
padding: 12px; border: 1px solid #FFF;
}
@media (prefers-color-scheme: dark){
body {color:#fff;background:#191919;}
a:link, a:visited {color:#9cf;}
a:hover, a:visited:hover {color:#DA4167;}
.tag{background-color:white; color:black;}
}
table{text-align: left;width: 100%;border-collapse: collapse}
td, th{border: 1px solid #222;padding: 9px 6px}
th{padding: 12px;color: white}
thead th{ background-color: #191919 }
tbody th{ background-color: #292929 }
tr:nth-child(even){ background-color: #FEFEFE }
tr:hover{ background-color: #DEDEDE }
@media print{
footer p { margin:0 }
body {
max-width:none
}
display:-webkit-flex;display:-ms-flexbox;display:flex;
flex-direction:column
}
main { flex:1 0 auto }
/* For Media over the mobile view */
@media screen and (min-width: 601px){
nav>a{
margin-left: 2rem;
}
nav>a:first-child{
padding: 1rem 0;
padding-left: 0;
margin-left: 0;
}
}
/* For Media under the mobile view */
@media screen and (max-width: 600px){
body{
margin: 0.2rem;
text-align: center;
}
nav>a{
padding: 0.2rem 0;
display: block;
border-top: 1px dotted black;
}
nav>a:first-child{
border: none;
}
}
@media print {body {max-width:none}}
@media screen and (max-width: 600px) and (prefers-color-scheme: dark){
nav>a{
border-color: white;
@media (min-width: 600px) {
body { margin:.2rem auto; }
nav>a { margin-left:2rem; padding: auto; display: inline; border: none }
nav>a:first-child { padding:1rem 0; padding-left:0; margin-left:0 }
ul li{ margin: auto }
}
@media (prefers-color-scheme: dark) {
body { color:#FFF; background:#191919 }
a:link,a:visited {color:#9CF}
a:hover,a:visited:hover {color:#DA4167}
nav>a { border-color:#FFF }
.tag {background-color:#FFF;color:#000}
}

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="title" content="Aney's project list">
<meta name="description" content="A collection of current, previous, and future (mostly software) projects.">
<meta name="keywords" content="Projects, Portfolio">
<meta name="author" content="Nathan (Aney) Steel">
@ -11,7 +10,7 @@
<meta name="theme-color" content="black">
<link rel="stylesheet" type="text/css" href="/main.css">
<link rel="icon" type="image/png" href="/images/favicon.svg">
<title>Projects</title>
<title>Project List</title>
</head>
<body>
@ -32,18 +31,27 @@
<main>
<section id="projects">
<h2>Current Projects</h2>
<section id="aney-website">
<h3><a href="http://aney.co.uk" target="_blank" rel="noopener noreferrer">Personal Website</a></h3>
<p>Here to hold me accountable, as I cannot finish things</p>
<section id="website">
<h3><a href="https://aney.co.uk" target="_blank" rel="noopener">Personal Website</a></h3>
<p>A basic website to let me have my own little place on the internet.
<br/>You may recognise it, because you're using it right now!</p>
<p>Skills: <span class="tag">HTML</span> <span class="tag">CSS</span></p>
</section>
<section id="anetwork">
<h3><a href="https://anetwork.uk" target="_blank" rel="noopener">aNetwork</a></h3>
<p>A gaming community, and public server host.</p>
<p>This consists of a website, server hosting, and community/server administration.</p>
<p>Skills: <span class="tag">HTML</span> <span class="tag">CSS</span> <span class="tag">JS</span> <span class="tag">Linux</span> <span class="tag">System Administration</span></p>
</section>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="https://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="title" content="Aney's Sitemap">
<meta name="description" content="The sitemap for aney.co.uk, now you can finally find that page you're after">
<meta name="keywords" content="Sitemap, aney.co.uk">
<meta name="author" content="Nathan (Aney) Steel">
@ -56,7 +55,7 @@
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="https://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>https://aney.co.uk/</loc>
<lastmod>2022-05-30T11:48:21+00:00</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>https://aney.co.uk/equipment</loc>
<lastmod>2022-05-24T14:21:37+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://aney.co.uk/projects</loc>
<lastmod>2022-05-24T14:21:37+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/</loc>
<lastmod>2022-05-30T10:15:28+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://aney.co.uk/sitemap</loc>
<lastmod>2022-05-24T14:21:37+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://aney.co.uk/support</loc>
<lastmod>2022-05-24T14:21:37+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/guide-to-server-hosting</loc>
<lastmod>2022-05-30T09:58:27+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/nginx-web-optimisation</loc>
<lastmod>2022-05-30T10:18:11+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/certbot-ssl</loc>
<lastmod>2022-05-30T10:15:28+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/setup-nginx-website</loc>
<lastmod>2022-05-30T09:58:27+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/nginx-install</loc>
<lastmod>2022-05-30T09:58:27+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/get-a-domain-name</loc>
<lastmod>2022-05-30T09:58:27+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/add-domain-to-server</loc>
<lastmod>2022-05-25T08:36:42+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/initial-server-setup</loc>
<lastmod>2022-05-26T09:30:39+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/blog/ive-started-a-blog</loc>
<lastmod>2022-05-24T15:22:25+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/websites</loc>
<lastmod>2022-05-24T14:21:37+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>https://aney.co.uk/cv</loc>
<lastmod>2022-05-24T14:21:37+00:00</lastmod>
<priority>0.64</priority>
</url>
</urlset>

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="title" content="Aney's favourite websites, or something like that">
<meta name="description" content="A collection of methods you can use to support, and help finance Aney's projects">
<meta name="keywords" content="donate, support, funding">
<meta name="author" content="Nathan (Aney) Steel">
@ -36,7 +35,7 @@
<section>
<h2>Ko-fi</h2>
<p><a href="https://ko-fi.com/siraney" target="_blank" rel="noopener noreferrer">Donate me a hot choccy</a></a>
<p><a href="https://ko-fi.com/siraney" target="_blank" rel="noopener">Donate me a hot choccy</a></a>
<h2>BAT (Brave)</h2>
<p>If you use the Brave browser, this site is setup to accept BAT.</p>
@ -48,7 +47,7 @@
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="https://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="title" content="Aney's favourite websites, or something like that">
<meta name="description" content="A collection of the websites Aney uses regularary, finds inspiration from, or just finds attractive">
<meta name="keywords" content="Websites, collection">
<meta name="author" content="Nathan (Aney) Steel">
@ -34,7 +33,7 @@
<h2>Websites I frequent</h2>
<p>I use these, but maybe I should stop.</p>
<ul>
<li><a href="https://www.youtube.co.uk" target="_blank" rel="noopener noreferrer ">Youtube</a></li>
<li><a href="https://www.youtube.co.uk" target="_blank" rel="noopener">Youtube</a></li>
</ul>
</section>
@ -42,12 +41,13 @@
<h2>Useful Websites</h2>
<p>These websites make things easier for me.</p>
<ul>
<li><a href="https://coolors.co/generate" target="_blank" rel="noopener noreferrer ">coolors.co/generate</a></li>
<li><a href="https://webpagetest.org/" target="_blank" rel="noopener noreferrer ">webpagetest.org</a></li>
<li><a href="https://tools.pingdom.com/" target="_blank" rel="noopener noreferrer ">tools.pingdom.com</a></li>
<li><a href="https://vecta.io/nano" target="_blank" rel="noopener noreferrer">vecta.io/nano</a></li>
<li><a href="https://tinypng.com/" target="_blank" rel="noopener noreferrer">tinypng.com</a></li>
<li><a href="https://webaim.org/resources/contrastchecker/" target="_blank" rel="noopener noreferrer">webaim.org/resources/contrastchecker/</a></li>
<li><a href="https://coolors.co/generate" target="_blank" rel="noopener">coolors.co/generate</a></li>
<li><a href="https://webpagetest.org/" target="_blank" rel="noopener">webpagetest.org</a></li>
<li><a href="https://tools.pingdom.com/" target="_blank" rel="noopener">tools.pingdom.com</a></li>
<li><a href="https://vecta.io/nano" target="_blank" rel="noopener">vecta.io/nano</a></li>
<li><a href="https://tinypng.com/" target="_blank" rel="noopener">tinypng.com</a></li>
<li><a href="https://webaim.org/resources/contrastchecker/" target="_blank" rel="noopener">webaim.org/resources/contrastchecker/</a></li>
<li><a href="https://via.placeholder.com/" target="_blank" rel="noopener">via.placeholder.com</a> - <a href="https://via.placeholder.com/320x480/" target="_blank" rel="noopener">example</a></li>
</ul>
</section>
@ -55,28 +55,29 @@
<h2>Websites that Inspire me</h2>
<p>Either their site, or their content. Ideally both.</p>
<ul>
<li><a href="https://lukesmith.xyz" target="_blank" rel="noopener noreferrer ">luksmith.xyz</a></li>
<li><a href="https://drewdevault.com" target="_blank" rel="noopener noreferrer ">drewdevault.com</a></li>
<li><a href="https://danluu.com/" target="_blank" rel="noopener noreferrer ">danluu.com</a></li>
<li><a href="https://uglyduck.ca/" target="_blank" rel="noopener noreferrer ">uglyduck.ca</a></li>
<li><a href="https://1mb.club/" target="_blank" rel="noopener noreferrer ">1mb.club</a></li>
<li><a href="https://seirdy.one/" target="_blank" rel="noopener noreferrer ">seirdy.one</a></li>
<li><a href="https://jeremymaluf.com/" target="_blank" rel="noopener noreferrer ">jeremymaluf.com</a></li>
<li><a href="https://m-chrzan.xyz/" target="_blank" rel="noopener noreferrer ">m-chrzan.xyz</a></li>
<li><a href="https://lukesmith.xyz" target="_blank" rel="noopener">luksmith.xyz</a></li>
<li><a href="https://drewdevault.com" target="_blank" rel="noopener">drewdevault.com</a></li>
<li><a href="https://danluu.com/" target="_blank" rel="noopener">danluu.com</a></li>
<li><a href="https://uglyduck.ca/" target="_blank" rel="noopener">uglyduck.ca</a></li>
<li><a href="https://1mb.club/" target="_blank" rel="noopener">1mb.club</a></li>
<li><a href="https://seirdy.one/" target="_blank" rel="noopener">seirdy.one</a></li>
<li><a href="https://jeremymaluf.com/" target="_blank" rel="noopener">jeremymaluf.com</a></li>
<li><a href="https://m-chrzan.xyz/" target="_blank" rel="noopener">m-chrzan.xyz</a></li>
<li><a href="https://www.joshwcomeau.com/" target="_blank" rel="noopener">joshwcomeau.com</a></li>
</ul>
</section>
<section>
<h2>My websites</h2>
<ul>
<li><a href="https://www.aney.co.uk" target="_blank" rel="noopener noreferrer ">www.aney.co.uk</a></li>
<li><a href="https://aney.co.uk" target="_blank" rel="noopener">aney.co.uk</a></li>
</ul>
</section>
</main>
<footer>
<hr/>
<p>Written by <a href="http://www.aney.co.uk" target="_blank" rel="noopener noreferrer">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener noreferrer">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener noreferrer">Source Code</a></p>
<p>Written by <a href="https://aney.co.uk" target="_blank" rel="noopener">@aney</a> with <a href="https://danluu.com/web-bloat/" target="_blank" rel="noopener">web bloat</a> in mind | <a href="https://github.com/Aney/website" target="_blank" rel="noopener">Source Code</a></p>
</footer>
</body>
</html>

Loading…
Cancel
Save