add NixOS server article

This commit is contained in:
Aaron Honeycutt 2024-11-23 09:02:43 -07:00
parent 72ffa9e8cf
commit 69e397771e

View file

@ -0,0 +1,79 @@
+++
title = "Hosting on NixOS"
date = 2023-06-06
draft = false
[taxonomies]
categories = [ "nixos" ]
tags = [ "nixos", "nixos-22.11", "nixos-server" ]
+++
description: Running NixOS on Linode VPS for services like Jekyll, Mastodon and Nextcloud.
## Installing on Linode
I've been using Linode for a while and I used this [article](https://www.linode.com/docs/guides/install-nixos-on-linode/) to install NixOS on a Linode. Now I was using one large server (2GB plan) to host everything but I thought that splitting them up would be better so I just cloned my server onto another Linode using their great webUI!
## Two is better than one
Now that I have two servers I needed names for them, I've never been good with hostnames but I'm not using Mass Effect (Andromeda) characters for my systems. Mass Effect characters are for x86_64 systems and Andromeda characters for ARM64 devices. The two servers themselves are names after Reapers so sovereign and harbinger!
### Hydra
The hardest part of starting for me was understanding DNS and HTTPS setup, this included using Nginx to reverse proxy a locally running service like [Hydra](https://github.com/NixOS/hydra). I was able to get this working with this [configuration](https://gitlab.com/ahoneybun/nix-configs/-/blob/main/dev/hydra-ahoneybun-net.nix) this allows it to be viewed from https://hydra.ahoneybun.net (it is currently off as I was just testing).
When I first tried setting Hydra up I was using the default settings for using a Nginx reverse proxy but it was not loading CSS and JavaScript, after hours of going though GitHub and Reddit I found this option which was the key:
```nix
recommendedProxySettings = true;
```
Once that was added and I rebuilt `nixos-rebuild` everything worked as it should have!
### Jekyll
For a long time this site has been on GitHub pages but I wanted to change that (partly as I was having issues with how GitHub handles DNS) and this is the first blog post since that happened and now you're on a site hosted on NixOS! Getting Jekyll to build with my [site](https://github.com/ahoneybun/ahoneybun.net) took a while but these commands was able to build with my plugins:
```bash
cd ahoneybun.net
nix-shell -p jekyll rubyPackages.webrick rubyPackages.jekyll-feed rubyPackages.jekyll-redirect-from
jekyll build
```
I created a nix-shell file (in the repository) so that I can run these commands (from the root directory) to update the site once I make a change on GitHub:
```bash
git pull
nix-shell
jekyll build
```
### Mastodon
Setting up Mastodon on NixOS was just using this [wiki](https://nixos.wiki/wiki/Mastodon) page and then rebuild. One issue with my configuration is that I don't have SMTP working so confirmation emails are not sent out. To workaround this I can confirm the account using `tootctl` on the server itself like this:
```bash
# Switch to root
sudo su
# Switch to mastodon account
su - mastodon -s $(which bash)
## Approve accounts though tootctl
mastodon-env tootctl accounts approve PUT-YOUR-USERNAME-HERE
## Accept email address though tootctl
mastodon-env tootctl accounts modify PUT-YOUR-USERNAME-HERE --confirm
```
[Mastodon server](https://stoners.space/about)
[Source](https://page.romeov.me/posts/setting-up-mastodon-with-nixos/#adding-your-user)
### Nextcloud
I'm still working on getting this to not use SQLite which is the default and have better security plus other fixes but it is working [here](https://cloud.ahoneybun.net) and here is the [nix file](https://gitlab.com/ahoneybun/nix-configs/-/blob/main/web/cloud-ahoneybun-net.nix).
## Nix Files
You can find all of my nix files [here](https://gitlab.com/ahoneybun/nix-configs).